diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index cb08ee7..b01802e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,39 +1,42 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.208.0/containers/debian { - "name": "Debian", - "build": { - "dockerfile": "Dockerfile", - // Update 'VARIANT' to pick an Debian version: bullseye, buster, stretch - // Use bullseye or stretch on local arm64/Apple Silicon. - "args": { "VARIANT": "bullseye" } - }, + "name": "Debian", + "build": { + "dockerfile": "Dockerfile", + // Update 'VARIANT' to pick an Debian version: bullseye, buster, stretch + // Use bullseye or stretch on local arm64/Apple Silicon. + "args": { "VARIANT": "bullseye" } + }, - // Set *default* container specific settings.json values on container create. - "settings": {}, + // Set *default* container specific settings.json values on container create. + // "settings": {}, - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "amirha.elps" - ], + // Add the IDs of extensions you want installed when the container is created. + // "extensions": [ + // "amirha.elps" + // ], + "customizations": { + "vscode": { + "extensions": ["amirha.elps", "GitHub.copilot"], + "settings": {} + } + }, - // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode", - "remoteEnv": { "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}" }, - "features": { - "docker-from-docker": { - "version": "latest", - "moby": true - }, - "golang": "latest" - } + // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode", + "remoteEnv": { "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}" }, + "features": { + "docker-from-docker": { + "version": "latest", + "moby": true + }, + "golang": "latest" + } - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], - // Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker. - // "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ], - - // Uncomment when using a ptrace-based debugger like C++, Go, and Rust - // "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ], + // Uncomment when using a ptrace-based debugger like C++, Go, and Rust + // "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ], } diff --git a/.github/workflows/sandbox.yml b/.github/workflows/sandbox.yml index dd1742a..9895cf4 100644 --- a/.github/workflows/sandbox.yml +++ b/.github/workflows/sandbox.yml @@ -11,10 +11,10 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: "1.22.x" + go-version: "1.23" - name: golangci-lint uses: golangci/golangci-lint-action@v4 with: - version: v1.59 + version: v1.63 - name: Run CI tests run: script -q -e -c "make citest" diff --git a/.golangci.yml b/.golangci.yml index 6d9f179..a060419 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,3 +1,4 @@ +version: "2" run: timeout: 2m linters: diff --git a/Makefile b/Makefile index 744b07b..75f14c8 100644 --- a/Makefile +++ b/Makefile @@ -198,3 +198,17 @@ explorer-clean: .PHONY: explorer-watch explorer-watch: cd ${PROJECT_REL_DIR}/explorer && make watch + +.PHONY: observability-up observability-down + + +.PHONY: observability-network observability-up observability-down + +observability-network: + docker network inspect byfn >/dev/null 2>&1 || docker network create byfn + +observability-up: observability-network + docker compose -f compose/tempo.yaml -f compose/grafana.yaml up -d --build + +observability-down: + docker compose -f compose/tempo.yaml -f compose/grafana.yaml down --volumes --remove-orphans diff --git a/README.md b/README.md index 569a4a4..79e9b9f 100644 --- a/README.md +++ b/README.md @@ -160,16 +160,30 @@ environment variable to point at an OTLP endpoint (e.g. a Grafana agent). When configured, trace spans will be created at key layers of the stack and delivered to the configured endpoint. +You can test tracing locally by setting the following env variables: + ```bash -SANDBOX_ORACLE_OTLP_ENDPOINT=http://otlp-hostname:4317 -SHIROCLIENT_GATEWAY_OTLP_TRACER_ENDPOINT=http://otlp-hostname:4317 -CHAINCODE_OTLP_TRACER_ENDPOINT=http://otlp-hostname:4317 +export SANDBOX_ORACLE_OTLP_ENDPOINT=http://tempo:4317 +export SHIROCLIENT_GATEWAY_OTLP_TRACER_ENDPOINT=http://tempo:4317 +export CHAINCODE_OTLP_TRACER_ENDPOINT=http://tempo:4317 +``` + +And bringing up observability: + ``` +make observability-up +``` + +Login to the local [grafana](http://localhost:3000/) with username: admin, +password: admin. + +Click "Explore" and select "Tempo" as the data source. Query `{}` to list +all traces. #### ELPS trace spans Phylum endpoints defined with `defendpoint` will automatically receive a span -named after the endpoint. Other functions in the phylum can be traced by adding +named after the endpoint. Other functions in the phylum can be traced by adding a special ELPS doc keyword: ```lisp diff --git a/api/buf.yaml b/api/buf.yaml index 70a0ab1..ccfef3b 100644 --- a/api/buf.yaml +++ b/api/buf.yaml @@ -1,7 +1,7 @@ version: v2 lint: use: - - DEFAULT + - STANDARD deps: - buf.build/googleapis/googleapis - buf.build/grpc-ecosystem/grpc-gateway diff --git a/api/pb/v1/oracle.pb.go b/api/pb/v1/oracle.pb.go index 6b89cac..e07f92e 100644 --- a/api/pb/v1/oracle.pb.go +++ b/api/pb/v1/oracle.pb.go @@ -1,10 +1,9 @@ -// Copyright © 2024 Luther Systems, Ltd. All right reserved. - +// Copyright © 2024 Luther Systems, Ltd. All rights reserved. // API Models and Documentation. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: pb/v1/oracle.proto @@ -16,6 +15,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -25,19 +25,129 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Represents a nationality using an enum for structured validation. +type Nationality int32 + +const ( + Nationality_NATIONALITY_UNSPECIFIED Nationality = 0 // Default value (should not be used) + Nationality_NATIONALITY_GB Nationality = 1 // United Kingdom + Nationality_NATIONALITY_US Nationality = 2 // United States + Nationality_NATIONALITY_FR Nationality = 3 // France + Nationality_NATIONALITY_DE Nationality = 4 // Germany +) + +// Enum value maps for Nationality. +var ( + Nationality_name = map[int32]string{ + 0: "NATIONALITY_UNSPECIFIED", + 1: "NATIONALITY_GB", + 2: "NATIONALITY_US", + 3: "NATIONALITY_FR", + 4: "NATIONALITY_DE", + } + Nationality_value = map[string]int32{ + "NATIONALITY_UNSPECIFIED": 0, + "NATIONALITY_GB": 1, + "NATIONALITY_US": 2, + "NATIONALITY_FR": 3, + "NATIONALITY_DE": 4, + } +) + +func (x Nationality) Enum() *Nationality { + p := new(Nationality) + *p = x + return p +} + +func (x Nationality) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Nationality) Descriptor() protoreflect.EnumDescriptor { + return file_pb_v1_oracle_proto_enumTypes[0].Descriptor() +} + +func (Nationality) Type() protoreflect.EnumType { + return &file_pb_v1_oracle_proto_enumTypes[0] +} + +func (x Nationality) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Nationality.Descriptor instead. +func (Nationality) EnumDescriptor() ([]byte, []int) { + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{0} +} + +// Represents the final outcome of a claim. +type Status int32 + +const ( + Status_STATUS_UNSPECIFIED Status = 0 // Default value (should not be used) + Status_STATUS_APPROVED Status = 1 // Claim was approved + Status_STATUS_DECLINED Status = 2 // Claim was declined + Status_STATUS_PAID Status = 3 // Claim has been paid out +) + +// Enum value maps for Status. +var ( + Status_name = map[int32]string{ + 0: "STATUS_UNSPECIFIED", + 1: "STATUS_APPROVED", + 2: "STATUS_DECLINED", + 3: "STATUS_PAID", + } + Status_value = map[string]int32{ + "STATUS_UNSPECIFIED": 0, + "STATUS_APPROVED": 1, + "STATUS_DECLINED": 2, + "STATUS_PAID": 3, + } +) + +func (x Status) Enum() *Status { + p := new(Status) + *p = x + return p +} + +func (x Status) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Status) Descriptor() protoreflect.EnumDescriptor { + return file_pb_v1_oracle_proto_enumTypes[1].Descriptor() +} + +func (Status) Type() protoreflect.EnumType { + return &file_pb_v1_oracle_proto_enumTypes[1] +} + +func (x Status) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Status.Descriptor instead. +func (Status) EnumDescriptor() ([]byte, []int) { + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{1} +} + +// Represents the processing state of the claim (process progress). type ClaimState int32 const ( - ClaimState_CLAIM_STATE_UNSPECIFIED ClaimState = 0 - ClaimState_CLAIM_STATE_NEW ClaimState = 1 - ClaimState_CLAIM_STATE_LOECLAIM_COLLECTED_DETAILS ClaimState = 2 - ClaimState_CLAIM_STATE_LOECLAIM_ID_VERIFIED ClaimState = 3 - ClaimState_CLAIM_STATE_OOECLAIM_REVIEWED ClaimState = 4 - ClaimState_CLAIM_STATE_OOECLAIM_VALIDATED ClaimState = 5 - ClaimState_CLAIM_STATE_LOEFIN_INVOICE_ISSUED ClaimState = 6 - ClaimState_CLAIM_STATE_OOEFIN_INVOICE_REVIEWED ClaimState = 7 - ClaimState_CLAIM_STATE_OOEFIN_INVOICE_APPROVED ClaimState = 8 - ClaimState_CLAIM_STATE_OOEPAY_PAYMENT_TRIGGERED ClaimState = 9 + ClaimState_CLAIM_STATE_UNSPECIFIED ClaimState = 0 // Default value (should not be used) + ClaimState_CLAIM_STATE_NEW ClaimState = 1 // Claim was created + ClaimState_CLAIM_STATE_LOECLAIM_DETAILS_COLLECTED ClaimState = 2 // Claimant details submitted + ClaimState_CLAIM_STATE_LOECLAIM_ID_VERIFIED ClaimState = 3 // Identity verified + ClaimState_CLAIM_STATE_OOECLAIM_REVIEWED ClaimState = 4 // Claim reviewed + ClaimState_CLAIM_STATE_OOECLAIM_VALIDATED ClaimState = 5 // Claim validated + ClaimState_CLAIM_STATE_LOEFIN_INVOICE_ISSUED ClaimState = 6 // Invoice issued + ClaimState_CLAIM_STATE_OOEFIN_INVOICE_REVIEWED ClaimState = 7 // Invoice reviewed + ClaimState_CLAIM_STATE_OOEFIN_INVOICE_APPROVED ClaimState = 8 // Invoice approved + ClaimState_CLAIM_STATE_OOEPAY_PAYMENT_TRIGGERED ClaimState = 9 // Payment triggered ) // Enum value maps for ClaimState. @@ -45,7 +155,7 @@ var ( ClaimState_name = map[int32]string{ 0: "CLAIM_STATE_UNSPECIFIED", 1: "CLAIM_STATE_NEW", - 2: "CLAIM_STATE_LOECLAIM_COLLECTED_DETAILS", + 2: "CLAIM_STATE_LOECLAIM_DETAILS_COLLECTED", 3: "CLAIM_STATE_LOECLAIM_ID_VERIFIED", 4: "CLAIM_STATE_OOECLAIM_REVIEWED", 5: "CLAIM_STATE_OOECLAIM_VALIDATED", @@ -57,7 +167,7 @@ var ( ClaimState_value = map[string]int32{ "CLAIM_STATE_UNSPECIFIED": 0, "CLAIM_STATE_NEW": 1, - "CLAIM_STATE_LOECLAIM_COLLECTED_DETAILS": 2, + "CLAIM_STATE_LOECLAIM_DETAILS_COLLECTED": 2, "CLAIM_STATE_LOECLAIM_ID_VERIFIED": 3, "CLAIM_STATE_OOECLAIM_REVIEWED": 4, "CLAIM_STATE_OOECLAIM_VALIDATED": 5, @@ -79,11 +189,11 @@ func (x ClaimState) String() string { } func (ClaimState) Descriptor() protoreflect.EnumDescriptor { - return file_pb_v1_oracle_proto_enumTypes[0].Descriptor() + return file_pb_v1_oracle_proto_enumTypes[2].Descriptor() } func (ClaimState) Type() protoreflect.EnumType { - return &file_pb_v1_oracle_proto_enumTypes[0] + return &file_pb_v1_oracle_proto_enumTypes[2] } func (x ClaimState) Number() protoreflect.EnumNumber { @@ -92,24 +202,149 @@ func (x ClaimState) Number() protoreflect.EnumNumber { // Deprecated: Use ClaimState.Descriptor instead. func (ClaimState) EnumDescriptor() ([]byte, []int) { + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{2} +} + +// Stores details of the claimant (person making the claim). +type Claimant struct { + state protoimpl.MessageState `protogen:"open.v1"` + AccountNumber string `protobuf:"bytes,1,opt,name=account_number,json=accountNumber,proto3" json:"account_number,omitempty"` // Bank account number (string to support leading zeros) + AccountSortCode string `protobuf:"bytes,2,opt,name=account_sort_code,json=accountSortCode,proto3" json:"account_sort_code,omitempty"` // Bank sort code (string to avoid leading-zero loss) + Dob string `protobuf:"bytes,3,opt,name=dob,proto3" json:"dob,omitempty"` // Date of birth (YYYY-MM-DD) + Surname string `protobuf:"bytes,4,opt,name=surname,proto3" json:"surname,omitempty"` // Surname (last name) + Forename string `protobuf:"bytes,5,opt,name=forename,proto3" json:"forename,omitempty"` // Forename (first name) + FullAddress string `protobuf:"bytes,6,opt,name=full_address,json=fullAddress,proto3" json:"full_address,omitempty"` // Full address in a single field + AddressNumber string `protobuf:"bytes,7,opt,name=address_number,json=addressNumber,proto3" json:"address_number,omitempty"` // House/building number + AddressStreet1 string `protobuf:"bytes,8,opt,name=address_street1,json=addressStreet1,proto3" json:"address_street1,omitempty"` // Street address + AddressPostcode string `protobuf:"bytes,9,opt,name=address_postcode,json=addressPostcode,proto3" json:"address_postcode,omitempty"` // Postal code (ZIP code) + AddressPostTown string `protobuf:"bytes,10,opt,name=address_post_town,json=addressPostTown,proto3" json:"address_post_town,omitempty"` // Post town or city + Nationality Nationality `protobuf:"varint,11,opt,name=nationality,proto3,enum=pb.v1.Nationality" json:"nationality,omitempty"` // Nationality, stored as an enum + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Claimant) Reset() { + *x = Claimant{} + mi := &file_pb_v1_oracle_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Claimant) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Claimant) ProtoMessage() {} + +func (x *Claimant) ProtoReflect() protoreflect.Message { + mi := &file_pb_v1_oracle_proto_msgTypes[0] + 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 Claimant.ProtoReflect.Descriptor instead. +func (*Claimant) Descriptor() ([]byte, []int) { return file_pb_v1_oracle_proto_rawDescGZIP(), []int{0} } -type CreateClaimRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Claimant) GetAccountNumber() string { + if x != nil { + return x.AccountNumber + } + return "" +} - Claim *Claim `protobuf:"bytes,1,opt,name=claim,proto3" json:"claim,omitempty"` +func (x *Claimant) GetAccountSortCode() string { + if x != nil { + return x.AccountSortCode + } + return "" +} + +func (x *Claimant) GetDob() string { + if x != nil { + return x.Dob + } + return "" +} + +func (x *Claimant) GetSurname() string { + if x != nil { + return x.Surname + } + return "" +} + +func (x *Claimant) GetForename() string { + if x != nil { + return x.Forename + } + return "" +} + +func (x *Claimant) GetFullAddress() string { + if x != nil { + return x.FullAddress + } + return "" +} + +func (x *Claimant) GetAddressNumber() string { + if x != nil { + return x.AddressNumber + } + return "" +} + +func (x *Claimant) GetAddressStreet1() string { + if x != nil { + return x.AddressStreet1 + } + return "" +} + +func (x *Claimant) GetAddressPostcode() string { + if x != nil { + return x.AddressPostcode + } + return "" +} + +func (x *Claimant) GetAddressPostTown() string { + if x != nil { + return x.AddressPostTown + } + return "" +} + +func (x *Claimant) GetNationality() Nationality { + if x != nil { + return x.Nationality + } + return Nationality_NATIONALITY_UNSPECIFIED +} + +// Request to create a claim. +type CreateClaimRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + DateOfAccident string `protobuf:"bytes,1,opt,name=date_of_accident,json=dateOfAccident,proto3" json:"date_of_accident,omitempty"` // Date when the accident occurred (YYYY-MM-DD) + DamageAmount int64 `protobuf:"varint,2,opt,name=damage_amount,json=damageAmount,proto3" json:"damage_amount,omitempty"` // Damage amount (stored in cents to avoid floating point issues) + ClaimReason string `protobuf:"bytes,3,opt,name=claim_reason,json=claimReason,proto3" json:"claim_reason,omitempty"` // Brief description of the reason for the claim + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateClaimRequest) Reset() { *x = CreateClaimRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_pb_v1_oracle_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pb_v1_oracle_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateClaimRequest) String() string { @@ -119,8 +354,8 @@ func (x *CreateClaimRequest) String() string { func (*CreateClaimRequest) ProtoMessage() {} func (x *CreateClaimRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_v1_oracle_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pb_v1_oracle_proto_msgTypes[1] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -132,32 +367,140 @@ func (x *CreateClaimRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateClaimRequest.ProtoReflect.Descriptor instead. func (*CreateClaimRequest) Descriptor() ([]byte, []int) { - return file_pb_v1_oracle_proto_rawDescGZIP(), []int{0} + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{1} +} + +func (x *CreateClaimRequest) GetDateOfAccident() string { + if x != nil { + return x.DateOfAccident + } + return "" +} + +func (x *CreateClaimRequest) GetDamageAmount() int64 { + if x != nil { + return x.DamageAmount + } + return 0 +} + +func (x *CreateClaimRequest) GetClaimReason() string { + if x != nil { + return x.ClaimReason + } + return "" +} + +// Represents an insurance claim, storing its lifecycle, status, and related claimant details. +type Claim struct { + state protoimpl.MessageState `protogen:"open.v1"` + ClaimId string `protobuf:"bytes,1,opt,name=claim_id,json=claimId,proto3" json:"claim_id,omitempty"` // Unique ID assigned by the backend (immutable) + State ClaimState `protobuf:"varint,2,opt,name=state,proto3,enum=pb.v1.ClaimState" json:"state,omitempty"` // The current internal processing state of the claim + Claimant *Claimant `protobuf:"bytes,3,opt,name=claimant,proto3" json:"claimant,omitempty"` // Claimant details + DateOfAccident string `protobuf:"bytes,4,opt,name=date_of_accident,json=dateOfAccident,proto3" json:"date_of_accident,omitempty"` // Date when the accident occurred (YYYY-MM-DD) + DamageAmount int64 `protobuf:"varint,5,opt,name=damage_amount,json=damageAmount,proto3" json:"damage_amount,omitempty"` // Damage amount (stored in cents to prevent floating point issues) + ClaimReason string `protobuf:"bytes,6,opt,name=claim_reason,json=claimReason,proto3" json:"claim_reason,omitempty"` // Description of why the claim was filed + Status Status `protobuf:"varint,7,opt,name=status,proto3,enum=pb.v1.Status" json:"status,omitempty"` // The final outcome of the claim + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Claim) Reset() { + *x = Claim{} + mi := &file_pb_v1_oracle_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Claim) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Claim) ProtoMessage() {} + +func (x *Claim) ProtoReflect() protoreflect.Message { + mi := &file_pb_v1_oracle_proto_msgTypes[2] + 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 Claim.ProtoReflect.Descriptor instead. +func (*Claim) Descriptor() ([]byte, []int) { + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{2} +} + +func (x *Claim) GetClaimId() string { + if x != nil { + return x.ClaimId + } + return "" } -func (x *CreateClaimRequest) GetClaim() *Claim { +func (x *Claim) GetState() ClaimState { + if x != nil { + return x.State + } + return ClaimState_CLAIM_STATE_UNSPECIFIED +} + +func (x *Claim) GetClaimant() *Claimant { if x != nil { - return x.Claim + return x.Claimant } return nil } +func (x *Claim) GetDateOfAccident() string { + if x != nil { + return x.DateOfAccident + } + return "" +} + +func (x *Claim) GetDamageAmount() int64 { + if x != nil { + return x.DamageAmount + } + return 0 +} + +func (x *Claim) GetClaimReason() string { + if x != nil { + return x.ClaimReason + } + return "" +} + +func (x *Claim) GetStatus() Status { + if x != nil { + return x.Status + } + return Status_STATUS_UNSPECIFIED +} + +// Response for creating a claim. type CreateClaimResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Result: + // + // *CreateClaimResponse_Exception + // *CreateClaimResponse_Claim + Result isCreateClaimResponse_Result `protobuf_oneof:"result"` unknownFields protoimpl.UnknownFields - - Exception *v1.Exception `protobuf:"bytes,1,opt,name=exception,proto3" json:"exception,omitempty"` - Claim *Claim `protobuf:"bytes,2,opt,name=claim,proto3" json:"claim,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateClaimResponse) Reset() { *x = CreateClaimResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_pb_v1_oracle_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pb_v1_oracle_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateClaimResponse) String() string { @@ -167,8 +510,8 @@ func (x *CreateClaimResponse) String() string { func (*CreateClaimResponse) ProtoMessage() {} func (x *CreateClaimResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_v1_oracle_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pb_v1_oracle_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -180,49 +523,75 @@ func (x *CreateClaimResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateClaimResponse.ProtoReflect.Descriptor instead. func (*CreateClaimResponse) Descriptor() ([]byte, []int) { - return file_pb_v1_oracle_proto_rawDescGZIP(), []int{1} + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{3} +} + +func (x *CreateClaimResponse) GetResult() isCreateClaimResponse_Result { + if x != nil { + return x.Result + } + return nil } func (x *CreateClaimResponse) GetException() *v1.Exception { if x != nil { - return x.Exception + if x, ok := x.Result.(*CreateClaimResponse_Exception); ok { + return x.Exception + } } return nil } func (x *CreateClaimResponse) GetClaim() *Claim { if x != nil { - return x.Claim + if x, ok := x.Result.(*CreateClaimResponse_Claim); ok { + return x.Claim + } } return nil } -type GetClaimRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type isCreateClaimResponse_Result interface { + isCreateClaimResponse_Result() +} - ClaimId string `protobuf:"bytes,1,opt,name=claim_id,json=claimId,proto3" json:"claim_id,omitempty"` +type CreateClaimResponse_Exception struct { + Exception *v1.Exception `protobuf:"bytes,1,opt,name=exception,proto3,oneof"` // Exception details if an error occurred } -func (x *GetClaimRequest) Reset() { - *x = GetClaimRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_pb_v1_oracle_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +type CreateClaimResponse_Claim struct { + Claim *Claim `protobuf:"bytes,2,opt,name=claim,proto3,oneof"` // The created claim if successful } -func (x *GetClaimRequest) String() string { +func (*CreateClaimResponse_Exception) isCreateClaimResponse_Result() {} + +func (*CreateClaimResponse_Claim) isCreateClaimResponse_Result() {} + +// Request to update an existing claim. +type AddClaimantRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ClaimId string `protobuf:"bytes,1,opt,name=claim_id,json=claimId,proto3" json:"claim_id,omitempty"` + Claimant *Claimant `protobuf:"bytes,2,opt,name=claimant,proto3" json:"claimant,omitempty"` // The claim details with updates + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AddClaimantRequest) Reset() { + *x = AddClaimantRequest{} + mi := &file_pb_v1_oracle_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AddClaimantRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClaimRequest) ProtoMessage() {} +func (*AddClaimantRequest) ProtoMessage() {} -func (x *GetClaimRequest) ProtoReflect() protoreflect.Message { - mi := &file_pb_v1_oracle_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { +func (x *AddClaimantRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_v1_oracle_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -232,45 +601,53 @@ func (x *GetClaimRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClaimRequest.ProtoReflect.Descriptor instead. -func (*GetClaimRequest) Descriptor() ([]byte, []int) { - return file_pb_v1_oracle_proto_rawDescGZIP(), []int{2} +// Deprecated: Use AddClaimantRequest.ProtoReflect.Descriptor instead. +func (*AddClaimantRequest) Descriptor() ([]byte, []int) { + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{4} } -func (x *GetClaimRequest) GetClaimId() string { +func (x *AddClaimantRequest) GetClaimId() string { if x != nil { return x.ClaimId } return "" } -type GetClaimResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *AddClaimantRequest) GetClaimant() *Claimant { + if x != nil { + return x.Claimant + } + return nil +} - Exception *v1.Exception `protobuf:"bytes,1,opt,name=exception,proto3" json:"exception,omitempty"` - Claim *Claim `protobuf:"bytes,2,opt,name=claim,proto3" json:"claim,omitempty"` +// Response for updating a claim. +type AddClaimantResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Result: + // + // *AddClaimantResponse_Exception + // *AddClaimantResponse_Claim + Result isAddClaimantResponse_Result `protobuf_oneof:"result"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetClaimResponse) Reset() { - *x = GetClaimResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_pb_v1_oracle_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *AddClaimantResponse) Reset() { + *x = AddClaimantResponse{} + mi := &file_pb_v1_oracle_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *GetClaimResponse) String() string { +func (x *AddClaimantResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClaimResponse) ProtoMessage() {} +func (*AddClaimantResponse) ProtoMessage() {} -func (x *GetClaimResponse) ProtoReflect() protoreflect.Message { - mi := &file_pb_v1_oracle_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { +func (x *AddClaimantResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_v1_oracle_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -280,55 +657,125 @@ func (x *GetClaimResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClaimResponse.ProtoReflect.Descriptor instead. -func (*GetClaimResponse) Descriptor() ([]byte, []int) { - return file_pb_v1_oracle_proto_rawDescGZIP(), []int{3} +// Deprecated: Use AddClaimantResponse.ProtoReflect.Descriptor instead. +func (*AddClaimantResponse) Descriptor() ([]byte, []int) { + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{5} } -func (x *GetClaimResponse) GetException() *v1.Exception { +func (x *AddClaimantResponse) GetResult() isAddClaimantResponse_Result { if x != nil { - return x.Exception + return x.Result } return nil } -func (x *GetClaimResponse) GetClaim() *Claim { +func (x *AddClaimantResponse) GetException() *v1.Exception { if x != nil { - return x.Claim + if x, ok := x.Result.(*AddClaimantResponse_Exception); ok { + return x.Exception + } } return nil } -// Claim represents an insurance claim. -type Claim struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *AddClaimantResponse) GetClaim() *Claim { + if x != nil { + if x, ok := x.Result.(*AddClaimantResponse_Claim); ok { + return x.Claim + } + } + return nil +} + +type isAddClaimantResponse_Result interface { + isAddClaimantResponse_Result() +} + +type AddClaimantResponse_Exception struct { + Exception *v1.Exception `protobuf:"bytes,1,opt,name=exception,proto3,oneof"` // Exception details if an error occurred +} + +type AddClaimantResponse_Claim struct { + Claim *Claim `protobuf:"bytes,2,opt,name=claim,proto3,oneof"` // The updated claim if successful +} + +func (*AddClaimantResponse_Exception) isAddClaimantResponse_Result() {} + +func (*AddClaimantResponse_Claim) isAddClaimantResponse_Result() {} + +// Request to retrieve a claim by its unique ID. +type GetClaimRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ClaimId string `protobuf:"bytes,1,opt,name=claim_id,json=claimId,proto3" json:"claim_id,omitempty"` // Unique identifier of the claim to fetch unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - // Unique ID for the claim. Immutable. Set by backend. - ClaimId string `protobuf:"bytes,1,opt,name=claim_id,json=claimId,proto3" json:"claim_id,omitempty"` - // State of the claim. - State ClaimState `protobuf:"varint,2,opt,name=state,proto3,enum=pb.v1.ClaimState" json:"state,omitempty"` +func (x *GetClaimRequest) Reset() { + *x = GetClaimRequest{} + mi := &file_pb_v1_oracle_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *Claim) Reset() { - *x = Claim{} - if protoimpl.UnsafeEnabled { - mi := &file_pb_v1_oracle_proto_msgTypes[4] +func (x *GetClaimRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetClaimRequest) ProtoMessage() {} + +func (x *GetClaimRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_v1_oracle_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) } -func (x *Claim) String() string { +// Deprecated: Use GetClaimRequest.ProtoReflect.Descriptor instead. +func (*GetClaimRequest) Descriptor() ([]byte, []int) { + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{6} +} + +func (x *GetClaimRequest) GetClaimId() string { + if x != nil { + return x.ClaimId + } + return "" +} + +// Response containing the requested claim. +type GetClaimResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Result: + // + // *GetClaimResponse_Exception + // *GetClaimResponse_Claim + Result isGetClaimResponse_Result `protobuf_oneof:"result"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetClaimResponse) Reset() { + *x = GetClaimResponse{} + mi := &file_pb_v1_oracle_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetClaimResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Claim) ProtoMessage() {} +func (*GetClaimResponse) ProtoMessage() {} -func (x *Claim) ProtoReflect() protoreflect.Message { - mi := &file_pb_v1_oracle_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { +func (x *GetClaimResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_v1_oracle_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -338,126 +785,236 @@ func (x *Claim) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Claim.ProtoReflect.Descriptor instead. -func (*Claim) Descriptor() ([]byte, []int) { - return file_pb_v1_oracle_proto_rawDescGZIP(), []int{4} +// Deprecated: Use GetClaimResponse.ProtoReflect.Descriptor instead. +func (*GetClaimResponse) Descriptor() ([]byte, []int) { + return file_pb_v1_oracle_proto_rawDescGZIP(), []int{7} } -func (x *Claim) GetClaimId() string { +func (x *GetClaimResponse) GetResult() isGetClaimResponse_Result { if x != nil { - return x.ClaimId + return x.Result } - return "" + return nil } -func (x *Claim) GetState() ClaimState { +func (x *GetClaimResponse) GetException() *v1.Exception { if x != nil { - return x.State + if x, ok := x.Result.(*GetClaimResponse_Exception); ok { + return x.Exception + } } - return ClaimState_CLAIM_STATE_UNSPECIFIED + return nil +} + +func (x *GetClaimResponse) GetClaim() *Claim { + if x != nil { + if x, ok := x.Result.(*GetClaimResponse_Claim); ok { + return x.Claim + } + } + return nil +} + +type isGetClaimResponse_Result interface { + isGetClaimResponse_Result() +} + +type GetClaimResponse_Exception struct { + Exception *v1.Exception `protobuf:"bytes,1,opt,name=exception,proto3,oneof"` // Exception details if an error occurred } +type GetClaimResponse_Claim struct { + Claim *Claim `protobuf:"bytes,2,opt,name=claim,proto3,oneof"` // The retrieved claim if successful +} + +func (*GetClaimResponse_Exception) isGetClaimResponse_Result() {} + +func (*GetClaimResponse_Claim) isGetClaimResponse_Result() {} + var File_pb_v1_oracle_proto protoreflect.FileDescriptor -var file_pb_v1_oracle_proto_rawDesc = []byte{ +var file_pb_v1_oracle_proto_rawDesc = string([]byte{ 0x0a, 0x12, 0x70, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x38, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x05, - 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x22, 0x6d, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x05, 0x63, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x03, 0x0a, 0x08, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x61, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x6f, + 0x72, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6f, 0x62, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6f, 0x62, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x65, 0x65, 0x74, + 0x31, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x77, + 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x50, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x77, 0x6e, 0x12, 0x34, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x86, + 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, + 0x5f, 0x61, 0x63, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, + 0x23, 0x0a, 0x0d, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x91, 0x02, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x6e, 0x74, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, + 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, + 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7b, 0x0a, 0x13, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x65, + 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x42, 0x08, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x5c, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x08, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x6e, 0x74, 0x52, 0x08, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x61, 0x6e, 0x74, 0x22, 0x7b, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, + 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, + 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x48, 0x00, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x2c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, + 0x64, 0x22, 0x78, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x22, - 0x2c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x22, 0x6a, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x32, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x22, 0x4b, 0x0a, 0x05, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, - 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2a, 0xfa, 0x02, 0x0a, 0x0a, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4c, 0x41, 0x49, 0x4d, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x45, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, - 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, - 0x53, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x45, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x49, 0x44, 0x5f, 0x56, - 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4c, 0x41, - 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, 0x45, 0x43, 0x4c, 0x41, 0x49, - 0x4d, 0x5f, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x45, 0x44, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, - 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, 0x45, 0x43, - 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, - 0x12, 0x25, 0x0a, 0x21, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x4c, 0x4f, 0x45, 0x46, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x49, - 0x53, 0x53, 0x55, 0x45, 0x44, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4c, 0x41, 0x49, 0x4d, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, 0x45, 0x46, 0x49, 0x4e, 0x5f, 0x49, 0x4e, - 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x45, 0x44, 0x10, 0x07, - 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x4f, 0x4f, 0x45, 0x46, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x41, - 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x4c, 0x41, - 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, 0x45, 0x50, 0x41, 0x59, 0x5f, - 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x45, - 0x44, 0x10, 0x09, 0x42, 0x79, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, - 0x42, 0x0b, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x75, 0x74, 0x68, - 0x65, 0x72, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, - 0x78, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x58, - 0x58, 0xaa, 0x02, 0x05, 0x50, 0x62, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x05, 0x50, 0x62, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x11, 0x50, 0x62, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x50, 0x62, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2a, 0x7a, 0x0a, 0x0b, 0x4e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x42, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4e, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x53, 0x10, 0x02, 0x12, + 0x12, 0x0a, 0x0e, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x46, + 0x52, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x49, + 0x54, 0x59, 0x5f, 0x44, 0x45, 0x10, 0x04, 0x2a, 0x5b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x01, 0x12, 0x13, + 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x41, + 0x49, 0x44, 0x10, 0x03, 0x2a, 0xfa, 0x02, 0x0a, 0x0a, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x45, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x44, 0x45, + 0x54, 0x41, 0x49, 0x4c, 0x53, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, + 0x02, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x4c, 0x4f, 0x45, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x45, 0x52, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4c, 0x41, 0x49, 0x4d, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, 0x45, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, + 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x45, 0x44, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4c, + 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, 0x45, 0x43, 0x4c, 0x41, + 0x49, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x25, + 0x0a, 0x21, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, + 0x45, 0x46, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x49, 0x53, 0x53, + 0x55, 0x45, 0x44, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, 0x45, 0x46, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, + 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x45, 0x44, 0x10, 0x07, 0x12, 0x27, + 0x0a, 0x23, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, + 0x45, 0x46, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x50, 0x50, + 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x4c, 0x41, 0x49, 0x4d, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4f, 0x45, 0x50, 0x41, 0x59, 0x5f, 0x50, 0x41, + 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x45, 0x44, 0x10, + 0x09, 0x42, 0x79, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x0b, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x75, 0x74, 0x68, 0x65, 0x72, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x58, 0x58, 0xaa, + 0x02, 0x05, 0x50, 0x62, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x05, 0x50, 0x62, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x11, 0x50, 0x62, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x50, 0x62, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_pb_v1_oracle_proto_rawDescOnce sync.Once - file_pb_v1_oracle_proto_rawDescData = file_pb_v1_oracle_proto_rawDesc + file_pb_v1_oracle_proto_rawDescData []byte ) func file_pb_v1_oracle_proto_rawDescGZIP() []byte { file_pb_v1_oracle_proto_rawDescOnce.Do(func() { - file_pb_v1_oracle_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_v1_oracle_proto_rawDescData) + file_pb_v1_oracle_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_pb_v1_oracle_proto_rawDesc), len(file_pb_v1_oracle_proto_rawDesc))) }) return file_pb_v1_oracle_proto_rawDescData } -var file_pb_v1_oracle_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_pb_v1_oracle_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_pb_v1_oracle_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_pb_v1_oracle_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_pb_v1_oracle_proto_goTypes = []any{ - (ClaimState)(0), // 0: pb.v1.ClaimState - (*CreateClaimRequest)(nil), // 1: pb.v1.CreateClaimRequest - (*CreateClaimResponse)(nil), // 2: pb.v1.CreateClaimResponse - (*GetClaimRequest)(nil), // 3: pb.v1.GetClaimRequest - (*GetClaimResponse)(nil), // 4: pb.v1.GetClaimResponse + (Nationality)(0), // 0: pb.v1.Nationality + (Status)(0), // 1: pb.v1.Status + (ClaimState)(0), // 2: pb.v1.ClaimState + (*Claimant)(nil), // 3: pb.v1.Claimant + (*CreateClaimRequest)(nil), // 4: pb.v1.CreateClaimRequest (*Claim)(nil), // 5: pb.v1.Claim - (*v1.Exception)(nil), // 6: common.v1.Exception + (*CreateClaimResponse)(nil), // 6: pb.v1.CreateClaimResponse + (*AddClaimantRequest)(nil), // 7: pb.v1.AddClaimantRequest + (*AddClaimantResponse)(nil), // 8: pb.v1.AddClaimantResponse + (*GetClaimRequest)(nil), // 9: pb.v1.GetClaimRequest + (*GetClaimResponse)(nil), // 10: pb.v1.GetClaimResponse + (*v1.Exception)(nil), // 11: common.v1.Exception } var file_pb_v1_oracle_proto_depIdxs = []int32{ - 5, // 0: pb.v1.CreateClaimRequest.claim:type_name -> pb.v1.Claim - 6, // 1: pb.v1.CreateClaimResponse.exception:type_name -> common.v1.Exception - 5, // 2: pb.v1.CreateClaimResponse.claim:type_name -> pb.v1.Claim - 6, // 3: pb.v1.GetClaimResponse.exception:type_name -> common.v1.Exception - 5, // 4: pb.v1.GetClaimResponse.claim:type_name -> pb.v1.Claim - 0, // 5: pb.v1.Claim.state:type_name -> pb.v1.ClaimState - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 0, // 0: pb.v1.Claimant.nationality:type_name -> pb.v1.Nationality + 2, // 1: pb.v1.Claim.state:type_name -> pb.v1.ClaimState + 3, // 2: pb.v1.Claim.claimant:type_name -> pb.v1.Claimant + 1, // 3: pb.v1.Claim.status:type_name -> pb.v1.Status + 11, // 4: pb.v1.CreateClaimResponse.exception:type_name -> common.v1.Exception + 5, // 5: pb.v1.CreateClaimResponse.claim:type_name -> pb.v1.Claim + 3, // 6: pb.v1.AddClaimantRequest.claimant:type_name -> pb.v1.Claimant + 11, // 7: pb.v1.AddClaimantResponse.exception:type_name -> common.v1.Exception + 5, // 8: pb.v1.AddClaimantResponse.claim:type_name -> pb.v1.Claim + 11, // 9: pb.v1.GetClaimResponse.exception:type_name -> common.v1.Exception + 5, // 10: pb.v1.GetClaimResponse.claim:type_name -> pb.v1.Claim + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_pb_v1_oracle_proto_init() } @@ -465,75 +1022,25 @@ func file_pb_v1_oracle_proto_init() { if File_pb_v1_oracle_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_pb_v1_oracle_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*CreateClaimRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pb_v1_oracle_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*CreateClaimResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pb_v1_oracle_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*GetClaimRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pb_v1_oracle_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetClaimResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pb_v1_oracle_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Claim); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } + file_pb_v1_oracle_proto_msgTypes[3].OneofWrappers = []any{ + (*CreateClaimResponse_Exception)(nil), + (*CreateClaimResponse_Claim)(nil), + } + file_pb_v1_oracle_proto_msgTypes[5].OneofWrappers = []any{ + (*AddClaimantResponse_Exception)(nil), + (*AddClaimantResponse_Claim)(nil), + } + file_pb_v1_oracle_proto_msgTypes[7].OneofWrappers = []any{ + (*GetClaimResponse_Exception)(nil), + (*GetClaimResponse_Claim)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_pb_v1_oracle_proto_rawDesc, - NumEnums: 1, - NumMessages: 5, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_pb_v1_oracle_proto_rawDesc), len(file_pb_v1_oracle_proto_rawDesc)), + NumEnums: 3, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, @@ -543,7 +1050,6 @@ func file_pb_v1_oracle_proto_init() { MessageInfos: file_pb_v1_oracle_proto_msgTypes, }.Build() File_pb_v1_oracle_proto = out.File - file_pb_v1_oracle_proto_rawDesc = nil file_pb_v1_oracle_proto_goTypes = nil file_pb_v1_oracle_proto_depIdxs = nil } diff --git a/api/pb/v1/oracle.proto b/api/pb/v1/oracle.proto index 3e3bad3..9dc0517 100644 --- a/api/pb/v1/oracle.proto +++ b/api/pb/v1/oracle.proto @@ -1,5 +1,4 @@ -// Copyright © 2024 Luther Systems, Ltd. All right reserved. - +// Copyright © 2024 Luther Systems, Ltd. All rights reserved. // API Models and Documentation. syntax = "proto3"; @@ -10,41 +9,101 @@ import "common/v1/exception.proto"; option go_package = "github.com/luthersystems/sandbox/api/pb/v1"; +// Represents a nationality using an enum for structured validation. +enum Nationality { + NATIONALITY_UNSPECIFIED = 0; // Default value (should not be used) + NATIONALITY_GB = 1; // United Kingdom + NATIONALITY_US = 2; // United States + NATIONALITY_FR = 3; // France + NATIONALITY_DE = 4; // Germany +} + +// Stores details of the claimant (person making the claim). +message Claimant { + string account_number = 1; // Bank account number (string to support leading zeros) + string account_sort_code = 2; // Bank sort code (string to avoid leading-zero loss) + string dob = 3; // Date of birth (YYYY-MM-DD) + string surname = 4; // Surname (last name) + string forename = 5; // Forename (first name) + string full_address = 6; // Full address in a single field + string address_number = 7; // House/building number + string address_street1 = 8; // Street address + string address_postcode = 9; // Postal code (ZIP code) + string address_post_town = 10; // Post town or city + Nationality nationality = 11; // Nationality, stored as an enum +} + +// Represents the final outcome of a claim. +enum Status { + STATUS_UNSPECIFIED = 0; // Default value (should not be used) + STATUS_APPROVED = 1; // Claim was approved + STATUS_DECLINED = 2; // Claim was declined + STATUS_PAID = 3; // Claim has been paid out +} + +// Represents the processing state of the claim (process progress). +enum ClaimState { + CLAIM_STATE_UNSPECIFIED = 0; // Default value (should not be used) + CLAIM_STATE_NEW = 1; // Claim was created + CLAIM_STATE_LOECLAIM_DETAILS_COLLECTED = 2; // Claimant details submitted + CLAIM_STATE_LOECLAIM_ID_VERIFIED = 3; // Identity verified + CLAIM_STATE_OOECLAIM_REVIEWED = 4; // Claim reviewed + CLAIM_STATE_OOECLAIM_VALIDATED = 5; // Claim validated + CLAIM_STATE_LOEFIN_INVOICE_ISSUED = 6; // Invoice issued + CLAIM_STATE_OOEFIN_INVOICE_REVIEWED = 7; // Invoice reviewed + CLAIM_STATE_OOEFIN_INVOICE_APPROVED = 8; // Invoice approved + CLAIM_STATE_OOEPAY_PAYMENT_TRIGGERED = 9; // Payment triggered +} + +// Request to create a claim. message CreateClaimRequest { - Claim claim = 1; + string date_of_accident = 1; // Date when the accident occurred (YYYY-MM-DD) + int64 damage_amount = 2; // Damage amount (stored in cents to avoid floating point issues) + string claim_reason = 3; // Brief description of the reason for the claim +} + +// Represents an insurance claim, storing its lifecycle, status, and related claimant details. +message Claim { + string claim_id = 1; // Unique ID assigned by the backend (immutable) + ClaimState state = 2; // The current internal processing state of the claim + Claimant claimant = 3; // Claimant details + string date_of_accident = 4; // Date when the accident occurred (YYYY-MM-DD) + int64 damage_amount = 5; // Damage amount (stored in cents to prevent floating point issues) + string claim_reason = 6; // Description of why the claim was filed + Status status = 7; // The final outcome of the claim } +// Response for creating a claim. message CreateClaimResponse { - common.v1.Exception exception = 1; - Claim claim = 2; + oneof result { + common.v1.Exception exception = 1; // Exception details if an error occurred + Claim claim = 2; // The created claim if successful + } } -message GetClaimRequest { +// Request to update an existing claim. +message AddClaimantRequest { string claim_id = 1; + Claimant claimant = 2; // The claim details with updates } -message GetClaimResponse { - common.v1.Exception exception = 1; - Claim claim = 2; +// Response for updating a claim. +message AddClaimantResponse { + oneof result { + common.v1.Exception exception = 1; // Exception details if an error occurred + Claim claim = 2; // The updated claim if successful + } } -enum ClaimState { - CLAIM_STATE_UNSPECIFIED = 0; - CLAIM_STATE_NEW = 1; - CLAIM_STATE_LOECLAIM_COLLECTED_DETAILS = 2; - CLAIM_STATE_LOECLAIM_ID_VERIFIED = 3; - CLAIM_STATE_OOECLAIM_REVIEWED = 4; - CLAIM_STATE_OOECLAIM_VALIDATED = 5; - CLAIM_STATE_LOEFIN_INVOICE_ISSUED = 6; - CLAIM_STATE_OOEFIN_INVOICE_REVIEWED = 7; - CLAIM_STATE_OOEFIN_INVOICE_APPROVED = 8; - CLAIM_STATE_OOEPAY_PAYMENT_TRIGGERED = 9; -} - -// Claim represents an insurance claim. -message Claim { - // Unique ID for the claim. Immutable. Set by backend. - string claim_id = 1; - // State of the claim. - ClaimState state = 2; +// Request to retrieve a claim by its unique ID. +message GetClaimRequest { + string claim_id = 1; // Unique identifier of the claim to fetch +} + +// Response containing the requested claim. +message GetClaimResponse { + oneof result { + common.v1.Exception exception = 1; // Exception details if an error occurred + Claim claim = 2; // The retrieved claim if successful + } } diff --git a/api/pb/v1/oracle.swagger.json b/api/pb/v1/oracle.swagger.json index fe6cf81..21d22a2 100644 --- a/api/pb/v1/oracle.swagger.json +++ b/api/pb/v1/oracle.swagger.json @@ -12,16 +12,7 @@ ], "paths": {}, "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { + "googlerpcStatus": { "type": "object", "properties": { "code": { @@ -39,6 +30,15 @@ } } } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string" + } + }, + "additionalProperties": {} } } } diff --git a/api/srvpb/v1/oracle.pb.go b/api/srvpb/v1/oracle.pb.go index 0e2b6fa..4dc1820 100644 --- a/api/srvpb/v1/oracle.pb.go +++ b/api/srvpb/v1/oracle.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.36.5 // protoc (unknown) // source: srvpb/v1/oracle.proto @@ -18,6 +18,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + unsafe "unsafe" ) const ( @@ -29,7 +30,7 @@ const ( var File_srvpb_v1_oracle_proto protoreflect.FileDescriptor -var file_srvpb_v1_oracle_proto_rawDesc = []byte{ +var file_srvpb_v1_oracle_proto_rawDesc = string([]byte{ 0x0a, 0x15, 0x73, 0x72, 0x76, 0x70, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x73, 0x72, 0x76, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, @@ -40,7 +41,7 @@ var file_srvpb_v1_oracle_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xec, 0x02, 0x0a, 0x0e, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xe1, 0x03, 0x0a, 0x0e, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x25, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, @@ -50,82 +51,93 @@ var file_srvpb_v1_oracle_proto_rawDesc = []byte{ 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x12, 0x6b, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, + 0x12, 0x64, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x05, 0x63, 0x6c, 0x61, 0x69, - 0x6d, 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x65, 0x0a, - 0x08, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x92, 0x41, 0x09, 0x0a, - 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x2f, 0x7b, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x5f, 0x69, 0x64, 0x7d, 0x42, 0xaa, 0x05, 0x92, 0x41, 0xa0, 0x04, 0x12, 0x12, 0x0a, 0x0b, 0x53, - 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x20, 0x41, 0x50, 0x49, 0x32, 0x03, 0x31, 0x2e, 0x30, 0x2a, - 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, - 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x53, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0x4c, 0x0a, - 0x28, 0x42, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x64, 0x65, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x62, 0x75, 0x73, 0x69, 0x6e, - 0x65, 0x73, 0x73, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x3f, 0x0a, 0x03, 0x34, - 0x30, 0x31, 0x12, 0x38, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x1e, 0x1a, 0x1c, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x61, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, + 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x92, 0x41, + 0x09, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, + 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x2f, 0x7b, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, + 0x6e, 0x74, 0x12, 0x65, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x16, + 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x28, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x2f, 0x7b, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0xaa, 0x05, 0x92, 0x41, 0xa0, 0x04, + 0x12, 0x12, 0x0a, 0x0b, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x20, 0x41, 0x50, 0x49, 0x32, + 0x03, 0x31, 0x2e, 0x30, 0x2a, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x53, 0x0a, 0x03, 0x34, + 0x30, 0x30, 0x12, 0x4c, 0x0a, 0x28, 0x42, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, + 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x12, 0x20, + 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x52, 0x3f, 0x0a, 0x03, 0x34, 0x30, 0x31, 0x12, 0x38, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, + 0x20, 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x52, 0x3c, 0x0a, 0x03, 0x34, 0x30, 0x33, 0x12, 0x35, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x12, 0x20, 0x0a, + 0x1e, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x3b, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x34, 0x0a, 0x10, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, + 0x67, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x3c, 0x0a, 0x03, - 0x34, 0x30, 0x33, 0x12, 0x35, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x20, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x3b, 0x0a, 0x03, 0x34, 0x30, - 0x34, 0x12, 0x34, 0x0a, 0x10, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x23, 0x0a, 0x03, 0x34, 0x30, 0x35, 0x12, 0x1c, - 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x12, 0x06, 0x0a, 0x04, 0x9a, 0x02, 0x01, 0x07, 0x52, 0x4b, 0x0a, 0x03, - 0x35, 0x30, 0x30, 0x12, 0x44, 0x0a, 0x20, 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x40, 0x0a, 0x03, 0x35, 0x30, 0x33, - 0x12, 0x39, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5a, 0x1e, 0x0a, 0x1c, 0x0a, - 0x09, 0x58, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x12, 0x0f, 0x08, 0x02, 0x1a, 0x09, - 0x58, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x20, 0x02, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, - 0x2e, 0x73, 0x72, 0x76, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x75, 0x74, 0x68, 0x65, 0x72, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x73, 0x2f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, - 0x72, 0x76, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x53, 0x72, 0x76, 0x70, 0x62, - 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x53, 0x72, 0x76, 0x70, 0x62, 0x5c, 0x56, 0x31, 0xe2, 0x02, - 0x14, 0x53, 0x72, 0x76, 0x70, 0x62, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x53, 0x72, 0x76, 0x70, 0x62, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x23, 0x0a, 0x03, + 0x34, 0x30, 0x35, 0x12, 0x1c, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x06, 0x0a, 0x04, 0x9a, 0x02, 0x01, + 0x07, 0x52, 0x4b, 0x0a, 0x03, 0x35, 0x30, 0x30, 0x12, 0x44, 0x0a, 0x20, 0x55, 0x6e, 0x65, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x1e, + 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x63, + 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x40, + 0x0a, 0x03, 0x35, 0x30, 0x33, 0x12, 0x39, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x20, + 0x0a, 0x1e, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x5a, 0x1e, 0x0a, 0x1c, 0x0a, 0x09, 0x58, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x12, + 0x0f, 0x08, 0x02, 0x1a, 0x09, 0x58, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x20, 0x02, + 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x72, 0x76, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x0b, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x75, 0x74, 0x68, 0x65, 0x72, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x73, 0x72, 0x76, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x08, + 0x53, 0x72, 0x76, 0x70, 0x62, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x53, 0x72, 0x76, 0x70, 0x62, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x14, 0x53, 0x72, 0x76, 0x70, 0x62, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x53, 0x72, 0x76, + 0x70, 0x62, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var file_srvpb_v1_oracle_proto_goTypes = []any{ (*v1.GetHealthCheckRequest)(nil), // 0: healthcheck.v1.GetHealthCheckRequest (*v11.CreateClaimRequest)(nil), // 1: pb.v1.CreateClaimRequest - (*v11.GetClaimRequest)(nil), // 2: pb.v1.GetClaimRequest - (*v1.GetHealthCheckResponse)(nil), // 3: healthcheck.v1.GetHealthCheckResponse - (*v11.CreateClaimResponse)(nil), // 4: pb.v1.CreateClaimResponse - (*v11.GetClaimResponse)(nil), // 5: pb.v1.GetClaimResponse + (*v11.AddClaimantRequest)(nil), // 2: pb.v1.AddClaimantRequest + (*v11.GetClaimRequest)(nil), // 3: pb.v1.GetClaimRequest + (*v1.GetHealthCheckResponse)(nil), // 4: healthcheck.v1.GetHealthCheckResponse + (*v11.CreateClaimResponse)(nil), // 5: pb.v1.CreateClaimResponse + (*v11.AddClaimantResponse)(nil), // 6: pb.v1.AddClaimantResponse + (*v11.GetClaimResponse)(nil), // 7: pb.v1.GetClaimResponse } var file_srvpb_v1_oracle_proto_depIdxs = []int32{ 0, // 0: srvpb.v1.SandboxService.GetHealthCheck:input_type -> healthcheck.v1.GetHealthCheckRequest 1, // 1: srvpb.v1.SandboxService.CreateClaim:input_type -> pb.v1.CreateClaimRequest - 2, // 2: srvpb.v1.SandboxService.GetClaim:input_type -> pb.v1.GetClaimRequest - 3, // 3: srvpb.v1.SandboxService.GetHealthCheck:output_type -> healthcheck.v1.GetHealthCheckResponse - 4, // 4: srvpb.v1.SandboxService.CreateClaim:output_type -> pb.v1.CreateClaimResponse - 5, // 5: srvpb.v1.SandboxService.GetClaim:output_type -> pb.v1.GetClaimResponse - 3, // [3:6] is the sub-list for method output_type - 0, // [0:3] is the sub-list for method input_type + 2, // 2: srvpb.v1.SandboxService.AddClaimant:input_type -> pb.v1.AddClaimantRequest + 3, // 3: srvpb.v1.SandboxService.GetClaim:input_type -> pb.v1.GetClaimRequest + 4, // 4: srvpb.v1.SandboxService.GetHealthCheck:output_type -> healthcheck.v1.GetHealthCheckResponse + 5, // 5: srvpb.v1.SandboxService.CreateClaim:output_type -> pb.v1.CreateClaimResponse + 6, // 6: srvpb.v1.SandboxService.AddClaimant:output_type -> pb.v1.AddClaimantResponse + 7, // 7: srvpb.v1.SandboxService.GetClaim:output_type -> pb.v1.GetClaimResponse + 4, // [4:8] is the sub-list for method output_type + 0, // [0:4] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -140,7 +152,7 @@ func file_srvpb_v1_oracle_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_srvpb_v1_oracle_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_srvpb_v1_oracle_proto_rawDesc), len(file_srvpb_v1_oracle_proto_rawDesc)), NumEnums: 0, NumMessages: 0, NumExtensions: 0, @@ -150,7 +162,6 @@ func file_srvpb_v1_oracle_proto_init() { DependencyIndexes: file_srvpb_v1_oracle_proto_depIdxs, }.Build() File_srvpb_v1_oracle_proto = out.File - file_srvpb_v1_oracle_proto_rawDesc = nil file_srvpb_v1_oracle_proto_goTypes = nil file_srvpb_v1_oracle_proto_depIdxs = nil } diff --git a/api/srvpb/v1/oracle.pb.gw.go b/api/srvpb/v1/oracle.pb.gw.go index b082b14..2deb2f4 100644 --- a/api/srvpb/v1/oracle.pb.gw.go +++ b/api/srvpb/v1/oracle.pb.gw.go @@ -69,11 +69,18 @@ func local_request_SandboxService_GetHealthCheck_0(ctx context.Context, marshale } +var ( + filter_SandboxService_CreateClaim_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + func request_SandboxService_CreateClaim_0(ctx context.Context, marshaler runtime.Marshaler, client SandboxServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq v1_1.CreateClaimRequest var metadata runtime.ServerMetadata - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Claim); err != nil && err != io.EOF { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SandboxService_CreateClaim_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -86,7 +93,10 @@ func local_request_SandboxService_CreateClaim_0(ctx context.Context, marshaler r var protoReq v1_1.CreateClaimRequest var metadata runtime.ServerMetadata - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Claim); err != nil && err != io.EOF { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SandboxService_CreateClaim_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -95,6 +105,66 @@ func local_request_SandboxService_CreateClaim_0(ctx context.Context, marshaler r } +func request_SandboxService_AddClaimant_0(ctx context.Context, marshaler runtime.Marshaler, client SandboxServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq v1_1.AddClaimantRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["claim_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "claim_id") + } + + protoReq.ClaimId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "claim_id", err) + } + + msg, err := client.AddClaimant(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SandboxService_AddClaimant_0(ctx context.Context, marshaler runtime.Marshaler, server SandboxServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq v1_1.AddClaimantRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["claim_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "claim_id") + } + + protoReq.ClaimId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "claim_id", err) + } + + msg, err := server.AddClaimant(ctx, &protoReq) + return msg, metadata, err + +} + func request_SandboxService_GetClaim_0(ctx context.Context, marshaler runtime.Marshaler, client SandboxServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq v1_1.GetClaimRequest var metadata runtime.ServerMetadata @@ -203,6 +273,31 @@ func RegisterSandboxServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) + mux.Handle("POST", pattern_SandboxService_AddClaimant_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/srvpb.v1.SandboxService/AddClaimant", runtime.WithHTTPPathPattern("/v1/claim/{claim_id}/claimant")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SandboxService_AddClaimant_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SandboxService_AddClaimant_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_SandboxService_GetClaim_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -313,6 +408,28 @@ func RegisterSandboxServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("POST", pattern_SandboxService_AddClaimant_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/srvpb.v1.SandboxService/AddClaimant", runtime.WithHTTPPathPattern("/v1/claim/{claim_id}/claimant")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SandboxService_AddClaimant_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SandboxService_AddClaimant_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_SandboxService_GetClaim_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -343,6 +460,8 @@ var ( pattern_SandboxService_CreateClaim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "claims"}, "")) + pattern_SandboxService_AddClaimant_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "claim", "claim_id", "claimant"}, "")) + pattern_SandboxService_GetClaim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "claim", "claim_id"}, "")) ) @@ -351,5 +470,7 @@ var ( forward_SandboxService_CreateClaim_0 = runtime.ForwardResponseMessage + forward_SandboxService_AddClaimant_0 = runtime.ForwardResponseMessage + forward_SandboxService_GetClaim_0 = runtime.ForwardResponseMessage ) diff --git a/api/srvpb/v1/oracle.proto b/api/srvpb/v1/oracle.proto index 9c84c10..70a5521 100644 --- a/api/srvpb/v1/oracle.proto +++ b/api/srvpb/v1/oracle.proto @@ -105,9 +105,14 @@ service SandboxService { } // Create claim initiates the creation of the claim. rpc CreateClaim(pb.v1.CreateClaimRequest) returns (pb.v1.CreateClaimResponse) { + option (google.api.http) = {post: "/v1/claims"}; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {tags: "Service"}; + } + // Add claimant updates claim details. + rpc AddClaimant(pb.v1.AddClaimantRequest) returns (pb.v1.AddClaimantResponse) { option (google.api.http) = { - post: "/v1/claims" - body: "claim" + post: "/v1/claim/{claim_id}/claimant" + body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {tags: "Service"}; } diff --git a/api/srvpb/v1/oracle.swagger.json b/api/srvpb/v1/oracle.swagger.json index da1a4d8..60963ce 100644 --- a/api/srvpb/v1/oracle.swagger.json +++ b/api/srvpb/v1/oracle.swagger.json @@ -76,13 +76,14 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, "parameters": [ { "name": "claimId", + "description": "Unique identifier of the claim to fetch", "in": "path", "required": true, "type": "string" @@ -93,15 +94,15 @@ ] } }, - "/v1/claims": { + "/v1/claim/{claimId}/claimant": { "post": { - "summary": "Create claim initiates the creation of the claim.", - "operationId": "SandboxService_CreateClaim", + "summary": "Add claimant updates claim details.", + "operationId": "SandboxService_AddClaimant", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/v1CreateClaimResponse" + "$ref": "#/definitions/v1AddClaimantResponse" } }, "400": { @@ -150,17 +151,23 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, "parameters": [ { - "name": "claim", + "name": "claimId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/v1Claim" + "$ref": "#/definitions/SandboxServiceAddClaimantBody" } } ], @@ -169,6 +176,96 @@ ] } }, + "/v1/claims": { + "post": { + "summary": "Create claim initiates the creation of the claim.", + "operationId": "SandboxService_CreateClaim", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1CreateClaimResponse" + } + }, + "400": { + "description": "Bad request determined by business logic", + "schema": { + "$ref": "#/definitions/v1ExceptionResponse" + } + }, + "401": { + "description": "Authorization failed", + "schema": { + "$ref": "#/definitions/v1ExceptionResponse" + } + }, + "403": { + "description": "Permission denied", + "schema": { + "$ref": "#/definitions/v1ExceptionResponse" + } + }, + "404": { + "description": "Missing resource", + "schema": { + "$ref": "#/definitions/v1ExceptionResponse" + } + }, + "405": { + "description": "Method not allowed", + "schema": { + "type": "string", + "format": "string" + } + }, + "500": { + "description": "Unexpected internal server error", + "schema": { + "$ref": "#/definitions/v1ExceptionResponse" + } + }, + "503": { + "description": "Service not available", + "schema": { + "$ref": "#/definitions/v1ExceptionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "dateOfAccident", + "description": "Date when the accident occurred (YYYY-MM-DD)", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "damageAmount", + "description": "Damage amount (stored in cents to avoid floating point issues)", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "claimReason", + "description": "Brief description of the reason for the claim", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Service" + ] + } + }, "/v1/health_check": { "get": { "summary": "Check the health of the service. This is used by load balancers to check service health.", @@ -226,7 +323,7 @@ "default": { "description": "An unexpected error response.", "schema": { - "$ref": "#/definitions/rpcStatus" + "$ref": "#/definitions/googlerpcStatus" } } }, @@ -246,16 +343,17 @@ } }, "definitions": { - "protobufAny": { + "SandboxServiceAddClaimantBody": { "type": "object", "properties": { - "@type": { - "type": "string" + "claimant": { + "$ref": "#/definitions/v1Claimant", + "title": "The claim details with updates" } }, - "additionalProperties": {} + "description": "Request to update an existing claim." }, - "rpcStatus": { + "googlerpcStatus": { "type": "object", "properties": { "code": { @@ -274,26 +372,81 @@ } } }, + "pbv1Status": { + "type": "string", + "enum": [ + "STATUS_UNSPECIFIED", + "STATUS_APPROVED", + "STATUS_DECLINED", + "STATUS_PAID" + ], + "default": "STATUS_UNSPECIFIED", + "description": "Represents the final outcome of a claim.\n\n - STATUS_UNSPECIFIED: Default value (should not be used)\n - STATUS_APPROVED: Claim was approved\n - STATUS_DECLINED: Claim was declined\n - STATUS_PAID: Claim has been paid out" + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string" + } + }, + "additionalProperties": {} + }, + "v1AddClaimantResponse": { + "type": "object", + "properties": { + "exception": { + "$ref": "#/definitions/v1Exception", + "title": "Exception details if an error occurred" + }, + "claim": { + "$ref": "#/definitions/v1Claim", + "title": "The updated claim if successful" + } + }, + "description": "Response for updating a claim." + }, "v1Claim": { "type": "object", "properties": { "claimId": { "type": "string", - "description": "Unique ID for the claim. Immutable. Set by backend." + "title": "Unique ID assigned by the backend (immutable)" }, "state": { "$ref": "#/definitions/v1ClaimState", - "description": "State of the claim." + "title": "The current internal processing state of the claim" + }, + "claimant": { + "$ref": "#/definitions/v1Claimant", + "title": "Claimant details" + }, + "dateOfAccident": { + "type": "string", + "title": "Date when the accident occurred (YYYY-MM-DD)" + }, + "damageAmount": { + "type": "string", + "format": "int64", + "title": "Damage amount (stored in cents to prevent floating point issues)" + }, + "claimReason": { + "type": "string", + "title": "Description of why the claim was filed" + }, + "status": { + "$ref": "#/definitions/pbv1Status", + "title": "The final outcome of the claim" } }, - "description": "Claim represents an insurance claim." + "description": "Represents an insurance claim, storing its lifecycle, status, and related claimant details." }, "v1ClaimState": { "type": "string", "enum": [ "CLAIM_STATE_UNSPECIFIED", "CLAIM_STATE_NEW", - "CLAIM_STATE_LOECLAIM_COLLECTED_DETAILS", + "CLAIM_STATE_LOECLAIM_DETAILS_COLLECTED", "CLAIM_STATE_LOECLAIM_ID_VERIFIED", "CLAIM_STATE_OOECLAIM_REVIEWED", "CLAIM_STATE_OOECLAIM_VALIDATED", @@ -302,18 +455,72 @@ "CLAIM_STATE_OOEFIN_INVOICE_APPROVED", "CLAIM_STATE_OOEPAY_PAYMENT_TRIGGERED" ], - "default": "CLAIM_STATE_UNSPECIFIED" + "default": "CLAIM_STATE_UNSPECIFIED", + "description": "Represents the processing state of the claim (process progress).\n\n - CLAIM_STATE_UNSPECIFIED: Default value (should not be used)\n - CLAIM_STATE_NEW: Claim was created\n - CLAIM_STATE_LOECLAIM_DETAILS_COLLECTED: Claimant details submitted\n - CLAIM_STATE_LOECLAIM_ID_VERIFIED: Identity verified\n - CLAIM_STATE_OOECLAIM_REVIEWED: Claim reviewed\n - CLAIM_STATE_OOECLAIM_VALIDATED: Claim validated\n - CLAIM_STATE_LOEFIN_INVOICE_ISSUED: Invoice issued\n - CLAIM_STATE_OOEFIN_INVOICE_REVIEWED: Invoice reviewed\n - CLAIM_STATE_OOEFIN_INVOICE_APPROVED: Invoice approved\n - CLAIM_STATE_OOEPAY_PAYMENT_TRIGGERED: Payment triggered" + }, + "v1Claimant": { + "type": "object", + "properties": { + "accountNumber": { + "type": "string", + "title": "Bank account number (string to support leading zeros)" + }, + "accountSortCode": { + "type": "string", + "title": "Bank sort code (string to avoid leading-zero loss)" + }, + "dob": { + "type": "string", + "title": "Date of birth (YYYY-MM-DD)" + }, + "surname": { + "type": "string", + "title": "Surname (last name)" + }, + "forename": { + "type": "string", + "title": "Forename (first name)" + }, + "fullAddress": { + "type": "string", + "title": "Full address in a single field" + }, + "addressNumber": { + "type": "string", + "title": "House/building number" + }, + "addressStreet1": { + "type": "string", + "title": "Street address" + }, + "addressPostcode": { + "type": "string", + "title": "Postal code (ZIP code)" + }, + "addressPostTown": { + "type": "string", + "title": "Post town or city" + }, + "nationality": { + "$ref": "#/definitions/v1Nationality", + "title": "Nationality, stored as an enum" + } + }, + "description": "Stores details of the claimant (person making the claim)." }, "v1CreateClaimResponse": { "type": "object", "properties": { "exception": { - "$ref": "#/definitions/v1Exception" + "$ref": "#/definitions/v1Exception", + "title": "Exception details if an error occurred" }, "claim": { - "$ref": "#/definitions/v1Claim" + "$ref": "#/definitions/v1Claim", + "title": "The created claim if successful" } - } + }, + "description": "Response for creating a claim." }, "v1Exception": { "type": "object", @@ -371,12 +578,15 @@ "type": "object", "properties": { "exception": { - "$ref": "#/definitions/v1Exception" + "$ref": "#/definitions/v1Exception", + "title": "Exception details if an error occurred" }, "claim": { - "$ref": "#/definitions/v1Claim" + "$ref": "#/definitions/v1Claim", + "title": "The retrieved claim if successful" } - } + }, + "description": "Response containing the requested claim." }, "v1GetHealthCheckResponse": { "type": "object", @@ -417,6 +627,18 @@ } }, "description": "Health check status of an individual service." + }, + "v1Nationality": { + "type": "string", + "enum": [ + "NATIONALITY_UNSPECIFIED", + "NATIONALITY_GB", + "NATIONALITY_US", + "NATIONALITY_FR", + "NATIONALITY_DE" + ], + "default": "NATIONALITY_UNSPECIFIED", + "description": "Represents a nationality using an enum for structured validation.\n\n - NATIONALITY_UNSPECIFIED: Default value (should not be used)\n - NATIONALITY_GB: United Kingdom\n - NATIONALITY_US: United States\n - NATIONALITY_FR: France\n - NATIONALITY_DE: Germany" } }, "securityDefinitions": { diff --git a/api/srvpb/v1/oracle_grpc.pb.go b/api/srvpb/v1/oracle_grpc.pb.go index 4d98a2b..5db0ad0 100644 --- a/api/srvpb/v1/oracle_grpc.pb.go +++ b/api/srvpb/v1/oracle_grpc.pb.go @@ -27,6 +27,7 @@ const _ = grpc.SupportPackageIsVersion9 const ( SandboxService_GetHealthCheck_FullMethodName = "/srvpb.v1.SandboxService/GetHealthCheck" SandboxService_CreateClaim_FullMethodName = "/srvpb.v1.SandboxService/CreateClaim" + SandboxService_AddClaimant_FullMethodName = "/srvpb.v1.SandboxService/AddClaimant" SandboxService_GetClaim_FullMethodName = "/srvpb.v1.SandboxService/GetClaim" ) @@ -40,6 +41,8 @@ type SandboxServiceClient interface { GetHealthCheck(ctx context.Context, in *v1.GetHealthCheckRequest, opts ...grpc.CallOption) (*v1.GetHealthCheckResponse, error) // Create claim initiates the creation of the claim. CreateClaim(ctx context.Context, in *v11.CreateClaimRequest, opts ...grpc.CallOption) (*v11.CreateClaimResponse, error) + // Add claimant updates claim details. + AddClaimant(ctx context.Context, in *v11.AddClaimantRequest, opts ...grpc.CallOption) (*v11.AddClaimantResponse, error) // Retrieve claim details. GetClaim(ctx context.Context, in *v11.GetClaimRequest, opts ...grpc.CallOption) (*v11.GetClaimResponse, error) } @@ -72,6 +75,16 @@ func (c *sandboxServiceClient) CreateClaim(ctx context.Context, in *v11.CreateCl return out, nil } +func (c *sandboxServiceClient) AddClaimant(ctx context.Context, in *v11.AddClaimantRequest, opts ...grpc.CallOption) (*v11.AddClaimantResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(v11.AddClaimantResponse) + err := c.cc.Invoke(ctx, SandboxService_AddClaimant_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *sandboxServiceClient) GetClaim(ctx context.Context, in *v11.GetClaimRequest, opts ...grpc.CallOption) (*v11.GetClaimResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(v11.GetClaimResponse) @@ -92,6 +105,8 @@ type SandboxServiceServer interface { GetHealthCheck(context.Context, *v1.GetHealthCheckRequest) (*v1.GetHealthCheckResponse, error) // Create claim initiates the creation of the claim. CreateClaim(context.Context, *v11.CreateClaimRequest) (*v11.CreateClaimResponse, error) + // Add claimant updates claim details. + AddClaimant(context.Context, *v11.AddClaimantRequest) (*v11.AddClaimantResponse, error) // Retrieve claim details. GetClaim(context.Context, *v11.GetClaimRequest) (*v11.GetClaimResponse, error) mustEmbedUnimplementedSandboxServiceServer() @@ -110,6 +125,9 @@ func (UnimplementedSandboxServiceServer) GetHealthCheck(context.Context, *v1.Get func (UnimplementedSandboxServiceServer) CreateClaim(context.Context, *v11.CreateClaimRequest) (*v11.CreateClaimResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateClaim not implemented") } +func (UnimplementedSandboxServiceServer) AddClaimant(context.Context, *v11.AddClaimantRequest) (*v11.AddClaimantResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddClaimant not implemented") +} func (UnimplementedSandboxServiceServer) GetClaim(context.Context, *v11.GetClaimRequest) (*v11.GetClaimResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClaim not implemented") } @@ -170,6 +188,24 @@ func _SandboxService_CreateClaim_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } +func _SandboxService_AddClaimant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(v11.AddClaimantRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SandboxServiceServer).AddClaimant(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: SandboxService_AddClaimant_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SandboxServiceServer).AddClaimant(ctx, req.(*v11.AddClaimantRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _SandboxService_GetClaim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(v11.GetClaimRequest) if err := dec(in); err != nil { @@ -203,6 +239,10 @@ var SandboxService_ServiceDesc = grpc.ServiceDesc{ MethodName: "CreateClaim", Handler: _SandboxService_CreateClaim_Handler, }, + { + MethodName: "AddClaimant", + Handler: _SandboxService_AddClaimant_Handler, + }, { MethodName: "GetClaim", Handler: _SandboxService_GetClaim_Handler, diff --git a/common.config.mk b/common.config.mk index de087b4..63f8bbc 100644 --- a/common.config.mk +++ b/common.config.mk @@ -13,13 +13,15 @@ SERVICE_DIR=portal # The makefiles use docker images to build artifacts in this project. These # variables configure the images used for builds. -BUILDENV_TAG=v0.0.85 +BUILDENV_TAG=v0.0.92 # These variables control the version numbers for parts of the Luther platform # and should be kept up-to-date to leverage the latest platform features. # See release notes: https://docs.luthersystems.com/luther/platform/release-notes -SUBSTRATE_VERSION=v2.205.0 +#SUBSTRATE_VERSION=v2.205.6 +SUBSTRATE_VERSION=v2.205.11-SNAPSHOT.2-cd874681 SHIROCLIENT_VERSION=${SUBSTRATE_VERSION} +CONNECTORHUB_VERSION=${SUBSTRATE_VERSION} SHIROTESTER_VERSION=${SUBSTRATE_VERSION} NETWORK_BUILDER_VERSION=v0.0.2 MARTIN_VERSION=v0.1.0 diff --git a/common.fabric.mk b/common.fabric.mk index c03ed49..19b8234 100644 --- a/common.fabric.mk +++ b/common.fabric.mk @@ -26,7 +26,11 @@ NETWORK_BUILDER_TARGET ?= docker-pull/${NETWORK_BUILDER_IMAGE}\:${NETWORK_BUILDE NETWORK_BUILDER=${NETWORK_BUILDER_IMAGE}:${NETWORK_BUILDER_VERSION} --chown "${DOCKER_CHOWN_USER}" SHIROCLIENT_IMAGE ?= luthersystems/shiroclient +CONNECTORHUB_IMAGE ?= luthersystems/connectorhub + SHIROCLIENT_TARGET ?= docker-pull/${SHIROCLIENT_IMAGE}\:${SHIROCLIENT_VERSION} +CONNECTORHUB_TARGET ?= docker-pull/${CONNECTORHUB_IMAGE}\:${CONNECTORHUB_VERSION} + SHIROCLIENT_FABRIC_CONFIG_BASENAME=shiroclient SHIROCLIENT_FABRIC_CONFIG_FAST_BASENAME=shiroclient_fast # index.gateway_name[.msp_filter]... @@ -35,7 +39,9 @@ CHAINCODE_GO ?= ${PHYLA_GO} PHYLA_CCAAS ?= PHYLA ?= ${PHYLA_GO} ${PHYLA_CCAAS} GATEWAYS ?= 1.shiroclient_gw_a.a +CONNECTORHUBS ?= 1.connectorhub_a.a START_GATEWAYS=$(addprefix start-gw-,${GATEWAYS}) +START_CONNECTORHUBS=$(addprefix start-ch-,${CONNECTORHUBS}) NOTIFY_GATEWAYS=$(addprefix notify-gw-,${GATEWAYS}) FUNCTIONAL_TEST_PHYLA=$(addprefix functional-test-phylum-,${PHYLA}) SHIRO_INIT_PHYLA=$(addprefix shiro-init-phylum-,${PHYLA}) @@ -152,8 +158,7 @@ couchdb-up: DBMODE = couchdb couchdb-up: fnb-up gateway-up .PHONY: up -up: generate-chaincodes .env fnb-up gateway-up - @ +up: generate-chaincodes .env fnb-up gateway-up connectorhub-up .PHONY: fnb-up fnb-up: ${NETWORK_BUILDER_TARGET} ${FABRIC_IMAGE_TARGETS} @@ -222,6 +227,29 @@ start-gw-%: ${SHIROCLIENT_TARGET} build/volume/msp build/volume/enroll_user --chaincode.version ${CC_VERSION}_${ccname} \ gateway ${filter_args} +.PHONY: connectorhub-up +connectorhub-up: ${START_CONNECTORHUBS} + +start-ch-%: parts=$(subst ., ,$*) +start-ch-%: idx=$(word 1,${parts}) +start-ch-%: name=$(word 2,${parts}) +start-ch-%: ccname=$(word 3,${parts}) # TODO +start-ch-%: port=$$(( 9091 + ${idx} )) +ifdef EXPOSE_CONNECTORHUB +start-gw-%: port_fw=-p "${port}:8080" +endif +start-ch-%: ${CONNECTORHUB_TARGET} build/volume/checkpoint + ${DOCKER_RUN} -d --name ${name} \ + -v "${CURDIR}:/tmp/fabric:ro" \ + -v "$(abspath build/volume/checkpoint):/tmp/checkpoint:rw" \ + -w "/tmp/fabric" \ + ${port_fw} \ + --network ${FABRIC_DOCKER_NETWORK} \ + ${CONNECTORHUB_IMAGE}:${CONNECTORHUB_VERSION} \ + start -v \ + --config-file /tmp/fabric/connectorhub.yaml \ + --checkpoint-file /tmp/checkpoint/checkpoint.txt + .SECONDEXPANSION: notify-gw-%: parts=$(subst ., ,$*) notify-gw-%: name=$(word 2,${parts}) @@ -252,7 +280,7 @@ couchdb-down: gateway-down fnb-down .PHONY: oracle-down .PHONY: down -down: oracle-down gateway-down fnb-down clean-chaincodes +down: oracle-down connectorhub-down gateway-down fnb-down clean .PHONY: fnb-down fnb-down: ${NETWORK_BUILDER_TARGET} @@ -269,6 +297,11 @@ gateway-down: gw_names=$(foreach g,${GATEWAYS},$(word 2,$(subst ., ,${g}))) gateway-down: -docker stop ${gw_names} +.PHONY: connectorhub-down +connectorhub-down: ch_names=$(foreach g,${CONNECTORHUBS},$(word 2,$(subst ., ,${g}))) +connectorhub-down: + -docker stop ${ch_names} + .PHONY: sleep-% sleep-%: @sleep $* @@ -435,6 +468,10 @@ build/volume/enroll_user: mkdir -p $@ chmod a+w $@ +build/volume/checkpoint: + mkdir -p $@ + chmod a+w $@ + .SECONDEXPANSION: compile-phylum-%: $$(shell find -L phylum_$$* -name "*.lisp" -not -path "*/build/*" 2>/dev/null) mkdir -p ./build/phylum_$* diff --git a/common.mk b/common.mk index a167ac3..1b31167 100644 --- a/common.mk +++ b/common.mk @@ -27,6 +27,7 @@ SERVICE_BASE_IMAGE_ALPINE=luthersystems/service-base-alpine BUILD_IMAGE_API=luthersystems/build-api SHIROCLIENT_IMAGE=luthersystems/shiroclient +CONNECTORHUB_IMAGE=luthersystems/connectorhub NETWORK_BUILDER_IMAGE=luthersystems/fabric-network-builder SHIROTESTER_IMAGE=luthersystems/shirotester MARTIN_IMAGE=luthersystems/martin diff --git a/compose/grafana.yaml b/compose/grafana.yaml new file mode 100644 index 0000000..4886dd4 --- /dev/null +++ b/compose/grafana.yaml @@ -0,0 +1,18 @@ +services: + grafana: + image: grafana/grafana:latest + ports: + - "3000:3000" + networks: + - byfn + volumes: + - ./grafana:/var/lib/grafana + - ./grafana/provisioning:/etc/grafana/provisioning + environment: + - GF_SECURITY_ADMIN_PASSWORD=admin + depends_on: + - tempo + +networks: + byfn: + external: true diff --git a/compose/grafana/.gitignore b/compose/grafana/.gitignore new file mode 100644 index 0000000..ee4bf47 --- /dev/null +++ b/compose/grafana/.gitignore @@ -0,0 +1 @@ +grafana.db diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/1759fd27b2c9f73dea05.wasm b/compose/grafana/plugins/grafana-lokiexplore-app/1759fd27b2c9f73dea05.wasm new file mode 100644 index 0000000..bf1fcc0 Binary files /dev/null and b/compose/grafana/plugins/grafana-lokiexplore-app/1759fd27b2c9f73dea05.wasm differ diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/386.js b/compose/grafana/plugins/grafana-lokiexplore-app/386.js new file mode 100644 index 0000000..bfe2f10 --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/386.js @@ -0,0 +1,52 @@ +"use strict";(self.webpackChunkgrafana_lokiexplore_app=self.webpackChunkgrafana_lokiexplore_app||[]).push([[386],{7709:(e,t,n)=>{n.d(t,{F:()=>o});var r=n(6089),a=n(2007),i=n(5959),s=n.n(i),l=n(3571);const o=e=>{const{isExcluded:t,isIncluded:n,onInclude:r,onExclude:i,onClear:o,titles:u,buttonFill:d,hideExclude:p}=e,g=(0,a.useStyles2)(c,n,t,p);return s().createElement("div",{className:g.container},s().createElement(a.Button,{variant:n?"primary":"secondary",fill:d,size:"sm","aria-selected":n,className:g.includeButton,onClick:n?o:r,"data-testid":l.b.exploreServiceDetails.buttonFilterInclude,title:null==u?void 0:u.include},"Include"),!p&&s().createElement(a.Button,{variant:t?"primary":"secondary",fill:d,size:"sm","aria-selected":t,className:g.excludeButton,onClick:t?o:i,title:null==u?void 0:u.exclude,"data-testid":l.b.exploreServiceDetails.buttonFilterExclude},"Exclude"))},c=(e,t,n,a)=>({container:(0,r.css)({display:"flex",justifyContent:"center"}),includeButton:(0,r.css)({borderRadius:0,borderRight:t||a?void 0:"none"}),excludeButton:(0,r.css)({borderRadius:`0 ${e.shape.radius.default} ${e.shape.radius.default} 0`,borderLeft:n?void 0:"none"})})},7191:(e,t,n)=>{n.d(t,{R:()=>l});var r=n(5959),a=n.n(r),i=n(6089),s=n(2007);const l=({children:e})=>{const t=(0,s.useStyles2)(o);return a().createElement("div",{className:t.wrap},a().createElement(s.EmptyState,{variant:"not-found",message:e?"":"An error occurred"},e&&e))},o=e=>({wrap:(0,i.css)({margin:"0 auto"})})},2661:(e,t,n)=>{n.d(t,{P:()=>nt,y:()=>tt});var r=n(5959),a=n.n(r),i=n(7781),s=n(9736),l=n(20),o=n(4351),c=n(7352),u=n(2007),d=n(6089);function p(e){const t=(0,u.useStyles2)(g);return a().createElement(a().Fragment,null,a().createElement(u.Alert,{className:t.alert,severity:"info",title:"Welcome to Grafana Logs Drilldown!",onRemove:e.onRemove},a().createElement("div",null,"Check out our"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://grafana.com/docs/grafana-cloud/visualizations/simplified-exploration/logs/",rel:"noreferrer"},"Get started doc"),", or see"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://github.com/grafana/explore-logs/releases",rel:"noreferrer"},"recent changes"),".",a().createElement("br",null),"Help us shape the future of the app."," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://forms.gle/1sYWCTPvD72T1dPH9",rel:"noreferrer"},"Send us feedback")," ","or engage with us on"," ",a().createElement("a",{className:"external-link",target:"_blank",href:"https://github.com/grafana/explore-logs/?tab=readme-ov-file#explore-logs",rel:"noreferrer"},"GitHub"),".")))}function g(e){return{alert:(0,d.css)({flex:"none"})}}var h=n(9598),f=n(5953),v=n(1459);const m=()=>{const e=(0,u.useStyles2)(b);return a().createElement("div",{className:e.wrapper},a().createElement("a",{href:"https://forms.gle/1sYWCTPvD72T1dPH9",className:e.feedback,title:"Share your thoughts about Logs in Grafana.",target:"_blank",rel:"noreferrer noopener"},a().createElement(u.Icon,{name:"comment-alt-message"})," Give feedback"))},b=e=>({wrapper:(0,d.css)({display:"flex",marginLeft:"auto",gap:e.spacing(1),position:"relative",top:e.spacing(-1)}),feedback:(0,d.css)({alignSelf:"center",color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize,"&:hover":{color:e.colors.text.link}})});class y extends s.Bs{}var S,w,O;O=function({model:e}){var t,n;const r=s.jh.getVariables(e).useState();let i=r.variables;return(null===(t=e.state.include)||void 0===t?void 0:t.length)&&(i=r.variables.filter((t=>{var n,r;return null===(n=e.state.include)||void 0===n?void 0:n.includes(null!==(r=t.state.name)&&void 0!==r?r:"")}))),(null===(n=e.state.exclude)||void 0===n?void 0:n.length)&&(i=r.variables.filter((t=>{var n,r;return!(null===(n=e.state.exclude)||void 0===n?void 0:n.includes(null!==(r=t.state.name)&&void 0!==r?r:""))}))),a().createElement(a().Fragment,null,i.map((t=>a().createElement(s.Lp,{key:t.state.key,variable:t,layout:e.state.layout}))))},(w="Component")in(S=y)?Object.defineProperty(S,w,{value:O,enumerable:!0,configurable:!0,writable:!0}):S[w]=O;var x=n(3571);const E=({onRemove:e,pattern:t,size:n="lg"})=>{const i=(0,u.useStyles2)(k),[s,l]=(0,r.useState)(!1);return a().createElement("div",{className:i.pattern,onClick:()=>l(!s),onMouseLeave:()=>l(!1)},a().createElement(u.Tag,{title:t,key:t,name:s?t:P(t,n),className:i.tag}),a().createElement(u.Button,{"aria-label":"Remove pattern","data-testid":x.b.exploreServiceDetails.buttonRemovePattern,variant:"secondary",size:"sm",className:i.removeButton,onClick:e},a().createElement(u.Icon,{name:"times"})))},C={sm:50,lg:Math.round(window.innerWidth/8)};function P(e,t){const n=e.length;if(n({pattern:(0,d.css)({display:"flex",fontFamily:"monospace",gap:e.spacing(.25),cursor:"pointer",overflow:"hidden"}),tag:(0,d.css)({borderTopRightRadius:0,borderBottomRightRadius:0,backgroundColor:e.colors.secondary.main,border:`solid 1px ${e.colors.secondary.border}`,color:e.colors.secondary.text,boxSizing:"border-box",padding:e.spacing(.25,.75),overflow:"hidden",textOverflow:"ellipsis"}),removeButton:(0,d.css)({paddingLeft:2.5,paddingRight:2.5})});var j=n(4509),F=n(7478);const L=({patterns:e,onRemove:t})=>{const n=(0,u.useStyles2)(_);if(!e||0===e.length)return null;const r=e.filter((e=>"include"===e.type)),i=e.filter((e=>"include"!==e.type)),s=n=>{(0,F.bN)(),t(e.filter((e=>e!==n))),(0,j.EE)(j.NO.service_details,j.ir.service_details.pattern_removed,{includePatternsLength:r.length-("include"===(null==n?void 0:n.type)?1:0),excludePatternsLength:i.length-("include"!==(null==n?void 0:n.type)?1:0),type:n.type})};return a().createElement("div",null,r.length>0&&a().createElement("div",{className:n.patternsContainer},a().createElement(u.Text,{variant:"bodySmall",weight:"bold","data-testid":x.b.patterns.buttonIncludedPattern},"Included pattern",e.length>1?"s":""),a().createElement("div",{className:n.patterns},r.map((e=>a().createElement(E,{key:e.pattern,pattern:e.pattern,size:"lg",onRemove:()=>s(e)}))))),i.length>0&&a().createElement("div",{className:n.patternsContainer},a().createElement(u.Text,{variant:"bodySmall",weight:"bold","data-testid":x.b.patterns.buttonExcludedPattern},"Excluded pattern",i.length>1?"s":"",":"),a().createElement("div",{className:n.patterns},i.map((e=>a().createElement(E,{key:e.pattern,pattern:e.pattern,size:i.length>1?"sm":"lg",onRemove:()=>s(e)}))))))};function _(e){return{patternsContainer:(0,d.css)({overflow:"hidden"}),patterns:(0,d.css)({display:"flex",gap:e.spacing(1),alignItems:"center",flexWrap:"wrap"})}}class T extends s.Bs{}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(T,"Component",(({model:e})=>{const t=s.jh.getAncestor(e,nt),{controls:n,patterns:r}=t.useState(),i=s.jh.getAncestor(e,V),{lineFilterRenderer:l,levelsRenderer:o}=i.useState(),c=(0,u.useStyles2)((t=>function(e){return{firstRowWrapper:(0,d.css)({"& > div > div":{gap:"16px",label:"first-row-wrapper",[e.breakpoints.down("lg")]:{flexDirection:"column"}}}),controlsFirstRowContainer:(0,d.css)({label:"controls-first-row",display:"flex",gap:e.spacing(2),justifyContent:"space-between",alignItems:"flex-start",[e.breakpoints.down("md")]:{flexDirection:"column-reverse"}}),controlsRowContainer:(0,d.css)({"&:empty":{display:"none"},label:"controls-row",display:"flex",gap:e.spacing(2),alignItems:"flex-start",[e.breakpoints.down("lg")]:{flexDirection:"column"}}),stickyControlsContainer:(0,d.css)({position:"sticky",top:D,left:0,background:e.colors.background.canvas,zIndex:e.zIndex.navbarFixed,gap:e.spacing(0),boxShadow:e.shadows.z1}),controlsContainer:(0,d.css)({label:"controlsContainer",display:"flex",flexDirection:"column",gap:e.spacing(1),padding:e.spacing(2)}),filters:(0,d.css)({label:"filters",display:"flex"}),filtersWrap:(0,d.css)({label:"filtersWrap",display:"flex",gap:e.spacing(2),width:"calc(100% - 450)",flexWrap:"wrap",alignItems:"flex-end"}),controlsWrapper:(0,d.css)({label:"controlsWrapper",display:"flex",flexDirection:"column",marginTop:e.spacing(.375)}),timeRangeDatasource:(0,d.css)({label:"timeRangeDatasource",display:"flex",gap:e.spacing(1),flexWrap:"wrap",justifyContent:"flex-end"}),timeRange:(0,d.css)({label:"timeRange",display:"flex",flexDirection:"row",gap:e.spacing(1)})}}(t,e.state.position)));return a().createElement("div",{className:(0,d.cx)(c.controlsContainer,"sticky"===e.state.position?c.stickyControlsContainer:void 0)},a().createElement(a().Fragment,null,n&&a().createElement("div",{className:c.controlsFirstRowContainer},a().createElement("div",{className:c.filtersWrap},a().createElement("div",{className:(0,d.cx)(c.filters,c.firstRowWrapper)},n.map((e=>e instanceof s.G1?a().createElement(e.Component,{key:e.state.key,model:e}):null)))),a().createElement("div",{className:c.controlsWrapper},a().createElement(m,null),a().createElement("div",{className:c.timeRangeDatasource},n.map((e=>e.state.key===R?a().createElement(e.Component,{key:e.state.key,model:e}):null)),a().createElement("div",{className:c.timeRange},n.map((e=>e instanceof y||e instanceof s.G1?null:a().createElement(e.Component,{key:e.state.key,model:e}))))))),a().createElement("div",{className:c.controlsRowContainer},o&&a().createElement(o.Component,{model:o}),n&&a().createElement("div",{className:c.filtersWrap},a().createElement("div",{className:c.filters},n.map((e=>e instanceof y&&e.state.key===M?a().createElement(e.Component,{key:e.state.key,model:e}):null))))),a().createElement("div",{className:c.controlsRowContainer},a().createElement(L,{patterns:r,onRemove:e=>t.setState({patterns:e})})),a().createElement("div",{className:c.controlsRowContainer},l&&a().createElement(l.Component,{model:l}))))}));const D=40;var N=n(2085),$=n(9683);function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function B(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}const A=`${h.s_}.interceptBannerStorageKey`,M="vars-fields-metadata",R="vars-ds";class V extends s.Bs{onActivate(){const e=(0,$.FT)();this.setState({lineFilterRenderer:new v.Y({}),levelsRenderer:new N.qV({}),variableLayout:new T({position:e===$.G3.explore?"sticky":"relative"})})}dismiss(){this.setState({interceptDismissed:!0}),localStorage.setItem(A,"true")}constructor(e){super(B(function(e){for(var t=1;t{const t=s.jh.getAncestor(e,nt),{contentScene:n}=t.useState(),{interceptDismissed:r,variableLayout:i}=e.useState();if(!n)return f.v.warn("content scene not defined"),null;const l=(0,u.useStyles2)(W);return a().createElement("div",{className:l.bodyContainer},a().createElement("div",{className:l.container},!r&&a().createElement(p,{onRemove:()=>{e.dismiss()}}),i&&a().createElement(i.Component,{model:i}),a().createElement("div",{className:l.body},n&&a().createElement(n.Component,{model:n}))))}));var z=n(173),H=n(8531),Q=n(7985),K=n(2245),G=n(4702),U=n(5553),q=n(9731),J=n(6991),Y=n(6709),X=n(5719),Z=n(3241),ee=n(6854),te=n(6464),ne=n(708);function re(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function ae(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){re(i,r,a,s,l,"next",e)}function l(e){re(i,r,a,s,l,"throw",e)}s(void 0)}))}}const ie=function(){var e=ae((function*(e,t,n,r,a,i){const s=yield(0,H.getDataSourceSrv)().get((0,X.U4)(r));if(!(s instanceof H.DataSourceWithBackend))throw f.v.error(new Error("getTagValuesProvider: Invalid datasource!")),new Error("Invalid datasource!");const o=s.languageProvider;let c=[];if(o&&o.fetchDetectedLabelValues){const r={expr:n,limit:1e3,timeRange:a,throwError:!0},s={showErrorAlert:!1};try{let n=yield o.fetchDetectedLabelValues(e.key,r,s);if(n&&(0,Z.isArray)(n)){var u;if(i===l._Y)return{replace:!0,values:n.map((e=>({text:e})))};const r=t.state.filters;let a=[];r.forEach((e=>{var t,n;const r=null!==(n=null===(t=e.valueLabels)||void 0===t?void 0:t[0])&&void 0!==n?n:e.value;(0,ne.SM)(e.operator)?r.split("|").forEach((e=>a.push(e))):a.push(r)}));const s=n.filter((e=>!a.includes(e)));if("structuredMetadata"!==(null===(u=e.meta)||void 0===u?void 0:u.parser)){if(e.value){const t=(0,U.bu)(e,i);return{replace:!0,values:s.map((e=>({text:e,value:JSON.stringify({value:e,parser:t.parser})})))}}return{replace:!0,values:s.map((t=>{var n,r;return{text:t,value:JSON.stringify({value:t,parser:null!==(r=null===(n=e.meta)||void 0===n?void 0:n.parser)&&void 0!==r?r:"mixed"})}}))}}c=s.map((e=>({text:e})))}else c=[],f.v.error(n,{msg:"fetchDetectedLabelValues error!"})}catch(e){f.v.error(e,{msg:"getDetectedFieldValuesTagValuesProvider: loki missing detected_field/.../values endpoint. Upgrade to Loki 3.3.0 or higher."}),c=[]}}else f.v.warn("getDetectedFieldValuesTagValuesProvider: fetchDetectedLabelValues is not defined in Loki datasource. Upgrade to Grafana 11.4 or higher."),c=[];return{replace:!0,values:c}}));return function(t,n,r,a,i,s){return e.apply(this,arguments)}}();function se(e,t){return le.apply(this,arguments)}function le(){return le=ae((function*(e,t){const n=yield(0,H.getDataSourceSrv)().get((0,X.U4)(e));if(!(n instanceof H.DataSourceWithBackend))throw f.v.error(new Error("getTagValuesProvider: Invalid datasource!")),new Error("Invalid datasource!");const r=n;if(r&&r.getTagValues){const n=function(e,t){let n=e.filter((e=>!((0,ne.BG)(t.operator)&&e.key===t.key)));return n.some((e=>(0,ne.BG)(e.operator)))||(n=[]),n}(new te.K(e.state.filters).getJoinedLabelsFilters(),t),i={key:t.key,filters:n};let s=yield r.getTagValues(i);if((0,Z.isArray)(s)){var a;s=s.filter((n=>!e.state.filters.filter((e=>e.key===t.key)).some((e=>{if((0,ne.SM)(e.operator)){return e.value.split("|").some((e=>e===n.text))}return e.operator===ee.w7.Equal&&e.value===n.text}))));const n=(0,o.eT)(null===(a=(0,U.S9)(e).getValue())||void 0===a?void 0:a.toString(),t.key),r=new Set(n);n.length&&s.sort(((e,t)=>(r.has(t.text)?1:-1)-(r.has(e.text)?1:-1)))}return{replace:!0,values:s}}return f.v.error(new Error("getTagValuesProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),le.apply(this,arguments)}var oe=n(8502);function ce(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function ue(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){ce(i,r,a,s,l,"next",e)}function l(e){ce(i,r,a,s,l,"throw",e)}s(void 0)}))}}function de(e){return pe.apply(this,arguments)}function pe(){return pe=ue((function*(e){const t=yield(0,H.getDataSourceSrv)().get((0,X.U4)(e));if(!(t instanceof H.DataSourceWithBackend))throw f.v.error(new Error("getTagKeysProvider: Invalid datasource!")),new Error("Invalid datasource!");const n=t;if(n&&n.getTagKeys){const t={filters:new te.K(e.state.filters).getJoinedLabelsFilters()},r=yield n.getTagKeys(t),a=(Array.isArray(r)?r:[]).filter((e=>!oe.rm.includes(e.text)));return{replace:!0,values:a}}return f.v.error(new Error("getTagKeysProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),pe.apply(this,arguments)}function ge(e){return he.apply(this,arguments)}function he(){return he=ue((function*({limit:e,timeRange:t,scopedVars:n,expr:r,sceneRef:a,variableType:i}){const s=yield(0,H.getDataSourceSrv)().get((0,X.U4)(a));if(!(s instanceof H.DataSourceWithBackend))throw f.v.error(new Error("getTagKeysProvider: Invalid datasource!")),new Error("Invalid datasource!");const o=s,c=o.languageProvider,u={expr:r,timeRange:t,scopedVars:n,variableType:i,sceneRef:a,limit:e},d=o&&"function"==typeof c.fetchDetectedFields&&c.fetchDetectedFields.bind(c)||function(e){return function(e,t,n){return fe.apply(this,arguments)}(o,e)};if(d&&"function"==typeof d){const e=yield d(u);if(e instanceof Error)throw f.v.error(e,{msg:"Failed to fetch detected fields"}),e;const t=e.filter((e=>i===l._Y?e.label===l.e4:i===l.sL&&e.label!==l.e4||null!==e.parsers)).map((e=>{if(i===l.sL){var t;let n=1===(null===(t=e.parsers)||void 0===t?void 0:t.length)?e.parsers[0]:"mixed";null===e.parsers&&(n="structuredMetadata");const r=e.type;return{text:e.label,value:e.label,group:n,meta:{parser:n,type:r}}}return{text:e.label,value:e.label}}));return t.sort(((e,t)=>"structuredMetadata"===e.group&&"structuredMetadata"!==t.group?-1:"structuredMetadata"!==e.group&&"structuredMetadata"===t.group?1:0)),{replace:!0,values:t}}return f.v.error(new Error("getTagKeysProvider: missing or invalid datasource!")),{replace:!0,values:[]}})),he.apply(this,arguments)}function fe(){return fe=ue((function*(e,t,n){if(!("interpolateString"in e)||"function"!=typeof(null==e?void 0:e.interpolateString))throw new Error("Datasource missing interpolateString method");const r=t.expr&&"{}"!==t.expr?e.interpolateString(t.expr,t.scopedVars):void 0;if(!r)throw new Error("fetchDetectedFields requires query expression");var a;const s=null!==(a=null==t?void 0:t.timeRange)&&void 0!==a?a:(0,i.getDefaultTimeRange)(),l=e.getTimeRangeParams(s),{start:o,end:c}=l;var u;const d={start:o,end:c,limit:null!==(u=null==t?void 0:t.limit)&&void 0!==u?u:1e3};return d.query=r,new Promise(function(){var t=ue((function*(t,r){try{t((yield e.getResource("detected_fields",d,n)).fields)}catch(e){console.error("error",e),r(e)}}));return function(e,n){return t.apply(this,arguments)}}())})),fe.apply(this,arguments)}var ve=n(7796);function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let be={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},ye={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Se={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},we={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},Oe=null;for(let e=1;e<20;++e)be[111+e]="f"+e;for(let e=0;e<=9;++e)be[e+96]=e.toString();function xe(e){if("keypress"===e.type){let t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return be[e.which]?be[e.which]:ye[e.which]?ye[e.which]:String.fromCharCode(e.which).toLowerCase()}function Ee(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}function Ce(e,t,n){return n||(n=function(){if(!Oe){Oe={};for(let e in be){const t=parseInt(e,10);t>95&&t<112||be.hasOwnProperty(e)&&(Oe[be[e]]=e)}}return Oe}()[e]?"keydown":"keypress"),"keypress"===n&&t.length&&(n="keydown"),n}function Pe(e,t){let n,r,a,i=[];for(n=function(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus")).split("+")}(e),a=0;a{e=e||{};let t,n=!1;for(t in this._sequenceLevels)e[t]?n=!0:this._sequenceLevels[t]=0;n||(this._nextExpectedAction=!1)})),me(this,"_getMatches",((e,t,n,r,a,i)=>{let s,l,o=[],c=n.type;if(!this._callbacks[e])return[];for("keyup"===c&&Ee(e)&&(t=[e]),s=0;s{const a=t.target||t.srcElement;var i;a&&a instanceof HTMLElement&&this.stopCallback(t,a,n,r)||!1===e(t,n)&&((i=t).preventDefault?i.preventDefault():i.returnValue=!1,function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}(t))})),me(this,"_handleKey",((e,t,n)=>{let r,a=this._getMatches(e,t,n),i={},s=0,l=!1;for(r=0;r0&&e.startsWith(c)&&(i[e]=1)}else l||this._fireCallback(a[r].callback,n,a[r].combo)}var c;for(const t of null!==(c=this._callbacks[e])&&void 0!==c?c:[])t.action===n.type&&t.seq&&0===t.level&&(i[t.seq]=1);let u="keypress"===n.type&&this._ignoreNextKeypress;n.type!==this._nextExpectedAction||Ee(e)||u||this._resetSequences(i),this._ignoreNextKeypress=l&&"keydown"===n.type})),me(this,"_handleKeyEvent",(e=>{if(!(e instanceof KeyboardEvent))throw new Error("Didn't get a KeyboardEvent");const t=e;if(t.repeat)return;"number"!=typeof t.which&&(t.which=t.keyCode);let n=xe(t);n&&("keyup"!==t.type||this._ignoreNextKeyup!==n?this.handleKey(n,function(e){let t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt"),e.ctrlKey&&t.push("ctrl"),e.metaKey&&t.push("meta"),t}(t),t):this._ignoreNextKeyup=!1)})),me(this,"_resetSequenceTimer",(()=>{clearTimeout(this._resetTimer),this._resetTimer=setTimeout(this._resetSequences,1e3)})),me(this,"_bindSequence",((e,t,n,r)=>{this._sequenceLevels[e]=0;const a=t=>()=>{this._nextExpectedAction=t,++this._sequenceLevels[e],this._resetSequenceTimer()},i=t=>{this._fireCallback(n,t,e),"keyup"!==r&&(this._ignoreNextKeyup=xe(t)),this._resetSequenceTimer()};for(let n=0;n{this._directMap[e+":"+n]=t;let i,s=(e=e.replace(/\s+/g," ")).split(" ");if(s.length>1)return void this._bindSequence(e,s,t,n);i=Pe(e,n),this._callbacks[i.key]=this._callbacks[i.key]||[];const l={type:i.action,metaKey:!1,ctrlKey:!1};this._getMatches(i.key,i.modifiers,l,r,e,a);const o={callback:t,modifiers:i.modifiers,action:i.action,seq:r,level:a,combo:e};this._callbacks[i.key][r?"unshift":"push"](o)})),me(this,"_bindMultiple",((e,t,n)=>{for(let r=0;r(e=e instanceof Array?e:[e],this._bindMultiple(e,t,n),self))),me(this,"unbind",((e,t)=>this.bind(e,(function(){}),t))),me(this,"bindGlobal",((e,t,n)=>{if(this.bind(e,t,n),e instanceof Array)for(let t=0;t{if(this.unbind(e,t),e instanceof Array)for(let t=0;t{let n=this;return n._directMap[e+":"+t]&&n._directMap[e+":"+t]({},e),n})),me(this,"reset",(()=>(this._callbacks={},this._directMap={},this))),me(this,"stopCallback",((e,t,n,r)=>{if(this._globalCallbacks[n]||r&&this._globalCallbacks[r])return!1;if((" "+t.className+" ").indexOf(" mousetrap ")>-1)return!1;if(ke(t,this.target))return!1;if("composedPath"in e&&"function"==typeof e.composedPath){let n=e.composedPath()[0];n!==e.target&&n instanceof HTMLElement&&(t=n)}return Boolean("INPUT"===t.tagName||"SELECT"===t.tagName||"TEXTAREA"===t.tagName||"isContentEditable"in t&&t.isContentEditable)})),me(this,"handleKey",((...e)=>this._handleKey(...e))),me(this,"addKeycodes",(e=>{for(let t in e)e.hasOwnProperty(t)&&(be[t]=e[t]);Oe=null})),this.target=e,this.target.addEventListener("keypress",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)})),this.target.addEventListener("keydown",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)})),this.target.addEventListener("keyup",(e=>{e instanceof KeyboardEvent&&this._handleKeyEvent(e)}))}}(document);class Fe{addBinding(e){je.bind(e.key,(t=>{t.preventDefault(),t.stopPropagation(),t.returnValue=!1,e.onTrigger()}),"keydown"),this._binds.push(e)}removeAll(){this._binds.forEach((e=>{je.unbind(e.key,e.type)})),this._binds=[]}constructor(){!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"_binds",[])}}var Le=n(5700),_e=n(8428);function Te(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function De(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){Te(i,r,a,s,l,"next",e)}function l(e){Te(i,r,a,s,l,"throw",e)}s(void 0)}))}}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const $e=(0,H.getAppEvents)();function Ie(e){const t=new Fe;let n=null;const r=$e.subscribe(i.SetPanelAttentionEvent,(e=>{"string"==typeof e.payload.panelId&&(n=e.payload.panelId)}));function a(e,t){return()=>{const r=s.jh.findObject(e,(e=>e.state.key===n&&e.isActive));r&&r instanceof s.Eb&&t(r)}}return t.addBinding({key:"p l",onTrigger:a(e,Me)}),t.addBinding({key:"a l",onTrigger:function(e,t){return()=>{s.jh.findAllObjects(e,(e=>e instanceof s.Eb&&e.isActive)).forEach((e=>{e&&e instanceof s.Eb&&t(e)}))}}(e,Me)}),t.addBinding({key:"p x",onTrigger:a(e,function(){var e=De((function*(e){const t=(0,Le.iD)(e);t&&H.locationService.push(t)}));return function(t){return e.apply(this,arguments)}}())}),t.addBinding({key:"t c",onTrigger:()=>{!function(e){const t=window.__grafanaSceneContext;window.__grafanaSceneContext=e}(s.jh.getTimeRange(e)),$e.publish(new Re)}}),t.addBinding({key:"t v",onTrigger:()=>{const t=new Ve({updateUrl:!1});e.publishEvent(t),$e.publish(t)}}),t.addBinding({key:"d r",onTrigger:()=>s.jh.getTimeRange(e).onRefresh()}),t.addBinding({key:"t z",onTrigger:()=>{Be(e)}}),t.addBinding({key:"ctrl+z",onTrigger:()=>{Be(e)}}),t.addBinding({key:"t a",onTrigger:()=>{const t=(0,X.m0)(e);null==t||t.toAbsolute()}}),t.addBinding({key:"t left",onTrigger:()=>{Ae(e,"left")}}),t.addBinding({key:"t right",onTrigger:()=>{Ae(e,"right")}}),()=>{t.removeAll(),r.unsubscribe()}}function Be(e){const t=(0,X.m0)(e);null==t||t.onZoom()}function Ae(e,t){const n=(0,X.m0)(e);n&&("left"===t&&n.onMoveBackward(),"right"===t&&n.onMoveForward())}function Me(e){const t=e.state.options;var n;null!=(n=t)&&"object"==typeof n&&"legend"in n&&"boolean"==typeof t.legend.showLegend&&e.onOptionsChange({legend:{showLegend:!t.legend.showLegend}})}class Re extends i.BusEventBase{}Ne(Re,"type","copy-time");class Ve extends i.BusEventWithPayload{}function We(){return(We=De((function*(){const e=yield navigator.clipboard.readText();let t;try{t=JSON.parse(e);const n=(0,_e.OK)(t);if(n)return{isError:!1,range:n}}catch(e){}return{range:e,isError:!0}}))).apply(this,arguments)}Ne(Ve,"type","paste-time");var ze=n(4532),He=n(5548),Qe=n(1532),Ke=n(6838),Ge=n(2499),Ue=n(1792);const qe=()=>{const e=(0,u.useStyles2)(Je),t=(0,u.useTheme2)();return a().createElement("div",{className:e.wrap},a().createElement("div",{className:e.graphicContainer},a().createElement(Ue.A,{src:(t.isDark,"/public/plugins/grafana-lokiexplore-app/img/grot_loki.svg")})),a().createElement("div",{className:e.text},a().createElement("h3",{className:e.title},"Welcome to Grafana Logs Drilldown"),a().createElement("p",null,"We noticed there is no Loki datasource configured.",a().createElement("br",null),"Add a"," ",a().createElement("a",{className:"external-link",href:i.locationUtil.assureBaseUrl("/connections/datasources/new")},"Loki datasource")," ","to view logs."),a().createElement("br",null),a().createElement("p",null,"Click"," ",a().createElement("a",{href:"https://grafana.com/docs/grafana/latest/explore/simplified-exploration/logs/",target:"_blank",className:"external-link",rel:"noreferrer"},"here")," ","to learn more...")))},Je=e=>({graphicContainer:(0,d.css)({display:"flex",justifyContent:"center",margin:"0 auto",width:"200px",height:"250px",padding:e.spacing(1),[e.breakpoints.up("md")]:{alignSelf:"flex-end",width:"300px",height:"auto",padding:e.spacing(1)},[e.breakpoints.up("lg")]:{alignSelf:"flex-end",width:"400px",height:"auto",padding:e.spacing(1)}}),text:(0,d.css)({display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"}),title:(0,d.css)({marginBottom:"1.5rem"}),wrap:(0,d.css)({[e.breakpoints.up("md")]:{margin:"4rem auto auto auto",flexDirection:"row"},padding:"2rem",margin:"0 auto auto auto",display:"flex",alignItems:"center",flexDirection:"column",textAlign:"center"})});function Ye(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function Xe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){Ye(i,r,a,s,l,"next",e)}function l(e){Ye(i,r,a,s,l,"throw",e)}s(void 0)}))}}function Ze(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function et(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}const tt="showLogsButtonScene";class nt extends s.Bs{onActivate(){const e={};this.setVariableProviders();var t;(s.jh.findByKeyAndType(this,tt,ve.H).setState({hidden:!1}),this.state.contentScene)||(e.contentScene=function(e){if((0,$.FT)()===$.G3.explore)return new z.y({});return new c.Mn({drillDownLabel:e})}(null===(t=this.state.routeMatch)||void 0===t?void 0:t.params.breakdownLabel));this.setTagProviders(),this.setState(e),this.updatePatterns(this.state,(0,U.Ku)(this)),this.resetVariablesIfNotInUrl((0,U.ir)(this),(0,U.n5)(l.mB)),this.resetVariablesIfNotInUrl((0,U.iw)(this),(0,U.n5)(l._Y)),this._subs.add(this.subscribeToState((e=>{this.updatePatterns(e,(0,U.Ku)(this))})));const n=s.jh.getTimeRange(this);this._subs.add(n.subscribeToState(this.limitMaxInterval(n))),this._subs.add(this.subscribeToEvent(Ve,this.subscribeToPasteTimeEvent));const r=(0,U.ir)(this).state.filters,a=(0,U.oY)(this).state.filters,i=(0,U.YS)(this);i.updateFilters([...a,...r]),this._subs.add(i.subscribeToState(this.subscribeToCombinedFieldsVariable));const o=Ie(this);return()=>{o()}}setTagProviders(){this.setLabelsProviders()}setLabelsProviders(){const e=(0,U.cR)(this);e._getOperators=()=>(0,He.Ht)(e),e.setState({getTagKeysProvider:de,getTagValuesProvider:se})}limitMaxInterval(e){return(t,n)=>{const{jsonData:r}=Y.plugin.meta;if(null==r?void 0:r.interval)try{var a;const l=i.rangeUtil.intervalToSeconds(null!==(a=null==r?void 0:r.interval)&&void 0!==a?a:"");if(!l)return;const o=t.value.to.diff(t.value.from,"seconds");if(o>l){if(o<=n.value.to.diff(n.value.from,"seconds"))e.setState({value:n.value,from:n.from,to:n.to});else{const t=new s.JZ(J.sp);e.setState({value:t.state.value,from:t.state.from,to:t.state.to})}(0,H.getAppEvents)().publish({type:i.AppEvents.alertWarning.name,payload:["Time range interval exceeds maximum interval configured by the administrator."]}),(0,j.EE)("all","interval_too_long",{attempted_duration_seconds:o,configured_max_interval:l})}}catch(e){console.error(e)}}}setVariableProviders(){const e=(0,U.iw)(this),t=(0,U.YS)(this);t._getOperators=()=>(0,He.Ht)(t),e.setState({getTagValuesProvider:this.getLevelsTagValuesProvider(),getTagKeysProvider:this.getLevelsTagKeysProvider()}),t.setState({getTagKeysProvider:this.getCombinedFieldsTagKeysProvider(),getTagValuesProvider:this.getCombinedFieldsTagValuesProvider()})}getCombinedFieldsTagKeysProvider(){return(e,t)=>{const n=(0,U.oY)(this),r=(0,U.ir)(this),a=(0,Ke.O)(l.sL),i=n.state.filters.filter((e=>e.key!==t)),o=r.state.filters.filter((e=>e.key!==t)),c=this.renderVariableFilters(l.mB,o),u=this.renderVariableFilters(l._P,i),d=a.replace(l.Gd,c).replace(l.w0,u);return ge({expr:s.jh.interpolate(this,d),sceneRef:this,timeRange:s.jh.getTimeRange(this).state.value,variableType:l.sL})}}getCombinedFieldsTagValuesProvider(){return(e,t)=>{const n=(0,Ke.O)(l.sL),r=(0,U.oY)(this),a=(0,U.ir)(this),i=r.state.filters.filter((e=>e.key!==t.key&&(0,ne.BG)(e.operator))),o=a.state.filters.filter((e=>e.key!==t.key&&(0,ne.BG)(e.operator))),c=this.renderVariableFilters(l.mB,o),u=this.renderVariableFilters(l._P,i),d=n.replace(l.Gd,c).replace(l.w0,u),p=s.jh.interpolate(this,d);return ie(t,e,p,this,s.jh.getTimeRange(this).state.value,l.sL)}}getLevelsTagKeysProvider(){return(e,t)=>{const n=e.state.filters.filter((e=>e.key!==t)),r=this.renderVariableFilters(l._Y,n),a=(0,Ke.O)(l._Y).replace(l.Gd,r);return ge({expr:s.jh.interpolate(this,a),sceneRef:this,timeRange:s.jh.getTimeRange(this).state.value,variableType:l._Y})}}getLevelsTagValuesProvider(){return(e,t)=>{const n=e.state.filters.filter((e=>e.key!==t.key&&e.operator===ee.w7.Equal)),r=this.renderVariableFilters(l._Y,n),a=(0,Ke.O)(l._Y).replace(l.Gd,r),i=s.jh.interpolate(this,a);return ie(t,e,i,this,s.jh.getTimeRange(this).state.value,l._Y)}}renderVariableFilters(e,t){if(e===l.mB)return(0,Q.ZX)(t);if(e===l._P)return(0,Q.E3)(t);if(e===l._Y)return(0,Q.E3)(t);{const e=new Error("getFieldsTagValuesProvider only supports fields, metadata, and levels");throw f.v.error(e),e}}resetVariablesIfNotInUrl(e,t){const n=H.locationService.getLocation();null===new URLSearchParams(n.search).get(t)&&e.setState({filters:[]})}updatePatterns(e,t){var n;const r=(0,Ge.M)(null!==(n=e.patterns)&&void 0!==n?n:[]);t.changeValueTo(r)}getUrlState(){return{patterns:JSON.stringify(this.state.patterns)}}updateFromUrl(e){const t={};e.patterns&&"string"==typeof e.patterns&&(t.patterns=JSON.parse(e.patterns)),this.setState(t)}constructor(e){var t,n;const{variablesScene:r,unsub:a}=function(e,t){const n=new s.H9({name:l.MB,datasource:l.eL,layout:"combobox",label:"Labels",allowCustomValue:!0,filters:null!=t?t:[],expressionBuilder:Q.VW,hide:K.zL.dontHide,key:"adhoc_service_filter",onAddCustomValue:Q.c0});n._getOperators=function(){return ze.II};const r=new s.H9({name:l.mB,label:"Detected fields",applyMode:"manual",layout:"combobox",expressionBuilder:Q.ZX,hide:K.zL.hideVariable,allowCustomValue:!0});r._getOperators=()=>ze.II;const a=new s.H9({name:l._P,label:"Metadata",applyMode:"manual",layout:"combobox",expressionBuilder:e=>(0,Q.E3)(e),hide:K.zL.hideVariable,allowCustomValue:!0});a._getOperators=()=>ze.II;const i=new s.H9({name:l.sL,label:"Fields",applyMode:"manual",layout:"combobox",hide:K.zL.hideVariable,allowCustomValue:!0,onAddCustomValue:Q.PP,skipUrlSync:!0}),c=new s.H9({name:l._Y,label:"Error levels",applyMode:"manual",layout:"vertical",expressionBuilder:Q._q,hide:K.zL.hideVariable,supportsMultiValueOperators:!0}),u=new s.H9({name:l.NW,hide:K.zL.hideVariable,getTagKeysProvider:()=>Promise.resolve({replace:!0,values:[]}),getTagValuesProvider:()=>Promise.resolve({replace:!0,values:[]}),expressionBuilder:Q.CY,layout:"horizontal"});u._getOperators=()=>ze.eb;const d=new s.mI({name:l.EY,label:"Data source",value:e,pluginId:"loki"}),p=d.subscribeToState((e=>{const t=`${e.value}`;e.value&&(0,o.ke)(t)}));return{variablesScene:new s.Pj({variables:[d,n,r,c,a,i,new s.yP({name:l.uw,value:"",hide:K.zL.hideVariable}),new s.H9({name:l.WM,hide:K.zL.hideVariable,expressionBuilder:Q.CY}),u,new G.m({name:l.QE,value:l.YN,skipUrlSync:!0,hide:K.zL.hideVariable,options:[{value:l.YN,label:l.YN}]})]}),unsub:p}}(null!==(n=(0,o.QB)())&&void 0!==n?n:"grafanacloud-logs",e.initialFilters),c=[new s.G1({key:"vars-row__datasource-labels-timepicker-button",direction:"row",children:[new s.vA({body:new y({key:"vars-labels",layout:"vertical",include:[l.MB]})}),new ve.H({key:tt,disabled:!0})]}),new y({key:"vars-metadata",layout:"vertical",include:[l._P]}),new y({key:"vars-fields",layout:"vertical",include:[l.mB]}),new y({key:R,layout:"horizontal",include:[l.EY]}),new y({key:M,layout:"vertical",include:[l.sL]}),new s.KE({key:"vars-timepicker"}),new s.WM({key:"vars-refresh"})];var u,d,p;"explore"===(0,$.FT)()&&H.config.featureToggles.exploreLogsAggregatedMetrics&&c.push(new q.s({key:"vars-toolbar",isOpen:!1})),super(et(function(e){for(var t=1;t{if(!(0,Qe.B)(e.filters,null==t?void 0:t.filters)){const t=e.filters.filter((e=>(0,oe.OH)(e))),n=e.filters.filter((e=>!(0,oe.OH)(e)));(0,U.ir)(this).updateFilters(n),(0,U.oY)(this).updateFilters(t)}})),Ze(this,"subscribeToPasteTimeEvent",Xe((function*(){const e=yield function(){return We.apply(this,arguments)}();if(e.isError)return;const n=s.jh.getTimeRange(t),r="string"==typeof e.range.to?e.range.to:void 0,a="string"==typeof e.range.from?e.range.from:void 0,l=i.rangeUtil.convertRawToRange(e.range);n&&l?n.setState({value:l,to:r,from:a}):f.v.error(new Error("Invalid time range from clipboard"),{msg:"Invalid time range from clipboard",sceneTimeRange:typeof n,to:null!=r?r:"",from:null!=a?a:""})}))),this._subs.add(a),this.addActivationHandler(this.onActivate.bind(this)),(0,X.hJ)(this).then((e=>{this.setState({ds:e})}))}}Ze(nt,"Component",(({model:e})=>{const{body:t}=e.useState();return(0,U.S9)(e).state.options.length?t?a().createElement(t.Component,{model:t}):a().createElement(u.LoadingPlaceholder,{text:"Loading..."}):a().createElement(qe,null)}))},2085:(e,t,n)=>{n.d(t,{dm:()=>b,kz:()=>v,qV:()=>m});var r=n(9736),a=n(5959),i=n.n(a),s=n(5553),l=n(6089),o=n(2007),c=n(20),u=n(6854),d=n(3571),p=n(7478);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e){for(var t=1;t{this.onFilterChange()})))}onFilterChange(){const e=(0,s.iw)(this);this.setState({options:e.state.filters.map((e=>{var t,n;return{text:null!==(n=null===(t=e.valueLabels)||void 0===t?void 0:t[0])&&void 0!==n?n:e.value,selected:!0,value:e.value}}))})}constructor(e){super(f(h({},e),{isLoading:!1,visible:!1,key:v,isOpen:!1})),g(this,"getTagValues",(()=>{var e,t;this.setState({isLoading:!0});const n=(0,s.iw)(this);var r;const a=null==n||null===(t=n.state)||void 0===t||null===(e=t.getTagValuesProvider)||void 0===e?void 0:e.call(t,n,null!==(r=n.state.filters[0])&&void 0!==r?r:{key:c.e4});null==a||a.then((e=>{Array.isArray(e.values)&&this.setState({isLoading:!1,options:e.values.map((e=>{var t;return{text:e.text,value:null!==(t=e.value)&&void 0!==t?t:e.text,selected:n.state.filters.some((t=>t.value===e.text))}}))})}))})),g(this,"updateFilters",((e,t)=>{var n;const r=(0,s.iw)(this),a=null===(n=this.state.options)||void 0===n?void 0:n.filter((e=>e.selected));var i;r.updateFilters(null!==(i=null==a?void 0:a.map((e=>({key:c.e4,operator:u.w7.Equal,value:e.text}))))&&void 0!==i?i:[],{skipPublish:e,forcePublish:t})})),g(this,"onChangeOptions",(e=>{var t;(0,p.bN)(),this.setState({options:null===(t=this.state.options)||void 0===t?void 0:t.map((t=>e.some((e=>e.value===t.value))?f(h({},t),{selected:!0}):f(h({},t),{selected:!1})))}),this.state.isOpen?this.updateFilters(!0):this.updateFilters(!1)})),g(this,"openSelect",(e=>{this.setState({isOpen:e})})),g(this,"onCloseMenu",(()=>{this.openSelect(!1),this.updateFilters(!1,!0)})),this.addActivationHandler(this.onActivate.bind(this))}}function b(e){const t=r.jh.findObject(e,(e=>e instanceof m));t instanceof m&&t.onFilterChange()}g(m,"Component",(({model:e})=>{const{options:t,isLoading:n,visible:a,isOpen:l}=e.useState(),c=(0,o.useStyles2)(y);return(0,s.iw)(e).useState(),a?i().createElement("div",{"data-testid":d.b.variables.levels.inputWrap,className:c.wrapper},i().createElement(r.Zx,{layout:"vertical",label:"Log levels"}),i().createElement(o.MultiSelect,{"aria-label":"Log level filters",prefix:i().createElement(o.Icon,{size:"lg",name:"filter"}),placeholder:"All levels",className:c.control,onChange:e.onChangeOptions,onCloseMenu:()=>e.onCloseMenu(),onOpenMenu:e.getTagValues,onFocus:()=>e.openSelect(!0),menuShouldPortal:!0,isOpen:l,isLoading:n,isClearable:!0,blurInputOnSelect:!1,closeMenuOnSelect:!1,openMenuOnFocus:!0,showAllSelectedWhenOpen:!0,hideSelectedOptions:!1,value:null==t?void 0:t.filter((e=>e.selected)),options:null==t?void 0:t.map((e=>({value:e.value,label:e.text})))})):null}));const y=()=>({control:(0,l.css)({flex:"1"}),wrapper:(0,l.css)({flex:"0 0 auto",whiteSpace:"nowrap"})})},1459:(e,t,n)=>{n.d(t,{Y:()=>w,F:()=>O});var r=n(9736),a=n(5959),i=n.n(a),s=n(5553),l=n(6854),o=n(4509),c=n(3241),u=n(6089),d=n(2007),p=n(72);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function f({onClick:e,props:t}){const[n,r]=(0,a.useState)(!1),s=(0,d.useStyles2)(v);return i().createElement(i().Fragment,null,i().createElement("span",null,i().createElement("div",{className:s.titleWrap},i().createElement("span",null,"Line filter"),i().createElement(d.IconButton,{onClick:e,name:"times",size:"xs","aria-label":"Remove line filter"})),i().createElement("span",{className:s.collapseWrap},i().createElement(p._,h(function(e){for(var t=1;tr(!1),name:"table-collapse-all"}))))}const v=e=>({titleWrap:(0,u.css)({display:"flex",fontSize:e.typography.bodySmall.fontSize,marginBottom:e.spacing(.5),gap:e.spacing(1)}),collapseWrap:(0,u.css)({display:"flex"}),collapseBtn:(0,u.css)({marginLeft:e.spacing(1)})});var m=n(7478);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e){for(var t=1;t{"Enter"===e.key&&((0,m.bN)(),this.updateVariableLineFilter(n,S(y({},n),{value:t})))})),b(this,"onRegexToggle",(e=>{let t;switch(e.operator){case l.cK.match:t=l.cK.regex;break;case l.cK.negativeMatch:t=l.cK.negativeRegex;break;case l.cK.regex:t=l.cK.match;break;case l.cK.negativeRegex:t=l.cK.negativeMatch;break;default:throw new Error("Invalid operator!")}this.updateFilter(e,S(y({},e),{operator:t}),!1)})),b(this,"onToggleExclusive",(e=>{let t;switch(e.operator){case l.cK.match:t=l.cK.negativeMatch;break;case l.cK.negativeMatch:t=l.cK.match;break;case l.cK.regex:t=l.cK.negativeRegex;break;case l.cK.negativeRegex:t=l.cK.regex;break;default:throw new Error("Invalid operator!")}this.updateFilter(e,S(y({},e),{operator:t}),!1)})),b(this,"onCaseSensitiveToggle",(e=>{const t=e.key===l.ld.caseSensitive?l.ld.caseInsensitive:l.ld.caseSensitive;this.updateFilter(e,S(y({},e),{key:t}),!1)})),b(this,"onInputChange",((e,t)=>{this.updateFilter(t,S(y({},t),{value:e.target.value}),!0)})),b(this,"removeFilter",(e=>{(0,m.bN)();const t=(0,s.Gk)(this),n=t.state.filters.filter((t=>void 0!==t.keyLabel&&t.keyLabel!==e.keyLabel));t.setState({filters:n})})),b(this,"updateVariableLineFilter",((e,t,n=!1,r=!1)=>{const a=(0,s.Gk)(this),i=a.state.filters.filter((t=>void 0!==t.keyLabel&&t.keyLabel!==e.keyLabel));a.updateFilters([{keyLabel:e.keyLabel,key:t.key,operator:t.operator,value:t.value},...i],{skipPublish:n,forcePublish:r}),(0,o.EE)(o.NO.service_details,o.ir.service_details.search_string_in_variables_changed,{searchQueryLength:e.value.length,containsLevel:e.value.toLowerCase().includes("level"),operator:t.operator,caseSensitive:t.key})})),b(this,"updateVariableDebounced",(0,c.debounce)(((e,t,n=!1,r=!1)=>{this.updateVariableLineFilter(e,t,n,r)}),1e3))}}function O(e){e.sort(((e,t)=>{var n,r;return parseInt(null!==(n=e.keyLabel)&&void 0!==n?n:"0",10)-parseInt(null!==(r=t.keyLabel)&&void 0!==r?r:"0",10)}))}function x(e){return{lineFiltersWrap:(0,u.css)({label:"lineFiltersWrap",display:"flex",flexWrap:"wrap",gap:`${e.spacing(.25)} ${e.spacing(2)}`})}}b(w,"Component",(({model:e})=>{const t=(0,s.Gk)(e),{filters:n}=t.useState(),r=(0,d.useStyles2)(x);return O(n),n.length?i().createElement("div",{className:r.lineFiltersWrap},n.map((t=>{const n={lineFilter:t.value,regex:t.operator===l.cK.regex||t.operator===l.cK.negativeRegex,caseSensitive:t.key===l.ld.caseSensitive,exclusive:e.isFilterExclusive(t),handleEnter:(n,r)=>e.handleEnter(n,t.value,t),setExclusive:()=>e.onToggleExclusive(t),updateFilter:(n,r)=>e.updateFilter(t,S(y({},t),{value:n}),r),onRegexToggle:()=>e.onRegexToggle(t),onInputChange:n=>e.onInputChange(n,t),onCaseSensitiveToggle:()=>e.onCaseSensitiveToggle(t)};return i().createElement(f,{key:t.keyLabel,onClick:()=>e.removeFilter(t),props:n})}))):null}))},7796:(e,t,n)=>{n.d(t,{H:()=>g});var r=n(9736),a=n(2007),i=n(5959),s=n.n(i),l=n(6089),o=n(7478),c=n(5553),u=n(3571),d=n(708);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends r.Bs{onActivate(){const e=(0,c.cR)(this),t=e.state.filters.some((e=>(0,d.BG)(e.operator)));this.setState({disabled:!t}),e.subscribeToState((e=>{const t=e.filters.some((e=>(0,d.BG)(e.operator)));this.setState({disabled:!t})}))}constructor(e){super(function(e){for(var t=1;t{const e=(0,c.cR)(this).state.filters.find((e=>(0,d.BG)(e.operator)));return e?(0,o.k9)(e.key,e.value):""})),this.addActivationHandler(this.onActivate.bind(this))}}function h(e){return{button:(0,l.css)({[e.breakpoints.down("lg")]:{alignSelf:"flex-end"},[e.breakpoints.down("md")]:{marginTop:e.spacing(1),alignSelf:"flex-start"},alignSelf:"flex-start",marginTop:"22px"})}}p(g,"Component",(({model:e})=>{const{disabled:t,hidden:n}=e.useState(),r=(0,a.useStyles2)(h);if(!0===n)return null;const i=e.getLink();return s().createElement(a.LinkButton,{"data-testid":u.b.index.header.showLogsButton,disabled:t||!i,fill:"outline",className:r.button,href:i},"Show logs")}))},9731:(e,t,n)=>{n.d(t,{s:()=>f});var r=n(9736),a=n(2007),i=n(5959),s=n.n(i),l=n(6089),o=n(8531),c=n(4509),u=n(173),d=n(2533),p=n(3571);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const h=`${d.id}.serviceSelection.aggregatedMetrics`;class f extends r.Bs{constructor(e){const t=localStorage.getItem(h),n=o.config.featureToggles.exploreLogsAggregatedMetrics&&"false"!==t;var r;super(function(e){for(var t=1;t{const e=!this.state.options.aggregatedMetrics.active;(0,c.EE)(c.NO.service_selection,c.ir.service_selection.aggregated_metrics_toggled,{enabled:e}),localStorage.setItem(h,e.toString()),this.setState({options:{aggregatedMetrics:{active:e,disabled:this.state.options.aggregatedMetrics.disabled,userOverride:e}}})})),g(this,"onToggleOpen",(e=>{this.setState({isOpen:e})}))}}function v(e){return{popover:(0,l.css)({display:"flex",padding:e.spacing(2),flexDirection:"column",background:e.colors.background.primary,boxShadow:e.shadows.z3,borderRadius:e.shape.radius.default,border:`1px solid ${e.colors.border.weak}`,zIndex:1,marginRight:e.spacing(2)}),heading:(0,l.css)({fontWeight:e.typography.fontWeightMedium,paddingBottom:e.spacing(2)}),options:(0,l.css)({display:"grid",gridTemplateColumns:"1fr 50px",rowGap:e.spacing(1),columnGap:e.spacing(2),alignItems:"center"})}}g(f,"Component",(({model:e})=>{const{isOpen:t,options:n}=e.useState(),r=(0,a.useStyles2)(v),i=()=>s().createElement("div",{className:r.popover,onClick:e=>e.stopPropagation()},s().createElement("div",{className:r.heading},"Query options"),s().createElement("div",{className:r.options},s().createElement("div",{title:"Aggregated metrics will return service queries results much more quickly, but with lower resolution"},"Aggregated metrics"),s().createElement("span",{title:n.aggregatedMetrics.disabled?`Aggregated metrics can only be enabled for queries starting after ${u.X.toLocaleString()}`:""},s().createElement(a.Switch,{label:"Toggle aggregated metrics","data-testid":p.b.index.aggregatedMetricsToggle,value:n.aggregatedMetrics.active,disabled:n.aggregatedMetrics.disabled,onChange:e.toggleAggregatedMetricsOverride}))));return n.aggregatedMetrics?s().createElement(a.Dropdown,{overlay:i,placement:"bottom",onVisibleChange:e.onToggleOpen},s().createElement(a.ToolbarButton,{icon:"cog",variant:"canvas",isOpen:t,"data-testid":p.b.index.aggregatedMetricsMenu})):s().createElement(s().Fragment,null)}))},6991:(e,t,n)=>{n.d(t,{Oo:()=>h,c:()=>g,sp:()=>d});var r=n(9736),a=n(9683),i=n(7781),s=n(2661),l=n(7478),o=n(5953),c=n(5002),u=n(9598);const d={from:"now-15m",to:"now"};function p(e){return new r.P1({body:new s.P({$timeRange:new r.JZ(d),routeMatch:e})})}function g(){return new r.jD({title:"Grafana Logs Drilldown",url:(0,u._F)(a.G3.explore),layout:i.PageLayoutType.Custom,preserveUrlKeys:a.Zt,routePath:`${a.G3.explore}/*`,getScene:e=>p(e),drilldowns:[{routePath:a.HU.logs,getPage:(e,t)=>f(e,t,a.G3.logs),defaultRoute:!0},{routePath:a.HU.labels,getPage:(e,t)=>f(e,t,a.G3.labels)},{routePath:a.HU.patterns,getPage:(e,t)=>f(e,t,a.G3.patterns)},{routePath:a.HU.fields,getPage:(e,t)=>f(e,t,a.G3.fields)},{routePath:a.KL.label,getPage:(e,t)=>v(e,t,a._J.label)},{routePath:a.KL.field,getPage:(e,t)=>v(e,t,a._J.field)},{routePath:"*",getPage:()=>h()}]})}function h(){return new r.jD({title:"",url:i.urlUtil.renderUrl(u.Gy,void 0),getScene:()=>new r.P1({body:new r.G1({direction:"column",children:[]})}),hideFromBreadcrumbs:!0,routePath:"*",$behaviors:[()=>{(0,l.Ns)()}]})}function f(e,t,n){const{labelName:s,labelValue:l}=(0,a.XJ)(e);return new r.jD({title:(0,c.Zr)(n),layout:i.PageLayoutType.Custom,url:a.bw[n](l,s),routePath:a.HU[n],preserveUrlKeys:a.tm,getParentPage:()=>t,getScene:e=>p(e)})}function v(e,t,n){const{labelName:s,labelValue:l,breakdownLabel:u}=(0,a.XJ)(e);if(!u){const e=new Error("Breakdown value missing!");throw o.v.error(e,{msg:"makeBreakdownValuePage: Breakdown value missing!",labelName:s,labelValue:l,breakdownLabel:null!=u?u:""}),e}return new r.jD({title:(0,c.Zr)(u),layout:i.PageLayoutType.Custom,url:a.mC[n](l,s,u),routePath:a.KL[n],preserveUrlKeys:a.tm,getParentPage:()=>t,getScene:e=>p(e)})}},5700:(e,t,n)=>{n.d(t,{ls:()=>A,Ci:()=>M,GD:()=>R,iD:()=>V,K_:()=>K});var r=n(9736),a=n(5959),i=n.n(a),s=n(7781),l=n(8531),o=n(2007),c=n(5719),u=(n(3571),n(4509)),d=n(4351),p=n(8428),g=n(2165);const h=(e,t,n=!1)=>{t||(t=(0,c.u9)(e)),t=t.replace(/\s+/g," ").trimEnd();const a=(0,c.U4)(e),i=r.jh.getTimeRange(e).state.value,o=(0,d.N$)(e),u=(0,d.k5)(),h=function(){const e=new URLSearchParams(window.location.search).get("urlColumns");if(e)try{const t=(0,p.aJ)(JSON.parse(e));let n={};for(const e in t)n[e]=t[e];return n}catch(e){console.error(e)}return}(),f=JSON.stringify({"loki-explore":{range:(0,s.toURLRange)(i.raw),queries:[{refId:"logs",expr:t,datasource:a}],panelsState:{logs:{displayedFields:o,visualisationType:u,columns:h,labelFieldName:"table"===u?g.bz:void 0}},datasource:a}});var v;const m=null!==(v=l.config.appSubUrl)&&void 0!==v?v:"",b=s.urlUtil.renderUrl(`${m}/explore`,{panes:f,schemaVersion:1});return n&&window.open(b,"_blank"),b};var f=n(2661),v=n(5953),m=n(7389);const b=n.p+"3d96a93cfcb32df74eef.svg";function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e){for(var t=1;t{(0,c.hJ)(this).then((e=>{this.setState({ds:e})})),this._subs.add(this.subscribeToState(((e,t)=>{this.state.queries.length||this.getQueries(),!this.state.context&&this.state.queries.length&&this.getContext()})))})),y(this,"getQueries",(()=>{const e=r.jh.getData(this),t=(0,c.UX)(e,(e=>e instanceof r.dt),r.dt);if(t){const e=this.state.frame?x(this.state.frame):null,n=t.state.queries.map((n=>{var a;return w(S({},n),{expr:r.jh.interpolate(t,n.expr),legendFormat:(null==e?void 0:e.name)?`{{ ${e.name} }}`:r.jh.interpolate(t,n.legendFormat),datasource:null!==(a=n.datasource)&&void 0!==a?a:void 0})}));JSON.stringify(n)!==JSON.stringify(this.state.queries)&&this.setState({queries:n})}})),y(this,"getFieldConfig",(()=>{var e;const t=(0,c.UX)(this,(e=>e instanceof r.Eb),r.Eb),n=r.jh.getData(this),a=null==n||null===(e=n.state.data)||void 0===e?void 0:e.series;let i=null==t?void 0:t.state.fieldConfig;if(i&&(null==a?void 0:a.length))for(const e of a)for(const t of e.fields){const e=Object.keys(t.config).map((e=>({id:e,value:t.config[e]}))),n=i.overrides.find((e=>{var n,r;return e.matcher.options===(null!==(r=null!==(n=t.config.displayNameFromDS)&&void 0!==n?n:t.config.displayName)&&void 0!==r?r:t.name)&&"byName"===e.matcher.id}));var s,l;if(!n)i.overrides.unshift({matcher:{id:"byName",options:null!==(l=null!==(s=t.config.displayNameFromDS)&&void 0!==s?s:t.config.displayName)&&void 0!==l?l:t.name},properties:e});n&&JSON.stringify(n.properties)!==JSON.stringify(e)&&(n.properties=e)}return i})),y(this,"getContext",(()=>{const e=this.getFieldConfig(),{queries:t,ds:n,labelName:a,fieldName:i,type:s}=this.state,l=r.jh.getTimeRange(this);if(!l||!t||!(null==n?void 0:n.uid))return;const o={origin:"Grafana Logs Drilldown",type:null!=s?s:"timeseries",queries:t,timeRange:S({},l.state.value),datasource:{uid:n.uid},url:window.location.href,id:`${JSON.stringify(t)}${a}${i}`,title:`${a}${i?` > ${i}`:""}`,logoPath:b,drillDownLabel:i,fieldConfig:e};JSON.stringify(o)!==JSON.stringify(this.state.context)&&this.setState({context:o})})),this.addActivationHandler(this.onActivate)}}y(O,"Component",(({model:e})=>{const{context:t}=e.useState(),{links:n}=(0,l.usePluginLinks)({extensionPointId:m.R6.MetricInvestigation,context:t});return i().createElement(i().Fragment,null,n.filter((e=>"grafana-investigations-app"===e.pluginId&&e.onClick)).map((e=>{var t;return i().createElement(o.IconButton,{tooltip:e.description,"aria-label":"extension-link-to-open-exploration",key:e.id,name:null!==(t=e.icon)&&void 0!==t?t:"panel-add",onClick:t=>{e.onClick&&e.onClick(t)}})})))}));const x=e=>{var t,n;const r=null!==(n=null===(t=e.fields[1])||void 0===t?void 0:t.labels)&&void 0!==n?n:{};if(1!==Object.keys(r).length)return;const a=Object.keys(r)[0];return{name:a,value:r[a]}};var E=n(1475),C=n(7813),P=n(5865),k=n(2969),j=n(6887),F=n(6089),L=n(1269);function _(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function T(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){_(i,r,a,s,l,"next",e)}function l(e){_(i,r,a,s,l,"throw",e)}s(void 0)}))}}function D(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}const $="Add to investigation",I="investigations_divider",B="Investigations";var A=function(e){return e.timeseries="timeseries",e.histogram="histogram",e}({}),M=function(e){return e.collapsed="Collapse",e.expanded="Expand",e}({});class R extends r.Bs{addItem(e){this.state.body&&this.state.body.addItem(e)}setItems(e){this.state.body&&this.state.body.setItems(e)}constructor(e){var t;super(N(function(e){for(var t=1;t{var e,t,n,a,i,s,l;const o=[{text:"Navigation",type:"group"},{text:"Explore",iconClassName:"compass",href:V(this),onClick:()=>W(),shortcut:"p x"}];let u;try{u=r.jh.getAncestor(this,r.Eb)}catch(e){return void this.setState({body:new r.Lw({items:o})})}var p;(this.setState({investigationsButton:new O({labelName:(null===(e=this.state.investigationOptions)||void 0===e?void 0:e.getLabelName)?null===(t=this.state.investigationOptions)||void 0===t?void 0:t.getLabelName():null===(n=this.state.investigationOptions)||void 0===n?void 0:n.labelName,fieldName:null===(a=this.state.investigationOptions)||void 0===a?void 0:a.fieldName,frame:null===(i=this.state.investigationOptions)||void 0===i?void 0:i.frame,type:null===(s=this.state.investigationOptions)||void 0===s?void 0:s.type})}),this.state.addInvestigationsLink)&&(null===(p=this.state.investigationsButton)||void 0===p||p.activate());(this.state.panelType||(null==u?void 0:u.state.collapsible))&&function(e){e.push({text:"",type:"divider"}),e.push({text:"Visualization",type:"group"})}(o),(null==u?void 0:u.state.collapsible)&&function(e,t){const n=r.jh.getAncestor(t,r.Eb);e.push({text:n.state.collapsed?"Expand":"Collapse",iconClassName:n.state.collapsed?"table-collapse-all":"table-expand-all",onClick:()=>{const e=n.state.collapsed?"Expand":"Collapse",a=r.jh.getAncestor(t,r.G1);(0,P.Zb)(a,e),n.setState({collapsed:!n.state.collapsed}),(0,d.IW)("collapsed",e)}})}(o,this),this.state.panelType&&function(e,t){e.push({text:"histogram"!==t.state.panelType?"Histogram":"Time series",iconClassName:"histogram"!==t.state.panelType?"graph-bar":"chart-line",onClick:()=>{const e=r.jh.getAncestor(t,r.xK),n=r.jh.getAncestor(t,r.Eb).clone(),a=r.jh.getData(t).clone(),i=t.clone(),s=Array.isArray(n.state.headerActions)?n.state.headerActions.map((e=>e.clone())):n.state.headerActions;let l;l="histogram"!==t.state.panelType?r.d0.timeseries().setOverrides(E.jC):r.d0.histogram(),e.setState({body:l.setMenu(i).setTitle(n.state.title).setHeaderActions(s).setData(a).build()});const o="timeseries"!==t.state.panelType?"timeseries":"histogram";(0,d.IW)("panelType",o),i.setState({panelType:o});const u=(0,c.UX)(e,(e=>e instanceof C.E),C.E);u&&u.rebuildAvgFields(),z(o)}})}(o,this),this.setState({body:new r.Lw({items:o})});var g=this;this._subs.add(null===(l=this.state.investigationsButton)||void 0===l?void 0:l.subscribeToState(T((function*(){yield function(e){return Q.apply(this,arguments)}(g)}))))}))}}D(R,"Component",(({model:e})=>{const{body:t}=e.useState();return t?i().createElement(t.Component,{model:t}):i().createElement(i().Fragment,null)}));const V=e=>{const t=r.jh.getAncestor(e,f.P),n=r.jh.getData(e);let a=n instanceof r.dt?n:(0,c.oh)(n)[0];if(!a){const t=r.jh.findObject(e,(e=>e instanceof k.u||e instanceof j.u));if(t){const e=r.jh.getData(t);a=e instanceof r.dt?e:(0,c.oh)(e)[0]}else v.v.error(new Error("Unable to locate query runner!"),{msg:"PanelMenu - getExploreLink: Unable to locate query runner!"})}const i=a.state.queries[0].expr,s=r.jh.interpolate(e,i);return h(t,s)},W=()=>{(0,u.EE)(u.NO.all,u.ir.all.open_in_explore_menu_clicked)},z=e=>{(0,u.EE)(u.NO.service_details,u.ir.service_details.change_viz_type,{newVizType:e})},H=function(){var e=T((function*(e){const t=m.R6.MetricInvestigation,n=e.state.context;if(void 0!==l.getPluginLinkExtensions){return(0,l.getPluginLinkExtensions)({extensionPointId:t,context:n}).extensions[0]}if(void 0!==l.getObservablePluginLinks){return(yield(0,L.firstValueFrom)((0,l.getObservablePluginLinks)({extensionPointId:t,context:n})))[0]}}));return function(t){return e.apply(this,arguments)}}();function Q(){return(Q=T((function*(e){const t=e.state.investigationsButton;if(t){var n;const o=yield H(t);var r;const c=null!==(r=null===(n=e.state.body)||void 0===n?void 0:n.state.items)&&void 0!==r?r:[],u=c.find((e=>e.text===$));var a,i,s,l;if(o)if(u){if(u)null===(a=e.state.body)||void 0===a||a.setItems(c.filter((e=>!1===[I,B,$].includes(e.text))))}else null===(i=e.state.body)||void 0===i||i.addItem({text:I,type:"divider"}),null===(s=e.state.body)||void 0===s||s.addItem({text:B,type:"group"}),null===(l=e.state.body)||void 0===l||l.addItem({text:$,iconClassName:"plus-square",onClick:e=>o.onClick&&o.onClick(e)})}}))).apply(this,arguments)}const K=e=>({panelWrapper:(0,F.css)({width:"100%",height:"100%",label:"panel-wrapper",position:"absolute",display:"flex"})})},9405:(e,t,n)=>{n.d(t,{Of:()=>S,Qt:()=>k,XI:()=>O,hi:()=>x,oR:()=>L,ts:()=>j,u7:()=>C,vn:()=>P});var r=n(5959),a=n.n(r),i=n(7781),s=n(9736),l=n(4509),o=n(20),c=n(7709),u=n(7352),d=n(376),p=n(5553),g=n(6854),h=n(696),f=n(1532),v=n(5953),m=n(8502),b=n(7478);function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class S extends i.BusEventBase{constructor(e,t,n,r){super(),y(this,"source",void 0),y(this,"operator",void 0),y(this,"key",void 0),y(this,"value",void 0),this.source=e,this.operator=t,this.key=n,this.value=r}}y(S,"type","add-filter");class w extends i.BusEventBase{constructor(e,t,n){super(),y(this,"key",void 0),y(this,"value",void 0),y(this,"operator",void 0),this.key=e,this.value=t,this.operator=n}}function O(e,t,n){const r="="===e.operator?"include":"exclude";k(e.key,e.value,r,t,n)}function x(e,t,n,r,a){const i=T(n,e,t);let s=i.state.filters.filter((t=>{const i=(0,p.z2)(n,t);return r&&a?!(t.key===e&&i.value===r&&t.operator===a):r?!(t.key===e&&i.value===r):a?!(t.key===e&&t.operator===a):!(t.key===e)}));t.publishEvent(new w(e,r,a),!0),i.setState({filters:s})}y(w,"type","add-filter");const E=e=>e===g.w7.gt||e===g.w7.gte?"greater":e===g.w7.lt||e===g.w7.lte?"lesser":void 0;function C(e,t,n,r){r||(r=F(e,t));const a=T(r,e,t),i=n?E(n):void 0;let s=a.state.filters.filter((t=>!(t.key===e&&(E(t.operator)===i||t.operator===g.w7.NotEqual))));a.setState({filters:s})}function P(e,t,n,r,a){const i=E(n);a||(a=F(e,r));const s=T(a,e,r);let l;a===o.mB&&(l=JSON.stringify({value:t,parser:(0,d.Ri)(e,r)}));let c=s.state.filters.filter((t=>!(t.key===e&&(E(t.operator)===i||t.operator===g.w7.NotEqual))));c=[...c,{key:e,operator:n,value:l||t,valueLabels:[t]}],s.setState({filters:c}),r.publishEvent(new S("filterButton",n,e,t),!0)}function k(e,t,n,r,a){(0,b.bN)(),a===o.MB&&(0,h._J)(e,t,r);const i=T(a,e,r);let s,l=t;a===o.mB?s=JSON.stringify({value:t,parser:(0,d.Ri)(e,r)}):a===o._Y&&"exclude"===n&&(l=`!${t}`);let c=i.state.filters.filter((r=>{const i=(0,p.z2)(a,r);return"include"===n?!(r.key===e&&r.operator===g.w7.NotEqual):"exclude"===n?!(r.key===e&&r.operator===g.w7.Equal):!(r.key===e&&i.value===t)}));const u=c.length!==i.state.filters.length;("include"===n||"exclude"===n||!u&&"toggle"===n)&&(c=[...c,{key:e,operator:"exclude"===n?g.w7.NotEqual:g.w7.Equal,value:s||t,valueLabels:[l]}]),i.setState({filters:c}),r.publishEvent(new S("filterButton",n,e,t),!0)}function j(e,t){return e===o.e4?o._Y:t}function F(e,t){var n,r;return(null===(r=(0,u.TG)(t))||void 0===r||null===(n=r.fields)||void 0===n?void 0:n.find((t=>t.name===e)))?o.MB:o.mB}class L extends s.Bs{onActivate(){const e=_(this.state.frame);if(e){const t=T(this.state.variableName,e.name,this);this.setFilterState(t),this._subs.add(t.subscribeToState(((e,n)=>{(0,f.B)(e.filters,n.filters)||this.setFilterState(t)})))}}setFilterState(e){const t=_(this.state.frame);if(!t)return void this.setState({isIncluded:!1,isExcluded:!1});const n=e.state.filters.find((e=>{const n=(0,m.OH)(t),r=(0,p.z2)(n?o._P:o.mB,e);return e.key===t.name&&r.value===t.value}));n?this.setState({isIncluded:n.operator===g.w7.Equal,isExcluded:n.operator===g.w7.NotEqual}):this.setState({isIncluded:!1,isExcluded:!1})}constructor(e){super(e),y(this,"onClick",(e=>{const t=_(this.state.frame);if(!t)return;k(t.name,t.value,e,this,this.state.variableName);const n=T(this.state.variableName,t.name,this);(0,l.EE)(l.NO.service_details,l.ir.service_details.add_to_filters_in_breakdown_clicked,{filterType:this.state.variableName,key:t.name,action:e,filtersLength:(null==n?void 0:n.state.filters.length)||0})})),this.addActivationHandler(this.onActivate.bind(this))}}y(L,"Component",(({model:e})=>{const{hideExclude:t,isExcluded:n,isIncluded:r}=e.useState();return a().createElement(c.F,{buttonFill:"outline",isIncluded:null!=r&&r,isExcluded:null!=n&&n,onInclude:()=>e.onClick("include"),onClear:()=>e.onClick("clear"),onExclude:()=>e.onClick("exclude"),hideExclude:t})}));const _=e=>{var t,n;const r=null!==(n=null===(t=e.fields[1])||void 0===t?void 0:t.labels)&&void 0!==n?n:{};if(1!==Object.keys(r).length)return void v.v.warn("getFilter: unexpected empty labels");const a=Object.keys(r)[0];return{name:a,value:r[a]}},T=(e,t,n)=>e===o.mB||e===o._P?(0,p.YS)(n):(0,p.bY)(j(t,e),n)},8313:(e,t,n)=>{n.d(t,{G:()=>f,x:()=>g});var r=n(9736),a=n(5959),i=n.n(a),s=n(158),l=n(9284),o=n(8072),c=n(6830),u=n(7781),d=n(5953);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends u.BusEventBase{}p(g,"type","breakdown-search-reset");const h={};class f extends r.Bs{filterValues(e){const t=r.jh.findObject(this,(e=>e instanceof o.O||e instanceof c.J6));if(t instanceof o.O||t instanceof c.J6){h[this.cacheKey]=e;const n=r.jh.findDescendents(t,s.h);null==n||n.forEach((t=>{t.state.body.isActive&&t.filterByString(e)}))}else d.v.warn("unable to find Breakdown scene",{typeofBody:typeof t,filter:e})}constructor(e){var t;super({filter:null!==(t=h[e])&&void 0!==t?t:""}),p(this,"cacheKey",void 0),p(this,"onValueFilterChange",(e=>{this.setState({filter:e.target.value}),this.filterValues(e.target.value)})),p(this,"clearValueFilter",(()=>{this.setState({filter:""}),this.filterValues("")})),p(this,"reset",(()=>{this.setState({filter:""}),h[this.cacheKey]=""})),this.cacheKey=e}}p(f,"Component",(({model:e})=>{const{filter:t}=e.useState();return i().createElement(l.D,{value:t,onChange:e.onValueFilterChange,onClear:e.clearValueFilter,placeholder:"Search for value"})}))},158:(e,t,n)=>{n.d(t,{h:()=>y});var r=n(5959),a=n.n(r),i=n(7781),s=n(9736),l=n(2601),o=n(9193),c=n(1049),u=n(2007),d=n(6089),p=n(8313),g=n(1269),h=n(6081),f=n(5865),v=n(5953);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}class y extends s.Bs{performRepeat(e){const t=[],n=(0,l.sortSeries)(e.series,this.sortBy,this.direction);for(let e=0;ee.isActive&&e.state.key===f.s$));if(n[0]instanceof s.G1){const t=s.jh.findDescendents(n[0],s.Eb)[0];t instanceof s.Eb?t.setState({$data:new s.Es({transformations:[()=>{return t=e[0],e=>e.pipe((0,g.map)((e=>{if(!t||!t.length)return e;let n=[];return e.forEach((e=>{const r=(0,c.ee)(e);t.includes(r)&&n.push(e)})),n})));var t}]})}):v.v.warn("filterSummaryChart: VizPanel not found",{typeofPanel:typeof t})}else v.v.warn("filterSummaryChart: SceneFlexItem not found",{typeofGraphParent:typeof n})}}constructor(e){var{sortBy:t,direction:n,getFilter:r}=e;super(b(e,["sortBy","direction","getFilter"])),m(this,"unfilteredChildren",[]),m(this,"sortBy",void 0),m(this,"direction",void 0),m(this,"sortedSeries",[]),m(this,"getFilter",void 0),m(this,"sort",((e,t)=>{const n=s.jh.getData(this);this.sortBy=e,this.direction=t,n.state.data&&this.performRepeat(n.state.data)})),m(this,"iterateFrames",(e=>{if(s.jh.getData(this).state.data)for(let t=0;t{let t=[];this.iterateFrames(((e,n)=>{const r=(0,c.ee)(e[n]);t.push(r)})),(0,o.X)(t,e,(e=>{e&&e[0]?this.filterFrames((t=>{const n=(0,c.ee)(t);return e[0].includes(n)})):this.filterFrames((()=>!0)),this.filterSummaryChart(e)}))})),m(this,"filterFrames",(e=>{const t=[];if(this.iterateFrames(((n,r)=>{e(n[r])&&t.push(this.unfilteredChildren[r])})),0===t.length){const e=this.getFilter();this.state.body.setState({children:[S(e,this.clearFilter)]})}else this.state.body.setState({children:t})})),m(this,"clearFilter",(()=>{this.publishEvent(new p.x,!0)})),this.sortBy=t,this.direction=n,this.getFilter=r,this.addActivationHandler((()=>{const e=s.jh.getData(this);this._subs.add(e.subscribeToState(((e,t)=>{var n,r,a,s;((null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Done||(null===(r=e.data)||void 0===r?void 0:r.state)===i.LoadingState.Streaming&&e.data.series.length>(null!==(s=null===(a=t.data)||void 0===a?void 0:a.series.length)&&void 0!==s?s:0))&&this.performRepeat(e.data)}))),e.state.data&&this.performRepeat(e.state.data)}))}}function S(e,t){return new s.G1({direction:"row",children:[new s.vA({body:new s.dM({reactNode:a().createElement("div",{className:w.alertContainer},a().createElement(u.Alert,{title:"",severity:"info",className:w.noResultsAlert},"No values found matching “",e,"”",a().createElement(u.Button,{className:w.clearButton,onClick:t},"Clear filter")))})})]})}m(y,"Component",(({model:e})=>{const{body:t}=e.useState();return a().createElement(t.Component,{model:t})}));const w={alertContainer:(0,d.css)({flexGrow:1,display:"flex",justifyContent:"center",alignItems:"center"}),noResultsAlert:(0,d.css)({minWidth:"30vw",flexGrow:0}),clearButton:(0,d.css)({marginLeft:"1.5rem"})}},713:(e,t,n)=>{n.d(t,{a:()=>c});var r=n(9736),a=n(7191),i=n(2007),s=n(5959),l=n.n(s),o=n(6830);class c extends r.Bs{static Component({model:e}){const{type:t}=e.useState();return l().createElement(a.R,null,l().createElement(i.Alert,{title:"",severity:"warning"},"We did not find any ",t," for the given timerange. Please"," ",l().createElement("a",{className:o.ZI.link,href:"https://forms.gle/1sYWCTPvD72T1dPH9",target:"_blank",rel:"noopener noreferrer"},"let us know")," ","if you think this is a mistake."))}}},7243:(e,t,n)=>{n.d(t,{f:()=>p,u:()=>d});var r=n(6089),a=n(5959),i=n.n(a),s=n(2007),l=n(3571),o=n(7985);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function d({options:e,value:t,onChange:n,label:r}){const l=(0,s.useStyles2)(g),[o,c]=(0,a.useState)(!1),u=e.map((e=>({label:e.label,value:e.value})));return i().createElement(s.InlineField,{className:l.selectWrapper,label:r},i().createElement(s.Select,{options:u,value:t,onOpenMenu:()=>c(!0),onCloseMenu:()=>c(!1),onChange:e=>n(e.value),className:l.select,prefix:o?void 0:i().createElement(s.Icon,{name:"search"})}))}function p({options:e,value:t,onChange:n,label:r,selectOption:d,isLoading:p,initialFilter:h}){var f;const v=(0,s.useStyles2)(g),[m,b]=(0,a.useState)(!1),[y,S]=(0,a.useState)(h),w=e.map((e=>({label:e.label,value:e.value}))),O=y&&t&&(null===(f=y.value)||void 0===f?void 0:f.includes(t))?[y,...w]:w,x=null==O?void 0:O.find((e=>e.value===t));return i().createElement(s.InlineField,{className:v.serviceSceneSelectWrapper,label:r},i().createElement(s.Select,{isLoading:p,"data-testid":l.b.exploreServiceSearch.search,placeholder:"Search values",options:O,isClearable:!0,value:t,onOpenMenu:()=>b(!0),onCloseMenu:()=>b(!1),allowCustomValue:!0,prefix:m||(null==x?void 0:x.__isNew__)?void 0:i().createElement(s.Icon,{name:"search"}),onChange:(e,t)=>(null==e?void 0:e.__isNew__)||(null==e?void 0:e.icon)?(S(u(function(e){for(var t=1;t{const r=t;return"input-change"===r.action?n(e):"menu-close"===r.action&&r.prevInputValue?(S({value:(0,o.vC)(r.prevInputValue),label:r.prevInputValue,icon:"filter",__isNew__:!0}),n(r.prevInputValue)):void 0}}))}function g(e){return{input:(0,r.css)({marginBottom:0}),select:(0,r.css)({maxWidth:e.spacing(64),minWidth:e.spacing(20)}),selectWrapper:(0,r.css)({label:"field-selector-select-wrapper",maxWidth:e.spacing(62.5),minWidth:e.spacing(20),marginRight:e.spacing.x1,marginBottom:0}),serviceSceneSelectWrapper:(0,r.css)({label:"service-select-wrapper",maxWidth:e.spacing(62.5),minWidth:e.spacing(20),marginRight:e.spacing.x1,marginBottom:0})}}},2969:(e,t,n)=>{n.d(t,{u:()=>F});var r,a,i,s=n(9736),l=n(7985),o=n(4351),c=n(7781),u=n(6081),d=n(1475),p=n(158),g=n(2007),h=n(376),f=n(1049),v=n(20),m=n(5959),b=n.n(m),y=n(6830),S=n(7352),w=n(2601),O=n(5553),x=n(5700),E=n(5865),C=n(1532),P=n(5953);function k(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function j(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){k(i,r,a,s,l,"next",e)}function l(e){k(i,r,a,s,l,"throw",e)}s(void 0)}))}}class F extends s.Bs{static Selector({model:e}){const{body:t}=e.useState();return t instanceof u.U?b().createElement(b().Fragment,null,t&&b().createElement(u.U.Selector,{model:t})):b().createElement(b().Fragment,null)}getTagKey(){const e=(0,O.Hj)(this);return String(e.state.value)}onActivate(){var e;const t=this.buildQuery();this.setState({body:this.build(t),$data:this.buildQueryRunner()}),this._subs.add(null===(e=this.state.$data)||void 0===e?void 0:e.subscribeToState((e=>{this.onValuesDataQueryChange(e,t)}))),this.runQuery(),this.setSubscriptions()}buildQueryRunner(){const e=this.buildQuery();return(0,d.rS)([e],{runQueriesMode:"manual"})}buildQuery(){const e=this.getTagKey(),t=(0,O.ir)(this),n=(0,S.rD)(this),r=(0,h.Jl)(e,t,n),{variableName:a,filterExpression:i}=this.removeFieldLabelFromVariableInterpolation(),o=s.jh.interpolate(this,r.replace(`\${${a}}`,i));return(0,l.l)(o,{legendFormat:`{{${e}}}`,refId:e})}setSubscriptions(){this._subs.add(s.jh.getTimeRange(this).subscribeToState((()=>{this.runQuery()}))),this._subs.add((0,O.Gk)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,O.Ku)(this).subscribeToState(((e,t)=>{e.value!==t.value&&this.runQuery()}))),this._subs.add((0,O.cR)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,O.iw)(this).subscribeToState(((e,t)=>{(0,C.B)(e.filters,t.filters)||this.runQuery()})));const{parser:e}=this.getParserForThisField();"structuredMetadata"!==e?this.setFieldParserSubscriptions():this.setMetadataParserSubscriptions()}setMetadataParserSubscriptions(){const e=this.getTagKey();var t=this;this._subs.add((0,O.ir)(this).subscribeToState(function(){var e=j((function*(e,n){(0,C.B)(e.filters,n.filters)||t.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var n=this;this._subs.add((0,O.oY)(this).subscribeToState(function(){var t=j((function*(t,r){(0,C.B)(t.filters.filter((t=>t.key!==e)),r.filters.filter((t=>t.key!==e)))||n.runQuery()}));return function(e,n){return t.apply(this,arguments)}}()))}setFieldParserSubscriptions(){const e=this.getTagKey();var t=this;this._subs.add((0,O.oY)(this).subscribeToState(function(){var e=j((function*(e,n){(0,C.B)(e.filters,n.filters)||t.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var n=this;this._subs.add((0,O.ir)(this).subscribeToState(function(){var t=j((function*(t,r){(0,C.B)(t.filters.filter((t=>t.key!==e)),r.filters.filter((t=>t.key!==e)))||n.runQuery()}));return function(e,n){return t.apply(this,arguments)}}()))}rebuildQuery(){var e;const t=this.buildQuery();null===(e=this.getSceneQueryRunner())||void 0===e||e.setState({queries:[t]})}runQuery(){this.rebuildQuery();const e=this.getSceneQueryRunner();null==e||e.runQueries()}getSceneQueryRunner(){if(this.state.$data){const e=s.jh.findDescendents(this.state.$data,s.dt);if(1!==e.length){const e=new Error("Unable to find query runner in value breakdown!");throw P.v.error(e,{msg:"FieldValuesBreakdownScene: Unable to find query runner in value breakdown!"}),e}return e[0]}P.v.warn("FieldValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!")}removeFieldLabelFromVariableInterpolation(){const e=this.getTagKey();let t,n;if("structuredMetadata"===this.getQueryParser()){const r=(0,O.oY)(this);n=v._P,t=(0,l.E3)(r.state.filters,[e])}else{n=v.mB;const r=(0,O.ir)(this);t=(0,l.ZX)(r.state.filters,[e])}return{filterExpression:t,variableName:n}}onValuesDataQueryChange(e,t){var n,r;(null===(n=e.data)||void 0===n?void 0:n.state)===c.LoadingState.Done&&this.state.body instanceof s.dM&&this.setState({body:this.build(t)}),(null===(r=e.data)||void 0===r?void 0:r.state)===c.LoadingState.Error&&this.setErrorState(e.data.errors)}setErrorState(e){this.setState({body:new s.dM({reactNode:b().createElement(g.Alert,{title:"Something went wrong with your request",severity:"error"},null==e?void 0:e.map(((e,t)=>b().createElement("div",{key:t},e.status&&b().createElement(b().Fragment,null,b().createElement("strong",null,"Status"),": ",e.status," ",b().createElement("br",null)),e.message&&b().createElement(b().Fragment,null,b().createElement("strong",null,"Message"),": ",e.message," ",b().createElement("br",null)),e.traceId&&b().createElement(b().Fragment,null,b().createElement("strong",null,"TraceId"),": ",e.traceId)))))})})}build(e){const{optionValue:t,parser:n}=this.getParserForThisField(),{sortBy:r,direction:a}=(0,o.vs)("fields",w.DEFAULT_SORT_BY,"desc"),i=s.jh.getAncestor(this,y.J6),l=()=>{var e;return null!==(e=i.state.search.state.filter)&&void 0!==e?e:""};return new u.U({options:[{value:"single",label:"Single"},{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new s.vA({minHeight:300,body:s.d0.timeseries().setTitle(t).setShowMenuAlways(!0).setMenu(new x.GD({})).build()})]}),new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new E.s7({title:t,type:"field",tagKey:this.getTagKey()}),new s.dM({reactNode:b().createElement(y.J6.ValuesMenu,{model:i})}),new p.h({body:new s.gF({templateColumns:y.OK,autoRows:"200px",children:[new s.vA({body:new s.dM({reactNode:b().createElement(g.LoadingPlaceholder,{text:"Loading..."})})})],isLazy:!0}),getLayoutChild:(0,h.Zp)(f.ee,(null==e?void 0:e.expr.includes("count_over_time"))?g.DrawStyle.Bars:g.DrawStyle.Line,"structuredMetadata"===n?v._P:v.mB,s.jh.getAncestor(this,y.J6).state.sort,t),sortBy:r,direction:a,getFilter:l})]}),new s.G1({direction:"column",children:[new s.dM({reactNode:b().createElement(y.J6.LabelsMenu,{model:i})}),new E.s7({title:t,type:"field",tagKey:this.getTagKey()}),new s.dM({reactNode:b().createElement(y.J6.ValuesMenu,{model:i})}),new p.h({body:new s.gF({templateColumns:"1fr",autoRows:"200px",children:[new s.vA({body:new s.dM({reactNode:b().createElement(g.LoadingPlaceholder,{text:"Loading..."})})})],isLazy:!0}),getLayoutChild:(0,h.Zp)(f.ee,(null==e?void 0:e.expr.includes("count_over_time"))?g.DrawStyle.Bars:g.DrawStyle.Line,"structuredMetadata"===n?v._P:v.mB,s.jh.getAncestor(this,y.J6).state.sort,t),sortBy:r,direction:a,getFilter:l})]})]})}getParserForThisField(){const e=(0,O.Hj)(this),t=String(e.state.value);return{optionValue:t,parser:(0,h.Ri)(t,this)}}getParserForFields(){return(0,h.k$)((0,O.ir)(this))}getQueryParser(){const{parser:e}=this.getParserForThisField(),t=this.getParserForFields();return e===t?t:void 0===e?"mixed":"structuredMetadata"===e?t:"structuredMetadata"===t?e:"mixed"}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}i=({model:e})=>{const{body:t}=e.useState(),n=(0,g.useStyles2)(x.K_);return t?b().createElement("span",{className:n.panelWrapper},t&&b().createElement(t.Component,{model:t})):b().createElement(g.LoadingPlaceholder,{text:"Loading..."})},(a="Component")in(r=F)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},7813:(e,t,n)=>{n.d(t,{E:()=>x});var r=n(9736),a=n(20),i=n(7985),s=n(1475),l=n(2007),o=n(6081),c=n(6830),u=n(7352),d=n(5959),p=n.n(d),g=n(2606),h=n(9683),f=n(7781),v=n(376),m=n(5553),b=n(5700),y=n(5953),S=n(4351),w=n(4059);function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class x extends r.Bs{updateChildren(e,t=void 0){var n;const a=(0,u.UO)(e),i=(0,u.nU)(e),s=(0,u.dB)(e),l=this.calculateCardinalityMap(e);null===(n=this.state.body)||void 0===n||n.state.layouts.forEach((e=>{if(e instanceof r.gF){const n=new Set(null==i?void 0:i.values),o=e.state.children;for(let l=0;le));o.push(...this.buildChildren(c)),o.sort(this.sortChildren(l)),o.map((e=>{this.subscribeToPanel(e)})),e.setState({children:o})}else y.v.warn("Layout is not SceneCSSGridLayout")}))}sortChildren(e){return(t,n)=>{const r=t.state.body,a=n.state.body;var i;const s=null!==(i=e.get(r.state.title))&&void 0!==i?i:0;var l;return(null!==(l=e.get(a.state.title))&&void 0!==l?l:0)-s}}calculateCardinalityMap(e){const t=(0,u.UO)(e),n=new Map;if(null==t?void 0:t.length)for(let e=0;e<(null==t?void 0:t.length);e++){const r=t.fields[0].values[e],a=t.fields[1].values[e];n.set(r,a)}return n}onActivate(){var e;this.setState({body:this.build()});const t=r.jh.getAncestor(this,u.Mn);void 0===t.state.fieldsCount&&this.updateFieldCount(),this._subs.add(null===(e=t.state.$detectedFieldsData)||void 0===e?void 0:e.subscribeToState(this.onDetectedFieldsChange)),this._subs.add(this.subscribeToFieldsVar())}subscribeToFieldsVar(){return(0,m.ir)(this).subscribeToState(((e,t)=>{const n=r.jh.getAncestor(this,u.Mn),a=e.filters.map((e=>(0,m.bu)(e).parser)),i=t.filters.map((e=>(0,m.bu)(e).parser)),s=(0,v.Qg)(a);if(s!==(0,v.Qg)(i)){var l;const e=null===(l=n.state.$detectedFieldsData)||void 0===l?void 0:l.state;e&&this.updateChildren(e,s)}}))}build(){var e;const t=(0,m.Hj)(this).state.options.map((e=>String(e.value)));r.jh.getAncestor(this,c.J6).state.search.reset();const n=this.buildChildren(t),a=r.jh.getAncestor(this,u.Mn),i=this.calculateCardinalityMap(null===(e=a.state.$detectedFieldsData)||void 0===e?void 0:e.state);n.sort(this.sortChildren(i));const s=n.map((e=>e.clone()));return[...n,...s].map((e=>{this.subscribeToPanel(e)})),new o.U({options:[{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new r.gF({templateColumns:c.OK,autoRows:"200px",children:n,isLazy:!0}),new r.gF({templateColumns:"1fr",autoRows:"200px",children:s,isLazy:!0})]})}subscribeToPanel(e){const t=e.state.body;var n;t&&this._subs.add(null==t||null===(n=t.state.$data)||void 0===n?void 0:n.getResultsStream().subscribe((t=>{t.data.errors&&t.data.errors.length>0&&(e.setState({isHidden:!0}),this.updateFieldCount())})))}rebuildAvgFields(){const e=(0,u.rD)(this),t=this.getActiveGridLayouts(),n=[];var a;const i=null!==(a=(0,S.ex)("panelType",[b.ls.histogram,b.ls.timeseries]))&&void 0!==a?a:b.ls.timeseries;null==t||t.state.children.forEach((t=>{if(t instanceof r.xK&&!t.state.isHidden){const a=r.jh.findDescendents(t,r.Eb);if(a.length){const r=a[0].state.title,s=(0,v.ph)(r,e);if((0,v.JI)(s)){const t=this.buildChild(r,e,i);t&&n.push(t)}else n.push(t)}}})),n.length&&(null==t||t.setState({children:n}))}buildChildren(e){const t=[],n=(0,u.rD)(this);var r;const i=null!==(r=(0,S.ex)("panelType",[b.ls.timeseries,b.ls.histogram]))&&void 0!==r?r:b.ls.timeseries;for(const r of e){if(r===a.To||!r)continue;const e=this.buildChild(r,n,i);e&&t.push(e)}return t}buildChild(e,t,n){if(e===a.To||!e)return;const i=(0,v.ph)(e,t),o=this.getQueryRunnerForPanel(e,t,i);let c;const u=[];(0,v.JI)(i)?(c="histogram"===n?r.d0.histogram():r.d0.timeseries(),c.setTitle(e).setData(o).setMenu(new b.GD({investigationOptions:{labelName:e},panelType:n})),u.push(new g.X({labelName:String(e),hideValueDrilldown:!0,fieldType:h._J.field}))):(c=r.d0.timeseries().setTitle(e).setData(o).setMenu(new b.GD({investigationOptions:{labelName:e}})).setCustomFieldConfig("stacking",{mode:l.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",l.DrawStyle.Bars).setOverrides(s.jC),u.push(new g.X({labelName:String(e),fieldType:h._J.field}))),c.setHeaderActions(u),c.setSeriesLimit(w.l),c.setShowMenuAlways(!0);const d=c.build();return new r.xK({body:d})}getQueryRunnerForPanel(e,t,n){const r=(0,m.ir)(this),a=(0,v.Jl)(e,r,t),l=(0,i.l)(a,{legendFormat:(0,v.JI)(n)?e:`{{${e}}}`,refId:e});return(0,s.rS)([l])}getActiveGridLayouts(){var e,t,n;return null!==(n=null===(e=this.state.body)||void 0===e?void 0:e.state.layouts.find((e=>e.isActive)))&&void 0!==n?n:null===(t=this.state.body)||void 0===t?void 0:t.state.layouts[0]}updateFieldCount(){var e,t;const n=this.getActiveGridLayouts(),a=null==n?void 0:n.state.children,i=null==a?void 0:a.filter((e=>!e.state.isHidden));var s;null===(e=(t=r.jh.getAncestor(this,c.J6).state).changeFieldCount)||void 0===e||e.call(t,null!==(s=null==i?void 0:i.length)&&void 0!==s?s:0)}static Selector({model:e}){const{body:t}=e.useState();return p().createElement(p().Fragment,null,t&&p().createElement(o.U.Selector,{model:t}))}constructor(e){super(e),O(this,"onDetectedFieldsChange",(e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===f.LoadingState.Done&&this.updateChildren(e)})),this.addActivationHandler(this.onActivate.bind(this))}}O(x,"Component",(({model:e})=>{const{body:t}=e.useState(),n=(0,l.useStyles2)(b.K_);return t?p().createElement("span",{className:n.panelWrapper},t&&p().createElement(t.Component,{model:t})):p().createElement(l.LoadingPlaceholder,{text:"Loading..."})}))},6830:(e,t,n)=>{n.d(t,{J6:()=>N,OK:()=>D,ZI:()=>$});var r=n(6089),a=n(5959),i=n.n(a),s=n(7781),l=n(9736),o=n(2007),c=n(4509),u=n(4351),d=n(20),p=n(1532),g=n(4702),h=n(7478),f=n(9683),v=n(2601),m=n(2661),b=n(7352),y=n(8313),S=n(158),w=n(7813),O=n(7243),x=n(2969),E=n(6081),C=n(1049),P=n(5659),k=n(8502),j=n(713),F=n(5553),L=n(6779),_=n(5548);function T(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const D="repeat(auto-fit, minmax(400px, 1fr))";class N extends l.Bs{onActivate(){var e,t,n;const r=(0,F.Hj)(this),a=l.jh.getAncestor(this,b.Mn);this.setState({loading:(null===(t=a.state.$detectedLabelsData)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.state)!==s.LoadingState.Done}),this._subs.add(this.subscribeToEvent(y.x,(()=>{this.state.search.clearValueFilter()}))),this._subs.add(this.subscribeToEvent(C.gf,this.handleSortByChange)),this._subs.add(r.subscribeToState(this.variableChanged)),this._subs.add((0,F.cR)(this).subscribeToState(((e,t)=>{const n=(0,F.Hj)(this);let{labelName:r}=(0,f.W6)();const a=e.filters.find((e=>e.key===r)),i=t.filters.find((e=>e.key===r));n.state.value===d.To&&a!==i&&this.setState({loading:!0,body:void 0})}))),this._subs.add(null===(n=a.state.$detectedFieldsData)||void 0===n?void 0:n.subscribeToState(((e,t)=>{var n,r,a;(null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&((null===(r=e.data.series)||void 0===r?void 0:r[0])&&this.updateOptions(null===(a=e.data.series)||void 0===a?void 0:a[0]))})));const i=(0,b.rD)(this);i&&this.updateOptions(i),(0,f.NX)(this)}updateOptions(e){if(!e||!e.length){const e=l.jh.getAncestor(this,m.P);let r;var t,n;if((0,_.mE)(e).length>1)null===(t=(n=this.state).changeFieldCount)||void 0===t||t.call(n,0),r=new L.W({clearCallback:()=>(0,_.rA)(this)});else r=new j.a({type:"fields"});return void this.setState({loading:!1,body:r})}const r=l.jh.getAncestor(this,b.Mn);var a;(0,F.Hj)(this).setState({options:(0,k.rd)(e.fields[0].values.map((e=>String(e)))),loading:!1,value:null!==(a=r.state.drillDownLabel)&&void 0!==a?a:d.To}),this.setState({loading:!1})}updateBody(e){const t=(0,F.Hj)(this);if(!t.state.options||!t.state.options.length)return;const n={};if(t.state.options&&t.state.options.length<=1){const e=l.jh.getAncestor(this,m.P);var r,a;if((0,_.mE)(e).length>1)null===(r=(a=this.state).changeFieldCount)||void 0===r||r.call(a,0),n.body=new L.W({clearCallback:()=>(0,_.rA)(this)});else n.body=new j.a({type:"fields"})}else e.value===d.To&&this.state.body instanceof x.u?n.body=new w.E({}):e.value!==d.To&&this.state.body instanceof w.E?n.body=new x.u({}):(void 0===this.state.body||this.state.body instanceof j.a||this.state.body instanceof L.W)&&(n.body=e.value===d.To?new w.E({}):new x.u({}));this.setState(n)}constructor(e){var t,n,r,a;super(function(e){for(var t=1;t{(e.value!==t.value||!(0,p.B)(e.options,t.options)||void 0===this.state.body||this.state.body instanceof j.a||this.state.body instanceof L.W)&&this.updateBody(e)})),T(this,"handleSortByChange",(e=>{if("fields"!==e.target)return;const t=this.state.body;var n;t instanceof x.u&&t.state.body instanceof E.U&&(null===(n=t.state.body)||void 0===n||n.state.layouts.forEach((n=>{l.jh.findDescendents(t,S.h).forEach((t=>t.sort(e.sortBy,e.direction)))})));(0,c.EE)(c.NO.service_details,c.ir.service_details.value_breakdown_sort_change,{target:"fields",criteria:e.sortBy,direction:e.direction})})),T(this,"onFieldSelectorChange",(e=>{if(!e)return;const t=(0,F.Hj)(this),{sortBy:n,direction:r}=(0,u.vs)("fields",v.DEFAULT_SORT_BY,"desc");(0,c.EE)(c.NO.service_details,c.ir.service_details.select_field_in_breakdown_clicked,{field:e,previousField:t.getValueText(),view:"fields",sortBy:n,sortByDirection:r});const a=l.jh.getAncestor(this,b.Mn);(0,h.fg)(f._J.field,e,a)})),this.addActivationHandler(this.onActivate.bind(this))}}T(N,"LabelsMenu",(({model:e})=>{const{body:t,loading:n,search:r}=e.useState(),a=(0,o.useStyles2)(I),s=(0,F.Hj)(e),{options:l,value:c}=s.useState();return i().createElement("div",{className:a.labelsMenuWrapper},t instanceof w.E&&i().createElement(w.E.Selector,{model:t}),t instanceof x.u&&i().createElement(x.u.Selector,{model:t}),t instanceof x.u&&i().createElement(r.Component,{model:r}),!n&&l.length>1&&i().createElement(O.u,{label:"Field",options:l,value:String(c),onChange:e.onFieldSelectorChange}))})),T(N,"ValuesMenu",(({model:e})=>{const{loading:t,sort:n}=e.useState(),r=(0,o.useStyles2)(I),a=(0,F.Hj)(e),{value:s}=a.useState();return i().createElement("div",{className:r.valuesMenuWrapper},!t&&s!==d.To&&i().createElement(i().Fragment,null,i().createElement(n.Component,{model:n})))})),T(N,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r}=e.useState(),a=(0,o.useStyles2)(I);return i().createElement("div",{className:a.container},i().createElement(P.O,{isLoading:n,blockingMessage:r},t instanceof w.E&&e&&i().createElement(N.LabelsMenu,{model:e}),i().createElement("div",{className:a.content},t&&i().createElement(t.Component,{model:t}))))}));const $={link:(0,r.css)({textDecoration:"underline"}),button:(0,r.css)({marginLeft:"1.5rem"})};function I(e){return{container:(0,r.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",gap:e.spacing(1)}),content:(0,r.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),labelsMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",justifyContent:"space-between",flexDirection:"row-reverse",gap:e.spacing(2)}),valuesMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2),flexDirection:"row"})}}},8072:(e,t,n)=>{n.d(t,{O:()=>A});var r=n(6089),a=n(5959),i=n.n(a),s=n(7781),l=n(9736),o=n(2007),c=n(4509),u=n(9683),d=n(20),p=n(158),g=n(7243),h=n(5659),f=n(8502),v=n(8313),m=n(4351),b=n(1049),y=n(7352),S=n(4702),w=n(7478),O=n(1532),x=n(6887),E=n(6081),C=n(1475),P=n(2606),k=n(42),j=n(5553),F=n(5700),L=n(4059);function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class T extends l.Bs{onActivate(){var e;const t=(0,j.ir)(this),n=l.jh.getAncestor(this,y.Mn).state.$detectedLabelsData;this.state.body?(null==n||null===(e=n.state.data)||void 0===e?void 0:e.state)===s.LoadingState.Done&&this.update(null==n?void 0:n.state.data.series[0]):this.setState({body:this.build()}),this._subs.add(null==n?void 0:n.subscribeToState(((e,t)=>{var n;(null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&this.update(e.data.series[0])}))),this._subs.add(t.subscribeToState((()=>{this.updateQueriesOnFieldsVariableChange()})))}getPanelByIndex(e,t){const n=e.state.children[t].state.body;return{panel:n,title:n.state.title}}update(e){var t;const n=(0,j.P4)(this).state.options.filter((e=>e.value!==d.To)).map((e=>e.label));null===(t=this.state.body)||void 0===t||t.state.layouts.forEach((t=>{let r=[];const a=t,i=new Set(n),s=a.state.children;for(let e=0;e({label:e,value:e})));s.push(...this.buildChildren(l));const o=this.calculateCardinalityMap(e);s.sort(this.sortChildren(o)),a.setState({children:s})}))}calculateCardinalityMap(e){const t=new Map;if(null==e?void 0:e.length)for(let n=0;n<(null==e?void 0:e.fields.length);n++){const r=e.fields[n].name,a=e.fields[n].values[0];t.set(r,a)}return t}build(){var e;const t=(0,j.P4)(this);l.jh.getAncestor(this,A).state.search.reset();const n=this.buildChildren(t.state.options),r=l.jh.getAncestor(this,y.Mn).state.$detectedLabelsData;if((null==r||null===(e=r.state.data)||void 0===e?void 0:e.state)===s.LoadingState.Done){const e=this.calculateCardinalityMap(null==r?void 0:r.state.data.series[0]);n.sort(this.sortChildren(e))}const a=n.map((e=>e.clone()));return new E.U({options:[{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new l.gF({isLazy:!0,templateColumns:k.di,autoRows:"200px",children:n}),new l.gF({isLazy:!0,templateColumns:"1fr",autoRows:"200px",children:a})]})}buildChildren(e){const t=[];for(const n of e){const{value:e}=n,r=String(e);if(e===d.To||!e)continue;const a=(0,k.oj)(this,String(n.value),String(n.value)),i=(0,C.rS)([a]);t.push(new l.xK({body:l.d0.timeseries().setTitle(r).setData(i).setHeaderActions([new P.X({labelName:r,fieldType:u._J.label})]).setCustomFieldConfig("stacking",{mode:o.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",o.DrawStyle.Bars).setHoverHeader(!1).setShowMenuAlways(!0).setOverrides(C.jC).setMenu(new F.GD({investigationOptions:{labelName:r}})).setSeriesLimit(L.l).build()}))}return t}sortChildren(e){return(t,n)=>{const r=t.state.body,a=n.state.body;if(r.state.title===d.e4)return-1;if(a.state.title===d.e4)return 1;var i;const s=null!==(i=e.get(r.state.title))&&void 0!==i?i:0;var l;return(null!==(l=e.get(a.state.title))&&void 0!==l?l:0)-s}}static Selector({model:e}){const{body:t}=e.useState();return i().createElement(i().Fragment,null,t&&i().createElement(E.U.Selector,{model:t}))}constructor(e){super(function(e){for(var t=1;t{var e;null===(e=this.state.body)||void 0===e||e.state.layouts.forEach((e=>{const t=e;for(let e=0;e{const{body:t}=e.useState(),n=(0,o.useStyles2)(F.K_);return t?i().createElement("span",{className:n.panelWrapper},t&&i().createElement(t.Component,{model:t})):i().createElement(o.LoadingPlaceholder,{text:"Loading..."})}));var D=n(2601),N=n(713);function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function I(e){for(var t=1;t{this.state.search.clearValueFilter()}))),this._subs.add(this.subscribeToEvent(b.gf,this.handleSortByChange)),this._subs.add(null===(a=i.state.$detectedLabelsData)||void 0===a?void 0:a.subscribeToState(this.onDetectedLabelsDataChange)),this._subs.add((0,j.cR)(this).subscribeToState(((e,t)=>{this.onLabelsVariableChange(e,t)}))),this._subs.add(o.subscribeToState(((e,t)=>{this.onGroupByVariableChange(e,t)})));const c=(0,y.TG)(this);c&&this.updateOptions(c),(0,u.NX)(this)}onGroupByVariableChange(e,t){(e.value!==t.value||!(0,O.B)(e.options,t.options)||void 0===this.state.body||this.state.body instanceof N.a)&&this.updateBody()}onLabelsVariableChange(e,t){let{labelName:n}=(0,u.W6)();n===d.ky&&(n=d.OX);const r=(0,j.P4)(this),a=e.filters.find((e=>e.key===n)),i=t.filters.find((e=>e.key===n));r.state.value===d.To&&a!==i&&this.setState({loading:!0,body:void 0,error:void 0})}updateOptions(e){if(!e||!e.length)return void this.setState({loading:!1,body:new N.a({type:"labels"})});const t=(0,j.P4)(this),n=(0,f.dD)(e.fields.map((e=>e.name)));var r;t.setState({loading:!1,options:n,value:null!==(r=this.state.value)&&void 0!==r?r:d.To})}updateBody(){const e=(0,j.P4)(this);if(!e.state.options||!e.state.options.length)return;const t={loading:!1,blockingMessage:void 0,error:!1};e.hasAllValue()&&this.state.body instanceof x.u?t.body=new T({}):!e.hasAllValue()&&this.state.body instanceof T?t.body=new x.u({}):void 0===this.state.body?e.state.options.length>0?t.body=e.hasAllValue()?new T({}):new x.u({}):t.body=new N.a({type:"labels"}):this.state.body instanceof N.a&&e.state.options.length>0&&(t.body=e.hasAllValue()?new T({}):new x.u({})),this.setState(I({},t))}constructor(e){var t,n,r;super(B(I({},e),{$variables:null!==(r=e.$variables)&&void 0!==r?r:new l.Pj({variables:[new S.m({name:d.Jg,defaultToAll:!1,includeAll:!0,value:null!==(t=e.value)&&void 0!==t?t:d.To,options:null!==(n=e.options)&&void 0!==n?n:[]})]}),loading:!0,sort:new b.wd({target:"labels"}),search:new v.G("labels"),value:e.value})),$(this,"_variableDependency",new l.Sh(this,{variableNames:[d.MB]})),$(this,"onDetectedLabelsDataChange",((e,t)=>{var n,r,a,i,l,o,c,u,d;if((null===(n=e.data)||void 0===n?void 0:n.state)===s.LoadingState.Done&&(null===(r=e.data.series)||void 0===r?void 0:r[0])&&!(0,O.B)(null===(i=e.data.series)||void 0===i||null===(a=i[0])||void 0===a?void 0:a.fields,null===(c=t.data)||void 0===c||null===(o=c.series)||void 0===o||null===(l=o[0])||void 0===l?void 0:l.fields))this.updateOptions(null===(d=e.data.series)||void 0===d?void 0:d[0]);else if((null===(u=e.data)||void 0===u?void 0:u.state)===s.LoadingState.Done){(0,j.P4)(this).setState({loading:!1})}})),$(this,"handleSortByChange",(e=>{if("labels"!==e.target)return;const t=this.state.body;if(t instanceof x.u){l.jh.findDescendents(t,p.h).forEach((t=>{t.sort(e.sortBy,e.direction)}))}(0,c.EE)(c.NO.service_details,c.ir.service_details.value_breakdown_sort_change,{target:"labels",criteria:e.sortBy,direction:e.direction})})),$(this,"onChange",(e=>{if(!e)return;const t=(0,j.P4)(this);t.changeValueTo(e);const{sortBy:n,direction:r}=(0,m.vs)("labels",D.DEFAULT_SORT_BY,"desc");(0,c.EE)(c.NO.service_details,c.ir.service_details.select_field_in_breakdown_clicked,{label:e,previousLabel:t.getValueText(),view:"labels",sortBy:n,sortByDirection:r});const a=l.jh.getAncestor(this,y.Mn);(0,w.fg)(u._J.label,e,a)})),this.addActivationHandler(this.onActivate.bind(this))}}function M(e){return{container:(0,r.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",gap:e.spacing(1)}),content:(0,r.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),labelsMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",justifyContent:"space-between",flexDirection:"row-reverse",gap:e.spacing(2)}),valuesMenuWrapper:(0,r.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2),flexDirection:"row"})}}$(A,"LabelsMenu",(({model:e})=>{const{body:t,loading:n,search:r}=e.useState(),a=(0,j.P4)(e),{options:s,value:l}=a.useState(),c=(0,o.useStyles2)(M);return i().createElement("div",{className:c.labelsMenuWrapper},t instanceof x.u&&i().createElement(x.u.Selector,{model:t}),t instanceof T&&i().createElement(T.Selector,{model:t}),t instanceof x.u&&i().createElement(r.Component,{model:r}),!n&&s.length>0&&i().createElement(g.u,{label:"Label",options:s,value:String(l),onChange:e.onChange}))})),$(A,"ValuesMenu",(({model:e})=>{const{loading:t,sort:n}=e.useState(),r=(0,j.P4)(e),{value:a}=r.useState(),s=(0,o.useStyles2)(M);return i().createElement("div",{className:s.valuesMenuWrapper},!t&&a!==d.To&&i().createElement(i().Fragment,null,i().createElement(n.Component,{model:n})))})),$(A,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r,error:a}=e.useState(),s=(0,o.useStyles2)(M);return i().createElement("div",{className:s.container},i().createElement(h.O,{isLoading:n,blockingMessage:r},a&&i().createElement(o.Alert,{title:"",severity:"warning"},"The labels are not available at this moment. Try using a different time range or check again later."),t instanceof T&&e&&i().createElement(A.LabelsMenu,{model:e}),i().createElement("div",{className:s.content},t&&i().createElement(t.Component,{model:t}))))}))},6887:(e,t,n)=>{n.d(t,{u:()=>N});var r=n(9736),a=n(6081),i=n(1049),s=n(2007),l=n(1475),o=n(4351),c=n(7781),u=n(158),d=n(376),p=n(20),g=n(5959),h=n.n(g),f=n(8072),v=n(2601),m=n(42),b=n(8531),y=n(5553),S=n(5700),w=n(6779),O=n(713),x=n(2661),E=n(5548),C=n(5865),P=n(7985),k=n(5953),j=n(1532);function F(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function L(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){F(i,r,a,s,l,"next",e)}function l(e){F(i,r,a,s,l,"throw",e)}s(void 0)}))}}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){for(var t=1;t{this.onValuesDataQueryChange(e)}))),this._subs.add((0,y.P4)(this).subscribeToState((e=>{e.value===p.To&&this.setState({$data:void 0,body:void 0})}))),this._subs.add(r.jh.getTimeRange(this).subscribeToState((()=>{this.runQuery()}))),this._subs.add((0,y.ir)(this).subscribeToState(((e,t)=>{(0,j.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.oY)(this).subscribeToState(((e,t)=>{(0,j.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.Gk)(this).subscribeToState(((e,t)=>{(0,j.B)(e.filters,t.filters)||this.runQuery()}))),this._subs.add((0,y.Ku)(this).subscribeToState(((e,t)=>{e.value!==t.value&&this.runQuery()})));const t=this.getTagKey();var n=this;this._subs.add((0,y.cR)(this).subscribeToState(function(){var e=L((function*(e,r){(0,j.B)(e.filters.filter((e=>t===p.e4&&e.key!==t)),r.filters.filter((e=>t===p.e4&&e.key!==t)))||n.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()));var a=this;this._subs.add((0,y.iw)(this).subscribeToState(function(){var e=L((function*(e,n){(0,j.B)(e.filters.filter((e=>t!==p.e4&&e.key!==t)),n.filters.filter((e=>t!==p.e4&&e.key!==t)))||a.runQuery()}));return function(t,n){return e.apply(this,arguments)}}()))}rebuildQuery(){var e;null===(e=this.getSceneQueryRunner())||void 0===e||e.setState({queries:[this.buildQuery()]})}runQuery(){this.rebuildQuery();const e=this.getSceneQueryRunner();null==e||e.runQueries()}getSceneQueryRunner(){if(this.state.$data){const e=r.jh.findDescendents(this.state.$data,r.dt);if(1!==e.length){const e=new Error("Unable to find query runner in value breakdown!");throw k.v.error(e,{msg:"LabelValuesBreakdownScene: Unable to find query runner in value breakdown!"}),e}return e[0]}k.v.warn("LabelValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!")}removeValueLabelFromVariableInterpolation(){const e=this.getTagKey();let t,n;if(e===p.e4){const r=(0,y.iw)(this);n=p._Y,t=(0,P._q)(r.state.filters,[e])}else{const r=(0,y.cR)(this);n=p.MB,t=(0,P.VW)(r.state.filters,[e])}return{filterExpression:t,variableName:n}}getTagKey(){const e=(0,y.P4)(this);return String(e.state.value)}onValuesDataQueryChange(e){this.setEmptyStates(e),this.setErrorStates(e)}setErrorStates(e){var t,n;if((null==e||null===(t=e.data)||void 0===t?void 0:t.errors)&&(null===(n=e.data)||void 0===n?void 0:n.state)!==c.LoadingState.Done){var r;const t=this.state.errors;null==e||null===(r=e.data)||void 0===r||r.errors.forEach((e=>{const n=`${e.status}_${e.traceId}_${e.message}`;void 0===t[n]&&(t[n]=D(T({},e),{displayed:!1}))})),this.setState({errors:t}),this.showErrorToast(this.state.errors)}}setEmptyStates(e){var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===c.LoadingState.Done)if(e.data.series.length>0&&!(this.state.body instanceof a.U))this.setState({body:this.build()});else if(0===e.data.series.length){const e=r.jh.getAncestor(this,x.P);(0,E.mE)(e).length>1?this.setState({body:new w.W({clearCallback:()=>(0,E.rA)(this)})}):this.setState({body:new O.a({type:"fields"})})}}getActiveLayout(){const e=this.state.body;if(e instanceof a.U){const t=null==e?void 0:e.state.layouts.find((e=>e.isActive));if(t instanceof r.G1)return t}}activeLayoutContainsNoPanels(){const e=this.getActiveLayout();if(e){return r.jh.findDescendents(e,u.h).some((e=>{const t=e.state.body.state.children[0];return t instanceof r.vA||t instanceof r.dM}))}return!1}build(){const e=(0,y.P4)(this).state,t=String(null==e?void 0:e.value),n=r.jh.getAncestor(this,f.O);let c=r.d0.timeseries();c=c.setCustomFieldConfig("stacking",{mode:s.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",s.DrawStyle.Bars).setShowMenuAlways(!0).setOverrides(l.jC).setMenu(new S.GD({})).setTitle(t);const g=c.build(),{sortBy:b,direction:w}=(0,o.vs)("labels",v.DEFAULT_SORT_BY,"desc"),O=()=>{var e;return null!==(e=n.state.search.state.filter)&&void 0!==e?e:""};return new a.U({options:[{value:"single",label:"Single"},{value:"grid",label:"Grid"},{value:"rows",label:"Rows"}],active:"grid",layouts:[new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(f.O.LabelsMenu,{model:n})}),new r.vA({minHeight:300,body:g})]}),new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(f.O.LabelsMenu,{model:n})}),new C.s7({title:t,levelColor:!0,tagKey:this.getTagKey(),type:"label"}),new r.dM({reactNode:h().createElement(f.O.ValuesMenu,{model:n})}),new u.h({body:new r.gF({isLazy:!0,templateColumns:m.di,autoRows:"200px",children:[new r.vA({body:new r.dM({reactNode:h().createElement(s.LoadingPlaceholder,{text:"Loading..."})})})]}),getLayoutChild:(0,d.Zp)(i.ee,s.DrawStyle.Bars,p.MB,r.jh.getAncestor(this,f.O).state.sort,t),sortBy:b,direction:w,getFilter:O})]}),new r.G1({direction:"column",children:[new r.dM({reactNode:h().createElement(f.O.LabelsMenu,{model:n})}),new C.s7({title:t,levelColor:!0,tagKey:this.getTagKey(),type:"label"}),new r.dM({reactNode:h().createElement(f.O.ValuesMenu,{model:n})}),new u.h({body:new r.gF({templateColumns:"1fr",autoRows:"200px",children:[new r.vA({body:new r.dM({reactNode:h().createElement(s.LoadingPlaceholder,{text:"Loading..."})})})]}),getLayoutChild:(0,d.Zp)(i.ee,s.DrawStyle.Bars,p.MB,r.jh.getAncestor(this,f.O).state.sort,t),sortBy:b,direction:w,getFilter:O})]})]})}showErrorToast(e){const t=(0,b.getAppEvents)();let n=[];for(const t in e){const r=e[t];r.displayed||(n.push(r),r.displayed=!0)}n.length&&(this.activeLayoutContainsNoPanels()||t.publish({type:c.AppEvents.alertError.name,payload:null==n?void 0:n.map(((e,t)=>this.renderError(t,e)))}),this.setState({errors:e}))}renderError(e,t){return h().createElement("div",{key:e},t.status&&h().createElement(h().Fragment,null,h().createElement("strong",null,"Status"),": ",t.status," ",h().createElement("br",null)),t.message&&h().createElement(h().Fragment,null,h().createElement("strong",null,"Message"),": ",t.message," ",h().createElement("br",null)),t.traceId&&h().createElement(h().Fragment,null,h().createElement("strong",null,"TraceId"),": ",t.traceId))}static Selector({model:e}){const{body:t}=e.useState();return h().createElement(h().Fragment,null,t&&t instanceof a.U&&h().createElement(a.U.Selector,{model:t}))}constructor(e){super(D(T({},e),{errors:{}})),this.addActivationHandler(this.onActivate.bind(this))}}_(N,"Component",(({model:e})=>{const{body:t}=e.useState(),n=(0,s.useStyles2)(S.K_);return t?h().createElement("span",{className:n.panelWrapper},t&&h().createElement(t.Component,{model:t})):h().createElement(s.LoadingPlaceholder,{text:"Loading..."})}))},6081:(e,t,n)=>{n.d(t,{U:()=>g});var r=n(5959),a=n.n(r),i=n(9736),s=n(2007),l=n(4509),o=n(9683),c=n(6089),u=n(4351);function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}class g extends i.Bs{constructor(e){var t;super(p(function(e){for(var t=1;tthis.state.options.every((e=>"single"!==e.value)))),d(this,"updateLayout",(()=>{const e=(0,u.Dy)();e&&("single"===e&&this.isTopLevelLayoutType()?this.setState({active:"grid"}):this.setState({active:"grid"===e||"rows"===e||"single"===e?e:"grid"}))})),d(this,"onLayoutChange",(e=>{(0,l.EE)(l.NO.service_details,l.ir.service_details.layout_type_changed,{layout:e,view:(0,o.FT)()}),(0,u.zu)(e),this.setState({active:e})})),d(this,"onActivate",(()=>{this.updateLayout()})),this.addActivationHandler(this.onActivate.bind(this))}}d(g,"Selector",(function({model:e}){const{active:t,options:n}=e.useState(),r=(0,s.useStyles2)(h);return a().createElement(s.Field,{className:r.field},a().createElement(s.RadioButtonGroup,{options:n,value:t,onChange:e.onLayoutChange}))})),d(g,"Component",(({model:e})=>{const{layouts:t,options:n,active:r}=e.useState(),i=n.findIndex((e=>e.value===r));if(-1===i)return null;const s=t[i];return a().createElement(s.Component,{model:s})}));const h=e=>({field:(0,c.css)({marginBottom:0})})},6779:(e,t,n)=>{n.d(t,{W:()=>p});var r,a,i,s=n(9736),l=n(7191),o=n(2007),c=n(5959),u=n.n(c),d=n(6830);class p extends s.Bs{}i=({model:e})=>{const{clearCallback:t}=e.useState();return u().createElement(l.R,null,u().createElement(o.Alert,{title:"",severity:"info"},"No labels match these filters."," ",u().createElement(o.Button,{className:d.ZI.button,onClick:()=>t()},"Clear filters")," "))},(a="Component")in(r=p)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},5865:(e,t,n)=>{n.d(t,{Zb:()=>y,s$:()=>w,s7:()=>b});var r=n(9736),a=n(5700),i=n(2007),s=n(1475),l=n(4351),o=n(5959),c=n.n(o),u=n(5553),d=n(5570),p=n(4509),g=n(7781),h=n(20),f=n(5953),v=n(42);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends r.Bs{onActivate(){var e;const t=null!==(e=(0,l.ex)("collapsed",[a.Ci.collapsed,a.Ci.expanded]))&&void 0!==e?e:a.Ci.expanded,n=function(e,t){var n;const o=null!==(n=(0,l.ex)("collapsed",[a.Ci.collapsed,a.Ci.expanded]))&&void 0!==n?n:a.Ci.expanded,c=r.d0.timeseries().setTitle(e).setMenu(new a.GD({})).setCollapsible(!0).setCollapsed(o===a.Ci.collapsed).setCustomFieldConfig("stacking",{mode:i.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",i.DrawStyle.Bars).setShowMenuAlways(!0).setSeriesLimit(100);(null==t?void 0:t.levelColor)&&c.setOverrides(s.jC);return c.build()}(this.state.title,{levelColor:this.state.levelColor}),o=S(t);n.setState({extendPanelContext:(e,t)=>this.extendTimeSeriesLegendBus(t)}),this.setState({body:new r.G1({key:w,minHeight:o,height:o,maxHeight:o,wrap:"nowrap",children:[new r.vA({body:n})]})}),this._subs.add(n.subscribeToState(((e,t)=>{if(e.collapsed!==t.collapsed){y(r.jh.getAncestor(n,r.G1),e.collapsed?a.Ci.collapsed:a.Ci.expanded),(0,l.IW)("collapsed",e.collapsed?a.Ci.collapsed:a.Ci.expanded)}})))}initLegendOptions(e,t,n){e&&("label"===this.state.type?t===h.e4?(0,s.C6)(n,e,this):(0,s.dO)(t,n,e,this):(0,s.Nr)(t,n,e,this))}getQuerySubscription(e,t,n){return t.subscribeToState(((t,r)=>{var a;(null===(a=t.data)||void 0===a?void 0:a.state)===g.LoadingState.Done&&("label"===this.state.type?e===h.e4?(0,s.C6)(n,t.data.series,this):(0,s.dO)(e,n,t.data.series,this):(0,s.Nr)(e,n,t.data.series,this))}))}getFieldsVariableLegendSyncSubscription(e,t){return null==t?void 0:t.subscribeToState((()=>{var t,n;const a=null===(t=this.state.body)||void 0===t?void 0:t.state.children[0];if(!(a instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const i=a.state.body;if(!(i instanceof r.Eb))throw new Error("ValueSummary - getFieldsVariableLegendSyncSubscription: Cannot find VizPanel");const l=null===(n=r.jh.getData(this).state.data)||void 0===n?void 0:n.series;l?(0,s.Nr)(e,i,l,this):f.v.warn("ValueSummary - getFieldsVariableLegendSyncSubscription: missing dataframe!")}))}getLabelsVariableLegendSyncSubscription(e){const t=e===h.e4,n=t?(0,u.iw)(this):(0,u.cR)(this);return null==n?void 0:n.subscribeToState((()=>{var n,a;const i=null===(n=this.state.body)||void 0===n?void 0:n.state.children[0];if(!(i instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const l=i.state.body;if(!(l instanceof r.Eb))throw new Error("ValueSummary - getLabelsVariableLegendSyncSubscription: Cannot find VizPanel");const o=null===(a=r.jh.getData(this).state.data)||void 0===a?void 0:a.series;o?t?(0,s.C6)(l,o,this):(0,s.dO)(e,l,o,this):f.v.warn("ValueSummary - getLabelsVariableLegendSyncSubscription: missing dataframe!")}))}constructor(e){super(e),m(this,"extendTimeSeriesLegendBus",(e=>{var t,n;const a=r.jh.getData(this),i=null===(t=a.state.data)||void 0===t?void 0:t.series,s=this.state.tagKey,l=null===(n=this.state.body)||void 0===n?void 0:n.state.children[0];if(!(l instanceof r.vA))throw new Error("Cannot find sceneFlexItem");const o=l.state.body;if(!(o instanceof r.Eb))throw new Error("Cannot find VizPanel");this.initLegendOptions(i,s,o),"label"===this.state.type?this._subs.add(this.getLabelsVariableLegendSyncSubscription(s)):(this._subs.add(this.getFieldsVariableLegendSyncSubscription(s,(0,u.ir)(this))),this._subs.add(this.getFieldsVariableLegendSyncSubscription(s,(0,u.oY)(this)))),this._subs.add(this.getQuerySubscription(s,a,o)),e.onToggleSeriesVisibility=(e,t)=>{let n;n="label"===this.state.type?s===h.e4?(0,d.PE)(e,this):(0,v.R7)(s,e,this):(0,v.zr)(s,e,this),(0,p.EE)(p.NO.service_details,p.ir.service_details.label_in_panel_summary_clicked,{label:e,action:n})}})),this.addActivationHandler(this.onActivate.bind(this))}}function y(e,t){const n=S(t);e.setState({minHeight:n,height:n,maxHeight:n})}function S(e){return e===a.Ci.collapsed?35:300}m(b,"Component",(({model:e})=>{const{body:t}=e.useState();return t?c().createElement("div",null,c().createElement(t.Component,{model:t})):null}));const w="value_summary_panel"},9284:(e,t,n)=>{n.d(t,{D:()=>c});var r=n(6089),a=n(2007),i=n(5959),s=n.n(i);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}const c=e=>{var{value:t,onChange:n,placeholder:r,onClear:i,suffix:c}=e,d=o(e,["value","onChange","placeholder","onClear","suffix"]);const p=(0,a.useStyles2)(u);return s().createElement(a.Input,function(e){for(var t=1;t({suffixWrapper:(0,r.css)({gap:e.spacing(.5),display:"inline-flex"}),clearIcon:(0,r.css)({cursor:"pointer"})})},2606:(e,t,n)=>{n.d(t,{X:()=>$});var r=n(9736),a=n(7352),i=n(7478),s=n(9683),l=n(2007),o=n(5959),c=n.n(o),u=n(9405),d=n(20),p=n(7781),g=n(5553),h=n(6854),f=n(6089),v=n(3241),m=n(5953),b=n(3571);function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var S=function(e){return e.ns="ns",e.us="µs",e.ms="ms",e.s="s",e.m="m",e.h="h",e}(S||{});var w=function(e){return e.B="B",e.KB="KB",e.MB="MB",e.GB="GB",e.TB="TB",e}(w||{});class O extends r.Bs{onActivate(){const e=(0,g.bY)((0,u.ts)(this.state.labelName,this.state.variableType),this).state.filters.filter((e=>e.key===this.state.labelName)),t=e.find((e=>e.operator===h.w7.gte||e.operator===h.w7.gt)),n=e.find((e=>e.operator===h.w7.lte||e.operator===h.w7.lt));let r={};if("duration"===this.state.fieldType||"bytes"===this.state.fieldType){if(t){const e=x((0,g.bu)(t).value,this.state.fieldType);e&&(r.gt=e.value,r.gtu=e.unit,r.gte=t.operator===h.w7.gte)}if(n){const e=x((0,g.bu)(n).value,this.state.fieldType);e&&(r.lt=e.value,r.ltu=e.unit,r.lte=n.operator===h.w7.lte)}}else{if(t){const e=(0,g.bu)(t).value;r.gt=Number(e),r.gtu="",r.gte=t.operator===h.w7.gte}if(n){const e=(0,g.bu)(n).value;r.lt=Number(e),r.ltu="",r.lte=n.operator===h.w7.lte}}0!==Object.keys(r).length&&(r.hasExistingFilter=!0),this.setState(r)}onSubmit(){this.state.gt?(0,u.vn)(this.state.labelName,this.state.gt.toString()+this.state.gtu,this.state.gte?h.w7.gte:h.w7.gt,this,this.state.variableType):(0,u.u7)(this.state.labelName,this,this.state.gte?h.w7.gte:h.w7.gt,this.state.variableType),this.state.lt?(0,u.vn)(this.state.labelName,this.state.lt.toString()+this.state.ltu,this.state.lte?h.w7.lte:h.w7.lt,this,this.state.variableType):(0,u.u7)(this.state.labelName,this,this.state.lte?h.w7.lte:h.w7.lt,this.state.variableType);r.jh.getAncestor(this,$).togglePopover()}constructor(e){let t;const n=e.fieldType;if("bytes"===n)t={ltu:"B",gtu:"B"};else if("duration"===n)t={ltu:"s",gtu:"s"};else{if("float"!==n)throw new Error(`field type incorrectly defined: ${n}`);t={ltu:"",gtu:""}}super(function(e){for(var t=1;t{const t=void 0===this.state.gt&&void 0===this.state.lt;"Enter"!==e.key||t||this.onSubmit()})),this.addActivationHandler(this.onActivate.bind(this))}}function x(e,t){if("duration"===t){const t=Object.values(S).find((t=>{const n=t.length;return e.slice(-1*n)===t}));if(t){const n=Number(e.replace(t,""));if(!isNaN(n))return{unit:t,value:n}}}if("bytes"===t){const t=Object.values(w).sort(((e,t)=>t.length-e.length)).find((t=>{const n=t.length;return e.slice(-1*n)===t}));if(t){const n=Number(e.replace(t,""));if(!isNaN(n))return{unit:t,value:n}}}}function E(e){if("duration"===e){return Object.keys(S).map((e=>({text:e,value:S[e],label:e})))}if("bytes"===e){return Object.keys(w).map((e=>({text:e,value:w[e],label:e})))}const t=new Error(`invalid field type: ${e}`);throw m.v.error(t,{msg:"getUnitOptions, invalid field type"}),t}y(O,"Component",(({model:e})=>{const t=(0,l.useStyles2)(C),{labelName:n,gt:a,lt:i,gte:s,lte:o,gtu:u,ltu:d,fieldType:p,hasExistingFilter:g}=e.useState(),h="float"!==p&&p!==n?`(${p})`:void 0,v=r.jh.getAncestor(e,$),m=void 0===a&&void 0===i;return c().createElement(l.ClickOutsideWrapper,{useCapture:!0,onClick:()=>v.togglePopover()},c().createElement(l.Stack,{direction:"column",gap:0,role:"tooltip"},c().createElement("div",{className:t.card.body},c().createElement("div",{className:t.card.title},n," ",h),c().createElement("div",{className:t.card.fieldWrap},c().createElement(l.FieldSet,{className:t.card.fieldset},c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThanInclusive,horizontal:!0,className:(0,f.cx)(t.card.field,t.card.inclusiveField)},c().createElement(l.Select,{className:t.card.inclusiveInput,menuShouldPortal:!1,value:void 0!==s?s.toString():"false",options:[{label:"Greater than",value:"false"},{label:"Greater than or equal",value:"true"}],onChange:t=>e.setState({gte:"true"===t.value})})),c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThan,horizontal:!0,className:t.card.field},c().createElement(l.Input,{onKeyDownCapture:e.onInputKeydown,autoFocus:!0,onChange:t=>{e.setState({gt:""!==t.currentTarget.value?Number(t.currentTarget.value):void 0})},className:t.card.numberInput,value:a,type:"number"})),"float"!==p&&c().createElement(l.Label,null,c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputGreaterThanUnit,horizontal:!0,className:t.card.field,label:c().createElement("span",{className:t.card.unitFieldLabel},"Unit")},c().createElement(l.Select,{onChange:t=>{e.setState({gtu:t.value})},menuShouldPortal:!1,options:E(p),className:t.card.selectInput,value:u})))),c().createElement(l.FieldSet,{className:t.card.fieldset},c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThanInclusive,horizontal:!0,className:(0,f.cx)(t.card.field,t.card.inclusiveField)},c().createElement(l.Select,{className:t.card.inclusiveInput,menuShouldPortal:!1,value:void 0!==o?o.toString():"false",options:[{label:"Less than",value:"false"},{label:"Less than or equal",value:"true"}],onChange:t=>e.setState({lte:"true"===t.value})})),c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThan,horizontal:!0,className:t.card.field},c().createElement(l.Input,{onKeyDownCapture:e.onInputKeydown,onChange:t=>e.setState({lt:""!==t.currentTarget.value?Number(t.currentTarget.value):void 0}),className:t.card.numberInput,value:i,type:"number"})),"float"!==p&&c().createElement(l.Label,null,c().createElement(l.Field,{"data-testid":b.b.breakdowns.common.filterNumericPopover.inputLessThanUnit,horizontal:!0,className:t.card.field,label:c().createElement("span",{className:t.card.unitFieldLabel},"Unit")},c().createElement(l.Select,{onChange:t=>{e.setState({ltu:t.value})},menuShouldPortal:!1,options:E(p),className:t.card.selectInput,value:d}))))),c().createElement("div",{className:t.card.buttons},g&&c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.removeButton,disabled:!g,onClick:()=>{e.setState({gt:void 0,lt:void 0}),e.onSubmit()},size:"sm",variant:"destructive",fill:"outline"},"Remove"),c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.submitButton,disabled:m,onClick:()=>e.onSubmit(),size:"sm",variant:"primary",fill:"outline",type:"submit"},"Add"),c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterNumericPopover.cancelButton,onClick:()=>v.togglePopover(),size:"sm",variant:"secondary",fill:"outline"},"Cancel")))))}));const C=e=>({card:{buttons:(0,f.css)({display:"flex",flexWrap:"wrap",justifyContent:"flex-end",gap:e.spacing(1.5),marginTop:e.spacing(1)}),inclusiveInput:(0,f.css)({minWidth:"185px"}),selectInput:(0,f.css)({minWidth:"65px"}),numberInput:(0,f.css)({width:"75px"}),fieldWrap:(0,f.css)({display:"flex",flexDirection:"column",paddingTop:e.spacing(2),paddingBottom:0}),field:(0,f.css)({display:"flex",alignItems:"center",marginBottom:e.spacing(1)}),inclusiveField:(0,f.css)({marginRight:e.spacing(1)}),unitFieldLabel:(0,f.css)({marginLeft:e.spacing(2),marginRight:e.spacing(1.5)}),numberFieldLabel:(0,f.css)({width:"100px"}),switchFieldLabel:(0,f.css)({marginLeft:e.spacing(2),marginRight:e.spacing(1)}),fieldset:(0,f.css)({display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",marginBottom:0}),title:(0,f.css)({}),body:(0,f.css)({padding:e.spacing(2)}),p:(0,f.css)({maxWidth:300})}});var P=n(376),k=n(5719),j=n(2085);function F(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function L(e){for(var t=1;te.key===this.state.labelName))}onActivate(){var e,t;const n=r.jh.getAncestor(this,a.Mn);(null===(t=n.state.$data)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.state)===p.LoadingState.Done&&this.calculateSparsity(),this._subs.add(r.jh.getData(this).subscribeToState((e=>{var t,r,a,i;(null===(t=e.data)||void 0===t?void 0:t.state)===p.LoadingState.Done&&((null===(a=n.state.$data)||void 0===a||null===(r=a.state.data)||void 0===r?void 0:r.state)===p.LoadingState.Done&&this.calculateSparsity(),this._subs.add(null===(i=n.state.$data)||void 0===i?void 0:i.subscribeToState((e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===p.LoadingState.Done&&this.calculateSparsity()}))))})))}togglePopover(){this.setState({showPopover:!this.state.showPopover})}calculateSparsity(){var e;const t=r.jh.getAncestor(this,a.Mn),n=(0,a.tn)(null===(e=t.state.$data)||void 0===e?void 0:e.state.data),i=null==n?void 0:n.fields.find((e=>"labels"===e.name)),s=r.jh.getData(this),l=(0,k.UX)(s,(e=>e instanceof r.dt),r.dt);if(l){const e=l.state.queries[0];(null==e?void 0:e.expr.includes("avg_over_time"))&&this.setState({hasNumericFilters:!0})}if(!i||!n)return void this.setState({hasSparseFilters:!1});const o=this.getVariable(),c=i.values.reduce(((e,t)=>((null==t?void 0:t[this.state.labelName])&&e++,e)),0),u=r.jh.getAncestor(this,r.Eb);if(void 0!==c&&n.length>0){const e=(c/n.length*100).toLocaleString(),t=`${this.state.labelName} exists on ${e}% of ${n.length} sampled log lines`;u.setState({description:t})}else u.setState({description:void 0});const p=this.getExistingFilter(o),h=p&&o.state.name===d.mB?(0,g.bu)(p):void 0;c{const t=(0,a.rD)(this),n=(0,P.ph)(this.state.labelName,t);if(!n||"string"===n||"boolean"===n||"int"===n){const e=new Error(`Incorrect field type: ${n}`);throw m.v.error(e,{msg:`onClickNumericFilter invalid field type ${n}`}),e}this.setState({popover:new O({labelName:this.state.labelName,variableType:e,fieldType:n})}),this.togglePopover()})),F(this,"getViewValuesLink",(()=>{const e=r.jh.getAncestor(this,a.Mn);return(0,i.FB)(this.state.fieldType,this.state.labelName,e)})),F(this,"onClickExcludeEmpty",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"exclude",this,e)})),F(this,"onClickIncludeEmpty",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"include",this,e)})),F(this,"clearFilter",(e=>{(0,u.Qt)(this.state.labelName,d.ZO,"clear",this,e)})),F(this,"clearFilters",(e=>{(0,u.hi)(this.state.labelName,this,e),this.state.labelName===d.e4&&(0,j.dm)(this)})),this.addActivationHandler(this.onActivate.bind(this))}}function I(e){const t=(0,l.useStyles2)(B);return c().createElement("span",{className:t.description},e.selected&&c().createElement("span",{className:t.selected}),e.text)}F($,"Component",(({model:e})=>{const{hideValueDrilldown:t,labelName:n,hasSparseFilters:r,hasNumericFilters:a,selectedValue:i,popover:u,showPopover:p,fieldType:f}=e.useState(),m=e.getVariable(),y=m.useState().name,S=e.getExistingFilter(m),w=(0,g.z2)(y,S),O=(0,l.useStyles2)(A),x=(0,o.useRef)(null),E=f===s._J.label&&m.state.name===d.mB&&0===m.state.filters.filter((e=>e.key!==n&&e.operator===h.w7.Equal)).length,C=(null==S?void 0:S.operator)===h.w7.NotEqual&&w.value===d.ZO,P=!!S;var k;const j=null!==(k=null==i?void 0:i.value)&&void 0!==k?k:C?T:a?N:T,F=!!(null==S?void 0:S.operator)&&[h.w7.gte,h.w7.gt,h.w7.lte,h.w7.lt].includes(S.operator),$=j===N||F,B=j===T&&!$,M={value:T,component:()=>c().createElement(I,{selected:B,text:`Include all log lines with ${n}`})},R={value:D,component:()=>c().createElement(I,{selected:!1,text:`Exclude all log lines with ${n}`})},V={value:N,component:()=>c().createElement(I,{selected:$,text:`Add an expression, i.e. ${n} > 30`})},W=[];a&&W.push(V),r&&(F||W.push(M),W.push(R));const z=C?M:a?V:M;var H;return c().createElement(c().Fragment,null,P&&c().createElement(l.IconButton,{disabled:E,name:"filter",tooltip:`Clear ${n} filters`,onClick:()=>e.clearFilters(y)}),(a||r)&&c().createElement(c().Fragment,null,c().createElement(l.ButtonGroup,{"data-testid":b.b.breakdowns.common.filterButtonGroup},c().createElement(l.Button,{"data-testid":b.b.breakdowns.common.filterButton,ref:x,onClick:()=>e.onChange(null!=i?i:z),size:"sm",fill:"outline",variant:"secondary"},null!==(H=null==i?void 0:i.value)&&void 0!==H?H:z.value),c().createElement(l.ButtonSelect,{"data-testid":b.b.breakdowns.common.filterSelect,className:O.buttonSelect,variant:"default",options:W,onChange:t=>{e.onChange(t)}}))),!0!==t&&c().createElement(l.LinkButton,{title:`View breakdown of values for ${n}`,variant:"primary",fill:"outline",size:"sm","aria-label":`Select ${n}`,href:e.getViewValuesLink()},"Select"),u&&c().createElement(l.PopoverController,{content:c().createElement(u.Component,{model:u})},((e,t,n)=>{const r={onBlur:t,onFocus:e};return c().createElement(c().Fragment,null,x.current&&c().createElement(c().Fragment,null,c().createElement(l.Popover,L(_(L({},n,v.rest),{show:p,wrapperClassName:O.popover,referenceElement:x.current,renderArrow:!0}),r))))})))}));const B=e=>({selected:(0,f.css)({label:"selectable-value-selected","&:before":{content:'""',position:"absolute",left:0,top:"4px",height:"calc(100% - 8px)",width:"2px",backgroundColor:e.colors.warning.main}}),description:(0,f.css)({textAlign:"left",fontSize:e.typography.pxToRem(12)})}),A=e=>({popover:(0,f.css)({borderRadius:e.shape.radius.default,boxShadow:e.shadows.z3,background:e.colors.background.primary,border:`1px solid ${e.colors.border.weak}`}),description:(0,f.css)({textAlign:"left",fontSize:e.typography.pxToRem(12)}),buttonSelect:(0,f.css)({border:`1px solid ${e.colors.border.strong}`,borderLeft:"none",borderTopLeftRadius:0,borderBottomLeftRadius:0,padding:1,height:"24px"})})},1049:(e,t,n)=>{n.d(t,{ee:()=>m,gf:()=>g,wd:()=>h});var r=n(9736),a=n(5959),i=n.n(a),s=n(7781),l=n(5570),o=n(2007),c=n(4351),u=n(3571),d=n(2601);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g extends s.BusEventBase{constructor(e,t,n){super(),p(this,"target",void 0),p(this,"sortBy",void 0),p(this,"direction",void 0),this.target=e,this.sortBy=t,this.direction=n}}p(g,"type","sort-criteria-changed");class h extends r.Bs{constructor(e){const{sortBy:t,direction:n}=(0,c.vs)(e.target,d.DEFAULT_SORT_BY,"desc");super({target:e.target,sortBy:t,direction:n}),p(this,"sortingOptions",[{label:"",options:[{value:"changepoint",label:"Most relevant",description:"Smart ordering of graphs based on the most significant spikes in the data"},{value:"outliers",label:"Outlying values",description:"Order by the amount of outlying values in the data"},{value:s.ReducerID.stdDev,label:"Widest spread",description:"Sort graphs by deviation from the average value"},{value:"alphabetical",label:"Name",description:"Alphabetical order"},{value:s.ReducerID.sum,label:"Count",description:"Sort graphs by total number of logs"},{value:s.ReducerID.max,label:"Highest spike",description:"Sort graphs by the highest values (max)"},{value:s.ReducerID.min,label:"Lowest dip",description:"Sort graphs by the smallest values (min)"}]},{label:"Percentiles",options:[...s.fieldReducers.selectOptions([],v).options]}]),p(this,"onCriteriaChange",(e=>{e.value&&(this.setState({sortBy:e.value}),(0,c.fq)(this.state.target,e.value,this.state.direction),this.publishEvent(new g(this.state.target,e.value,this.state.direction),!0))})),p(this,"onDirectionChange",(e=>{e.value&&(this.setState({direction:e.value}),(0,c.fq)(this.state.target,this.state.sortBy,e.value),this.publishEvent(new g(this.state.target,this.state.sortBy,e.value),!0))}))}}p(h,"Component",(({model:e})=>{const{sortBy:t,direction:n}=e.useState(),r=e.sortingOptions.find((e=>e.options.find((e=>e.value===t)))),a=null==r?void 0:r.options.find((e=>e.value===t));return i().createElement(i().Fragment,null,i().createElement(o.InlineField,{label:"Sort by",htmlFor:"sort-by-criteria",tooltip:"Calculate a derived quantity from the values in your time series and sort by this criteria. Defaults to standard deviation."},i().createElement(o.Select,{"data-testid":u.b.breakdowns.common.sortByFunction,value:a,width:20,isSearchable:!0,options:e.sortingOptions,placeholder:"Choose criteria",onChange:e.onCriteriaChange,inputId:"sort-by-criteria"})),i().createElement(o.InlineField,null,i().createElement(o.Select,{"data-testid":u.b.breakdowns.common.sortByDirection,onChange:e.onDirectionChange,"aria-label":"Sort direction",placeholder:"",value:n,options:[{label:"Asc",value:"asc"},{label:"Desc",value:"desc"}]})))}));const f=["p10","p25","p75","p90","p99"];function v(e){return e.id>="p1"&&e.id<="p99"&&f.includes(e.id)}function m(e){var t;return null!==(t=(0,l.H7)(e))&&void 0!==t?t:"No labels"}},5659:(e,t,n)=>{n.d(t,{O:()=>l});var r=n(6089),a=n(5959),i=n.n(a),s=n(2007);function l({blockingMessage:e,isLoading:t,children:n}){const r=(0,s.useStyles2)(o);return t&&!e&&(e="Loading..."),t?i().createElement(s.LoadingPlaceholder,{className:r.statusMessage,text:e}):e?i().createElement("div",{className:r.statusMessage},e):i().createElement(i().Fragment,null,n)}function o(e){return{statusMessage:(0,r.css)({fontStyle:"italic",marginTop:e.spacing(7),textAlign:"center"})}}},4059:(e,t,n)=>{n.d(t,{l:()=>r});const r=20},72:(e,t,n)=>{n.d(t,{_:()=>_});var r=n(5959),a=n.n(r),i=n(2007),s=n(7781),l=n(6089);function o(e){return{outline:"2px dotted transparent",outlineOffset:"2px",boxShadow:`0 0 0 2px ${e.colors.background.canvas}, 0 0 0px 4px ${e.colors.primary.main}`,transitionTimingFunction:"cubic-bezier(0.19, 1, 0.22, 1)",transitionDuration:"0.2s",transitionProperty:"outline, outline-offset, box-shadow"}}function c(e,t){return{zIndex:"-1",position:"absolute",opacity:"0",width:`${e}px`,height:`${e}px`,borderRadius:t.shape.radius.default,content:'""',[t.transitions.handleMotion("no-preference","reduce")]:{transitionDuration:"0.2s",transitionTimingFunction:"cubic-bezier(0.4, 0, 0.2, 1)",transitionProperty:"opacity"}}}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e){for(var t=1;t{const t=(0,i.useTheme2)(),n=e.regex?t.colors.text.maxContrast:t.colors.text.disabled,r=h(t),s=(e.regex?"Disable":"Enable")+" regex";return a().createElement(i.Tooltip,{content:s},a().createElement("button",{onClick:()=>e.onRegexToggle(e.regex?"match":"regex"),className:(0,l.cx)(r.button,e.regex?r.active:null),"aria-label":s},a().createElement("svg",{fill:n,width:"16",height:"16",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},a().createElement("text",{fontSize:"13",width:"16",height:"16",x:"50%",y:"50%",dominantBaseline:"central",textAnchor:"middle"},".*"))))},h=(e,t="secondary")=>{const n=16+e.spacing.gridSize;return{button:(0,l.css)({zIndex:0,position:"relative",margin:`0 ${e.spacing.x0_5} 0 ${e.spacing.x0_5}`,boxShadow:"none",border:"none",display:"inline-flex",background:"transparent",justifyContent:"center",alignItems:"center",padding:0,color:e.colors.text.primary,"&:before":p(d({},c(n,e)),{position:"absolute"}),"&:hover":{"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1}},"&:focus, &:focus-visible":o(e),"&:focus:not(:focus-visible)":{outline:"none",boxShadow:"none"}}),active:(0,l.css)({"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1},"&:hover":{"&:before":{backgroundColor:"none",opacity:0}}})}};var f=n(3571),v=n(6854);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){for(var t=1;t{const t=(0,i.useTheme2)(),n=e.caseSensitive?t.colors.text.maxContrast:t.colors.text.disabled,r=w(t),s=(e.caseSensitive?"Disable":"Enable")+" case match";return a().createElement(i.Tooltip,{content:s},a().createElement("button",{onClick:()=>e.onCaseSensitiveToggle(e.caseSensitive?v.ld.caseInsensitive:v.ld.caseSensitive),className:(0,l.cx)(r.button,e.caseSensitive?r.active:null),"aria-label":s},a().createElement("svg",{fill:n,width:"16",height:"16",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},a().createElement("text",{fontSize:"13",width:"16",height:"16",x:"50%",y:"50%",dominantBaseline:"central",textAnchor:"middle"},"Aa"))))},w=(e,t="secondary")=>{const n=16+e.spacing.gridSize;return{button:(0,l.css)({zIndex:0,position:"relative",margin:`0 ${e.spacing.x0_5} 0 ${e.spacing.x0_5}`,boxShadow:"none",border:"none",display:"inline-flex",background:"transparent",justifyContent:"center",alignItems:"center",padding:0,color:e.colors.text.primary,"&:before":y(b({},c(n,e)),{position:"absolute"}),"&:hover":{"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1}},"&:focus, &:focus-visible":o(e),"&:focus:not(:focus-visible)":{outline:"none",boxShadow:"none"}}),active:(0,l.css)({"&:before":{backgroundColor:"secondary"===t?e.colors.action.hover:s.colorManipulator.alpha(e.colors.text.primary,.12),opacity:1},"&:hover":{"&:before":{backgroundColor:"none",opacity:0}}})}};var O=n(8428);function x(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}let P;const k=e=>{var{value:t,onChange:n,placeholder:s,onClear:l,suffix:o,width:c,regex:u}=e,d=C(e,["value","onChange","placeholder","onClear","suffix","width","regex"]);const p=(0,i.useStyles2)(F),[g,h]=(0,r.useState)(!1),[f,v]=(0,r.useState)(""),m=(0,r.useCallback)((e=>{if(!e||!u)return v(""),void h(!1);if(void 0!==P)try{null==P||P.compile(e),h(!1),v("")}catch(e){const t=(0,O.DU)(e);h(!0),t&&v(t)}else j().then((()=>m(e)))}),[u]);return(0,r.useEffect)((()=>{m(t)}),[m,t]),a().createElement(i.Tooltip,{placement:"auto-start",show:!!f&&g,content:f},a().createElement(i.Input,function(e){for(var t=1;t({suffixWrapper:(0,l.css)({gap:e.spacing(.5),display:"inline-flex"}),clearIcon:(0,l.css)({cursor:"pointer"})}),L=30;function _({exclusive:e,lineFilter:t,caseSensitive:n,setExclusive:s,regex:o,onInputChange:c,onCaseSensitiveToggle:u,onRegexToggle:d,handleEnter:p,onSubmitLineFilter:h,onClearLineFilter:v,focus:m,setFocus:b,type:y}){const w=(0,i.useStyles2)((e=>T(e,y))),[O,x]=(0,r.useState)(L);function E(e){var t;const n=Math.max(null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0,L);x(n+9)}return(0,r.useEffect)((()=>{E(t)}),[t,m]),a().createElement("div",{className:w.wrapper},!h&&a().createElement(i.Select,{prefix:null,className:w.select,value:e?"exclusive":"inclusive",options:[{value:"exclusive",label:"Exclude"},{value:"inclusive",label:"Include"}],onChange:()=>s(!e)}),a().createElement(i.Field,{className:w.field},a().createElement(k,{regex:o,width:m?O:void 0,onFocus:()=>b(!0),"data-testid":f.b.exploreServiceDetails.searchLogs,value:null!=t?t:"",className:(0,l.cx)(h?w.inputNoBorderRight:void 0,w.input),onChange:c,suffix:a().createElement("span",{className:`${w.suffix} input-suffix`},a().createElement(S,{caseSensitive:n,onCaseSensitiveToggle:u}),a().createElement(g,{regex:o,onRegexToggle:d})),prefix:null,placeholder:"Search in log lines",onClear:v,onKeyUp:e=>{p(e,t),E(t)}})),h&&a().createElement("span",{className:w.buttonWrap},a().createElement(i.Button,{onClick:()=>{s(!1),h()},className:w.includeButton,variant:"secondary",fill:"outline",disabled:!t},"Include"),a().createElement(i.Button,{onClick:()=>{s(!0),h()},className:w.excludeButton,variant:"secondary",fill:"outline",disabled:!t},"Exclude")))}const T=(e,t)=>({inputNoBorderRight:(0,l.css)({input:{borderTopRightRadius:0,borderBottomRightRadius:0}}),suffix:(0,l.css)({display:"inline-flex",gap:e.spacing(.5)}),removeBtn:(0,l.css)({borderTopLeftRadius:0,borderBottomLeftRadius:0}),buttonWrap:(0,l.css)({display:"flex",justifyContent:"center"}),includeButton:(0,l.css)({borderLeft:"none",borderRadius:0,borderRight:"none","&[disabled]":{borderRight:"none"}}),excludeButton:(0,l.css)({borderRadius:`0 ${e.shape.radius.default} ${e.shape.radius.default} 0`,borderLeft:"none","&[disabled]":{borderLeft:"none"}}),submit:(0,l.css)({borderTopLeftRadius:0,borderBottomLeftRadius:0}),select:(0,l.css)({label:"line-filter-exclusion",marginLeft:0,paddingLeft:0,height:"auto",borderBottomRightRadius:"0",borderTopRightRadius:"0",borderRight:"none",minHeight:"30px",minWidth:"95px",maxWidth:"95px",outline:"none"}),wrapper:(0,l.css)({display:"flex",width:"100%"}),input:(0,l.css)({label:"line-filter-input-wrapper",minWidth:"200px",maxWidth:"editor"===t?"calc(100vw - 198px)":"calc(100vw - 288px)",input:{borderTopLeftRadius:0,borderBottomLeftRadius:0,fontFamily:"monospace",fontSize:e.typography.bodySmall.fontSize,width:"100%"}}),exclusiveBtn:(0,l.css)({marginRight:"1rem"}),field:(0,l.css)({label:"field",flex:"0 1 auto",marginBottom:0})})},2649:(e,t,n)=>{n.d(t,{PY:()=>S,ZB:()=>b,zQ:()=>y});var r=n(6089),a=n(9736),i=n(2007),s=n(5959),l=n.n(s),o=n(4351),c=n(8632),u=n(4509),d=n(9641),p=n(7781),g=n(8996),h=n(8531),f=n(8428),v=n(5953);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends a.Bs{constructor(e){super(function(e){for(var t=1;t{this.getLogsPanelScene().setState({wrapLogMessage:e}),(0,o.YK)("wrapLogMessage",e),this.getLogsListScene().setLogsVizOption({wrapLogMessage:e}),this.getLogsListScene().setLogsVizOption({prettifyLogMessage:e})})),m(this,"onChangeLogsSortOrder",(e=>{this.getLogsPanelScene().setState({sortOrder:e}),(0,o.YK)("sortOrder",e),this.getLogsListScene().setLogsVizOption({sortOrder:e})})),m(this,"getLogsListScene",(()=>a.jh.getAncestor(this,c.i))),m(this,"getLogsPanelScene",(()=>a.jh.getAncestor(this,g.o))),m(this,"clearDisplayedFields",(()=>{this.getLogsListScene().clearDisplayedFields(),(0,u.EE)(u.NO.service_details,u.ir.service_details.logs_clear_displayed_fields)}))}}function y(){return(0,o.YM)("sortOrder",p.LogsSortOrder.Descending)}function S(){const e=h.locationService.getLocation(),t=new URLSearchParams(e.search).get("sortOrder");try{if("string"==typeof t){const e=(0,f.FH)(JSON.parse(t));if(e)return e}}catch(e){v.v.error(e,{msg:"LogOptionsScene(getLogsPanelSortOrderFromURL): unable to parse sortOrder"})}return!1}m(b,"Component",(function({model:e}){const{onChangeVisualizationType:t,visualizationType:n}=e.useState(),{wrapLogMessage:r,sortOrder:a}=e.getLogsPanelScene().useState(),{displayedFields:s}=e.getLogsListScene().useState(),o=(0,i.useStyles2)(w),c=null!=r&&r;return l().createElement("div",{className:o.container},s.length>0&&l().createElement(i.Tooltip,{content:`Clear displayed fields: ${s.join(", ")}`},l().createElement(i.Button,{size:"sm",variant:"secondary",fill:"outline",onClick:e.clearDisplayedFields},"Show original log line")),l().createElement(i.InlineField,{className:o.buttonGroupWrapper,transparent:!0},l().createElement(i.RadioButtonGroup,{size:"sm",options:[{label:"Newest first",value:p.LogsSortOrder.Descending,description:"Show results newest to oldest"},{label:"Oldest first",value:p.LogsSortOrder.Ascending,description:"Show results oldest to newest"}],value:a,onChange:e.onChangeLogsSortOrder})),l().createElement(i.InlineField,{className:o.buttonGroupWrapper,transparent:!0},l().createElement(i.RadioButtonGroup,{size:"sm",value:c,onChange:e.handleWrapLinesChange,options:[{label:"Wrap",value:!0,description:"Enable wrapping of long log lines"},{label:"No wrap",value:!1,description:"Disable wrapping of long log lines"}]})),l().createElement(d.C,{vizType:n,onChange:t}))}));const w=e=>({container:(0,r.css)({display:"flex",alignItems:"center",gap:e.spacing(1),marginTop:e.spacing(.5)}),buttonGroupWrapper:(0,r.css)({margin:0,alignItems:"center"})})},8632:(e,t,n)=>{n.d(t,{i:()=>bt});var r=n(5959),a=n.n(r),i=n(9736),s=n(8531),l=n(6089),o=n(7781),c=n(2165),u=n(5953),d=n(9598),p=n(8428);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}const v=`${d.s_}.tableColumnWidths`;var m=function(e){return e.text="text",e.labels="labels",e.auto="auto",e}({});const b=(0,r.createContext)({columnWidthMap:{},setColumnWidthMap:()=>{},columns:{},filteredColumns:{},setColumns:()=>{},setFilteredColumns:()=>{},setVisible:()=>!1,visible:!1,bodyState:"auto",setBodyState:()=>{},clearSelectedLine:()=>{}});const y=({children:e,initialColumns:t,logsFrame:n,setUrlColumns:i,clearSelectedLine:s,setUrlTableBodyState:l,urlTableBodyState:o,showColumnManagementDrawer:d,isColumnManagementActive:g})=>{const[f,m]=(0,r.useState)(S(t)),[y,w]=(0,r.useState)(null!=o?o:"auto"),[O,x]=(0,r.useState)(void 0),E=function(){let e={};const t=localStorage.getItem(v);if(t)try{return e=(0,p.Zt)(JSON.parse(t)),!1===e&&u.v.error(new p.QX("getColumnWidthsFromLocalStorage: unable to validate values in local storage"),{msg:"NarrowingError: error parsing table column widths from local storage"}),e}catch(e){u.v.error(e,{msg:"error parsing table column widths from local storage"})}return e}(),[C,P]=(0,r.useState)(E),k=(0,r.useCallback)((e=>{if(e){const t=S(e);m(t),i((e=>{let t=[];return Object.keys(e).forEach((n=>{e[n].active&&void 0!==e[n].index&&t.push(n)})),t.sort(((t,n)=>{const r=e[t],a=e[n];return r.index-a.index})),t})(t))}}),[i]),j=(0,r.useCallback)((e=>{w(e),l(e)}),[l]),F=(0,r.useCallback)((e=>{d(e)}),[d]);return(0,r.useEffect)((()=>{t&&k(t)}),[t,k]),(0,r.useEffect)((()=>{const e=function(e,t){if(!t)return void u.v.warn("missing dataframe, cannot set url state");const n=Object.keys(e).filter((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.active})).sort(((t,n)=>{const r=e[t],a=e[n];return void 0!==r.index&&void 0!==a.index?r.index-a.index:0})),r=t.timeField,a=t.bodyField;if(r&&a||n.length){const e=[];return(null==r?void 0:r.name)&&e.push(r.name),(null==a?void 0:a.name)&&e.push(a.name),n.length?n:e}return[]}(f,n);if(null==e?void 0:e.length){0===Object.keys(f).filter((e=>f[e].active)).length&&function(e,t,n){const r=h({},e);r[(0,c.fF)(n)]={index:0,active:!0,type:"TIME_FIELD",percentOfLinesWithLabel:100,cardinality:1/0},r[(0,c.Il)(n)]={index:1,active:!0,type:"BODY_FIELD",percentOfLinesWithLabel:100,cardinality:1/0},t(r)}(f,k,n),x(void 0)}}),[f,n,x,k]),a().createElement(b.Provider,{value:{setColumnWidthMap:e=>{localStorage.setItem(v,JSON.stringify(e)),P(e)},columnWidthMap:C,bodyState:y,setBodyState:j,setFilteredColumns:x,filteredColumns:O,columns:f,setColumns:k,visible:g,setVisible:F,clearSelectedLine:()=>{s()}}},e)},S=e=>{if("labelTypes"in e){const t=h({},e),{labelTypes:n}=t;return f(t,["labelTypes"])}return e};const w=()=>(0,r.useContext)(b);var O=n(3367),x=n(1269),E=n(1625),C=n(2007);const P=(0,r.createContext)({cellIndex:{index:null,numberOfMenuItems:3},setActiveCellIndex:e=>!1}),k=({children:e})=>{const[t,n]=(0,r.useState)({index:null}),i=(0,r.useCallback)((e=>{n(e)}),[]);return a().createElement(P.Provider,{value:{cellIndex:t,setActiveCellIndex:i}},e)},j=()=>(0,r.useContext)(P),F=(0,r.createContext)({isHeaderMenuActive:!1,setHeaderMenuActive:e=>!1}),L=({children:e})=>{const[t,n]=(0,r.useState)(!1),i=(0,r.useCallback)((e=>{n(e)}),[]);return a().createElement(F.Provider,{value:{isHeaderMenuActive:t,setHeaderMenuActive:i}},e)},_=()=>(0,r.useContext)(F);var T=n(9193);function D({searchValue:e,setSearchValue:t}){const{columns:n,setFilteredColumns:r}=w(),i=e=>{const t=e[0];let a={},i=0;var l;t.forEach((e=>{e in n&&(a[e]=n[e],i++)})),r(a),l=i,(0,s.reportInteraction)("grafana_logs_app_table_text_search_result_count",{resultCount:l})},o=function(e){return{searchWrap:(0,l.css)({padding:`${e.spacing(.4)} 0 ${e.spacing(.4)} ${e.spacing(.4)}`})}}((0,C.useTheme2)());return a().createElement(C.Field,{className:o.searchWrap},a().createElement(C.Input,{value:e,type:"text",placeholder:"Search fields by name",onChange:e=>{var a;const s=null===(a=e.currentTarget)||void 0===a?void 0:a.value;var l;t(s),s?(l=s,(0,T.E)(Object.keys(n),l,i)):r(void 0)}}))}var N=n(9902);function $(){const e=function(e){return{empty:(0,l.css)({marginBottom:e.spacing(2),marginLeft:e.spacing(1.75),fontSize:e.typography.fontSize})}}((0,C.useTheme2)());return a().createElement("div",{className:e.empty},"No fields")}function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function B(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function A(e){var t=function(e,t){if("object"!==M(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==M(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===M(t)?t:String(t)}function M(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function R(e){const t=function(e){return{dragIcon:(0,l.css)({cursor:"drag",marginLeft:e.spacing(1),opacity:.4}),labelCount:(0,l.css)({marginLeft:e.spacing(.5),marginRight:e.spacing(.5),appearance:"none",background:"none",border:"none",fontSize:e.typography.pxToRem(11),opacity:.6,display:"flex",flexDirection:"column",alignItems:"self-end"}),contentWrap:(0,l.css)({display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"}),customWidthWrap:(0,l.css)({fontSize:e.typography.bodySmall.fontSize,cursor:"pointer"}),checkboxLabel:(0,l.css)({"> span":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",display:"block",maxWidth:"100%"}})}}((0,C.useTheme2)());var n,r,i,s,o,c;return e.labels[e.label]?a().createElement(a().Fragment,null,a().createElement("div",{className:t.contentWrap},a().createElement(C.Checkbox,{className:t.checkboxLabel,label:e.label,onChange:e.onChange,checked:null!==(c=null===(n=e.labels[e.label])||void 0===n?void 0:n.active)&&void 0!==c&&c}),e.showCount&&a().createElement("div",{className:t.labelCount},a().createElement("div",null,null===(r=e.labels[e.label])||void 0===r?void 0:r.percentOfLinesWithLabel,"%"),a().createElement("div",null,null===(i=e.labels[e.label])||void 0===i?void 0:i.cardinality," ",1===(null===(s=e.labels[e.label])||void 0===s?void 0:s.cardinality)?"value":"values")),e.columnWidthMap&&e.setColumnWidthMap&&void 0!==(null===(o=e.columnWidthMap)||void 0===o?void 0:o[e.label])&&a().createElement("div",{onClick:()=>{var t;const n=function(e){for(var t=1;t{const{columnWidthMap:t,setColumnWidthMap:n}=w(),{reorderColumn:r,labels:i,valueFilter:s,toggleColumn:o}=e,c=(0,C.useTheme2)(),{columns:u}=w(),d=function(e){return{wrap:(0,l.css)({marginTop:e.spacing(1),marginBottom:e.spacing(1),display:"flex",background:e.colors.background.primary}),dragging:(0,l.css)({background:e.colors.background.secondary}),columnWrapper:(0,l.css)({marginBottom:e.spacing(1.5),paddingLeft:e.spacing(.5)})}}(c),p=Object.keys(i).filter((e=>s(e))),g=e=>{e.destination&&r(u,e.source.index,e.destination.index)},h=e=>{const t=i[e];if(t)return`${e} appears in ${null==t?void 0:t.percentOfLinesWithLabel}% of log lines`};return p.length?a().createElement(N.JY,{onDragEnd:g},a().createElement(N.gL,{droppableId:"order-fields",direction:"vertical"},(e=>a().createElement("div",z(W({className:d.columnWrapper},e.droppableProps),{ref:e.innerRef}),p.sort(function(e){return(t,n)=>{const r=e[t],a=e[n];return null!=r.index&&null!=a.index?r.index-a.index:0}}(i)).map(((e,r)=>a().createElement(N.sx,{draggableId:e,key:e,index:r},((r,s)=>a().createElement("div",z(W({className:(0,l.cx)(d.wrap,s.isDragging?d.dragging:void 0),ref:r.innerRef},r.draggableProps,r.dragHandleProps),{title:h(e)}),a().createElement(R,{setColumnWidthMap:n,columnWidthMap:t,label:e,onChange:()=>o(e),labels:i,draggable:!0})))))),e.placeholder)))):a().createElement($,null)},Q=new Intl.Collator(void 0,{sensitivity:"base"});const K=e=>{const{labels:t,valueFilter:n,toggleColumn:r}=e,i=function(e){return{wrap:(0,l.css)({marginTop:e.spacing(.25),marginBottom:e.spacing(.25),display:"flex",background:e.colors.background.primary,borderBottom:`1px solid ${e.colors.background.canvas}`}),dragging:(0,l.css)({background:e.colors.background.secondary}),columnWrapper:(0,l.css)({marginBottom:e.spacing(1.5),paddingLeft:e.spacing(.5)})}}((0,C.useTheme2)()),s=Object.keys(t).filter((e=>n(e)));return s.length?a().createElement("div",{className:i.columnWrapper},s.sort(function(e){return(t,n)=>{const r=e[t],a=e[n];return null!=r&&null!=a?Number("TIME_FIELD"===a.type)-Number("TIME_FIELD"===r.type)||Number("BODY_FIELD"===a.type)-Number("BODY_FIELD"===r.type)||Q.compare(t,n):0}}(t)).map((e=>{var n;return a().createElement("div",{key:e,className:i.wrap,title:`${e} appears in ${null===(n=t[e])||void 0===n?void 0:n.percentOfLinesWithLabel}% of log lines`},a().createElement(R,{showCount:!0,label:e,onChange:()=>r(e),labels:t}))}))):a().createElement($,null)};const G=e=>{const t=function(e){return{sidebarWrap:(0,l.css)({overflowY:"scroll",height:"calc(100% - 50px)","&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"}),columnHeaderButton:(0,l.css)({appearance:"none",background:"none",border:"none",fontSize:e.typography.pxToRem(11)}),columnHeader:(0,l.css)({display:"flex",justifyContent:"space-between",fontSize:e.typography.h6.fontSize,background:e.colors.background.secondary,position:"sticky",top:0,left:0,paddingTop:e.spacing(.75),paddingRight:e.spacing(.75),paddingBottom:e.spacing(.75),paddingLeft:e.spacing(1.5),zIndex:3,marginBottom:e.spacing(2)})}}((0,C.useTheme2)());var n,r;return a().createElement("div",{className:t.sidebarWrap},a().createElement(a().Fragment,null,a().createElement("div",{className:t.columnHeader},"Selected fields",a().createElement("button",{onClick:e.clear,className:t.columnHeaderButton},"Reset")),a().createElement(H,{reorderColumn:e.reorderColumn,toggleColumn:e.toggleColumn,labels:null!==(n=e.filteredColumnsWithMeta)&&void 0!==n?n:e.columnsWithMeta,valueFilter:t=>{var n,r;return null!==(r=null===(n=e.columnsWithMeta[t])||void 0===n?void 0:n.active)&&void 0!==r&&r},id:"selected-fields"}),a().createElement("div",{className:t.columnHeader},"Fields"),a().createElement(K,{toggleColumn:e.toggleColumn,labels:null!==(r=e.filteredColumnsWithMeta)&&void 0!==r?r:e.columnsWithMeta,valueFilter:t=>{var n;return!(null===(n=e.columnsWithMeta[t])||void 0===n?void 0:n.active)}})))};function U(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function q(e){for(var t=1;t{if(n===r)return;const a=q({},t),i=Object.keys(a).filter((e=>a[e].active)).map((e=>{var t;return{fieldName:e,index:null!==(t=a[e].index)&&void 0!==t?t:0}})).sort(((e,t)=>e.index-t.index)),[s]=i.splice(n,1);i.splice(r,0,s),i.filter((e=>void 0!==e)).forEach(((e,t)=>{a[e.fieldName].index=t})),e(a)}}function X(){const{columns:e,setColumns:t,setVisible:n,filteredColumns:i,setFilteredColumns:l}=w(),[o,c]=(0,r.useState)(""),d=Y(t);return a().createElement(C.ClickOutsideWrapper,{onClick:()=>{n(!1),l(e),c("")},useCapture:!0},a().createElement(D,{searchValue:o,setSearchValue:c}),a().createElement(G,{toggleColumn:n=>{if(!e||!(n in e))return void function(e,t){let n;try{n={columns:JSON.stringify(t),columnName:e}}catch(t){n={msg:"Table: ColumnSelectionDrawerWrap failed to encode context",columnName:e}}u.v.warn("failed to get column",n)}(n,e);const r=Object.keys(e).filter((t=>e[t].active)).length,a=!e[n].active||void 0;let o;if(o=J(q({},e),a?{[n]:J(q({},e[n]),{active:a,index:r})}:{[n]:J(q({},e[n]),{active:!1,index:void 0})}),function(t){if(e){var n,r;const a=!(null===(n=e[t])||void 0===n?void 0:n.active),i=null===(r=Object.keys(e).filter((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.active})))||void 0===r?void 0:r.length,l={columnAction:a?"add":"remove",columnCount:a?i+1:i-1};(0,s.reportInteraction)("grafana_logs_app_table_column_filter_clicked",l)}}(n),t(o),i){var d;const e=!(null===(d=i[n])||void 0===d?void 0:d.active);let t;t=J(q({},i),e?{[n]:J(q({},i[n]),{active:e,index:r})}:{[n]:J(q({},i[n]),{active:!1,index:void 0})}),l(t),c("")}},filteredColumnsWithMeta:i,columnsWithMeta:e,clear:()=>{const n=q({},e);let r=0;Object.keys(n).forEach((e=>{const t="BODY_FIELD"===n[e].type||"TIME_FIELD"===n[e].type;n[e].active=t,n[e].index=t?r++:void 0})),t(n),l(n),c("")},reorderColumn:d}))}const Z=e=>a().createElement(ee,{onMouseOut:e.onMouseOut,onMouseIn:e.onMouseIn,onClick:e.onClick,field:e.field,rowIndex:e.rowIndex},e.children),ee=e=>{var t;const n=(0,C.useTheme2)(),r=j(),i=((e,t)=>({active:(0,l.css)({height:"calc(100% + 36px)",zIndex:e.zIndex.tooltip,background:"transparent"}),wrap:(0,l.css)({position:"absolute",overflowX:"hidden",whiteSpace:"nowrap",width:"100%",height:"100%",left:0,top:0,margin:"auto",background:null!=t?t:"transparent"})}))(n,void 0,null===(t=r.cellIndex)||void 0===t||t.numberOfMenuItems);return a().createElement("div",{onMouseLeave:e.onMouseOut,onMouseEnter:e.onMouseIn,onClick:e.onClick,className:r.cellIndex.index===e.rowIndex&&r.cellIndex.fieldName===e.field.name?(0,l.cx)(i.wrap,i.active):i.wrap},e.children)},te={logsFrame:null,addFilter:e=>{},timeRange:void 0,selectedLine:void 0},ne=(0,r.createContext)(te),re=({children:e,logsFrame:t,addFilter:n,selectedLine:r,timeRange:i})=>a().createElement(ne.Provider,{value:{logsFrame:t,addFilter:n,selectedLine:r,timeRange:i}},e),ae=()=>(0,r.useContext)(ne);var ie=n(6854);const se=e=>{const t=((e,t)=>({menu:(0,l.css)({position:"relative",paddingRight:"5px",display:"flex",minWidth:"60px",justifyContent:"flex-start"}),menuItemsWrap:(0,l.css)({boxShadow:e.shadows.z3,display:"flex",background:e.colors.background.secondary,padding:"5px 0",marginLeft:"column"===t?"5px":void 0}),menuItem:(0,l.css)({overflow:"auto",textOverflow:"ellipsis",cursor:"pointer",paddingLeft:"5px",paddingRight:"5px",display:"flex",alignItems:"center"})}))((0,C.useTheme2)(),e.pillType),{addFilter:n}=ae();return a().createElement("span",{className:t.menu},a().createElement("span",{className:t.menuItemsWrap},"derived"!==e.fieldType&&a().createElement(a().Fragment,null,a().createElement("div",{className:t.menuItem,onClick:()=>{n({key:e.label,value:e.value,operator:ie.w7.Equal})}},a().createElement(C.Icon,{title:"Add to search",size:"md",name:"plus-circle"})),a().createElement("div",{className:t.menuItem,onClick:()=>{n({key:e.label,value:e.value,operator:ie.w7.NotEqual})}},a().createElement(C.Icon,{title:"Exclude from search",size:"md",name:"minus-circle"}))),e.showColumn&&a().createElement("div",{title:"Add column",onClick:e.showColumn,className:t.menuItem},a().createElement("svg",{width:"18",height:"16",viewBox:"0 0 18 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},a().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.38725 1.33301H13.3872C13.5641 1.33301 13.7336 1.40325 13.8587 1.52827C13.9837 1.65329 14.0539 1.82286 14.0539 1.99967V2.33333C14.0539 2.70152 13.7554 3 13.3872 3H13.0542C12.87 3 12.7206 2.85062 12.7206 2.66634H8.05391V13.333H12.7206C12.7206 13.1491 12.8697 13 13.0536 13H13.3872C13.7554 13 14.0539 13.2985 14.0539 13.6667V13.9997C14.0539 14.1765 13.9837 14.3461 13.8587 14.4711C13.7336 14.5961 13.5641 14.6663 13.3872 14.6663H1.38725C1.21044 14.6663 1.04087 14.5961 0.915843 14.4711C0.790819 14.3461 0.720581 14.1765 0.720581 13.9997V1.99967C0.720581 1.82286 0.790819 1.65329 0.915843 1.52827C1.04087 1.40325 1.21044 1.33301 1.38725 1.33301ZM2.05391 13.333H6.72058V2.66634H2.05391V13.333Z",fill:"#CCCCDC",fillOpacity:"1"}),a().createElement("path",{d:"M13.8538 7.19999H16.2538C16.466 7.19999 16.6695 7.28429 16.8195 7.4343C16.9696 7.58432 17.0538 7.78783 17.0538 7.99999C17.0538 8.21214 16.9696 8.41566 16.8195 8.56567C16.6695 8.71569 16.466 8.79999 16.2538 8.79999H13.8538V11.2C13.8538 11.4121 13.7696 11.6156 13.6195 11.7657C13.4695 11.9157 13.266 12 13.0538 12C12.8416 12 12.6382 11.9157 12.4881 11.7657C12.3381 11.6156 12.2538 11.4121 12.2538 11.2V8.79999H9.85384C9.64165 8.79999 9.43819 8.71569 9.28815 8.56567C9.13811 8.41566 9.05383 8.21214 9.05383 7.99999C9.05383 7.78783 9.13811 7.58432 9.28815 7.4343C9.43819 7.28429 9.64165 7.19999 9.85384 7.19999H12.2538V4.8C12.2538 4.58784 12.3381 4.38433 12.4881 4.23431C12.6382 4.0843 12.8416 4 13.0538 4C13.266 4 13.4695 4.0843 13.6195 4.23431C13.7696 4.38433 13.8538 4.58784 13.8538 4.8V7.19999Z",fill:"#CCCCDC",fillOpacity:"1"}))),e.links&&e.links.map((e=>{var n;return a().createElement("div",{className:t.menuItem,onClick:()=>{window.open(e.href,"_blank")},key:e.href},a().createElement(C.Icon,{title:null!==(n=e.title)&&void 0!==n?n:"Link",key:e.href,size:"md",name:"link"}))}))))},le="detected_level",oe=e=>{const{label:t,value:n}=e,r=(0,C.useTheme2)(),{cellIndex:i}=j();let s;if(t===le){const e=Re().options;"string"==typeof n&&n in e&&(s=e[n].color)}const c=i.index===e.rowIndex&&e.field.name===i.fieldName,u=((e,t)=>({activePillWrap:(0,l.css)({}),pillWrap:(0,l.css)({width:"100%"}),pill:(0,l.css)({border:`1px solid ${e.colors.border.weak}`,"&:hover":{border:`1px solid ${e.colors.border.strong}`},marginRight:"5px",marginTop:"4px",marginLeft:"5px",padding:"2px 5px",position:"relative",display:"inline-flex",flexDirection:"row-reverse",backgroundColor:"transparent",paddingLeft:t?`${e.spacing(.75)}`:"2px","&:before":{content:'""',position:"absolute",left:0,top:0,height:"100%",width:`${e.spacing(.25)}`,backgroundColor:t}}),menu:(0,l.css)({width:"100%"}),menuItem:(0,l.css)({overflow:"auto",textOverflow:"ellipsis"}),menuItemText:(0,l.css)({width:"65px",display:"inline-block"})}))(r,s);return a().createElement("div",{className:(0,l.cx)(u.pillWrap,c?u.activePillWrap:void 0)},!!n&&a().createElement(a().Fragment,null,a().createElement("span",{className:u.pill},a().createElement(a().Fragment,null,n)),c&&"string"==typeof n&&e.field.type!==o.FieldType.time&&a().createElement(se,{label:e.label,value:n,pillType:"column"})))};var ce=n(3571),ue=n(5002);function de(e){var t;const n=(e=>({clipboardButton:(0,l.css)({padding:0,height:"100%",lineHeight:"1",width:"20px"}),inspectButton:(0,l.css)({display:"inline-flex",verticalAlign:"middle",margin:0,overflow:"hidden",borderRadius:"5px"}),iconWrapper:(0,l.css)({height:"35px",position:"sticky",left:0,display:"flex",background:e.colors.background.secondary,padding:`0 ${e.spacing(.5)}`,zIndex:1,boxShadow:e.shadows.z2}),inspect:(0,l.css)({padding:"5px 3px","&:hover":{color:e.colors.text.link,cursor:"pointer"}})}))((0,C.useTheme2)()),{logsFrame:i,timeRange:s}=ae(),o=null==i||null===(t=i.idField)||void 0===t?void 0:t.values[e.rowIndex],c=null==i?void 0:i.bodyField.values[e.rowIndex],[u,d]=(0,r.useState)(!1),p=(0,r.useCallback)((()=>s?(0,ue.gW)("selectedLine",{id:o,row:e.rowIndex},s):""),[o,e.rowIndex,s]);return a().createElement(a().Fragment,null,a().createElement("div",{className:n.iconWrapper},a().createElement("div",{className:n.inspect},a().createElement(C.IconButton,{"data-testid":ce.b.table.inspectLine,className:n.inspectButton,tooltip:"View log line",variant:"secondary","aria-label":"View log line",tooltipPlacement:"top",size:"md",name:"eye",onClick:()=>d(!0),tabIndex:0})),a().createElement("div",{className:n.inspect},a().createElement(C.ClipboardButton,{className:n.clipboardButton,icon:"share-alt",variant:"secondary",fill:"text",size:"md",tooltip:"Copy link to log line",tooltipPlacement:"top",tabIndex:0,getText:p}))),a().createElement(a().Fragment,null,u&&a().createElement(C.Modal,{onDismiss:()=>d(!1),isOpen:!0,title:"Inspect value"},a().createElement("pre",null,c),a().createElement(C.Modal.ButtonRow,null,a().createElement(C.ClipboardButton,{icon:"copy",getText:()=>e.value},"Copy to Clipboard")))))}const pe=e=>{var t;let n=e.value;const r=e.field,i=r.display(n),s=((e,t)=>({flexWrap:(0,l.css)({display:"flex",alignItems:"flex-start",flexDirection:t===o.FieldType.number?"row-reverse":"row",textAlign:t===o.FieldType.number?"right":"left"}),content:(0,l.css)({position:"relative",overflow:"hidden",display:"flex",height:"100%"}),linkWrapper:(0,l.css)({color:e.colors.text.link,marginTop:"7px",marginLeft:"7px","&:hover":{textDecoration:"underline"}})}))((0,C.useTheme2)(),e.field.type),{setVisible:c}=w(),{cellIndex:u,setActiveCellIndex:d}=j(),p={index:e.rowIndex},g=Boolean(null===(t=(0,C.getCellLinks)(e.field,p))||void 0===t?void 0:t.length);if(null===n)return a().createElement(a().Fragment,null);n=a().isValidElement(e.value)?e.value:"object"==typeof n?JSON.stringify(e.value):(0,o.formattedValueToString)(i);return a().createElement(Z,{onClick:()=>e.rowIndex===u.index&&e.field.name===u.fieldName?d({index:null}):d({index:e.rowIndex,fieldName:e.field.name,numberOfMenuItems:3}),field:e.field,rowIndex:e.rowIndex},a().createElement("div",{className:s.content},0===e.fieldIndex&&a().createElement(de,{value:n,rowIndex:e.rowIndex}),a().createElement("div",{className:s.flexWrap}),!g&&((t,n)=>a().createElement(oe,{field:e.field,rowIndex:e.rowIndex,showColumns:()=>c(!0),label:n,value:t}))(n,r.name),g&&r.getLinks&&a().createElement(C.DataLinksContextMenu,{links:()=>{var e;return null!==(e=(0,C.getCellLinks)(r,p))&&void 0!==e?e:[]}},(e=>e.openMenu?a().createElement("div",{className:s.linkWrapper,onClick:e.openMenu},a().createElement(a().Fragment,null,n)):a().createElement("div",{className:s.linkWrapper},a().createElement(a().Fragment,null,n))))))};function ge(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function he(e){for(var t=1;t({pill:(0,l.css)({flex:"0 1 auto",marginLeft:e.spacing(.5),marginRight:e.spacing(.5),padding:`${e.spacing(.25)} ${e.spacing(.25)}`,position:"relative",display:"inline-flex",flexDirection:"column",marginTop:e.spacing(.5)}),activePill:(0,l.css)({}),valueWrap:(0,l.css)({border:`1px solid ${e.colors.background.secondary}`,boxShadow:`-2px 2px 5px 0px ${e.colors.background.secondary}`,backgroundColor:"transparent",cursor:"pointer",position:"relative",paddingRight:`${e.spacing(.5)}`,paddingLeft:t?`${e.spacing(.75)}`:`${e.spacing(.5)}`,"&:before":{content:'""',position:"absolute",left:0,top:0,height:"100%",width:`${e.spacing(.25)}`,backgroundColor:t},"&:hover":{border:`1px solid ${e.colors.border.strong}`}})}))(t,n);return a().createElement("span",{className:(0,l.cx)(r.pill,e.menuActive?r.activePill:void 0),onClick:e.onClick},a().createElement("span",{className:r.valueWrap},e.label,"=",e.value),e.menuActive&&a().createElement(se,{pillType:"logPill",fieldType:e.fieldType,links:e.links,label:e.label,value:e.value,showColumn:e.onClickAdd}))}const me=e=>{const{label:t}=e,{cellIndex:n,setActiveCellIndex:i}=j(),{columns:l,setColumns:c}=w(),u=e.value,d=(0,s.getTemplateSrv)(),p=(0,r.useMemo)((()=>d.replace.bind(d)),[d]),g=e.field;if(!g||(null==g?void 0:g.type)===o.FieldType.other)return null;const h={index:e.rowIndex};e.originalField&&e.isDerivedField&&e.originalFrame&&(e.originalField.getLinks=(0,o.getLinksSupplier)(e.originalFrame,e.originalField,{},p));const f=e.originalField&&(0,C.getCellLinks)(e.originalField,h);return a().createElement(ve,{onClick:()=>e.rowIndex===n.index&&g.name===n.fieldName&&t===n.subFieldName?i({index:null}):i({index:e.rowIndex,fieldName:g.name,subFieldName:t,numberOfMenuItems:e.isDerivedField?2:3}),menuActive:n.index===e.rowIndex&&n.fieldName===g.name&&n.subFieldName===t,fieldType:e.isDerivedField?"derived":void 0,label:t,value:u,onClickAdd:()=>(e=>{const t=he({},l),n=Object.keys(l).filter((e=>l[e].active)).length;t[e].active?t[e]=fe(he({},t[e]),{active:!1,index:void 0}):t[e]=fe(he({},t[e]),{active:!0,index:n}),c(t)})(t),links:f})},be=e=>{var t,n;null==e||null===(n=e.current)||void 0===n||n.scrollTo({left:null===(t=e.current)||void 0===t?void 0:t.scrollLeft})};function ye({scrollerRef:e}){const t=(e=>({scroller:l.css` + position: absolute; + right: 0; + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 20px; + top: 32px; + margin-top: -24px; + // For some reason clicking on this button causes text to be selected in the following row + user-select: none; + `,scrollLeft:l.css` + cursor: pointer; + background: ${e.colors.background.primary}; + + &:hover { + background: ${e.colors.background.secondary}; + } + `,scrollRight:l.css` + cursor: pointer; + background: ${e.colors.background.primary}; + + &:hover { + background: ${e.colors.background.secondary}; + } + `}))((0,C.useTheme2)());return a().createElement("div",{className:t.scroller},a().createElement("span",{onPointerDown:()=>{var t,n;null==(t=e)||null===(n=t.current)||void 0===n||n.scrollTo({top:0,left:0,behavior:"smooth"})},onPointerUp:()=>be(e),className:t.scrollLeft},a().createElement(C.Icon,{name:"arrow-left"})),a().createElement("span",{onPointerDown:()=>{var t,n;null==(t=e)||null===(n=t.current)||void 0===n||n.scrollTo({top:0,left:t.current.scrollWidth,behavior:"smooth"})},onPointerUp:()=>be(e),className:t.scrollRight},a().createElement(C.Icon,{name:"arrow-right"})))}function Se(e){const t=(0,C.useTheme2)(),n=we(t);return a().createElement("div",{"data-testid":ce.b.table.rawLogLine,className:n.rawLogLine},a().createElement(a().Fragment,null,e.value))}const we=(e,t)=>({rawLogLine:(0,l.css)({fontFamily:e.typography.fontFamilyMonospace,height:"35px",lineHeight:"35px",paddingRight:e.spacing(1.5),paddingLeft:e.spacing(1),fontSize:e.typography.bodySmall.fontSize})}),Oe=e=>{let t=e.value;const n=e.field,i=n.display(t),s=(0,C.useTheme2)(),l=xe(s),{columns:u,setVisible:d,bodyState:p}=w(),{logsFrame:g}=ae(),[h,f]=(0,r.useState)(!1),v=(0,r.useRef)(null);t=a().isValidElement(e.value)?e.value:"object"==typeof t?JSON.stringify(e.value):(0,o.formattedValueToString)(i);const b=(t=>Object.keys(u).filter((e=>e!==(0,c.Il)(g))).sort(((e,t)=>e===le?-1:t===le?1:"LINK_FIELD"===u[e].type?-1:"LINK_FIELD"===u[t].type?1:u[e].cardinality>u[t].cardinality?-1:1)).filter((e=>!u[e].active&&u[e].cardinality>1)).map((r=>{var i;const s=t[r],l=null==g||null===(i=g.raw)||void 0===i?void 0:i.fields.find((e=>e.name===r)),c=null==n?void 0:n.values[e.rowIndex],p=!s&&!!c;if(s)return a().createElement(me,{originalFrame:void 0,field:n,columns:u,rowIndex:e.rowIndex,frame:e.frame,showColumns:()=>d(!0),key:r,label:r,isDerivedField:!1,value:s});if(p&&(null==l?void 0:l.name)){const t=null==l?void 0:l.values[e.rowIndex];if((null==l?void 0:l.type)===o.FieldType.string&&t)return a().createElement(me,{originalFrame:null==g?void 0:g.raw,originalField:l,field:n,value:t,columns:u,rowIndex:e.rowIndex,frame:e.frame,showColumns:()=>d(!0),key:l.name,label:l.name,isDerivedField:!0})}return null})).filter((e=>e)))(e.labels),y=p===m.auto,S=b.length>0;return a().createElement(Z,{onMouseIn:()=>{f(!0)},onMouseOut:()=>{f(!1)},rowIndex:e.rowIndex,field:e.field},a().createElement(O.ScrollSyncPane,{innerRef:v,group:"horizontal"},a().createElement("div",{className:l.content},0===e.fieldIndex&&a().createElement(de,{rowIndex:e.rowIndex,value:t}),y&&S&&a().createElement(a().Fragment,null,b),p===m.labels&&S&&a().createElement(a().Fragment,null,b),p===m.labels&&!S&&a().createElement(Se,{value:t}),y&&!S&&a().createElement(Se,{value:t}),p===m.text&&a().createElement(Se,{value:t}),h&&a().createElement(ye,{scrollerRef:v}))))},xe=e=>({content:l.css` + white-space: nowrap; + overflow-x: auto; + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + padding-right: 30px; + display: flex; + align-items: flex-start; + height: 100%; + &::-webkit-scrollbar { + display: none; /* Chrome, Safari and Opera */ + } + + &:after { + pointer-events: none; + content: ''; + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + // Fade out text in last 10px to background color to add affordance to horiziontal scroll + background: linear-gradient(to right, transparent calc(100% - 10px), ${e.colors.background.primary}); + } + `});function Ee(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ce(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function Pe(e){var t=function(e,t){if("object"!==ke(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==ke(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ke(t)?t:String(t)}function ke(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}const je=e=>{const{setHeaderMenuActive:t,isHeaderMenuActive:n}=_(),{logsFrame:i}=ae(),s=(0,r.useRef)(null),o=((e,t,n)=>({logLineButton:(0,l.css)({marginLeft:"5px"}),tableHeaderMenu:(0,l.css)({label:"tableHeaderMenu",width:"100%",minWidth:"250px",height:"100%",maxHeight:"400px",backgroundColor:e.colors.background.primary,border:`1px solid ${e.colors.border.weak}`,padding:e.spacing(2),margin:e.spacing(1,0),boxShadow:e.shadows.z3,borderRadius:e.shape.radius.default}),leftAlign:(0,l.css)({label:"left-align",display:"flex",width:"calc(100% - 20px)"}),clearButton:(0,l.css)({marginLeft:"5px"}),rightAlign:(0,l.css)({label:"right-align",display:"flex",marginRight:"5px"}),wrapper:(0,l.css)({label:"wrapper",display:"flex",marginLeft:t?"56px":"6px",width:n?"calc(100% + 6px)":"100%",borderRight:`1px solid ${e.colors.border.weak}`,marginRight:"-6px"}),defaultContentWrapper:(0,l.css)({borderLeft:t?`1px solid ${e.colors.border.weak}`:"none",marginLeft:t?"-6px":0,paddingLeft:t?"12px":0,display:"flex"})}))((0,C.useTheme2)(),0===e.fieldIndex,e.field.name===(0,c.Il)(i)),{columnWidthMap:u,setColumnWidthMap:d,setBodyState:p,bodyState:g}=w(),h=e.field.name===(0,c.Il)(i),f=()=>{p(g===m.text?m.labels:m.text)};return a().createElement("span",{className:o.wrapper},a().createElement("span",{className:o.leftAlign},a().createElement("span",{className:o.defaultContentWrapper},e.defaultContent),u&&d&&void 0!==(null==u?void 0:u[e.field.name])&&a().createElement(C.IconButton,{tooltip:"Reset column width",tooltipPlacement:"top",className:o.clearButton,"aria-label":"Reset column width",name:"x",onClick:()=>{const t=function(e){for(var t=1;t{t(!n)},name:"ellipsis-v"})),s.current&&a().createElement(C.Popover,{show:n,content:a().createElement(C.ClickOutsideWrapper,{onClick:()=>t(!1),useCapture:!0},a().createElement("div",{className:o.tableHeaderMenu},e.children)),referenceElement:s.current}))};function Fe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Le(e){const{setHeaderMenuActive:t}=_(),{columns:n,setColumns:i,bodyState:s,setBodyState:o}=w(),{logsFrame:u}=ae(),d=_e(),p=(0,r.useCallback)((e=>{const t=function(e){for(var t=1;t{const r=t[n].index,a=t[e.name].index;return t[n].active&&a&&r&&r>a})).map((e=>t[e])).forEach((e=>{void 0!==e.index&&e.index--})),t[e.name].active=!1,t[e.name].index=void 0,i(t)}),[n,i]),g=e.headerProps.field.name===(0,c.Il)(u);return a().createElement(je,e.headerProps,a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{e.openColumnManagementDrawer(),t(!1)}},a().createElement(C.Icon,{className:d.icon,name:"columns",size:"md"}),"Manage columns")),a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>p(e.headerProps.field)},a().createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 17 16",width:"17",height:"16",className:"css-q2u0ig-Icon"},a().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.73446 1.33301H12.2345C12.3892 1.33301 12.5375 1.40325 12.6469 1.52827C12.7563 1.65329 12.8178 1.82286 12.8178 1.99967V4.74967C12.8178 5.07184 12.5566 5.33301 12.2345 5.33301C11.9123 5.33301 11.6511 5.07184 11.6511 4.74967V2.66634H7.56779V13.333H11.6511V10.9163C11.6511 10.5942 11.9123 10.333 12.2345 10.333C12.5566 10.333 12.8178 10.5942 12.8178 10.9163V13.9997C12.8178 14.1765 12.7563 14.3461 12.6469 14.4711C12.5375 14.5961 12.3892 14.6663 12.2345 14.6663H1.73446C1.57975 14.6663 1.43137 14.5961 1.32198 14.4711C1.21258 14.3461 1.15112 14.1765 1.15112 13.9997V1.99967C1.15112 1.82286 1.21258 1.65329 1.32198 1.52827C1.43137 1.40325 1.57975 1.33301 1.73446 1.33301ZM2.31779 13.333H6.40112V2.66634H2.31779V13.333Z",fill:"#CCCCDC",fillOpacity:"1"}),a().createElement("path",{d:"M15.9893 10.6315C15.9498 10.7263 15.8919 10.8123 15.819 10.8846C15.7467 10.9575 15.6607 11.0154 15.5659 11.0549C15.4712 11.0943 15.3695 11.1147 15.2668 11.1147C15.1641 11.1147 15.0625 11.0943 14.9677 11.0549C14.8729 11.0154 14.7869 10.9575 14.7146 10.8846L12.9335 9.09573L11.1524 10.8846C11.0801 10.9575 10.9941 11.0154 10.8993 11.0549C10.8045 11.0943 10.7028 11.1147 10.6002 11.1147C10.4975 11.1147 10.3958 11.0943 10.301 11.0549C10.2063 11.0154 10.1202 10.9575 10.0479 10.8846C9.97504 10.8123 9.91717 10.7263 9.87769 10.6315C9.8382 10.5367 9.81787 10.4351 9.81787 10.3324C9.81787 10.2297 9.8382 10.1281 9.87769 10.0333C9.91717 9.9385 9.97504 9.85248 10.0479 9.78017L11.8368 7.99906L10.0479 6.21795C9.90148 6.07149 9.8192 5.87285 9.8192 5.66573C9.8192 5.4586 9.90148 5.25996 10.0479 5.1135C10.1944 4.96705 10.393 4.88477 10.6002 4.88477C10.8073 4.88477 11.0059 4.96705 11.1524 5.1135L12.9335 6.90239L14.7146 5.1135C14.8611 4.96705 15.0597 4.88477 15.2668 4.88477C15.4739 4.88477 15.6726 4.96705 15.819 5.1135C15.9655 5.25996 16.0478 5.4586 16.0478 5.66573C16.0478 5.87285 15.9655 6.07149 15.819 6.21795L14.0302 7.99906L15.819 9.78017C15.8919 9.85248 15.9498 9.9385 15.9893 10.0333C16.0288 10.1281 16.0491 10.2297 16.0491 10.3324C16.0491 10.4351 16.0288 10.5367 15.9893 10.6315Z",fill:"#CCCCDC",fillOpacity:"1"})),"Remove column")),e.slideLeft&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.slideLeft)||void 0===t?void 0:t.call(e,n)}},a().createElement(C.Icon,{className:(0,l.cx)(d.icon,d.reverse),name:"arrow-from-right",size:"md"}),"Move left")),e.slideRight&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.slideRight)||void 0===t?void 0:t.call(e,n)}},a().createElement(C.Icon,{className:d.icon,name:"arrow-from-right",size:"md"}),"Move right")),g&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{s===m.text?o(m.labels):o(m.text)}},s===m.text?a().createElement(C.Icon,{className:d.icon,name:"brackets-curly",size:"md"}):a().createElement(C.Icon,{className:d.icon,name:"text-fields",size:"md"}),s===m.text?"Show labels":"Show log text")),e.autoColumnWidths&&a().createElement("div",{className:d.linkWrap},a().createElement("a",{className:d.link,onClick:()=>{var t;return null===(t=e.autoColumnWidths)||void 0===t?void 0:t.call(e)}},a().createElement(C.Icon,{className:d.icon,name:"arrows-h",size:"md"}),"Reset column widths")))}const _e=()=>({reverse:(0,l.css)({transform:"scaleX(-1)"}),link:(0,l.css)({paddingTop:"5px",paddingBottom:"5px"}),icon:(0,l.css)({marginRight:"10px"}),linkWrap:(0,l.css)({})});var Te=n(3241);function De(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $e(e){for(var t=1;t{const{height:t,timeZone:n,logsFrame:i,width:u,labels:d}=e,p=(0,C.useTheme2)(),g={section:(0,l.css)({position:"relative"}),tableWrap:(0,l.css)({".cellActions":{display:"none !important"}})},[h,f]=(0,r.useState)(void 0),{columns:v,visible:m,setVisible:b,setFilteredColumns:y,setColumns:S,clearSelectedLine:E,columnWidthMap:P,setColumnWidthMap:j}=w(),{selectedLine:F}=ae(),[_]=(0,r.useState)(F),T=Y(S),D=(0,s.getTemplateSrv)(),N=(0,r.useMemo)((()=>D.replace.bind(D)),[D]),$=(0,r.useCallback)((e=>{if(!e.length)return e;const[t]=(0,o.applyFieldOverrides)({data:[e],timeZone:n,theme:p,replaceVariables:N,fieldConfig:{defaults:{custom:{}},overrides:[]}});for(const[n,l]of t.fields.entries()){var r,s;l.type=l.type===o.FieldType.string?null!==(r=Me(l))&&void 0!==r?r:o.FieldType.string:l.type,l.config=Ie($e({},l.config),{custom:$e({inspect:!0,filterable:!0,headerComponent:t=>a().createElement(L,null,a().createElement(Le,{headerProps:Ie($e({},t),{fieldIndex:n}),openColumnManagementDrawer:()=>b(!0),slideLeft:0!==n?e=>T(e,n,n-1):void 0,slideRight:n!==e.fields.length-1?e=>T(e,n,n+1):void 0,autoColumnWidths:Object.keys(P).length>0?()=>{j({})}:void 0})),width:null!==(s=P[l.name])&&void 0!==s?s:We(l,n,v,u,t.fields.length,i),cellOptions:Ve(l,n,d,i)},l.config.custom),filterable:!0})}return t}),[n,p,d,u,N,b,P]);(0,r.useEffect)((()=>{const e=function(){var e,t=(e=function*(){const e=(t=i.raw).fields.filter((e=>{var n,r,a;const i="json.RawMessage"===(null===(n=e.typeInfo)||void 0===n?void 0:n.frame)&&"labels"===e.name&&(null==t||null===(r=t.meta)||void 0===r?void 0:r.type)!==o.DataFrameType.LogLines,s="labels"===e.name&&e.type===o.FieldType.other&&(null==t||null===(a=t.meta)||void 0===a?void 0:a.type)===o.DataFrameType.LogLines;return i||s})).flatMap((e=>[{id:"extractFields",options:{format:"json",keepTime:!1,replace:!1,source:e.name}}]));var t;const n=function(e){let t={};for(const n in e)t[n]=!0;return Object.keys(e).length>0?{id:"organize",options:{indexByName:e,includeByName:t}}:null}(function(e){let t={};return Object.keys(e).filter((t=>e[t].active)).forEach((n=>{const r=e[n].index;void 0!==r&&(t[n]=r)})),t}(v));if(n)e.push(n);else{const t={time:i.timeField,body:i.bodyField,extraFields:i.extraFields};t&&void 0!==t.body&&void 0!==t.time&&e.push(function(e){return{id:"organize",options:{indexByName:{[e.time.name]:0,[e.body.name]:1},includeByName:{[e.body.name]:!0,[e.time.name]:!0}}}}(t))}if(e.length>0){const t=yield(0,x.lastValueFrom)((0,o.transformDataFrame)(e,[i.raw])),n=$(t[0]);f(n)}else f($(i.raw))},function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){De(i,r,a,s,l,"next",e)}function l(e){De(i,r,a,s,l,"throw",e)}s(void 0)}))});return function(){return t.apply(this,arguments)}}();e()}),[i.raw,i.bodyField,i.timeField,i.extraFields,$,v]),(0,r.useEffect)((()=>{_&&F&&E()}),[_,E,F]);const I=i.raw.fields.find((e=>e.name===(0,c.po)(i))),B=null==I?void 0:I.values.findIndex((e=>e===(null==_?void 0:_.id))),A=B&&-1!==B?B:void 0;if(!h)return a().createElement(a().Fragment,null);return a().createElement("div",{"data-testid":ce.b.table.wrapper,className:g.section},m&&a().createElement(C.Drawer,{size:"sm",onClose:()=>{b(!1),y(v)}},a().createElement(X,null)),a().createElement("div",{className:g.tableWrap},a().createElement(k,null,a().createElement(O.ScrollSync,{horizontal:!0,vertical:!1,proportional:!1},a().createElement(Be,{logsFrame:i,selectedLine:A,data:h,height:t,width:u,onResize:(0,Te.debounce)(((e,t)=>{const n=Object.keys(v).filter((e=>v[e].active)).find((t=>t===e));if(n&&t>0){const e=$e({},P);e[n]=t,j(e)}}),100)})))))};function Me(e){if(e.name){const t=e.name.toLowerCase();if("date"===t||"time"===t)return o.FieldType.time}for(let t=0;t({options:{critical:{color:"#705da0",index:0},crit:{color:"#705da0",index:1},error:{color:"#e24d42",index:2},err:{color:"#e24d42",index:3},eror:{color:"#e24d42",index:4},warning:{color:"#FF9900",index:5},warn:{color:"#FF9900",index:6},info:{color:"#7eb26d",index:7},debug:{color:"#1f78c1",index:8},trace:{color:"#6ed0e0",index:9}},type:o.MappingType.ValueToText});function Ve(e,t,n,r){return e.name===(0,c.Il)(r)?{cellComponent:e=>a().createElement(Oe,Ie($e({},e),{fieldIndex:t,labels:n[e.rowIndex]})),type:C.TableCellDisplayMode.Custom}:{cellComponent:e=>a().createElement(pe,Ie($e({},e),{fieldIndex:t})),type:C.TableCellDisplayMode.Custom}}function We(e,t,n,r,a,i){var s,l;const u=a<=2?r:Math.min(r/2),d=0===t?50:0;if(e.type===o.FieldType.time)return 200+d;const p=n[e.name];if(void 0===p)return;var g;const h=Math.max(null!==(g=p.maxLength)&&void 0!==g?g:0,e.name.length);return p.maxLength?Math.min(Math.max(6.5*h+95+d,90+d),u):e.name!==(0,c.Il)(i)?Math.min(Math.max(6.5*(null!==(f=null===(l=e.values)||void 0===l||null===(s=l[0])||void 0===s?void 0:s.length)&&void 0!==f?f:80)+95+d,90+d),u):void 0;var f}var ze=n(5540);const He=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3,})?(?:Z|[-+]\d{2}:?\d{2})$/,Qe=e=>{const{logsFrame:t}=ae(),[n,i]=(0,r.useState)({width:0,height:0});(0,ze.w)({ref:e.panelWrap,onResize:()=>{const t=e.panelWrap.current;t&&(n.width===t.clientWidth&&n.height===t.clientHeight||i({width:t.clientWidth,height:t.clientHeight}))}});const s={section:(0,l.css)({position:"relative"})},c=(0,o.getTimeZone)(),u=(0,r.useCallback)((t=>{const n=e.urlColumns;return(null==n?void 0:n.length)&&Object.values(n).forEach(((e,n)=>{t[e]&&(t[e].active=!0,t[e].index=n)})),t}),[e.urlColumns]);if(!t||!t.raw.length)return null;var d;const p=null!==(d=t.getLogFrameLabelsAsLabels())&&void 0!==d?d:[],g=t?t.raw.length:0;let h=function(e,t){let n={};const r=new Map,a=function(e){const t=new Map;return e.forEach((e=>{Object.keys(e).forEach((n=>{if(t.has(n)){const r=t.get(n),a=null==r?void 0:r.valueSet,i=null==r?void 0:r.maxLength;a&&!(null==a?void 0:a.has(e[n]))&&(null==a||a.add(e[n]),i&&e[n].length>i&&t.set(n,{maxLength:e[n].length,valueSet:a}))}else t.set(n,{maxLength:e[n].length,valueSet:new Set([e[n]])})}))})),t}(t),i=e?e.length:0;(null==t?void 0:t.length)&&i&&(t.forEach((e=>{Object.keys(e).forEach((e=>{var t;const n=a.get(e);var i;const s=null!==(i=null==n||null===(t=n.valueSet)||void 0===t?void 0:t.size)&&void 0!==i?i:0;if(r.has(e)){const t=r.get(e);t&&((null==t?void 0:t.active)?r.set(e,{percentOfLinesWithLabel:t.percentOfLinesWithLabel+1,active:!0,index:t.index,cardinality:s,maxLength:null==n?void 0:n.maxLength}):r.set(e,{percentOfLinesWithLabel:t.percentOfLinesWithLabel+1,active:!1,index:void 0,cardinality:s,maxLength:null==n?void 0:n.maxLength}))}else r.set(e,{percentOfLinesWithLabel:1,active:!1,index:void 0,cardinality:s,maxLength:null==n?void 0:n.maxLength})}))})),n=Object.fromEntries(r),Object.keys(n).forEach((e=>{n[e].percentOfLinesWithLabel=Ke(n[e].percentOfLinesWithLabel,i)})));return n}(t.raw,p);const f={time:t.timeField,body:t.bodyField,extraFields:t.extraFields};if(f){!function(e,t,n){e.forEach((e=>{var r,a;if(!e)return;const i=null===(r=t[e.name])||void 0===r?void 0:r.active,s=null===(a=t[e.name])||void 0===a?void 0:a.index;t[e.name]=i&&void 0!==s?{percentOfLinesWithLabel:Ke(e.values.filter((e=>null!=e)).length,n),active:!0,index:s,cardinality:n}:{percentOfLinesWithLabel:Ke(e.values.filter((e=>null!=e)).length,n),active:!1,index:void 0,cardinality:n}}))}([f.time,f.body,...f.extraFields],h,g),h=u(h);!function(e,t,n){var r,a;if(0===e.length){var i,s,l,o,c,u;if(null===(i=t.body)||void 0===i?void 0:i.name)n[null===(l=t.body)||void 0===l?void 0:l.name].active=!0,n[null===(o=t.body)||void 0===o?void 0:o.name].index=1;if(null===(s=t.time)||void 0===s?void 0:s.name)n[null===(c=t.time)||void 0===c?void 0:c.name].active=!0,n[null===(u=t.time)||void 0===u?void 0:u.name].index=0}if((null===(r=t.time)||void 0===r?void 0:r.name)&&(null===(a=t.body)||void 0===a?void 0:a.name)){var d,p;n[null===(d=t.body)||void 0===d?void 0:d.name].type="BODY_FIELD",n[null===(p=t.time)||void 0===p?void 0:p.name].type="TIME_FIELD"}t.extraFields.length&&t.extraFields.forEach((e=>{var t;(null===(t=e.config.links)||void 0===t?void 0:t.length)&&(n[e.name].type="LINK_FIELD")}))}(Object.keys(h).filter((e=>h[e].active)),f,h)}return a().createElement("section",{className:s.section},a().createElement(y,{setUrlTableBodyState:e.setUrlTableBodyState,logsFrame:t,initialColumns:h,setUrlColumns:e.setUrlColumns,clearSelectedLine:e.clearSelectedLine,urlTableBodyState:e.urlTableBodyState,showColumnManagementDrawer:e.showColumnManagementDrawer,isColumnManagementActive:e.isColumnManagementActive},a().createElement(Ae,{logsFrame:t,timeZone:c,height:n.height-50,width:n.width-25,labels:p})))},Ke=(e,t)=>Math.ceil(100*e/t);function Ge(e){let t=(0,o.guessFieldTypeFromValue)(e);return"string"===t&&He.test(e)&&(t=o.FieldType.time),t}const Ue=({dataFrame:e,setUrlColumns:t,urlColumns:n,addFilter:r,selectedLine:i,timeRange:s,panelWrap:l,clearSelectedLine:o,setUrlTableBodyState:u,urlTableBodyState:d,showColumnManagementDrawer:p,isColumnManagementActive:g})=>{if(!e)return null;const h=(0,c.Os)(e);return h?a().createElement(re,{addFilter:r,selectedLine:i,timeRange:s,logsFrame:h},a().createElement(Qe,{urlTableBodyState:d,setUrlColumns:t,setUrlTableBodyState:u,urlColumns:n,panelWrap:l,clearSelectedLine:o,showColumnManagementDrawer:p,isColumnManagementActive:g})):null};var qe=n(9641),Je=n(9405),Ye=n(1532),Xe=n(7352),Ze=n(376),et=n(5700),tt=n(4351);function nt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function rt(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}let at=["timestamp","body","Time","Line"];class it extends i.Bs{onActivate(){this.setState({menu:new et.GD({addInvestigationsLink:!1})}),this.onActivateSyncDisplayedFieldsWithUrlColumns()}getParentScene(){return i.jh.getAncestor(this,bt)}constructor(e){super(rt(function(e){for(var t=1;t{this.setState({isColumnManagementActive:e})})),nt(this,"onActivateSyncDisplayedFieldsWithUrlColumns",(()=>{const e=new URLSearchParams(s.locationService.getLocation().search).get("urlColumns"),t=(0,p.dU)(e),n=this.getParentScene();at=t&&this.urlHasDefaultUrlColumns(t)?this.updateDefaultUrlColumns(t):at,at.length,n.setState({urlColumns:Array.from(new Set([...at,...n.state.displayedFields]))})})),nt(this,"updateDisplayedFields",(e=>{const t=this.getParentScene();at=this.updateDefaultUrlColumns(e);const n=Array.from(new Set([...e||[]])).filter((e=>!at.includes(e)));t.setState({displayedFields:n}),(0,tt.ZF)(this,t.state.displayedFields)})),nt(this,"urlHasDefaultUrlColumns",(e=>at.some((t=>e.includes(t))))),nt(this,"updateDefaultUrlColumns",(e=>(at=at.reduce(((t,n)=>{if(e.includes(n)){t[e.indexOf(n)]=n}return t}),[]),at))),this.addActivationHandler(this.onActivate.bind(this))}}nt(it,"Component",(({model:e})=>{const t=(0,C.useStyles2)(st),n=i.jh.getAncestor(e,bt),{data:s}=i.jh.getData(e).useState(),{selectedLine:l,urlColumns:o,visualizationType:c,tableLogLineState:u}=n.useState(),{menu:d,isColumnManagementActive:p}=e.useState(),g=i.jh.getTimeRange(e),{value:h}=g.useState(),f=(0,Xe.tn)(s),v=(0,r.useRef)(null);return a().createElement("div",{className:t.panelWrapper,ref:v},a().createElement(C.PanelChrome,{loadingState:null==s?void 0:s.state,title:"Logs",menu:d?a().createElement(d.Component,{model:d}):void 0,showMenuAlways:!0,actions:a().createElement(a().Fragment,null,a().createElement(C.Button,{onClick:()=>e.showColumnManagementDrawer(!0),variant:"secondary",size:"sm"},"Manage columns"),a().createElement(qe.C,{vizType:c,onChange:n.setVisualizationType}))},f&&a().createElement(Ue,{panelWrap:v,addFilter:t=>{const r=(0,Ze.OE)(f,t.key,e);(0,Je.XI)(t,n,r)},timeRange:h,selectedLine:l,urlColumns:null!=o?o:[],setUrlColumns:t=>{(0,Ye.n)(t,n.state.urlColumns)||(n.setState({urlColumns:t}),e.updateDisplayedFields(t))},dataFrame:f,clearSelectedLine:()=>{n.state.selectedLine&&n.clearSelectedLine()},setUrlTableBodyState:e=>{n.setState({tableLogLineState:e})},urlTableBodyState:u,showColumnManagementDrawer:e.showColumnManagementDrawer,isColumnManagementActive:p})))}));const st=e=>({panelWrapper:(0,l.css)({width:"100%",height:"100%",label:"panel-wrapper-table"})});var lt=n(4509),ot=n(8996),ct=n(6177),ut=n.n(ct),dt=n(5553),pt=n(72),gt=n(7478);function ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class ft extends i.Bs{clearVariable(){(0,dt.Rr)(this).updateFilters([],{skipPublish:!0}),this.setState({lineFilter:""})}getOperator(){if(this.state.regex&&this.state.exclusive)return ie.cK.negativeRegex;if(this.state.regex&&!this.state.exclusive)return ie.cK.regex;if(!this.state.regex&&this.state.exclusive)return ie.cK.negativeMatch;if(!this.state.regex&&!this.state.exclusive)return ie.cK.match;throw new Error("getOperator: failed to determine operation")}getFilterKey(){return this.state.caseSensitive?ie.ld.caseSensitive:ie.ld.caseInsensitive}getFilter(){return(0,dt.Rr)(this).state.filters[0]}updateFilter(e,t=!0){this.updateInputState(e),t?this.updateVariableDebounced(e):this.updateVariable(e)}updateInputState(e){this.setState({lineFilter:e})}constructor(e){var t,n,r,a;super(function(e){for(var t=1;t{const e=this.getFilter();if(e)return this.setState({lineFilter:e.value,regex:e.operator===ie.cK.regex||e.operator===ie.cK.negativeRegex,caseSensitive:e.key===ie.ld.caseSensitive,exclusive:e.operator===ie.cK.negativeMatch||e.operator===ie.cK.negativeRegex}),()=>{this.clearFilter()}})),ht(this,"clearFilter",(()=>{this.updateVariableDebounced.cancel(),this.updateFilter("",!1)})),ht(this,"onToggleExclusive",(e=>{(0,tt.Bq)(e),this.setState({exclusive:e}),this.updateFilter(this.state.lineFilter,!1)})),ht(this,"onSubmitLineFilter",(()=>{(0,gt.bN)(),this.updateFilter(this.state.lineFilter,!1),this.updateVariableDebounced.flush();const e=(0,dt.Gk)(this),t=e.state.filters,n=this.getFilter();e.updateFilters([...t,n]),this.clearVariable()})),ht(this,"handleChange",(e=>{this.updateInputState(e.target.value)})),ht(this,"handleEnter",(e=>{"Enter"===e.key&&this.state.lineFilter&&this.onSubmitLineFilter()})),ht(this,"onCaseSensitiveToggle",(e=>{const t=e===ie.ld.caseSensitive;this.setState({caseSensitive:t}),(0,tt.Xo)(t),this.updateFilter(this.state.lineFilter,!1)})),ht(this,"onRegexToggle",(e=>{const t="regex"===e;this.setState({regex:t}),(0,tt.GL)(t),this.updateFilter(this.state.lineFilter,!1)})),ht(this,"updateVariableDebounced",ut()((e=>{this.updateVariable(e)}),1e3)),ht(this,"updateVariable",(e=>{this.updateVariableDebounced.flush();const t=(0,dt.Rr)(this),n=(0,dt.Gk)(this),r={key:this.getFilterKey(),keyLabel:n.state.filters.length.toString(),operator:this.getOperator(),value:e};t.updateFilters([r]),(0,lt.EE)(lt.NO.service_details,lt.ir.service_details.search_string_in_logs_changed,{searchQueryLength:e.length,containsLevel:e.toLowerCase().includes("level"),operator:r.operator,caseSensitive:r.key})})),this.addActivationHandler(this.onActivate)}}function vt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function mt(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}ht(ft,"Component",(function({model:e}){const{lineFilter:t,caseSensitive:n,regex:a,exclusive:i}=e.useState(),[s,l]=(0,r.useState)(!1);return(0,pt._)({exclusive:i,lineFilter:t,caseSensitive:n,regex:a,onSubmitLineFilter:e.onSubmitLineFilter,handleEnter:e.handleEnter,onInputChange:e.handleChange,updateFilter:e.updateFilter,onCaseSensitiveToggle:e.onCaseSensitiveToggle,onRegexToggle:e.onRegexToggle,setExclusive:e.onToggleExclusive,onClearLineFilter:e.clearFilter,focus:s,setFocus:l,type:"editor"})}));class bt extends i.Bs{getUrlState(){var e;const t=null!==(e=this.state.urlColumns)&&void 0!==e?e:[],n=this.state.selectedLine,r=this.state.visualizationType;var a,i;const s=null!==(i=null!==(a=this.state.displayedFields)&&void 0!==a?a:(0,tt.N$)(this))&&void 0!==i?i:[];return{urlColumns:JSON.stringify(t),selectedLine:JSON.stringify(n),visualizationType:JSON.stringify(r),displayedFields:JSON.stringify(s),tableLogLineState:JSON.stringify(this.state.tableLogLineState)}}updateFromUrl(e){const t={};try{if("string"==typeof e.urlColumns){const n=(0,p.aJ)(JSON.parse(e.urlColumns));n!==this.state.urlColumns&&(t.urlColumns=n)}if("string"==typeof e.selectedLine){const n=(0,p.lb)(JSON.parse(e.selectedLine));if(n){const e=n;e!==this.state.selectedLine&&(t.selectedLine=e)}}if("string"==typeof e.visualizationType){const n=(0,p.v_)(JSON.parse(e.visualizationType));n&&n!==this.state.visualizationType&&(t.visualizationType=n)}if("string"==typeof e.displayedFields){const n=(0,p.aJ)(JSON.parse(e.displayedFields));n&&n.length&&(t.displayedFields=n)}if("string"==typeof e.tableLogLineState){const n=JSON.parse(e.tableLogLineState);n!==m.labels&&n!==m.text||(t.tableLogLineState=n)}}catch(e){u.v.error(e,{msg:"LogsListScene: updateFromUrl unexpected error"})}Object.keys(t).length&&this.setState(t)}clearSelectedLine(){this.setState({selectedLine:void 0})}onActivate(){const e=new URLSearchParams(s.locationService.getLocation().search);this.setStateFromUrl(e),this.state.panel||this.updateLogsPanel(),this._subs.add(this.subscribeToState(((e,t)=>{e.visualizationType!==t.visualizationType&&this.updateLogsPanel()})))}setStateFromUrl(e){const t=e.get("selectedLine"),n=e.get("urlColumns"),r=e.get("visualizationType");var a;const i=null!==(a=e.get("displayedFields"))&&void 0!==a?a:JSON.stringify((0,tt.N$)(this)),s=e.get("tableLogLineState");this.updateFromUrl({selectedLine:t,urlColumns:n,vizType:r,displayedFields:i,tableLogLineState:s})}getVizPanel(){return this.logsPanelScene=new ot.o({}),new i.G1({direction:"column",children:"logs"===this.state.visualizationType?[new i.G1({children:[new i.vA({body:new ft({lineFilter:this.state.lineFilter}),xSizing:"fill"})]}),new i.vA({height:"calc(100vh - 220px)",body:this.logsPanelScene})]:[new i.vA({body:new ft({lineFilter:this.state.lineFilter}),xSizing:"fill"}),new i.vA({height:"calc(100vh - 220px)",body:new it({})})]})}constructor(e){super(mt(function(e){for(var t=1;t{this.setState({displayedFields:[]}),this.logsPanelScene&&this.logsPanelScene.clearDisplayedFields()})),vt(this,"setLogsVizOption",((e={})=>{this.logsPanelScene&&this.logsPanelScene.setLogsVizOption(e)})),vt(this,"updateLogsPanel",(()=>{if(this.setState({panel:this.getVizPanel()}),this.state.panel){const e=i.jh.findDescendents(this.state.panel,ft);if(e.length){const t=e[0];this._subs.add(t.subscribeToState(((e,t)=>{e.lineFilter!==t.lineFilter&&this.setState({lineFilter:e.lineFilter})})))}}})),vt(this,"setVisualizationType",(e=>{this.setState({visualizationType:e}),(0,lt.EE)(lt.NO.service_details,lt.ir.service_details.logs_visualization_toggle,{visualisationType:e}),(0,tt.o5)(e)})),this.addActivationHandler(this.onActivate.bind(this))}}vt(bt,"Component",(({model:e})=>{const{panel:t}=e.useState();if(t)return a().createElement("div",{className:yt.panelWrapper},a().createElement(t.Component,{model:t}))}));const yt={panelWrapper:(0,l.css)({'section > div[class$="panel-content"]':(0,l.css)({contain:"none",overflow:"auto"})})}},8996:(e,t,n)=>{n.d(t,{o:()=>D});var r=n(9736),a=n(7781),i=n(4351),s=n(5959),l=n.n(s),o=n(8632),c=n(2007),u=n(9405),d=n(376),p=n(20),g=n(4509),h=n(5553),f=n(5002);const v=({onClick:e})=>{const[t,n]=(0,s.useState)(!1);(0,s.useEffect)((()=>{let e;return t&&(e=setTimeout((()=>{n(!1)}),2e3)),()=>{clearTimeout(e)}}),[t]);const r=(0,s.useCallback)(((t,r)=>{e(t,r),n(!0)}),[e]);return l().createElement(c.IconButton,{"aria-label":t?"Copied":"Copy link to log line",tooltip:t?"Copied":"Copy link to log line",tooltipPlacement:"top",variant:t?"primary":"secondary",size:"md",name:t?"check":"share-alt",onClick:r})};var m=n(2649),b=n(71),y=n(5700),S=n(7352),w=n(6854),O=n(8531),x=n(8428),E=n(5953),C=n(5719),P=n(7191);const k=({clearFilters:e,error:t})=>l().createElement(P.R,null,l().createElement("div",null,l().createElement("p",null,t),l().createElement(c.Button,{variant:"secondary",onClick:e},"Clear filters")));var j=n(5548),F=n(2165);function L(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(e){for(var t=1;t{var n,r,i,s,l,o;(null===(r=e.$data)||void 0===r||null===(n=r.state.data)||void 0===n?void 0:n.state)===a.LoadingState.Error?this.handleLogsError(null===(o=e.$data)||void 0===o?void 0:o.state.data):(null===(s=e.$data)||void 0===s||null===(i=s.state.data)||void 0===i?void 0:i.state)===a.LoadingState.Done&&(0,F.y2)(null===(l=e.$data)||void 0===l?void 0:l.state.data.series)?this.handleNoData():this.state.error&&this.clearLogsError();e.logsCount!==t.logsCount&&(this.state.body?this.state.body.setState({title:this.getTitle(e.logsCount)}):this.setState({body:this.getLogsPanel({wrapLogMessage:this.state.wrapLogMessage,prettifyLogMessage:this.state.wrapLogMessage,sortOrder:this.state.sortOrder})}))})))}handleLogsError(e){var t;const n=(null===(t=e.errors)||void 0===t?void 0:t.length)?e.errors[0]:e.error,r=null==n?void 0:n.message;var a,i;r&&E.v.error(new Error("Logs Panel error"),{msg:r,status:null!==(a=n.statusText)&&void 0!==a?a:"N/A",type:null!==(i=n.type)&&void 0!==i?i:"N/A"});let s="Unexpected error response. Please review your filters or try a different time range.";(null==r?void 0:r.includes("parse error"))?s="Logs could not be retrieved due to invalid filter parameters. Please review your filters and try again.":(null==r?void 0:r.includes("response larger than the max message size"))&&(s="The response is too large to process. Try narrowing your search or using filters to reduce the data size."),this.showLogsError(s)}handleNoData(){this.showLogsError("No logs match your search. Please review your filters or try a different time range.")}showLogsError(e){var t;const n=null!==(t=this.state.logsVolumeCollapsedByError)&&void 0!==t?t:!(0,i.Rf)("collapsed");if(this.setState({error:e,logsVolumeCollapsedByError:n}),n){var a;null===(a=r.jh.findByKeyAndType(this,b.b,b._).state.panel)||void 0===a||a.setState({collapsed:!0})}}clearLogsError(){if(this.state.logsVolumeCollapsedByError){var e;null===(e=r.jh.findByKeyAndType(this,b.b,b._).state.panel)||void 0===e||e.setState({collapsed:!1})}this.setState({error:void 0,logsVolumeCollapsedByError:void 0})}setLogsVizOption(e={}){if(this.state.body){if("sortOrder"in e&&e.sortOrder!==this.state.body.state.options.sortOrder){const e=r.jh.getData(this),t=e instanceof r.dt?e:r.jh.findDescendents(e,r.dt)[0];t&&t.runQueries()}this.state.body.onOptionsChange(e)}}getParentScene(){return r.jh.getAncestor(this,o.i)}getTitle(e){var t;const n=(0,a.getValueFormat)("short"),r=void 0!==e?n(e,0):void 0;return void 0!==r?`Logs (${r.text}${null===(t=r.suffix)||void 0===t?void 0:t.trim()})`:"Logs"}getLogsPanel(e){const t=this.getParentScene(),n=t.state.visualizationType,a=r.jh.getAncestor(this,S.Mn);var s,o,c;return r.d0.logs().setTitle(this.getTitle(a.state.logsCount)).setOption("showTime",!0).setOption("onClickFilterLabel",this.handleLabelFilterClick).setOption("onClickFilterOutLabel",this.handleLabelFilterOutClick).setOption("isFilterLabelActive",this.handleIsFilterLabelActive).setOption("onClickFilterString",this.handleFilterStringClick).setOption("onClickFilterOutString",this.handleFilterOutStringClick).setOption("onClickShowField",this.onClickShowField).setOption("onClickHideField",this.onClickHideField).setOption("displayedFields",t.state.displayedFields).setOption("sortOrder",null!==(s=e.sortOrder)&&void 0!==s?s:(0,m.zQ)()).setOption("wrapLogMessage",null!==(o=e.wrapLogMessage)&&void 0!==o?o:Boolean((0,i.YM)("wrapLogMessage",!1))).setOption("prettifyLogMessage",null!==(c=e.prettifyLogMessage)&&void 0!==c?c:Boolean((0,i.YM)("wrapLogMessage",!1))).setMenu(new y.GD({investigationOptions:{type:"logs",getLabelName:()=>`Logs: ${(0,C.Mq)(a)}`}})).setOption("showLogContextToggle",!0).setShowMenuAlways(!0).setOption("enableInfiniteScrolling",!0).setOption("onNewLogsReceived",this.updateVisibleRange).setOption("logRowMenuIconsAfter",[l().createElement(v,{onClick:this.handleShareLogLineClick,key:0})]).setHeaderActions(new m.ZB({visualizationType:n,onChangeVisualizationType:t.setVisualizationType})).build()}handleLabelFilter(e,t,n,r){const a=(0,d.OE)(n,e,this);(0,u.Qt)(e,t,r,this,a),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_detail_filter_applied,{filterType:a,key:e,action:r})}constructor(e){super(_({sortOrder:(0,m.zQ)(),wrapLogMessage:Boolean((0,i.YM)("wrapLogMessage",!1)),error:void 0},e)),L(this,"_urlSync",new r.So(this,{keys:["sortOrder","wrapLogMessage"]})),L(this,"onClickShowField",(e=>{const t=this.getParentScene();if(-1===t.state.displayedFields.indexOf(e)&&this.state.body){const n=[...t.state.displayedFields,e];this.setLogsVizOption({displayedFields:n}),t.setState({displayedFields:n}),(0,i.ZF)(this,t.state.displayedFields),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_toggle_displayed_field)}})),L(this,"onClickHideField",(e=>{const t=this.getParentScene();if(t.state.displayedFields.indexOf(e)>=0&&this.state.body){const n=t.state.displayedFields.filter((t=>e!==t));this.setLogsVizOption({displayedFields:n}),t.setState({displayedFields:n}),(0,i.ZF)(this,t.state.displayedFields),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_toggle_displayed_field)}})),L(this,"clearDisplayedFields",(()=>{this.state.body&&(this.setLogsVizOption({displayedFields:[]}),(0,i.ZF)(this,[]))})),L(this,"updateVisibleRange",(e=>{var t,n;const a=r.jh.getAncestor(this,S.Mn);a.setState({logsCount:e[0].length}),(null===(n=a.state.$data)||void 0===n||null===(t=n.state.data)||void 0===t?void 0:t.series)&&a.state.$data.setState(T(_({},a.state.$data.state),{data:T(_({},a.state.$data.state.data),{series:e})}));r.jh.findByKeyAndType(this,b.b,b._).updateVisibleRange(e)})),L(this,"handleShareLogLineClick",((e,t)=>{if((null==t?void 0:t.rowId)&&this.state.body){const e=this.getParentScene(),n=(0,f.Ki)(t);(0,f.Dk)((0,f.gW)("panelState",{logs:{id:t.uid,displayedFields:e.state.displayedFields}},n))}})),L(this,"handleLabelFilterClick",((e,t,n)=>{this.handleLabelFilter(e,t,n,"toggle")})),L(this,"handleLabelFilterOutClick",((e,t,n)=>{this.handleLabelFilter(e,t,n,"exclude")})),L(this,"handleIsFilterLabelActive",((e,t)=>{const n=(0,h.bY)(p.MB,this),r=(0,h.bY)(p.mB,this),a=(0,h.bY)(p._Y,this),i=(0,h.bY)(p._P,this),s=n=>n&&n.state.filters.findIndex((n=>"="===n.operator&&n.key===e&&n.value===t))>=0;return s(n)||(n=>{if(n){const r=n.state.filters.find((t=>"="===t.operator&&t.key===e));if(r){return(0,h.bu)(r,e).value===t}}return!1})(r)||s(a)||s(i)})),L(this,"handleFilterOutStringClick",(e=>{const t=(0,h.Gk)(this);t&&(t.setState({filters:[...t.state.filters,{operator:w.cK.negativeMatch,value:e,key:w.ld.caseSensitive,keyLabel:t.state.filters.length.toString()}]}),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_popover_line_filter,{selectionLength:e.length}))})),L(this,"handleFilterStringClick",(e=>{const t=(0,h.Gk)(this);t&&(t.setState({filters:[...t.state.filters,{operator:w.cK.match,value:e,key:w.ld.caseSensitive,keyLabel:t.state.filters.length.toString()}]}),(0,g.EE)(g.NO.service_details,g.ir.service_details.logs_popover_line_filter,{selectionLength:e.length}))})),this.addActivationHandler(this.onActivate.bind(this))}}L(D,"Component",(({model:e})=>{const{body:t,error:n}=e.useState(),r=(0,c.useStyles2)(y.K_);return t?l().createElement("span",{className:r.panelWrapper},!n&&l().createElement(t.Component,{model:t}),n&&l().createElement(k,{error:n,clearFilters:()=>(0,j.rA)(t)})):l().createElement(c.LoadingPlaceholder,{text:"Loading..."})}))},71:(e,t,n)=>{n.d(t,{_:()=>D,b:()=>T});var r,a,i,s=n(5959),l=n.n(s),o=n(9736),c=n(2007),u=n(1475),d=n(7985),p=n(20),g=n(4509),h=n(6838),f=n(5570),v=n(7781),m=n(5553),b=n(1532),y=n(5700),S=n(7352),w=n(2165),O=n(4351),x=n(2661),E=n(8531),C=n(5719);class P extends o.Bs{}i=function({model:e}){const{component:t,isLoading:n}=(0,E.usePluginComponent)("grafana-adaptivelogs-app/temporary-exemptions/v1"),r=(0,m.bY)(p.MB,e),{filters:a}=r.useState(),i=a.map((({key:e,operator:t,value:n})=>({key:e,operator:t,value:n}))),s=(0,C.U4)(e);return n||!t?null:l().createElement(t,{dataSourceUid:s,streamSelector:i,contextHints:["explorelogs","logvolumepanel","headeraction"]})},(a="Component")in(r=P)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i;var k=n(9405),j=n(2085);function F(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function L(e){for(var t=1;t{(0,b.B)(e.filters,t.filters)||this.setState({panel:this.getVizPanel()})}))),this._subs.add(t.subscribeToState(((e,t)=>{(0,b.B)(e.filters,t.filters)||this.setState({panel:this.getVizPanel()})}))),this._subs.add(this.subscribeToEvent(k.Of,(e=>{if(e.key===p.e4){const e=o.jh.findObject(this,(e=>e instanceof j.qV));if(e instanceof j.qV){const e=(0,m.iw)(this);e.setState({filters:e.state.filters})}}})))}getTitle(e,t){var n,r;var a;const i=null!==(a=null===(n=o.jh.getAncestor(this,x.P).state.ds)||void 0===n?void 0:n.maxLines)&&void 0!==a?a:d.by,s=(0,v.getValueFormat)("short"),l=void 0!==e?s(e,0):void 0;if(void 0===e&&void 0!==t&&tthis.extendTimeSeriesLegendBus(t)}),this._subs.add(a.subscribeToState(((e,t)=>{e.collapsed!==t.collapsed&&(this.updateContainerHeight(a),(0,O.RN)("collapsed",e.collapsed?"true":void 0))}))),this._subs.add(null===(e=a.state.$data)||void 0===e?void 0:e.subscribeToState((e=>{var t,r,i,s;if((null===(t=e.data)||void 0===t?void 0:t.state)===v.LoadingState.Done){var l,o;if((null===(i=n.state.$data)||void 0===i||null===(r=i.state.data)||void 0===r?void 0:r.state)!==v.LoadingState.Done||(null===(s=e.data.annotations)||void 0===s?void 0:s.length))this.displayVisibleRange();else this.updateVisibleRange(null===(o=n.state.$data)||void 0===o||null===(l=o.state.data)||void 0===l?void 0:l.series);(0,u.C6)(a,e.data.series,this)}}))),this._subs.add(null===(t=n.state.$data)||void 0===t?void 0:t.subscribeToState((e=>{var t;(null===(t=e.data)||void 0===t?void 0:t.state)===v.LoadingState.Done&&this.updateVisibleRange(e.data.series)}))),this._subs.add(n.subscribeToState(((e,t)=>{e.totalLogsCount===t.totalLogsCount&&void 0===e.logsCount||(this.state.panel?this.state.panel.setState({title:this.getTitle(e.totalLogsCount,e.logsCount)}):this.setState({panel:this.getVizPanel()}))}))),a}updateContainerHeight(e){const t=o.jh.getAncestor(e,o.G1),n=e.state.collapsed?35:Math.max(Math.round(.2*window.innerHeight),100);t.setState({minHeight:n,height:n,maxHeight:n})}updateVisibleRange(e=[]){this.updatedLogSeries=e,this.displayVisibleRange()}displayVisibleRange(){var e,t;const n=this.state.panel;if(!n||!(null===(e=n.state.$data)||void 0===e?void 0:e.state.data)||(null===(t=n.state.$data)||void 0===t?void 0:t.state.data.state)!==v.LoadingState.Done||!this.updatedLogSeries)return;const r=(0,w.z5)(this.updatedLogSeries);this.updatedLogSeries=null,n.state.$data.setState({data:_(L({},n.state.$data.state.data),{annotations:[(0,w.hy)(r.start,r.end)]})})}constructor(e){super(_(L({},e),{key:T})),F(this,"updatedLogSeries",null),F(this,"extendTimeSeriesLegendBus",(e=>{const t=(0,m.iw)(this);this._subs.add(null==t?void 0:t.subscribeToState((()=>{var e,t,n,r;const a=this.state.panel;(null==a||null===(t=a.state.$data)||void 0===t||null===(e=t.state.data)||void 0===e?void 0:e.series)&&(0,u.C6)(a,null==a||null===(r=a.state.$data)||void 0===r||null===(n=r.state.data)||void 0===n?void 0:n.series,this)}))),e.onToggleSeriesVisibility=(e,t)=>{const n=(0,f.PE)(e,this);this.publishEvent(new k.Of("legend","include",p.e4,e),!0),(0,g.EE)(g.NO.service_details,g.ir.service_details.level_in_logs_volume_clicked,{level:e,action:n})}})),this.addActivationHandler(this.onActivate.bind(this))}}F(D,"Component",(({model:e})=>{const{panel:t}=e.useState();if(!t)return;const n=(0,c.useStyles2)(y.K_);return l().createElement("span",{className:n.panelWrapper},l().createElement(t.Component,{model:t}))}))},7352:(e,t,n)=>{n.d(t,{AA:()=>Ue,DS:()=>Ge,Mn:()=>tt,rD:()=>Ye,UO:()=>Xe,nU:()=>Ze,dB:()=>et,TG:()=>Je,tn:()=>qe});var r=n(5959),a=n.n(r),i=n(7781),s=n(9736),l=n(2007),o=n(1475),c=n(7985),u=n(20),d=n(2152),p=n(7478),g=n(1532),h=n(6089),f=n(4509),v=n(9683),m=n(2661),b=n(8531),y=n(5002);function S(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function w(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){S(i,r,a,s,l,"next",e)}function l(e){S(i,r,a,s,l,"throw",e)}s(void 0)}))}}function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class x extends s.Bs{setIsOpen(e){this.setState({isOpen:e})}onCopyLink(e,t,r){e?(k(r||n.g.location.href),(0,b.reportInteraction)("grafana_explore_shortened_link_clicked",{isAbsoluteTime:t})):((0,y.Dk)(void 0!==r?`${window.location.protocol}//${window.location.host}${b.config.appSubUrl}${r}`:n.g.location.href),this.state.onCopyLink&&this.state.onCopyLink(e,t,r))}constructor(e){super(function(e){for(var t=1;t{const t=[{key:"normal",label:"Normal URL links",items:[{key:"copy-shortened-link",icon:"link",label:"Copy shortened URL",getUrl:()=>{},shorten:!0,absTime:!1},{key:"copy-link",icon:"link",label:"Copy URL",getUrl:()=>{},shorten:!1,absTime:!1}]},{key:"timesync",label:"Time-sync URL links (share with time range intact)",items:[{key:"copy-short-link-abs-time",icon:"clock-nine",label:"Copy absolute shortened URL",shorten:!0,getUrl:()=>j(void 0!==e.state.getSceneTimeRange?e.state.getSceneTimeRange():s.jh.getTimeRange(e)),absTime:!0},{key:"copy-link-abs-time",icon:"clock-nine",label:"Copy absolute URL",shorten:!1,getUrl:()=>j(void 0!==e.state.getSceneTimeRange?e.state.getSceneTimeRange():s.jh.getTimeRange(e)),absTime:!0}]}];return a().createElement(l.Menu,null,t.map((t=>a().createElement(l.MenuGroup,{key:t.key,label:t.label},t.items.map((t=>a().createElement(l.Menu.Item,{key:t.key,label:t.label,icon:t.icon,onClick:()=>{const n=t.getUrl();e.onCopyLink(t.shorten,t.absTime,n),e.setState({lastSelected:t})}})))))))})),O(x,"Component",(({model:e})=>{const{lastSelected:t,isOpen:n}=e.useState();return a().createElement(l.ButtonGroup,null,a().createElement(l.ToolbarButton,{tooltip:t.label,icon:t.icon,variant:"canvas",narrow:!0,onClick:()=>{const n=t.getUrl();e.onCopyLink(t.shorten,t.absTime,n)},"aria-label":"Copy shortened URL"},a().createElement("span",null,"Share")),a().createElement(l.Dropdown,{overlay:a().createElement(x.MenuActions,{model:e}),placement:"bottom-end",onVisibleChange:e.setIsOpen.bind(e)},a().createElement(l.ToolbarButton,{narrow:!0,variant:"canvas",isOpen:n,"aria-label":"Open copy link options"})))}));const E={key:"copy-link",label:"Copy shortened URL",icon:"share-alt",getUrl:()=>{},shorten:!0,absTime:!1};function C(e){let t=e.replace(`${window.location.protocol}//${window.location.host}${b.config.appSubUrl}`,"");return t.startsWith("/")?t.substring(1,t.length):t}const P=function(){var e=w((function*(e){const t=(0,b.getAppEvents)();try{return(yield(0,b.getBackendSrv)().post("/api/short-urls",{path:C(e)})).url}catch(e){console.error("Error when creating shortened link: ",e),t.publish({type:i.AppEvents.alertError.name,payload:["Error generating shortened link"]})}}));return function(t){return e.apply(this,arguments)}}(),k=function(){var e=w((function*(e){const t=(0,b.getAppEvents)(),n=yield P(e);n?((0,y.Dk)(n),t.publish({type:i.AppEvents.alertSuccess.name,payload:["Shortened link copied to clipboard"]})):t.publish({type:i.AppEvents.alertError.name,payload:["Error generating shortened link"]})}));return function(t){return e.apply(this,arguments)}}(),j=e=>{const t=(0,i.toUtc)(e.state.value.from),n=(0,i.toUtc)(e.state.value.to),r=b.locationService.getLocation(),a=i.urlUtil.getUrlSearchParams();return a.from=t.toISOString(),a.to=n.toISOString(),i.urlUtil.renderUrl(r.pathname,a)};var F=n(8632),L=n(3571),_=n(8072),T=n(6830),D=n(5659),N=n(5953);function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function I(e){var t,n;const{indexScene:r,pattern:a,type:i}=function(e){for(var t=1;te.pattern!==a));var u;const d=null!==(u=null===(t=c.filter((e=>"include"===e.type)))||void 0===t?void 0:t.length)&&void 0!==u?u:0;var g;const h=null!==(g=null===(n=c.filter((e=>"exclude"===e.type)))||void 0===n?void 0:n.length)&&void 0!==g?g:0;(0,f.EE)(f.NO.service_details,f.ir.service_details.pattern_selected,{type:i,includePatternsLength:d+("include"===i?1:0),excludePatternsLength:h+("exclude"===i?1:0)}),"undo"===i?l.setState({patterns:c}):l.setState({patterns:[...c,{pattern:a,type:i}]})}var B=n(7709),A=n(5719);const M=e=>({logsStatsRow:(0,h.css)({margin:`${e.spacing(1.15)}px 0`}),logsStatsRowActive:(0,h.css)({color:e.colors.primary.text,position:"relative"}),logsStatsRowLabel:(0,h.css)({display:"flex",marginBottom:"1px"}),logsStatsRowValue:(0,h.css)({flex:1,textOverflow:"ellipsis",overflow:"hidden"}),logsStatsRowCount:(0,h.css)({textAlign:"right",marginLeft:e.spacing(.75)}),logsStatsRowPercent:(0,h.css)({textAlign:"right",marginLeft:e.spacing(.75),width:e.spacing(4.5)}),logsStatsRowBar:(0,h.css)({height:e.spacing(.5),overflow:"hidden",background:e.colors.text.disabled}),logsStatsRowInnerBar:(0,h.css)({height:e.spacing(.5),overflow:"hidden",background:e.colors.primary.main})}),R=({active:e,count:t,proportion:n,value:r})=>{const i=(0,l.useStyles2)(M),s=`${Math.round(100*n)}%`,o={width:s};return a().createElement("div",{className:e?`${i.logsStatsRow} ${i.logsStatsRowActive}`:i.logsStatsRow},a().createElement("div",{className:i.logsStatsRowLabel},a().createElement("div",{className:i.logsStatsRowValue,title:r},r),a().createElement("div",{className:i.logsStatsRowCount},t),a().createElement("div",{className:i.logsStatsRowPercent},s)),a().createElement("div",{className:i.logsStatsRowBar},a().createElement("div",{className:i.logsStatsRowInnerBar,style:o})))};function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}const z=e=>({logsStats:(0,h.css)({background:"inherit",color:e.colors.text.primary,wordBreak:"break-all",width:"fit-content",maxHeight:"40vh",overflowY:"auto",marginTop:e.spacing(1)}),logsStatsHeader:(0,h.css)({borderBottom:`1px solid ${e.colors.border.medium}`,display:"flex"}),logsStatsTitle:(0,h.css)({fontWeight:e.typography.fontWeightMedium,paddingRight:e.spacing(2),display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis",flexGrow:1}),logsStatsClose:(0,h.css)({cursor:"pointer"}),logsStatsBody:(0,h.css)({padding:"5px 0px"})}),H=e=>{const t=(0,l.useStyles2)(z),{stats:n,value:r}=e,i=n.slice(0,10);let s=i.find((e=>e.value===r)),o=n.slice(10);!s&&(s=o.find((e=>e.value===r)),o=o.filter((e=>e.value!==r)));const c=o.reduce(((e,t)=>e+t.count),0),u=i.reduce(((e,t)=>e+t.count),0)+c;let d=[...i];return c>0&&d.push({value:"Other",count:c,proportion:c/u}),d.sort(((e,t)=>t.count-e.count)),a().createElement("div",{className:t.logsStats},a().createElement("div",{className:t.logsStatsHeader},a().createElement("div",{className:t.logsStatsTitle},"From a sample of ",u," rows found")),a().createElement("div",{className:t.logsStatsBody},d.map((e=>a().createElement(R,W(function(e){for(var t=1;t{const o=function(e){const t=[];let n=e.indexOf("<_>");for(;-1!==n;)t.push(n),n=e.indexOf("<_>",n+1);return t}(t),[u,d]=(0,r.useState)(void 0),[p,g]=(0,r.useState)(!1),h=(0,l.useStyles2)(U),v=(0,r.useRef)(null),m=(0,r.useRef)(null),b=function(){var r,a=(r=function*(){(0,f.EE)(f.NO.service_details,f.ir.service_details.pattern_field_clicked);const r=function(e,t,n){let r=1;const a=e.replace(/<_>/g,(()=>``)),i=n.state.filterExpression,s=t.map(((e,t)=>`field_${t+1}`)).join(" ,");return`{${i}} |> \`${e}\` | pattern \`${a}\` | keep ${s} | line_format ""`}(t,o,(0,Q.cR)(e)),a=yield(0,A.hJ)(e),l=s.jh.getTimeRange(e).state.value;u&&r===v.current&&l===m.current||(v.current=r,m.current=l,null==a||a.query({requestId:"1",interval:"",intervalMs:0,scopedVars:{},range:l,targets:[(0,c.l)(r,{maxLines:n})],timezone:"",app:"",startTime:0}).forEach((e=>{var t,r;e.state!==i.LoadingState.Done||(null===(t=e.errors)||void 0===t?void 0:t.length)?(e.state===i.LoadingState.Error||(null===(r=e.errors)||void 0===r?void 0:r.length))&&(d(void 0),g(!0)):(d(function(e,t,n){const r=new Map;e.data[0].fields[0].values.toArray().forEach((e=>{Object.keys(e).forEach((t=>{var n,a;r.has(t)||r.set(t,new Map),null===(a=r.get(t))||void 0===a||a.set(e[t],((null===(n=r.get(t))||void 0===n?void 0:n.get(e[t]))||0)+1)}))}));const a=[];for(let e=0;e<=t;e++){var i;const t=[];null===(i=r.get(`field_${e+1}`))||void 0===i||i.forEach(((e,r)=>{t.push({value:r,count:e,proportion:e/n})})),t.sort(((e,t)=>t.count-e.count)),a.push(t)}return a}(e,o.length,n)),g(!1))})))},function(){var e=this,t=arguments;return new Promise((function(n,a){var i=r.apply(e,t);function s(e){K(i,n,a,s,l,"next",e)}function l(e){K(i,n,a,s,l,"throw",e)}s(void 0)}))});return function(){return a.apply(this,arguments)}}(),y=(0,r.useMemo)((()=>t.split("<_>")),[t]);return a().createElement("div",null,y.map(((e,t)=>a().createElement("span",{key:t},e,t!==o.length&&a().createElement(l.Toggletip,{onOpen:b,content:a().createElement(a().Fragment,null,u&&u[t].length>0&&a().createElement(H,{stats:u[t],value:""}),u&&0===u[t].length&&a().createElement("div",null,"No available stats for this field in the current timestamp."),!u&&p&&a().createElement("div",null,"Could not load stats for this pattern."),!u&&!p&&a().createElement("div",{style:{padding:"10px"}},a().createElement(l.Spinner,{size:"xl"})))},a().createElement("span",{className:h.pattern},"<_>"))))))};function U(e){return{pattern:(0,h.css)({cursor:"pointer",backgroundColor:e.colors.emphasize(e.colors.background.primary,.1),margin:"0 2px","&:hover":{backgroundColor:e.colors.emphasize(e.colors.background.primary,.2)}})}}var q=n(2499);function J(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Y extends s.Bs{onActivate(){if(this.state.body)return;const e=(0,c.l)(u.SA);this.replacePatternsInQuery(e);const t=(0,o.rS)([e]);t.getResultsStream().subscribe((e=>{this.onQueryWithFiltersResult(e)})),this.setState({body:new s.G1({direction:"column",children:[new s.vA({body:void 0,width:"100%",height:0}),new s.vA({height:300,width:"100%",body:s.d0.logs().setHoverHeader(!0).setOption("showLogContextToggle",!0).setOption("showTime",!0).setData(t).build()})]})})}replacePatternsInQuery(e){const t={pattern:this.state.pattern,type:"include"},n=(0,q.M)([t]);e.expr=e.expr.replace(u.sC,n)}removePatternFromFilterExclusion(){const e=s.jh.getAncestor(this,ee);var t;const n=null!==(t=e.state.patternsNotMatchingFilters)&&void 0!==t?t:[],r=n.findIndex((e=>e===this.state.pattern));-1!==r&&(n.splice(r,1),e.setState({patternsNotMatchingFilters:n}))}setWarningMessage(e){const t=this.getNoticeFlexItem(),n=this.getVizFlexItem();return t instanceof s.vA&&t.setState({isHidden:!1,height:"auto",body:new s.dM({reactNode:e})}),n}getNoticeFlexItem(){const e=this.getFlexItemChildren();return null==e?void 0:e[0]}getVizFlexItem(){const e=this.getFlexItemChildren();return null==e?void 0:e[1]}getFlexItemChildren(){var e;return null===(e=this.state.body)||void 0===e?void 0:e.state.children}excludeThisPatternFromFiltering(){const e=s.jh.getAncestor(this,ee);var t;const n=null!==(t=e.state.patternsNotMatchingFilters)&&void 0!==t?t:[];e.setState({patternsNotMatchingFilters:[...n,this.state.pattern]})}static Component({model:e}){const{body:t}=e.useState();return t?a().createElement(t.Component,{model:t}):null}constructor(e){super(e),J(this,"clearFilters",(()=>{const e=(0,Q.ir)(this),t=(0,Q.Gk)(this),n=(0,Q.iw)(this);if(e.setState({filters:[]}),n.setState({filters:[]}),t.state.filters.length){t.setState({filters:[]});const e=this.getNoticeFlexItem();null==e||e.setState({isHidden:!0}),this.removePatternFromFilterExclusion()}})),J(this,"onQueryError",(e=>{if(e.data.state===i.LoadingState.Done&&(0===e.data.series.length||e.data.series.every((e=>0===e.length)))||e.data.state===i.LoadingState.Error){let t;try{t={pattern:this.state.pattern,traceIds:JSON.stringify(e.data.traceIds),request:JSON.stringify(e.data.request),msg:"onQueryError"}}catch(e){t={pattern:this.state.pattern,msg:"Failed to encode context"}}N.v.error(new Error("Pattern sample query returns no results"),t),this.setWarningMessage(a().createElement(l.Alert,{severity:"error",title:""},"This pattern returns no logs."));const n=this.getVizFlexItem();n instanceof s.vA&&n.setState({isHidden:!0})}})),J(this,"onQueryWithFiltersResult",(e=>{const t=(0,c.l)(u.pT);this.replacePatternsInQuery(t);const n=(0,o.rS)([t]);if(n.getResultsStream().subscribe(this.onQueryError),e.data.state===i.LoadingState.Done&&(0===e.data.series.length||e.data.series.every((e=>0===e.length)))){const e=this.getNoticeFlexItem(),t=this.getVizFlexItem();if(e instanceof s.vA&&e.setState({isHidden:!1,height:"auto",body:new s.dM({reactNode:a().createElement(l.Alert,{severity:"warning",title:""},"The logs returned by this pattern do not match the current query filters.",a().createElement(l.Button,{className:T.ZI.button,onClick:()=>this.clearFilters()},"Clear filters"))})}),t instanceof s.vA){const e=t.state.body;e instanceof s.Eb&&(null==e||e.setState({$data:n}))}this.excludeThisPatternFromFiltering()}e.data.state===i.LoadingState.Error&&this.onQueryError(e)})),this.addActivationHandler(this.onActivate.bind(this))}}function X({tableViz:e,row:t}){const{expandedRows:n}=e.useState(),i=null==n?void 0:n.find((e=>e.state.key===t.pattern));return(0,r.useEffect)((()=>{if(!i){const a=(r=t.pattern,new Y({pattern:r,key:r}));var n;e.setState({expandedRows:[...null!==(n=e.state.expandedRows)&&void 0!==n?n:[],a]})}var r}),[t,e,i]),i?a().createElement(i.Component,{model:i}):null}const Z=[""," K"," Mil"," Bil"," Tri"," Quadr"," Quint"," Sext"," Sept"];class ee extends s.Bs{onActivate(){var e;const t=null===(e=s.jh.getAncestor(this,m.P).state.ds)||void 0===e?void 0:e.maxLines;this.setState({maxLines:t})}buildColumns(e,t,n,r,o){const c=le(n),u=s.jh.getTimeRange(this).state.value;return[{id:"volume-samples",header:"",cell:e=>{const t={timeRange:u,series:[e.cell.row.original.dataFrame],state:i.LoadingState.Done},n=new s.Zv({data:t}),r=s.d0.timeseries().setData(n).setHoverHeader(!0).setOption("tooltip",{mode:l.TooltipDisplayMode.None}).setCustomFieldConfig("hideFrom",{legend:!0,tooltip:!0}).setCustomFieldConfig("axisPlacement",l.AxisPlacement.Hidden).setDisplayMode("transparent").build();return a().createElement("div",{className:c.tableTimeSeriesWrap},a().createElement("div",{className:c.tableTimeSeries},a().createElement(r.Component,{model:r})))}},{id:"count",header:"Count",sortType:"number",cell:e=>{const t=(0,i.scaledUnits)(1e3,Z)(e.cell.row.original.sum);var n,r;return a().createElement("div",{className:c.countTextWrap},a().createElement("div",null,null!==(n=t.prefix)&&void 0!==n?n:"",t.text,null!==(r=t.suffix)&&void 0!==r?r:""))}},{id:"percent",header:"%",sortType:"number",cell:t=>a().createElement("div",{className:c.countTextWrap},a().createElement("div",null,(100*t.cell.row.original.sum/e).toFixed(0),"%"))},{id:"pattern",header:"Pattern",cell:e=>a().createElement("div",{className:(0,h.cx)(ie(),c.tablePatternTextDefault)},a().createElement(G,{exploration:(0,A.Ti)(this),pattern:e.cell.row.original.pattern,maxLines:r}))},{id:"include",header:void 0,disableGrow:!0,cell:e=>{if(null==o?void 0:o.includes(e.cell.row.original.pattern))return;const n=null==t?void 0:t.find((t=>t.pattern===e.cell.row.original.pattern)),r="include"===(null==n?void 0:n.type),i="exclude"===(null==n?void 0:n.type);return a().createElement(B.F,{isExcluded:i,isIncluded:r,onInclude:()=>e.cell.row.original.includeLink(),onExclude:()=>e.cell.row.original.excludeLink(),onClear:()=>e.cell.row.original.undoLink(),buttonFill:"outline"})}}]}buildTableData(e,t){const n=s.jh.getAncestor(this,m.P);return e.filter((e=>!t.size||t.has(e.pattern))).map((e=>({dataFrame:e.dataFrame,pattern:e.pattern,sum:e.sum,includeLink:()=>I({pattern:e.pattern,type:"include",indexScene:n}),excludeLink:()=>I({pattern:e.pattern,type:"exclude",indexScene:n}),undoLink:()=>I({pattern:e.pattern,type:"undo",indexScene:n})})))}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}var te,ne,re;re=function({model:e}){const t=s.jh.getAncestor(e,m.P),{patterns:n}=t.useState(),r=(0,l.useTheme2)(),i=se(r),o=s.jh.getAncestor(e,ge),{legendSyncPatterns:u}=o.useState(),{patternFrames:d,patternsNotMatchingFilters:p}=e.useState(),g=null!=d?d:[],h=s.jh.getAncestor(e,Ce);var f;const v=(null!==(f=h.state.patternFrames)&&void 0!==f?f:[]).reduce(((e,t)=>e+t.sum),0),b=e.buildTableData(g,u);var y;const S=e.buildColumns(v,n,r,null!==(y=e.state.maxLines)&&void 0!==y?y:c.by,p);return a().createElement("div",{"data-testid":L.b.patterns.tableWrapper,className:i.tableWrap},a().createElement(l.InteractiveTable,{columns:S,data:b,getRowId:e=>e.pattern,renderExpandedRow:t=>a().createElement(X,{tableViz:e,row:t})}))},(ne="Component")in(te=ee)?Object.defineProperty(te,ne,{value:re,enumerable:!0,configurable:!0,writable:!0}):te[ne]=re;const ae=b.config.theme2,ie=()=>(0,h.css)({minWidth:"200px",fontFamily:ae.typography.fontFamilyMonospace,overflow:"hidden",overflowWrap:"break-word"}),se=e=>({link:(0,h.css)({textDecoration:"underline"}),tableWrap:(0,h.css)({"> div":{height:"calc(100vh - 450px)",minHeight:"470px"},th:{top:0,position:"sticky",backgroundColor:e.colors.background.canvas,zIndex:e.zIndex.navbarFixed}})}),le=e=>({tablePatternTextDefault:(0,h.css)({fontFamily:e.typography.fontFamilyMonospace,minWidth:"200px",maxWidth:"100%",overflow:"hidden",overflowWrap:"break-word",fontSize:e.typography.bodySmall.fontSize,wordBreak:"break-word"}),countTextWrap:(0,h.css)({textAlign:"right",fontSize:e.typography.bodySmall.fontSize}),tableTimeSeriesWrap:(0,h.css)({width:"230px",pointerEvents:"none"}),tableTimeSeries:(0,h.css)({height:"30px",overflow:"hidden"})});function oe(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function ce(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){oe(i,r,a,s,l,"next",e)}function l(e){oe(i,r,a,s,l,"throw",e)}s(void 0)}))}}function ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function de(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}const pe=b.config.theme2.visualization.palette;class ge extends s.Bs{onActivate(){this.updateBody(),this._subs.add(s.jh.getAncestor(this,tt).subscribeToState(((e,t)=>{var n,r,a,i,l,o;const c=null==e||null===(a=e.$patternsData)||void 0===a||null===(r=a.state)||void 0===r||null===(n=r.data)||void 0===n?void 0:n.series,u=null==t||null===(o=t.$patternsData)||void 0===o||null===(l=o.state)||void 0===l||null===(i=l.data)||void 0===i?void 0:i.series;if(!(0,g.B)(c,u)){const e=s.jh.getAncestor(this,Ce);this.updatePatterns(e.state.patternFrames),e.setState({filteredPatterns:void 0})}}))),this._subs.add(s.jh.getAncestor(this,Ce).subscribeToState(((e,t)=>{const n=s.jh.getAncestor(this,Ce);e.filteredPatterns&&!(0,g.B)(e.filteredPatterns,t.filteredPatterns)?this.updatePatterns(n.state.filteredPatterns):n.state.patternFilter||this.updatePatterns(n.state.patternFrames)})))}updatePatterns(e=[]){var t=this;return ce((function*(){var n;null===(n=t.state.body)||void 0===n||n.forEachChild((n=>{n instanceof s.Eb&&n.setState({$data:t.getTimeseriesDataNode(e)}),n instanceof ee&&n.setState({patternFrames:e})}))}))()}updateBody(){var e=this;return ce((function*(){var t,n;const r=s.jh.getAncestor(e,Ce).state.patternFrames;(null===(n=s.jh.getAncestor(e,tt).state.$patternsData)||void 0===n||null===(t=n.state.data)||void 0===t?void 0:t.series)&&r?e.setState({body:e.getSingleViewLayout(),legendSyncPatterns:new Set,loading:!1}):N.v.warn("Failed to update PatternsFrameScene body")}))()}extendTimeSeriesLegendBus(e,t){const n=t.onToggleSeriesVisibility;t.onToggleSeriesVisibility=(t,r)=>{var a;null==n||n(t,r);const i=null===(a=e.state.fieldConfig.overrides)||void 0===a?void 0:a[0],s=null==i?void 0:i.matcher.options.names,l=new Set;s&&s.forEach(l.add,l),this.setState({legendSyncPatterns:l})}}getSingleViewLayout(){const e=s.jh.getAncestor(this,Ce).state.patternFrames;if(!e)return void N.v.warn("Failed to set getSingleViewLayout");const t=this.getTimeSeries(e);return new s.gF({templateColumns:"100%",autoRows:"200px",isLazy:!0,children:[t,new ee({patternFrames:e})]})}getTimeSeries(e){const t=s.jh.getAncestor(this,m.P),n=s.d0.timeseries().setData(this.getTimeseriesDataNode(e)).setOption("legend",{asTable:!0,showLegend:!0,displayMode:l.LegendDisplayMode.Table,placement:"right",width:200}).setHoverHeader(!0).setUnit("short").setLinks([{url:"#",targetBlank:!1,onClick:e=>{I({pattern:e.origin.labels.name,type:"include",indexScene:t})},title:"Include"},{url:"#",targetBlank:!1,onClick:e=>{I({pattern:e.origin.labels.name,type:"exclude",indexScene:t})},title:"Exclude"}]).build();return n.setState({extendPanelContext:(e,t)=>this.extendTimeSeriesLegendBus(e,t)}),n}getTimeseriesDataNode(e){const t=s.jh.getTimeRange(this).state.value;return new s.Zv({data:{series:e.map(((e,t)=>{const n=e.dataFrame;return n.fields[1].config.color=function(e){return{mode:"fixed",fixedColor:pe[e]}}(t),n.fields[1].name="",n})),state:i.LoadingState.Done,timeRange:t}})}constructor(e){super(de(function(e){for(var t=1;t{var t;const{body:n,loading:r}=e.useState(),i=s.jh.getAncestor(e,tt),{$patternsData:l}=i.useState(),o=null==l||null===(t=l.state.data)||void 0===t?void 0:t.series;return a().createElement("div",{className:he.container},!r&&o&&o.length>0&&a().createElement(a().Fragment,null,n&&a().createElement(n.Component,{model:n})))}));const he={container:(0,h.css)({width:"100%",".show-on-hover":{display:"none"}})};var fe=n(9193),ve=n(9284);function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class be extends s.Bs{onActivate(){const e=s.jh.getAncestor(this,Ce);this._subs.add(e.subscribeToState(((e,t)=>{if(e.patternFilter!==t.patternFilter){const e=s.jh.getAncestor(this,Ce);e.state.patternFrames&&(0,fe.E)(e.state.patternFrames.map((e=>e.pattern)),e.state.patternFilter,this.onSearchResult)}}))),this._subs.add(e.subscribeToState(((e,t)=>{e.patternFilter&&!e.filteredPatterns&&e.patternFrames&&!(0,g.B)(e.filteredPatterns,t.filteredPatterns)&&(0,fe.X)(e.patternFrames.map((e=>e.pattern)),e.patternFilter,this.onSearchResult)})))}setFilteredPatterns(e,t){const n=s.jh.getAncestor(this,Ce),r=null!=t?t:n.state.patternFrames;if(r){const t=r.filter((t=>!(!n.state.patternFilter||!(null==r?void 0:r.length))&&e.find((e=>e===t.pattern))));n.setState({filteredPatterns:t})}}setEmptySearch(){s.jh.getAncestor(this,Ce).setState({filteredPatterns:void 0})}constructor(e){super(function(e){for(var t=1;t{s.jh.getAncestor(this,Ce).setState({patternFilter:""})})),me(this,"handleSearchChange",(e=>{s.jh.getAncestor(this,Ce).setState({patternFilter:e.target.value})})),me(this,"onSearchResult",(e=>{const t=s.jh.getAncestor(this,Ce);t.state.patternFilter?this.setFilteredPatterns(e[0]):t.state.filteredPatterns&&!t.state.patternFilter&&this.setEmptySearch()})),this.addActivationHandler(this.onActivate.bind(this))}}me(be,"Component",(function({model:e}){const t=s.jh.getAncestor(e,Ce),{patternFilter:n}=t.useState();return a().createElement(l.Field,{className:ye.field},a().createElement(ve.D,{onChange:e.handleSearchChange,onClear:e.clearSearch,value:n,placeholder:"Search patterns"}))}));const ye={field:(0,h.css)({label:"field",marginBottom:0}),icon:(0,h.css)({cursor:"pointer"})};var Se=n(7191);function we(){return a().createElement(Se.R,null,a().createElement("div",null,a().createElement("p",null,a().createElement("strong",null,"Sorry, we could not detect any patterns.")),a().createElement("p",null,"Check back later or reach out to the team in the"," ",a().createElement(l.TextLink,{href:"https://slack.grafana.com/",external:!0},"Grafana Labs community Slack channel")),a().createElement("p",null,"Patterns let you detect similar log lines to include or exclude from your search.")))}function Oe(){return a().createElement(Se.R,null,a().createElement("div",null,a().createElement("p",null,a().createElement("strong",null,"Patterns are only available for the most recent ",Ee," hours of data.")),a().createElement("p",null,"See the"," ",a().createElement(l.TextLink,{href:"https://grafana.com/docs/grafana/latest/explore/simplified-exploration/logs/patterns/",external:!0},"patterns docs")," ","for more info.")))}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ee=3;class Ce extends s.Bs{onActivate(){var e,t;const n=s.jh.getAncestor(this,tt);var r;(this.setBody(),null===(e=n.state.$patternsData)||void 0===e?void 0:e.state)&&this.onDataChange(null===(r=n.state.$patternsData)||void 0===r?void 0:r.state);this._subs.add(null===(t=n.state.$patternsData)||void 0===t?void 0:t.subscribeToState(this.onDataChange))}setBody(){this.setState({body:new s.G1({direction:"column",children:[new s.vA({ySizing:"content",body:new be}),new s.vA({body:new ge})]})})}updatePatternFrames(e){if(!e)return;const t=this.dataFrameToPatternFrame(e);this.setState({patternFrames:t})}dataFrameToPatternFrame(e){const t=s.jh.getAncestor(this,tt),n=s.jh.getAncestor(t,m.P).state.patterns;return e.map((e=>{var t,r;const a=null==n?void 0:n.find((t=>t.pattern===e.name)),i=null===(r=e.meta)||void 0===r||null===(t=r.custom)||void 0===t?void 0:t.sum;var s;return{dataFrame:e,pattern:null!==(s=e.name)&&void 0!==s?s:"",sum:i,status:null==a?void 0:a.type}}))}constructor(e){var t;super(function(e){for(var t=1;t{var n,r,a,s,l;const o=null===(n=e.data)||void 0===n?void 0:n.series,c=null==t||null===(r=t.data)||void 0===r?void 0:r.series;(null===(a=e.data)||void 0===a?void 0:a.state)===i.LoadingState.Done?(this.setState({loading:!1,error:!1}),(0,g.B)(o,c)||this.updatePatternFrames(o)):(null===(s=e.data)||void 0===s?void 0:s.state)===i.LoadingState.Loading?this.setState({loading:!0,error:!1}):(null===(l=e.data)||void 0===l?void 0:l.state)===i.LoadingState.Error&&this.setState({loading:!1,error:!0})})),this.addActivationHandler(this.onActivate.bind(this))}}function Pe(e){return{container:(0,h.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column"}),content:(0,h.css)({flexGrow:1,display:"flex",paddingTop:e.spacing(0)}),controls:(0,h.css)({flexGrow:0,display:"flex",alignItems:"top",gap:e.spacing(2)}),controlsRight:(0,h.css)({flexGrow:0,display:"flex",justifyContent:"flex-end"}),controlsLeft:(0,h.css)({display:"flex",justifyContent:"flex-left",justifyItems:"left",width:"100%",flexDirection:"column"}),patternMissingText:(0,h.css)({padding:e.spacing(2)})}}xe(Ce,"Component",(({model:e})=>{const{body:t,loading:n,blockingMessage:r,patternFrames:o,error:c}=e.useState(),{value:u}=s.jh.getTimeRange(e).useState(),d=(0,l.useStyles2)(Pe),p=(0,i.dateTime)().diff(u.to,"hours")>=Ee;return a().createElement("div",{className:d.container},a().createElement(D.O,{isLoading:n,blockingMessage:r},!n&&c&&a().createElement("div",{className:d.patternMissingText},a().createElement(l.Text,{textAlignment:"center",color:"primary"},a().createElement("p",null,"There are no pattern matches."),a().createElement("p",null,"Pattern matching has not been configured."),a().createElement("p",null,"Patterns let you detect similar log lines and add or exclude them from your search."),a().createElement("p",null,"To see them in action, add the following to your Loki configuration"),a().createElement("p",null,a().createElement("code",null,"--pattern-ingester.enabled=true")))),!c&&!n&&0===(null==o?void 0:o.length)&&p&&a().createElement(Oe,null),!c&&!n&&0===(null==o?void 0:o.length)&&!p&&a().createElement(we,null),!c&&!n&&o&&o.length>0&&a().createElement("div",{className:d.content},t&&a().createElement(t.Component,{model:t}))))}));var ke=n(71),je=n(6145),Fe=function(e){return e.logs="Logs",e.labels="Labels",e.fields="Fields",e.patterns="Patterns",e}({});const Le=[{displayName:"Logs",value:v.G3.logs,getScene:()=>new s.G1({direction:"column",children:[new s.vA({body:new ke._({})}),new s.vA({minHeight:"470px",height:"calc(100vh - 500px)",body:new F.i({})})]}),testId:L.b.exploreServiceDetails.tabLogs},{displayName:"Labels",value:v.G3.labels,getScene:()=>new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:je.yV.Crosshair})],children:[new s.vA({body:new _.O({})})]}),testId:L.b.exploreServiceDetails.tabLabels},{displayName:"Fields",value:v.G3.fields,getScene:e=>{return t=e,new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:je.yV.Crosshair})],children:[new s.vA({body:new T.J6({changeFieldCount:t})})]});var t},testId:L.b.exploreServiceDetails.tabFields},{displayName:"Patterns",value:v.G3.patterns,getScene:()=>new s.G1({children:[new s.vA({body:new Ce({})})]}),testId:L.b.exploreServiceDetails.tabPatterns}],_e=[{displayName:"Label",value:v._J.label,getScene:e=>function(e){return new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:je.yV.Crosshair})],children:[new s.vA({body:new _.O({value:e})})]})}(e),testId:L.b.exploreServiceDetails.tabLabels},{displayName:"Field",value:v._J.field,getScene:e=>function(e){return new s.G1({$behaviors:[new s.Gg.K2({key:"sync",sync:je.yV.Crosshair})],children:[new s.vA({body:new T.J6({value:e})})]})}(e),testId:L.b.exploreServiceDetails.tabFields}];function Te(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}class De extends s.Bs{onActivate(){const e=s.jh.getAncestor(this,m.P).state.ds;void 0!==(null==e?void 0:e.maxLines)&&this.setState({maxLines:e.maxLines}),this.state.shareButtonScene||this.setState({shareButtonScene:new x({})})}constructor(e){super(e),this.addActivationHandler(this.onActivate.bind(this))}}!function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(De,"Component",(({model:e})=>{const t=(0,l.useStyles2)($e);let n=(0,v.FT)(),r=!1;if(!Object.values(v.G3).includes(n)){const e=(0,v.er)();r=!0,e===v._J.field&&(n=v.G3.fields),e===v._J.label&&(n=v.G3.labels)}const o=s.jh.getAncestor(e,tt),u=o.useState(),{loading:d,$data:g,logsCount:m,totalLogsCount:b}=u,y=Te(u,["loading","$data","logsCount","totalLogsCount"]),{maxLines:S}=e.useState(),w=y.loadingStates;return a().createElement(l.Box,{paddingY:0},a().createElement("div",{className:t.actions},a().createElement(l.Stack,{gap:1},e.state.shareButtonScene&&a().createElement(e.state.shareButtonScene.Component,{model:e.state.shareButtonScene}))),a().createElement(l.TabsBar,null,Le.map(((e,t)=>a().createElement(l.Tab,{"data-testid":e.testId,key:t,label:e.displayName,active:n===e.value,counter:w[e.displayName]?void 0:Ne(e,y),suffix:e.displayName===Fe.logs?({className:e})=>function(e,t,n,r){const s=(0,l.useStyles2)(Ie),o=(0,i.getValueFormat)("short");if(void 0===t&&void 0!==n&&n{(e.value&&e.value!==n||r)&&(0,f.EE)(f.NO.service_details,f.ir.service_details.action_view_changed,{newActionView:e.value,previousActionView:n})}})))))}));const Ne=(e,t)=>{switch(e.value){case"fields":return t.fieldsCount;case"patterns":return t.patternsCount;case"labels":return t.labelsCount;default:return}};function $e(e){return{actions:(0,h.css)({display:"flex",justifyContent:"flex-end",[e.breakpoints.up(e.breakpoints.values.md)]:{position:"absolute",right:0,zIndex:2}})}}function Ie(e){return{emptyCountStyles:(0,h.css)({display:"inline-block",fontSize:e.typography.bodySmall.fontSize,minWidth:"1em",marginLeft:e.spacing(1),padding:e.spacing(.25,1)}),logsCountStyles:(0,h.css)({fontSize:e.typography.bodySmall.fontSize,label:"counter",marginLeft:e.spacing(1),borderRadius:e.spacing(3),backgroundColor:e.colors.action.hover,padding:e.spacing(.25,1),color:e.colors.text.secondary,fontWeight:e.typography.fontWeightMedium})}}var Be=n(7389),Ae=n(7796),Me=n(6854);function Re(e,t){const n=["^","$",".","*","+","?","(",")","[","]","{","}","|"];return t||n.push("\\"),e.split("").filter(((e,t,r)=>{const a=r[t+1],i=n.includes(a);return!("\\"===e&&i)})).join("")}var Ve=n(2245),We=n(2085),ze=n(708);function He(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qe(e){for(var t=1;te.refId===Ge))}function Je(e){var t,n,r;return null===(r=s.jh.getAncestor(e,tt).state.$detectedLabelsData)||void 0===r||null===(n=r.state.data)||void 0===n||null===(t=n.series)||void 0===t?void 0:t[0]}function Ye(e){var t;const n=s.jh.getAncestor(e,tt);return Xe(null===(t=n.state.$detectedFieldsData)||void 0===t?void 0:t.state)}const Xe=e=>{var t,n;return null==e||null===(n=e.data)||void 0===n||null===(t=n.series)||void 0===t?void 0:t[0]},Ze=e=>{var t,n,r,a;return null===(a=e.data)||void 0===a||null===(r=a.series)||void 0===r||null===(n=r[0])||void 0===n||null===(t=n.fields)||void 0===t?void 0:t[0]},et=e=>{var t,n,r,a;return null===(a=e.data)||void 0===a||null===(r=a.series)||void 0===r||null===(n=r[0])||void 0===n||null===(t=n.fields)||void 0===t?void 0:t[2]};class tt extends s.Bs{setSubscribeToLabelsVariable(){const e=(0,Q.cR)(this);0!==e.state.filters.length?this._subs.add(e.subscribeToState(((e,t)=>{0===e.filters.length&&this.redirectToStart();let{labelName:n,labelValue:r,breakdownLabel:a}=(0,v.W6)();n===u.ky&&(n=u.OX);const i=s.jh.getAncestor(this,m.P),l=i.state.routeMatch;if(e.filters.some((e=>e.key===n&&(0,ze.BG)(e.operator)&&(0,Be.uu)(e.value)===r))){if(!(0,g.B)(e.filters,t.filters)){var o,c,d,h;null===(o=this.state.$patternsData)||void 0===o||o.runQueries(),null===(c=this.state.$detectedLabelsData)||void 0===c||c.runQueries(),null===(d=this.state.$detectedFieldsData)||void 0===d||d.runQueries(),null===(h=this.state.$logsCount)||void 0===h||h.runQueries()}}else{const t=e.filters.find((e=>(0,ze.BG)(e.operator)&&e.value!==u.ZO));if(t){const e=(0,u.zE)(t.value)?(0,Be.uu)((0,u.Dx)(t.value)):(0,Be.uu)(t.value);var f,b,y;i.setState({routeMatch:Ke(Qe({},l),{params:Ke(Qe({},null==l?void 0:l.params),{labelName:t.key===u.OX?u.ky:t.key,labelValue:e.split("|")[0]}),url:null!==(f=null==l?void 0:l.url)&&void 0!==f?f:"",path:null!==(b=null==l?void 0:l.path)&&void 0!==b?b:"",isExact:null===(y=null==l?void 0:l.isExact)||void 0===y||y})}),this.resetTabCount(),a?(0,p.fg)((0,v.er)(),a,this):(0,p.Vt)((0,v.FT)(),this)}else this.redirectToStart()}}))):this.redirectToStart()}redirectToStart(){this.setState({$data:void 0,$logsCount:void 0,body:void 0,$patternsData:void 0,$detectedLabelsData:void 0,$detectedFieldsData:void 0,patternsCount:void 0,labelsCount:void 0,fieldsCount:void 0,logsCount:void 0,totalLogsCount:void 0}),(0,d.JO)().setServiceSceneState(this.state),this._subs.unsubscribe(),(0,p.Ns)()}showVariables(){s.jh.findByKeyAndType(this,We.kz,We.qV).setState({visible:!0}),(0,Q.YS)(this).setState({hide:Ve.zL.dontHide})}getMetadata(){const e=(0,d.JO)().getServiceSceneState();e&&this.setState(Qe({},e))}onActivate(){s.jh.findByKeyAndType(this,m.y,Ae.H).setState({hidden:!0}),this.showVariables(),this.getMetadata(),this.resetBodyAndData(),this.setBreakdownView(),this.runQueries(),this._subs.add(this.subscribeToPatternsQuery()),this._subs.add(this.subscribeToDetectedLabelsQuery()),this._subs.add(this.subscribeToDetectedFieldsQuery((0,v.FT)()!==v.G3.fields)),this._subs.add(this.subscribeToLogsQuery()),this._subs.add(this.subscribeToLogsCountQuery()),this.setSubscribeToLabelsVariable(),this._subs.add(this.subscribeToFieldsVariable()),this._subs.add(this.subscribeToMetadataVariable()),this._subs.add(this.subscribeToLevelsVariableChangedEvent()),this._subs.add(this.subscribeToLevelsVariableFiltersState()),this._subs.add(this.subscribeToDataSourceVariable()),this._subs.add(this.subscribeToPatternsVariable()),this._subs.add(this.subscribeToLineFiltersVariable()),this._subs.add(this.subscribeToTimeRange()),function(e){const t=i.urlUtil.getUrlSearchParams(),n=t["var-lineFilter"];if(!Array.isArray(n)||!n.length)return;const r=n[0];if("string"!=typeof r||!r)return;const a=s.jh.getAncestor(e,m.P),l=(0,Q.Gk)(e),o=null==r?void 0:r.match(/\|=.`(.+?)`/);var c,u;o&&2===o.length&&(null===(u=a.state.body)||void 0===u||null===(c=u.state.lineFilterRenderer)||void 0===c||c.addActivationHandler((()=>{l.setState({filters:[{key:Me.ld.caseSensitive,operator:Me.cK.match,value:Re(o[1],!0),keyLabel:"0"}]})})));const d=null==r?void 0:r.match(/`\(\?i\)(.+)`/);var p,g;d&&2===d.length&&(null===(g=a.state.body)||void 0===g||null===(p=g.state.lineFilterRenderer)||void 0===p||p.addActivationHandler((()=>{l.updateFilters([{key:Me.ld.caseInsensitive,operator:Me.cK.match,value:Re(d[1],!1),keyLabel:"0"}])})));const h=b.locationService.getLocation();delete t["var-lineFilter"],b.locationService.replace(i.urlUtil.renderUrl(h.pathname,t))}(this)}subscribeToPatternsVariable(){return(0,Q.Ku)(this).subscribeToState(((e,t)=>{var n,r;e.value!==t.value&&(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToLineFiltersVariable(){return(0,Q.Gk)(this).subscribeToEvent(s.oh,(()=>{var e,t;null===(e=this.state.$logsCount)||void 0===e||e.runQueries(),null===(t=this.state.$detectedFieldsData)||void 0===t||t.runQueries()}))}subscribeToDataSourceVariable(){return(0,Q.S9)(this).subscribeToState((()=>{this.redirectToStart()}))}resetTabCount(){this.setState({fieldsCount:void 0,labelsCount:void 0,patternsCount:void 0}),(0,d.JO)().setServiceSceneState(this.state)}subscribeToFieldsVariable(){return(0,Q.ir)(this).subscribeToState(((e,t)=>{var n,r;(0,g.B)(e.filters,t.filters)||(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToMetadataVariable(){return(0,Q.oY)(this).subscribeToState(((e,t)=>{var n,r;(0,g.B)(e.filters,t.filters)||(null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries())}))}subscribeToLevelsVariableChangedEvent(){return(0,Q.iw)(this).subscribeToEvent(s.oh,(()=>{var e;null===(e=this.state.$detectedFieldsData)||void 0===e||e.runQueries()}))}subscribeToLevelsVariableFiltersState(){return(0,Q.iw)(this).subscribeToState(((e,t)=>{var n;(0,g.B)(e.filters,t.filters)||(null===(n=this.state.$logsCount)||void 0===n||n.runQueries())}))}runQueries(){const e=(0,v.FT)(),t=(0,v.er)();var n,r,a,i;e!==v.G3.patterns&&void 0!==this.state.patternsCount||(null===(n=this.state.$patternsData)||void 0===n||n.runQueries());e!==v.G3.labels&&t!==v._J.label&&void 0!==this.state.labelsCount||(null===(r=this.state.$detectedLabelsData)||void 0===r||r.runQueries());e!==v.G3.fields&&t!==v._J.field&&void 0!==this.state.fieldsCount||(null===(a=this.state.$detectedFieldsData)||void 0===a||a.runQueries());void 0===this.state.logsCount&&(null===(i=this.state.$logsCount)||void 0===i||i.runQueries())}subscribeToPatternsQuery(){var e;return null===(e=this.state.$patternsData)||void 0===e?void 0:e.subscribeToState((e=>{var t;if(this.updateLoadingState(e,Fe.patterns),(null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){const t=e.data.series;void 0!==(null==t?void 0:t.length)&&(this.setState({patternsCount:t.length}),(0,d.JO)().setPatternsCount(t.length))}}))}subscribeToDetectedLabelsQuery(){var e;return null===(e=this.state.$detectedLabelsData)||void 0===e?void 0:e.subscribeToState((e=>{var t;if(this.updateLoadingState(e,Fe.labels),(null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){const t=e.data,n=t.series[0].fields;if(void 0!==t.series.length&&void 0!==n.length){const e=t.series[0].fields.filter((e=>u.e4!==e.name));this.setState({labelsCount:e.length+1}),(0,d.JO)().setLabelsCount(n.length)}}}))}updateLoadingState(e,t){var n;const r=this.state.loadingStates;r[t]=(null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Loading;const a=Object.values(r).some((e=>e));this.setState({loading:a,loadingStates:r})}subscribeToLogsQuery(){var e;return null===(e=this.state.$data)||void 0===e?void 0:e.subscribeToState(((e,t)=>{var n,r;if(this.updateLoadingState(e,Fe.logs),(null===(n=e.data)||void 0===n?void 0:n.state)===i.LoadingState.Done||(null===(r=e.data)||void 0===r?void 0:r.state)===i.LoadingState.Streaming){var a,s;const t=null!==(s=null===(a=e.data.series[0])||void 0===a?void 0:a.length)&&void 0!==s?s:0;t!==this.state.logsCount&&this.setState({logsCount:t})}}))}subscribeToLogsCountQuery(){var e;return null===(e=this.state.$logsCount)||void 0===e?void 0:e.subscribeToState((e=>{var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===i.LoadingState.Done){var n,r,a,s;const t=null===(s=e.data.series[0])||void 0===s||null===(a=s.fields)||void 0===a||null===(r=a[1])||void 0===r||null===(n=r.values)||void 0===n?void 0:n[0];this.setState({totalLogsCount:t})}}))}subscribeToDetectedFieldsQuery(e){var t;return null===(t=this.state.$detectedFieldsData)||void 0===t?void 0:t.subscribeToState((t=>{var n;if(this.updateLoadingState(t,Fe.fields),e&&(null===(n=t.data)||void 0===n?void 0:n.state)===i.LoadingState.Done){const e=t.data.series[0];void 0!==e&&e.length!==this.state.fieldsCount&&(this.setState({fieldsCount:e.length}),(0,d.JO)().setFieldsCount(e.length))}}))}subscribeToTimeRange(){return s.jh.getTimeRange(this).subscribeToState((()=>{var e,t,n,r;null===(e=this.state.$patternsData)||void 0===e||e.runQueries(),null===(t=this.state.$detectedLabelsData)||void 0===t||t.runQueries(),null===(n=this.state.$detectedFieldsData)||void 0===n||n.runQueries(),null===(r=this.state.$logsCount)||void 0===r||r.runQueries()}))}resetBodyAndData(){let e={};this.state.$data||(e.$data=st()),this.state.$patternsData||(e.$patternsData=rt()),this.state.$detectedLabelsData||(e.$detectedLabelsData=at()),this.state.$detectedFieldsData||(e.$detectedFieldsData=it()),this.state.$logsCount||(e.$logsCount=lt()),this.state.body||(e.body=nt()),Object.keys(e).length&&this.setState(e)}setBreakdownView(){const{body:e}=this.state,t=(0,v.FT)(),n=Le.find((e=>e.value===t));if(!e){const e=new Error("body is not defined in setBreakdownView!");throw N.v.error(e,{msg:"ServiceScene setBreakdownView error"}),e}if(n)e.setState({children:[...e.state.children.slice(0,1),n.getScene((e=>{"fields"===n.value&&this.setState({fieldsCount:e})}))]});else{const t=(0,v.er)(),n=_e.find((e=>e.value===t));n&&this.state.drillDownLabel?e.setState({children:[...e.state.children.slice(0,1),n.getScene(this.state.drillDownLabel)]}):N.v.error(new Error("not setting breakdown view"),{msg:"setBreakdownView error"})}}constructor(e){var t;super(Qe({loadingStates:{[Fe.patterns]:!1,[Fe.labels]:!1,[Fe.fields]:!1,[Fe.logs]:!1},loading:!0,body:null!==(t=e.body)&&void 0!==t?t:nt(),$data:st(),$patternsData:rt(),$detectedLabelsData:at(),$detectedFieldsData:it(),$logsCount:lt()},e)),He(this,"_variableDependency",new s.Sh(this,{variableNames:[u.EY,u.MB,u.mB,u.uw,u._Y]})),this.addActivationHandler(this.onActivate.bind(this))}}function nt(){return new s.G1({direction:"column",children:[new s.vA({ySizing:"content",body:new De({})})]})}function rt(){return(0,o.FH)([(0,c.BM)(`{${u.S1}}`,"patterns",{refId:"patterns"})])}function at(){return(0,o.FH)([(0,c.BM)(`{${u.S1}}`,"detected_labels",{refId:"detectedLabels"})])}function it(){return(0,o.FH)([(0,c.BM)(u.SA,"detected_fields",{refId:"detectedFields"})])}function st(){return(0,o.rS)([(0,c.l)(u.SA,{refId:Ge})])}function lt(){const e=(0,o.rS)([(0,c.l)(`sum(count_over_time(${u.SA}[$__auto]))`,{refId:Ue,queryType:"instant"})],{runQueriesMode:"manual"});if(e instanceof s.dt)return e;const t=new Error("log count query provider is not query runner!");throw N.v.error(t,{msg:"getLogCountQueryRunner: invalid return type"}),t}He(tt,"Component",(({model:e})=>{const{body:t}=e.useState();return t?a().createElement(t.Component,{model:t}):a().createElement(l.LoadingPlaceholder,{text:"Loading..."})}))},577:(e,t,n)=>{n.d(t,{p:()=>g});var r,a,i,s=n(9736),l=n(5959),o=n.n(l),c=n(2007),u=n(6089),d=n(4351),p=n(696);class g extends s.Bs{setHover(e){this.setState({hover:e})}onClick(e){e?(0,p.wy)(this.state.labelName,this.state.labelValue,this):(0,p._J)(this.state.labelName,this.state.labelValue,this)}}i=({model:e})=>{const{ds:t,labelValue:n,labelName:r,hover:a}=e.useState(),i=(0,d.eT)(t,r).includes(n),s=(0,c.useStyles2)((e=>({wrapper:(0,u.css)({display:"flex",flexDirection:"column",justifyContent:"center",alignSelf:"center"})}))),l=i?`Remove ${n} from favorites`:`Add ${n} to favorites`;return o().createElement("span",{className:s.wrapper},o().createElement(c.ToolbarButton,{onMouseOver:()=>{e.setHover(!0)},onMouseOut:()=>{e.setHover(!1)},icon:o().createElement(c.Icon,{name:i?"favorite":"star",size:"lg",type:i?"mono":"default"}),color:i?"rgb(235, 123, 24)":"#ccc",onClick:()=>e.onClick(i),name:"star","aria-label":l,tooltip:l}))},(a="Component")in(r=g)?Object.defineProperty(r,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[a]=i},173:(e,t,n)=>{n.d(t,{X:()=>ue,y:()=>ge});var r=n(6089),a=n(3241),i=n(5959),s=n.n(i),l=n(7781),o=n(9736),c=n(2007),u=n(4351),d=n(20),p=n(4509),g=n(7478),h=n(5553),f=n(6854),v=n(3571),m=n(696);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class y extends o.Bs{onActivate(){const e=(0,h.cR)(this);this.setState({hidden:e.state.filters.length>0}),e.subscribeToState((e=>{this.setState({hidden:e.filters.length>0})}))}constructor(e){super(e),b(this,"getLink",(()=>{if(this.state.labelValue)return w(this.state.labelName,this.state.labelValue,this)})),b(this,"onClick",(()=>{S(this.state.labelName,this.state.labelValue,this)})),this.addActivationHandler(this.onActivate.bind(this))}}function S(e,t,n){(0,p.EE)(p.NO.service_selection,p.ir.service_selection.service_selected,{value:t,label:e}),(0,m._J)(e,t,n)}function w(e,t,n){var r;const a=(0,h.cR)(n),i=[...a.state.filters.filter((n=>!(n.key===e&&n.value===t))),{key:e,operator:f.w7.Equal,value:t}];e===d.OX&&(e=d.ky);const s=a.clone({filters:i});return(0,g.k9)(e,t,null===(r=s.urlSync)||void 0===r?void 0:r.getUrlState())}function O(e){return{button:(0,r.css)({alignSelf:"center"})}}b(y,"Component",(({model:e})=>{const t=(0,c.useStyles2)(O);(0,h.cR)(e).useState();const{hidden:n}=e.useState();if(n)return null;const r=e.getLink();return s().createElement(c.LinkButton,{"data-testid":v.b.index.selectServiceButton,tooltip:`View logs for ${e.state.labelValue}`,className:t.button,variant:"primary",fill:"outline",size:"sm",disabled:!r,href:e.getLink(),onClick:e.onClick},"Show logs")}));var x=n(7985),E=n(1475),C=n(7191);const P=()=>s().createElement(C.R,null,s().createElement("p",null,"Log volume has not been configured."),s().createElement("p",null,s().createElement(c.TextLink,{href:"https://grafana.com/docs/loki/latest/reference/api/#query-log-volume",external:!0},"Instructions to enable volume in the Loki config:")),s().createElement(c.Text,{textAlignment:"left"},s().createElement("pre",null,s().createElement("code",null,"limits_config:",s().createElement("br",null),"  volume_enabled: true")))),k=()=>s().createElement(C.R,null,s().createElement("p",null,"No service matched your search."));var j=n(5570),F=n(7243),L=n(4702),_=n(1532),T=n(8531),D=n(2245),N=n(9731),$=n(2661),I=n(5002);function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function A(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}class M extends o.Bs{}B(M,"Component",(({model:e})=>{const t=o.jh.getAncestor(e,ge),n=o.jh.getAncestor(e,H),{tabOptions:r,showPopover:a}=n.useState(),i=(0,c.useStyles2)(R),l=r.map((e=>A(function(e){for(var t=1;t{n.toggleShowPopover()},autoFocus:!0,isOpen:a,placeholder:"Search labels",options:l,isSearchable:!0,openMenuOnFocus:!0,onChange:e=>{e.value&&(n.toggleShowPopover(),t.setSelectedTab(e.value))}})))}));const R=e=>({card:{body:(0,r.css)({padding:e.spacing(1)}),p:(0,r.css)({maxWidth:300})}});function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W(e){for(var t=1;t{var e;return null===(e=this.state.$labelsData)||void 0===e?void 0:e.state})()){var t;return null===(t=e.data)||void 0===t?void 0:t.series[0].fields.map((e=>({label:e.name,cardinality:e.values[0]})))}populatePrimaryLabelsVariableOptions(e){const t=o.jh.getAncestor(this,ge).getSelectedTab(),n=(0,u.sj)((0,h.S9)(this).getValue().toString()),r=e.map((e=>{const r=n.indexOf(e.label);return{label:e.label===d.OX?d.ky:e.label,value:e.label,active:t===e.label,saved:-1!==r,savedIndex:r}})).sort(((e,t)=>e.value===d.OX||t.value===d.OX?e.value===d.OX?-1:1:e.labelt.label?1:0));this.setState({tabOptions:r})}runDetectedLabels(){this.state.$labelsData.runQueries()}runDetectedLabelsSubs(){this._subs.add(o.jh.getTimeRange(this).subscribeToState((()=>{this.runDetectedLabels()}))),this._subs.add((0,h.S9)(this).subscribeToState((()=>{this.runDetectedLabels()})))}onActivate(){this.runDetectedLabels(),this.setState({popover:new M({})}),this.runDetectedLabelsSubs(),this._subs.add((0,h.S9)(this).subscribeToState((()=>{this.state.$labelsData.runQueries()}))),this._subs.add((0,h.El)(this).subscribeToState((()=>{var e;const t=this.getLabelsFromQueryRunnerState(null===(e=this.state.$labelsData)||void 0===e?void 0:e.state);t&&this.populatePrimaryLabelsVariableOptions(t)}))),this._subs.add(this.state.$labelsData.subscribeToState((e=>{var t;if((null===(t=e.data)||void 0===t?void 0:t.state)===l.LoadingState.Done){const t=this.getLabelsFromQueryRunnerState(e),n=o.jh.getAncestor(this,ge);t&&this.populatePrimaryLabelsVariableOptions(t);const r=n.getSelectedTab();(null==t?void 0:t.some((e=>e.label===r)))||n.selectDefaultLabelTab()}})))}constructor(e){super(W({showPopover:!1,$labelsData:(0,E.HF)({queries:[(0,x.BM)("","detected_labels")],runQueriesMode:"manual"}),tabOptions:[{label:d.ky,value:d.OX,saved:!0}]},e)),V(this,"removeSavedTab",(e=>{(0,u.Gg)((0,h.S9)(this).getValue().toString(),e);const t=this.getLabelsFromQueryRunnerState();t&&this.populatePrimaryLabelsVariableOptions(t);const n=o.jh.getAncestor(this,ge);n.getSelectedTab()===e&&n.selectDefaultLabelTab()})),V(this,"toggleShowPopover",(()=>{this.setState({showPopover:!this.state.showPopover})})),this.addActivationHandler(this.onActivate.bind(this))}}V(H,"Component",(({model:e})=>{const{tabOptions:t,showPopover:n,popover:u,$labelsData:p}=e.useState(),{data:g}=p.useState(),f=o.jh.getAncestor(e,ge);(0,h.El)(e).useState();const v=(0,c.useStyles2)(Q),m=(0,i.useRef)(null);return s().createElement(c.TabsBar,{className:v.tabs},t.filter((e=>e.saved||e.active||e.value===d.OX)).sort(((e,t)=>{return e.value===d.OX||t.value===d.OX?e.value===d.OX?-1:1:(null!==(n=e.savedIndex)&&void 0!==n?n:0)-(null!==(r=t.savedIndex)&&void 0!==r?r:0);var n,r})).map((t=>{const n=s().createElement(c.Tab,{key:t.value,onChangeTab:()=>{f.setSelectedTab(t.value)},label:(0,I.EJ)(t.label,15,!0),active:t.active,suffix:t.value!==d.OX?n=>s().createElement(s().Fragment,null,s().createElement(c.Tooltip,{content:"Remove tab"},s().createElement(c.Icon,{onKeyDownCapture:n=>{"Enter"===n.key&&e.removeSavedTab(t.value)},onClick:n=>{n.stopPropagation(),e.removeSavedTab(t.value)},name:"times",className:(0,r.cx)(n.className)}))):void 0});return t.label.length>15?s().createElement(c.Tooltip,{key:t.value,content:t.label},n):n})),(null==g?void 0:g.state)===l.LoadingState.Loading&&s().createElement(c.Tab,{label:"Loading tabs",icon:"spinner"}),(null==g?void 0:g.state)===l.LoadingState.Done&&s().createElement("span",{className:v.addTab},s().createElement(c.Tab,{onChangeTab:e.toggleShowPopover,label:"Add label",ref:m,icon:"plus-circle"})),u&&s().createElement(c.PopoverController,{content:s().createElement(u.Component,{model:u})},((e,t,r)=>{const i={onBlur:t,onFocus:e};return s().createElement(s().Fragment,null,m.current&&s().createElement(s().Fragment,null,s().createElement(c.Popover,W(z(W({},r,a.rest),{show:n,wrapperClassName:v.popover,referenceElement:m.current,renderArrow:!0}),i))))})))}));const Q=e=>({tabs:(0,r.css)({overflowY:"hidden"}),addTab:(0,r.css)({label:"add-label-tab",color:e.colors.primary.text,"& button":{color:e.colors.primary.text}}),popover:(0,r.css)({borderRadius:e.shape.radius.default,boxShadow:e.shadows.z3,background:e.colors.background.primary,border:`1px solid ${e.colors.border.weak}`})});var K=n(577);const G=e=>s().createElement(C.R,null,s().createElement("p",null,"No logs found in ",s().createElement("strong",null,e.labelName),".",s().createElement("br",null),"Please adjust time range or select another label."));var U=n(5719),q=n(9405);function J(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Y(e){for(var t=1;t{const e=this.isSelected();this.state.included!==e.included&&this.setState(Y({},e))})))}getFilter(){return{name:this.state.name,value:this.state.value}}constructor(e){super(X(Y({},e),{included:null})),J(this,"isSelected",(()=>{const e=(0,h.cR)(this).state.filters.find((e=>{const t=(0,h.z2)(d.MB,e);return e.key===this.state.name&&t.value===this.state.value}));return e?{included:e.operator===f.w7.Equal}:{included:!1}})),J(this,"onClick",(e=>{const t=this.getFilter();(0,q.Qt)(t.name,t.value,e,this,d.MB);const n=(0,h.cR)(this);(0,p.EE)(p.NO.service_selection,p.ir.service_selection.add_to_filters,{filterType:"index-filters",key:t.name,action:e,filtersLength:(null==n?void 0:n.state.filters.length)||0}),this.setState(Y({},this.isSelected()))})),this.addActivationHandler(this.onActivate.bind(this))}}J(Z,"Component",(({model:e})=>{const{value:t,included:n}=e.useState(),r=(0,c.useStyles2)(ee);return s().createElement("span",{className:r.wrapper},s().createElement(c.Button,{tooltip:!0===n?`Remove ${t} from filters`:`Add ${t} to filters`,variant:"secondary",fill:"outline",size:"sm","aria-selected":!0===n,className:r.includeButton,onClick:()=>!0===n?e.onClick("clear"):e.onClick("include"),"data-testid":v.b.exploreServiceDetails.buttonFilterInclude},n?"Remove":"Include"))}));const ee=()=>({container:(0,r.css)({display:"flex",justifyContent:"center"}),includeButton:(0,r.css)({borderRadius:0}),wrapper:(0,r.css)({display:"flex",flexDirection:"column",justifyContent:"center",alignSelf:"center"})});var te=n(7796);function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class re extends o.Bs{}function ae(e){return{icon:(0,r.css)({color:e.colors.text.disabled,marginLeft:e.spacing.x1}),searchPageCountWrap:(0,r.css)({display:"flex",alignItems:"center"}),select:(0,r.css)({maxWidth:"65px",marginLeft:e.spacing(1),marginRight:e.spacing(1)}),searchFieldPlaceholderText:(0,r.css)({fontSize:e.typography.bodySmall.fontSize,color:e.colors.text.disabled,alignItems:"center",display:"flex",flex:"1 0 auto",textWrapMode:"nowrap"})}}function ie(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function se(e){for(var t=1;t{const n=(0,c.useStyles2)(ae),r=o.jh.getAncestor(e,ge),{countPerPage:a}=r.useState(),l=function(e){const t=20,n=60,r=Math.ceil(e/t)*t,a=[];for(let i=t;i<=n&&i<=r;i+=t){let n=i.toString();ie&&(n=e.toString()),a.push({value:i.toString(),label:n})}return a}(t);return(0,i.useEffect)((()=>{var e,t;const n=null!==(t=null===(e=l[l.length-1])||void 0===e?void 0:e.value)&&void 0!==t?t:a.toString();a.toString()>n&&r.setState({countPerPage:parseInt(n,10)})}),[a,l,r]),s().createElement("span",{className:n.searchPageCountWrap},s().createElement("span",{className:n.searchFieldPlaceholderText},"Showing"," ",s().createElement(c.Select,{className:n.select,onChange:e=>{if(e.value){const t=parseInt(e.value,10);r.setState({countPerPage:t,currentPage:1}),r.updateBody(),(0,u.uF)(t)}},options:l,value:a.toString()})," ","of ",t," ",s().createElement(c.IconButton,{className:n.icon,"aria-label":"Count info",name:"info-circle",tooltip:`${t} labels have values for the selected time range. Total label count may differ`})))})),ne(re,"Component",(({model:e,totalCount:t})=>{const n=o.jh.getAncestor(e,ge),{countPerPage:a,currentPage:i}=n.useState(),l=(0,c.useStyles2)((e=>({pagination:(0,r.css)({float:"none"}),paginationWrap:(0,r.css)({[e.breakpoints.up("lg")]:{display:"none"},[e.breakpoints.down("lg")]:{display:"flex",justifyContent:"flex-end",flex:"1 0 auto"}}),paginationWrapMd:(0,r.css)({[e.breakpoints.down("lg")]:{display:"none"},[e.breakpoints.up("lg")]:{display:"flex",justifyContent:"flex-end",flex:"1 0 auto"}})})));return t>a?s().createElement(s().Fragment,null,s().createElement("span",{className:l.paginationWrapMd},s().createElement(c.Pagination,{className:l.pagination,currentPage:i,numberOfPages:Math.ceil(t/a),onNavigate:e=>{n.setState({currentPage:e}),n.updateBody()}})),s().createElement("span",{className:l.paginationWrap},s().createElement(c.Pagination,{showSmallVersion:!0,className:l.pagination,currentPage:i,numberOfPages:Math.ceil(t/a),onNavigate:e=>{n.setState({currentPage:e}),n.updateBody()}}))):null}));const oe=T.config.featureToggles.exploreLogsAggregatedMetrics,ce="__aggregated_metric__",ue=(0,l.dateTime)("2024-08-30","YYYY-MM-DD");const de="var-primary_label",pe="var-ds";class ge extends o.Bs{getUrlState(){const{key:e}=he(),t=(0,h.El)(this).state.filters[0];return t.key&&t.key!==e&&(0,h.El)(this).setState({filters:[le(se({},t),{key:null!=e?e:t.key})]}),{}}updateFromUrl(e){}addDatasourceChangeToBrowserHistory(e){const t=T.locationService.getLocation(),n=new URLSearchParams(t.search),r=n.get(pe);if(r&&e!==r){const r=t.pathname+t.search;n.set(pe,e);const a=t.pathname+"?"+n.toString();r!==a&&(0,g.ad)(a)}}addLabelChangeToBrowserHistory(e,t=!1){const{key:n,search:r,location:a}=he();if(n){const i=null==n?void 0:n.split("|");if((null==i?void 0:i[0])!==e){i[0]=e,r.set(de,i.join("|"));const n=a.pathname+a.search,s=a.pathname+"?"+r.toString();n!==s&&(t?T.locationService.replace(s):(0,g.ad)(s))}}}getSelectedTab(){var e;return null===(e=(0,h.El)(this).state.filters[0])||void 0===e?void 0:e.key}selectDefaultLabelTab(){this.addLabelChangeToBrowserHistory(d.OX,!0),this.setSelectedTab(d.OX)}setSelectedTab(e){(0,u.cO)((0,h.S9)(this).getValue().toString(),e),(0,h.h)(this),(0,h.BL)(e,this)}buildServiceLayout(e,t,n,r,a,i){var s;let u;n.to.diff(n.from,"hours")>=4&&n.to.diff(n.from,"hours")<=26&&(u="2h");const p=[];var g;this.isAggregatedMetricsActive()||p.push(new Z({name:e,value:t})),p.push(new y({labelValue:t,labelName:e}));const h=o.d0.timeseries().setTitle(t).setData((0,E.rS)([(0,x.l)(this.getMetricExpression(t,r,a),{legendFormat:`{{${d.e4}}}`,splitDuration:u,refId:`ts-${t}`,step:r.state.value===ce?"10s":void 0})],{runQueriesMode:"manual"})).setCustomFieldConfig("stacking",{mode:c.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setCustomFieldConfig("drawStyle",c.DrawStyle.Bars).setUnit("short").setOverrides(E.jC).setOption("legend",{showLegend:!0,calcs:["sum"],placement:"right",displayMode:c.LegendDisplayMode.Table}).setHeaderActions([new K.p({ds:null!==(g=null===(s=i.getValue())||void 0===s?void 0:s.toString())&&void 0!==g?g:"",labelName:e,labelValue:t}),...p]).build();h.setState({extendPanelContext:(n,r)=>this.extendTimeSeriesLegendBus(e,t,r,h)});const f=new o.xK({$behaviors:[new o.Gg.K2({key:"serviceCrosshairSync",sync:l.DashboardCursorSync.Crosshair})],body:h});return f.addActivationHandler((()=>{var e;(null===(e=(0,U.oh)(f)[0].state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runPanelQuery(f)})),f}isAggregatedMetricsActive(){const e=this.getQueryOptionsToolbar();return!(null==e?void 0:e.state.options.aggregatedMetrics.disabled)&&(null==e?void 0:e.state.options.aggregatedMetrics.active)}formatPrimaryLabelForUI(){const e=this.getSelectedTab();return e===d.OX?d.ky:e}setVolumeQueryRunner(){this.setState({$data:(0,E.HF)({queries:[(0,x.$k)(`{${d.kl}, ${d.ll}}`,"volume",this.getSelectedTab())],runQueriesMode:"manual"})}),this.subscribeToVolume()}doVariablesNeedSync(){const e=(0,h.cR)(this),t=(0,h.aW)(this),n=this.getSelectedTab(),r=e.state.filters.filter((e=>e.key!==n));return{filters:r,needsSync:!(0,_.B)(r,t.state.filters)}}syncVariables(){const e=(0,h.aW)(this),{filters:t,needsSync:n}=this.doVariablesNeedSync();n&&e.setState({filters:t})}onActivate(){var e;this.fixRequiredUrlParams(),this.syncVariables(),this.setVolumeQueryRunner(),this.subscribeToPrimaryLabelsVariable(),this.subscribeToLabelFilterChanges(),this.subscribeToActiveTabVariable((0,h.El)(this)),(null===(e=this.state.$data.state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runVolumeOnActivate(),this.subscribeToTimeRange(),this.subscribeToDatasource(),this.subscribeToAggregatedMetricToggle(),this.subscribeToAggregatedMetricVariable()}runVolumeOnActivate(){var e,t;this.isTimeRangeTooEarlyForAggMetrics()?(this.onUnsupportedAggregatedMetricTimeRange(),(null===(e=this.state.$data.state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runVolumeQuery()):(this.onSupportedAggregatedMetricTimeRange(),(null===(t=this.state.$data.state.data)||void 0===t?void 0:t.state)!==l.LoadingState.Done&&this.runVolumeQuery())}subscribeToAggregatedMetricToggle(){var e;this._subs.add(null===(e=this.getQueryOptionsToolbar())||void 0===e?void 0:e.subscribeToState(((e,t)=>{e.options.aggregatedMetrics.userOverride!==t.options.aggregatedMetrics.userOverride&&this.runVolumeQuery(!0)})))}subscribeToDatasource(){this._subs.add((0,h.S9)(this).subscribeToState((e=>{this.addDatasourceChangeToBrowserHistory(e.value.toString()),this.runVolumeQuery()})))}subscribeToActiveTabVariable(e){this._subs.add(e.subscribeToState(((e,t)=>{if(e.filterExpression!==t.filterExpression){const t=e.filters[0].key;this.addLabelChangeToBrowserHistory(t);const{needsSync:n}=this.doVariablesNeedSync();n?this.syncVariables():this.runVolumeQuery(!0)}})))}subscribeToAggregatedMetricVariable(){this._subs.add((0,h.vm)(this).subscribeToState(((e,t)=>{e.value!==t.value&&(this.setState({body:new o.gF({children:[]})}),this.updateBody(!0))})))}subscribeToPrimaryLabelsVariable(){const e=(0,h.cR)(this);this._subs.add(e.subscribeToState(((e,t)=>{(0,_.B)(e.filters,t.filters)||this.syncVariables()})))}subscribeToLabelFilterChanges(){const e=(0,h.aW)(this);this._subs.add(e.subscribeToState(((e,t)=>{(0,_.B)(e.filters,t.filters)||this.runVolumeQuery(!0)})))}subscribeToVolume(){this._subs.add(this.state.$data.subscribeToState(((e,t)=>{var n,r,a;(null===(n=e.data)||void 0===n?void 0:n.state)!==l.LoadingState.Done||(0,_.B)(null==t||null===(r=t.data)||void 0===r?void 0:r.series,null==e||null===(a=e.data)||void 0===a?void 0:a.series)||this.updateBody(!0)})))}subscribeToTimeRange(){this._subs.add(o.jh.getTimeRange(this).subscribeToState((()=>{this.isTimeRangeTooEarlyForAggMetrics()?this.onUnsupportedAggregatedMetricTimeRange():this.onSupportedAggregatedMetricTimeRange(),this.runVolumeQuery()})))}fixRequiredUrlParams(){const{key:e}=he();e||this.selectDefaultLabelTab()}isTimeRangeTooEarlyForAggMetrics(){return o.jh.getTimeRange(this).state.value.from.isBefore((0,l.dateTime)(ue))}onUnsupportedAggregatedMetricTimeRange(){const e=this.getQueryOptionsToolbar();null==e||e.setState({options:{aggregatedMetrics:le(se({},null==e?void 0:e.state.options.aggregatedMetrics),{disabled:!0})}})}getQueryOptionsToolbar(){return o.jh.getAncestor(this,$.P).state.controls.find((e=>e instanceof N.s))}onSupportedAggregatedMetricTimeRange(){const e=this.getQueryOptionsToolbar();null==e||e.setState({options:{aggregatedMetrics:le(se({},null==e?void 0:e.state.options.aggregatedMetrics),{disabled:!1})}})}runVolumeQuery(e=!1){e&&this.setVolumeQueryRunner(),this.updateAggregatedMetricVariable(),this.state.$data.runQueries()}updateAggregatedMetricVariable(){const e=(0,h.vm)(this),t=(0,h.cR)(this);if(this.isTimeRangeTooEarlyForAggMetrics()&&oe||!this.isAggregatedMetricsActive()){e.changeValueTo(d.OX),t.setState({hide:D.zL.dontHide}),e.changeValueTo(d.OX);o.jh.findByKeyAndType(this,$.y,te.H).setState({hidden:!1})}else{e.changeValueTo(ce),t.setState({hide:D.zL.hideVariable,filters:[]});o.jh.findByKeyAndType(this,$.y,te.H).setState({hidden:!0})}}updateTabs(){if(!this.state.tabs){const e=new H({});this.setState({tabs:e})}}getGridItems(){return this.state.body.state.children}getVizPanel(e){return e.state.body instanceof o.Eb?e.state.body:void 0}runPanelQuery(e){if(e.isActive){const n=(0,U.oh)(e);if(1===n.length){var t;const e=n[0],r=e.state.queries[0],a=null===(t=e.state.data)||void 0===t?void 0:t.timeRange,i=o.jh.getTimeRange(this),s=a?Math.abs(i.state.value.from.diff(null==a?void 0:a.from,"s")):1/0,l=a?Math.abs(i.state.value.to.diff(null==a?void 0:a.to,"s")):1/0,c=o.jh.interpolate(this,r.expr);(e.state.key!==c||s>0||l>0)&&(e.setState({key:c}),e.runQueries())}}}updateBody(e=!1){var t;const{labelsToQuery:n}=this.getLabels(null===(t=this.state.$data.state.data)||void 0===t?void 0:t.series),r=this.getSelectedTab();if(this.updateTabs(),this.state.paginationScene||this.setState({paginationScene:new re({})}),n&&0!==n.length){const t=[],a=this.getGridItems(),i=o.jh.getTimeRange(this).state.value,s=(0,h.vm)(this),l=(0,h.El)(this),c=(0,h.S9)(this),u=(this.state.currentPage-1)*this.state.countPerPage,d=u+this.state.countPerPage;for(const o of n.slice(u,d)){const n=a.filter((e=>{const t=this.getVizPanel(e);return(null==t?void 0:t.state.title)===o}));if(2===n.length)t.push(n[0],n[1]),n[0].isActive&&e&&this.runPanelQuery(n[0]),n[1].isActive&&e&&this.runPanelQuery(n[1]);else{const e=this.buildServiceLayout(r,o,i,s,l,c),n=this.buildServiceLogsLayout(r,o);t.push(e,n)}}this.state.body.setState({children:t,isLazy:!0,templateColumns:"repeat(auto-fit, minmax(350px, 1fr) minmax(300px, calc(70vw - 100px)))",autoRows:"200px",md:{templateColumns:"1fr",rowGap:1,columnGap:1}})}else this.state.body.setState({children:[]})}updateServiceLogs(e,t){var n;if(!this.state.body)return void this.updateBody();const{labelsToQuery:r}=this.getLabels(null===(n=this.state.$data.state.data)||void 0===n?void 0:n.series),a=null==r?void 0:r.indexOf(t);if(void 0===a||a<0)return;let i=[...this.getGridItems()];i.splice(2*a+1,1,this.buildServiceLogsLayout(e,t)),this.state.body.setState({children:i})}getLogExpression(e,t,n){return`{${e}=\`${t}\` , ${d.ll} }${n}`}getMetricExpression(e,t,n){const r=n.state.filters[0];return t.state.value===ce?r.key===d.OX?`sum by (${d.e4}) (sum_over_time({${ce}=\`${e}\` } | logfmt | unwrap count [$__auto]))`:`sum by (${d.e4}) (sum_over_time({${ce}=~\`.+\` } | logfmt | ${r.key}=\`${e}\` | unwrap count [$__auto]))`:`sum by (${d.e4}) (count_over_time({ ${r.key}=\`${e}\`, ${d.ll} } [$__auto]))`}getLabels(e){var t,n,r;const a=null!==(r=null==e||null===(t=e[0])||void 0===t?void 0:t.fields[0].values)&&void 0!==r?r:[],i=null===(n=(0,h.S9)(this).getValue())||void 0===n?void 0:n.toString(),s=(0,h.eY)(this).getValue(),l=this.getSelectedTab(),o=function(e,t,n,r){if(!(null==e?void 0:e.length))return[];".+"===n&&(n="");const a=(0,u.eT)(t,r).filter((t=>t.toLowerCase().includes(n.toLowerCase())&&e.includes(t)));return Array.from(new Set([...a,...e]))}(a,i,String(s),l);return{labelsByVolume:a,labelsToQuery:o}}constructor(e){var t,n;super(se({body:new o.gF({children:[]}),$variables:new o.Pj({variables:[new L.m({name:d.Du,label:"Service",hide:D.zL.hideVariable,skipUrlSync:!0,value:".+"}),new L.m({name:d.Wi,label:"",hide:D.zL.hideLabel,value:d.OX,skipUrlSync:!0,options:[{value:d.OX,label:d.OX},{value:ce,label:ce}]}),new o.H9({name:d.Gb,hide:D.zL.hideLabel,expressionBuilder:e=>function(e){if(e.length){const t=e[0];return`${t.key}${t.operator}\`${t.value}\``}return""}(e),filters:[{key:null!==(t=he().key)&&void 0!==t?t:d.OX,value:".+",operator:"=~"}]}),new o.H9({name:d.fi,datasource:d.eL,layout:"vertical",filters:[],expressionBuilder:x.VW,hide:D.zL.hideVariable,key:"adhoc_service_filter_replica",skipUrlSync:!0})]}),$data:(0,E.HF)({queries:[],runQueriesMode:"manual"}),serviceLevel:new Map,countPerPage:null!==(n=(0,u.KH)())&&void 0!==n?n:20,currentPage:1,showPopover:!1,tabOptions:[{label:d.ky,value:d.OX}]},e)),ie(this,"_urlSync",new o.So(this,{keys:[de]})),ie(this,"onSearchServicesChange",(0,a.debounce)((e=>{const t=(0,h.eY)(this);(e?(0,x.vC)(e):".+")!==t.state.value&&t.setState({value:e?(0,x.vC)(e):".+",label:null!=e?e:""});const n=(0,h.El)(this),r=n.state.filters[0];(0,x.vC)(t.state.value.toString())!==r.value&&n.setState({filters:[le(se({},r),{value:(0,x.vC)(t.state.value.toString())})]}),this.setState({currentPage:1}),(0,p.EE)(p.NO.service_selection,p.ir.service_selection.search_services_changed,{searchQuery:e})}),500)),ie(this,"getLevelFilterForService",(e=>{let t=this.state.serviceLevel.get(e)||[];if(0===t.length)return"";return` | ${t.map((e=>("logs"===e&&(e=""),`${d.e4}=\`${e}\``))).join(" or ")} `})),ie(this,"buildServiceLogsLayout",((e,t)=>{const n=this.getLevelFilterForService(t),r=new o.xK({$behaviors:[new o.Gg.K2({sync:l.DashboardCursorSync.Off})],body:o.d0.logs().setHoverHeader(!0).setData((0,E.rS)([(0,x.l)(this.getLogExpression(e,t,n),{maxLines:100,refId:`logs-${t}`})],{runQueriesMode:"manual"})).setTitle(t).setOption("showTime",!0).setOption("enableLogDetails",!1).build()});return r.addActivationHandler((()=>{var e;(null===(e=(0,U.oh)(r)[0].state.data)||void 0===e?void 0:e.state)!==l.LoadingState.Done&&this.runPanelQuery(r)})),r})),ie(this,"extendTimeSeriesLegendBus",((e,t,n,r)=>{const a=n.onToggleSeriesVisibility;n.onToggleSeriesVisibility=(n,i)=>{var s,l,o;null==a||a(n,i);const c=(0,j.vX)(null!==(o=null===(l=r.state.$data)||void 0===l||null===(s=l.state.data)||void 0===s?void 0:s.series)&&void 0!==o?o:[]),u=(0,j.pC)(n,this.state.serviceLevel.get(t),i,c);this.state.serviceLevel.set(t,u),this.updateServiceLogs(e,t)}})),this.addActivationHandler(this.onActivate.bind(this))}}function he(){const e=T.locationService.getLocation(),t=new URLSearchParams(e.search),n=t.get(de),r=null==n?void 0:n.split("|");return{key:null==r?void 0:r[0],search:t,location:e}}function fe(e){return{container:(0,r.css)({display:"flex",flexDirection:"column",flexGrow:1,position:"relative"}),headingWrapper:(0,r.css)({marginTop:e.spacing(1)}),loadingText:(0,r.css)({margin:0}),header:(0,r.css)({position:"absolute",right:0,top:"4px",zIndex:2}),bodyWrapper:(0,r.css)({flexGrow:1,display:"flex",flexDirection:"column"}),body:(0,r.css)({flexGrow:1,display:"flex",flexDirection:"column"}),searchPaginationWrap:(0,r.css)({label:"search-pagination-wrap",display:"flex",alignItems:"center",flexWrap:"wrap",flex:"1 0 auto",[e.breakpoints.down("md")]:{marginTop:e.spacing(1),width:"100%"}}),searchWrapper:(0,r.css)({label:"search-wrapper",display:"flex",alignItems:"center",flexWrap:"wrap",[e.breakpoints.down("md")]:{flexDirection:"column",alignItems:"flex-start"}}),searchField:(0,r.css)({marginTop:e.spacing(1),position:"relative"})}}ie(ge,"Component",(({model:e})=>{var t;const n=(0,c.useStyles2)(fe),{body:r,$data:a,tabs:i,paginationScene:o}=e.useState(),{data:u}=a.useState(),d=e.getSelectedTab(),p=(0,h.eY)(e),{label:f,value:v}=p.useState(),m=v&&".+"!==v,{labelsByVolume:b,labelsToQuery:y}=e.getLabels(null==u?void 0:u.series),O=(null==u?void 0:u.state)===l.LoadingState.Loading||(null==u?void 0:u.state)===l.LoadingState.Streaming||void 0===u,E=(null===(t=a.state.data)||void 0===t?void 0:t.state)===l.LoadingState.Error,C=e.formatPrimaryLabelForUI();let j=p.getValue().toString();".+"===j&&(j="");const L=(0,x.sT)(j);var _;return s().createElement("div",{className:n.container},s().createElement("div",{className:n.bodyWrapper},i&&s().createElement(i.Component,{model:i}),s().createElement(c.Field,{className:n.searchField},s().createElement("div",{className:n.searchWrapper},s().createElement(F.f,{initialFilter:{label:L,value:j,icon:"filter"},isLoading:O,value:j||f,onChange:t=>(t=>{e.onSearchServicesChange(t)})(t),selectOption:t=>{!function(e,t,n){const r=w(e,t,n);S(e,t,n),(0,g.ad)(r)}(d,t,e)},label:C,options:null!==(_=null==y?void 0:y.map((e=>({value:e,label:e}))))&&void 0!==_?_:[]}),!O&&s().createElement("span",{className:n.searchPaginationWrap},o&&s().createElement(re.PageCount,{model:o,totalCount:y.length}),o&&s().createElement(re.Component,{model:o,totalCount:y.length})))),!O&&E&&s().createElement(P,null),!O&&!E&&m&&!(null==b?void 0:b.length)&&s().createElement(k,null),!O&&!E&&!m&&!(null==b?void 0:b.length)&&s().createElement(G,{labelName:d}),!(!O&&E)&&s().createElement("div",{className:n.body},s().createElement(r.Component,{model:r}),s().createElement("div",{className:n.headingWrapper},o&&s().createElement(re.Component,{totalCount:y.length,model:o})))))}))},9641:(e,t,n)=>{n.d(t,{C:()=>s});var r=n(5959),a=n.n(r),i=n(2007);function s(e){return a().createElement(i.RadioButtonGroup,{options:[{label:"Logs",value:"logs",description:"Show results in logs visualisation"},{label:"Table",value:"table",description:"Show results in table visualisation"}],size:"sm",value:e.vizType,onChange:e.onChange})}},4702:(e,t,n)=>{n.d(t,{m:()=>s});var r=n(1269),a=n(9736);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class s extends a.n8{getValueOptions(e){return(0,r.of)(this.state.options)}constructor(e){super(function(e){for(var t=1;t(0,a.WY)({model:e})))},6464:(e,t,n)=>{n.d(t,{K:()=>g});var r=n(9736),a=n(6854),i=n(3241),s=n(20),l=n(5553),o=n(708),c=n(8428),u=n(4351);function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){for(var t=1;te)).forEach((e=>{const t=this.joinCombinedFiltersValues(e,"|");for(const n in e){const r=e[n].operator;a.push({key:n,operator:r,value:t[n]})}})),a}getExpr(){let{equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:a,lteFilters:i,gtFilters:s,gteFilters:l}=this.getCombinedLabelFilters();this.options.debug;const o=this.buildLabelsLogQLFromFilters({equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:a,lteFilters:i,gtFilters:s,gteFilters:l});var c;return o?(null!==(c=this.options.prefix)&&void 0!==c?c:"")+o:""}getLabelsExpr(e){return this.options=p({},{joinMatchFilters:!0,decodeFilters:!1,filterType:"indexed"},e),this.getExpr()}getMetadataExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!1,filterType:"field"},e),this.getExpr()}getLevelsExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!1,filterType:"field"},e),this.getExpr()}getFieldsExpr(e){return this.options=p({},{filterSeparator:" |",prefix:"| ",joinMatchFilters:!1,decodeFilters:!0,filterType:"field"},e),this.getExpr()}buildLabelsLogQLFromFilters({equalsFilters:e,notEqualsFilters:t,regexEqualFilters:n,regexNotEqualFilters:r,ltFilters:s,lteFilters:l,gtFilters:o,gteFilters:c}){let u,d,p,g,h,f,v,m;const b=[];var y;this.options.joinMatchFilters?(u=this.joinCombinedFiltersValues(e,"|"),d=this.joinCombinedFiltersValues(t,"|"),p=this.joinCombinedFiltersValues(n,"|"),g=this.joinCombinedFiltersValues(r,"|"),b.push(...this.buildJoinedFilters(u,a.KQ.Equal)),b.push(...this.buildJoinedFilters(d,a.KQ.NotEqual)),b.push(...this.buildJoinedFilters(p,a.KQ.RegexEqual)),b.push(...this.buildJoinedFilters(g,a.KQ.RegexNotEqual))):(u=this.getFilterValues(e),d=this.getFilterValues(t),p=this.getFilterValues(n),g=this.getFilterValues(r),b.push(...this.buildFilter(u,a.KQ.Equal)),b.push(...this.buildFilter(d,a.KQ.NotEqual)),b.push(...this.buildFilter(p,a.KQ.RegexEqual)),b.push(...this.buildFilter(g,a.KQ.RegexNotEqual))),h=this.getFilterValues(s),f=this.getFilterValues(l),v=this.getFilterValues(o),m=this.getFilterValues(c),b.push(...this.buildFilter(h,a.Rk.lt)),b.push(...this.buildFilter(f,a.Rk.lte)),b.push(...this.buildFilter(v,a.Rk.gt)),b.push(...this.buildFilter(m,a.Rk.gte)),this.options.debug;const S=(0,i.trim)(this.combineValues(b,`${null!==(y=this.options.filterSeparator)&&void 0!==y?y:","} `));return this.options.debug,S}getCombinedLabelFilters(){const{[a.KQ.Equal]:e,[a.KQ.NotEqual]:t,[a.KQ.RegexEqual]:n,[a.KQ.RegexNotEqual]:r,[a.Rk.lt]:i,[a.Rk.lte]:s,[a.Rk.gt]:l,[a.Rk.gte]:o}=this.groupFiltersByKey(this.filters);let c,u,d,p,g,h,f,v;return this.options.joinMatchFilters?(c=this.combineFiltersValues(e,a.KQ.RegexEqual),u=this.combineFiltersValues(t,a.KQ.RegexNotEqual),d=this.combineFiltersValues(n),p=this.combineFiltersValues(r)):(c=this.combineFiltersValues(e),u=this.combineFiltersValues(t),d=this.combineFiltersValues(n),p=this.combineFiltersValues(r)),g=this.combineFiltersValues(i),h=this.combineFiltersValues(s),f=this.combineFiltersValues(l),v=this.combineFiltersValues(o),this.options.debug,this.options.joinMatchFilters&&(c&&(d=this.mergeFilters(a.KQ.RegexEqual,c,d),c=this.removeStaleOperators(c,a.KQ.Equal)),u&&(p=this.mergeFilters(a.KQ.RegexNotEqual,u,p),u=this.removeStaleOperators(u,a.KQ.NotEqual))),{equalsFilters:c,notEqualsFilters:u,regexEqualFilters:d,regexNotEqualFilters:p,ltFilters:g,lteFilters:h,gtFilters:f,gteFilters:v}}buildFilter(e,t){const n=[];for(const r in e){const a=[],i=e[r];(0,o.iu)(t)?i.forEach((e=>a.push(this.buildFilterString(r,t,e,"")))):i.forEach((e=>a.push(this.buildFilterString(r,t,e)))),(0,o.BG)(t)?n.push(a.join(` ${this.positiveFilterValueSeparator} `)):n.push(a.join(` ${this.negativeFilterValueSeparator} `))}return n}buildJoinedFilters(e,t){const n=[];for(const r in e)n.push(this.buildFilterString(r,t,e[r]));return n}removeStaleOperators(e,t){const n={};return Object.keys(e).forEach((r=>{e[r].operator===t&&(n[r]=e[r])})),n}mergeFilters(e,t,n){return Object.keys(t).filter((n=>t[n].operator===e)).map((e=>({values:t[e].values,key:e}))).forEach((r=>{void 0===n&&(n={[r.key]:{values:[],operator:e}}),void 0===n[r.key]&&(n[r.key]={values:[],operator:e}),n[r.key].values.push(...this.mergeCombinedFiltersValues(t[r.key],e))})),n}mergeCombinedFiltersValues(e,t){var n;const r=[];return e.operator===t&&(null===(n=e.values)||void 0===n?void 0:n.length)&&r.push(...e.values),r}joinCombinedFiltersValues(e,t){const n={};for(const r in e)e[r].values.length&&(n[r]=this.combineValues(e[r].values,t));return n}getFilterValues(e){const t={};for(const n in e)e[n].values.length&&(t[n]=e[n].values);return t}combineValues(e,t){return e.join(`${t}`)}combineFiltersValues(e,t){let n={};for(const i in e){if(!e[i].length)continue;const s=(0,c.kR)(e[i][0].operator),l=null!=t?t:s,o=e[i][0];if(n[i]={values:[],operator:l},1===e[i].length){var r;const e=this.escapeFieldValue(o.operator,o.value,null!==(r=o.valueLabels)&&void 0!==r?r:[]);n[i]={operator:s,values:[e]},this.options.debug}else{const t=this.escapeFieldValues(i,e,l);var a;if(void 0===n[i].operator)n[i]={operator:l,values:t};else null===(a=n[i].values)||void 0===a||a.push(...t)}}return n}escapeFieldValues(e,t,n){return t[e].map((e=>{var t;return this.escapeFieldValue(n,e.value,null!==(t=e.valueLabels)&&void 0!==t?t:[])}))}escapeFieldValue(e,t,n){const a=(0,s.zE)(t);if(this.options.decodeFilters){t=(0,l.bu)({value:t,valueLabels:n}).value}return t===s.ZO?(this.options.debug,t):a?(this.options.debug,r.Go.escapeLabelValueInExactSelector((0,s.Dx)(t))):(0,o.SM)(e)?(this.options.debug,r.Go.escapeLabelValueInRegexSelector(t)):(this.options.debug,r.Go.escapeLabelValueInExactSelector(t))}buildFilterString(e,t,n,r='"'){if(n===s.ZO)return`${e}${t}${n}`;const a=`${e}${t}${r}${n}${r}`;return this.options.debug,a}groupFiltersByKey(e){let t=e.filter((e=>{var t;return!(null===(t=this.options.ignoreKeys)||void 0===t?void 0:t.includes(e.key))||(0,o.SM)(e.operator)}));"indexed"===this.options.filterType&&t.length<1&&(t=e);const n=t.filter((e=>(0,o.BG)(e.operator)&&!(0,o.SM)(e.operator))),r=t.filter((e=>(0,o.BG)(e.operator)&&(0,o.SM)(e.operator))),s=t.filter((e=>(0,o.Lw)(e.operator)&&!(0,o.SM)(e.operator))),l=t.filter((e=>(0,o.Lw)(e.operator)&&(0,o.SM)(e.operator))),c=t.filter((e=>e.operator===a.w7.gt)),u=t.filter((e=>e.operator===a.w7.gte)),d=t.filter((e=>e.operator===a.w7.lt)),p=t.filter((e=>e.operator===a.w7.lte)),g=(0,i.groupBy)(n,(e=>e.key)),h=(0,i.groupBy)(r,(e=>e.key)),f=(0,i.groupBy)(s,(e=>e.key)),v=(0,i.groupBy)(l,(e=>e.key)),m=(0,i.groupBy)(c,(e=>e.key)),b=(0,i.groupBy)(u,(e=>e.key)),y=(0,i.groupBy)(d,(e=>e.key)),S=(0,i.groupBy)(p,(e=>e.key));return{[a.w7.Equal]:g,[a.w7.RegexEqual]:h,[a.w7.NotEqual]:f,[a.w7.RegexNotEqual]:v,[a.w7.gt]:m,[a.w7.gte]:b,[a.w7.lt]:y,[a.w7.lte]:S}}constructor(e,t={joinMatchFilters:!0,decodeFilters:!1,filterType:"field"}){d(this,"filters",void 0),d(this,"options",void 0),d(this,"positiveFilterValueSeparator","or"),d(this,"negativeFilterValueSeparator","|"),this.filters=e,this.options=t,this.options.debug||(this.options.debug=(0,u.Rb)())}}},4509:(e,t,n)=>{n.d(t,{EE:()=>i,NO:()=>s,ir:()=>l});var r=n(8531),a=n(2533);const i=(e,t,n)=>{(0,r.reportInteraction)(((e,t)=>`${a.id.replace(/-/g,"_")}_${e}_${t}`)(e,t),n)},s={service_selection:"service_selection",service_details:"service_details",all:"all"},l={[s.service_selection]:{search_services_changed:"search_services_changed",service_selected:"service_selected",aggregated_metrics_toggled:"aggregated_metrics_toggled",add_to_filters:"add_to_filters"},[s.service_details]:{open_in_explore_clicked:"open_in_explore_clicked",action_view_changed:"action_view_changed",add_to_filters_in_breakdown_clicked:"add_to_filters_in_breakdown_clicked",select_field_in_breakdown_clicked:"select_field_in_breakdown_clicked",level_in_logs_volume_clicked:"level_in_logs_volume_clicked",label_in_panel_summary_clicked:"label_in_panel_summary_clicked",layout_type_changed:"layout_type_changed",search_string_in_logs_changed:"search_string_in_logs_changed",search_string_in_variables_changed:"search_string_in_variables_changed",pattern_removed:"pattern_removed",pattern_selected:"pattern_selected",pattern_field_clicked:"pattern_field_clicked",logs_visualization_toggle:"logs_visualization_toggle",logs_detail_filter_applied:"logs_detail_filter_applied",logs_popover_line_filter:"logs_popover_line_filter",logs_toggle_displayed_field:"logs_toggle_displayed_field",logs_clear_displayed_fields:"logs_clear_displayed_fields",value_breakdown_sort_change:"value_breakdown_sort_change",wasm_not_supported:"wasm_not_supported",change_viz_type:"change_viz_type"},[s.all]:{interval_too_long:"interval_too_long",open_in_explore_menu_clicked:"open_in_explore_menu_clicked"}}},1532:(e,t,n)=>{n.d(t,{B:()=>i,n:()=>s});var r=n(3241),a=n.n(r);const i=(e,t)=>{if(typeof e!=typeof t)return!1;const n=new Set(e),r=new Set(t);return n.size===r.size&&a().isEqual(n,r)},s=(e,t)=>typeof e==typeof t&&a().isEqual(e,t)},8955:(e,t,n)=>{n.r(t),n.d(t,{DETECTED_FIELDS_CARDINALITY_NAME:()=>G,DETECTED_FIELDS_NAME_FIELD:()=>K,DETECTED_FIELDS_PARSER_NAME:()=>U,DETECTED_FIELDS_TYPE_NAME:()=>q,WRAPPED_LOKI_DS_UID:()=>Q,WrappedLokiDatasource:()=>J,default:()=>Y});var r=n(7781),a=n(8531),i=n(9736),s=n(1269),l=n(5719),o=n(8502),c=n(20),u=n(2533),d=n(5745),p=n(2344),g=n(3257);function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){for(var t=1;t2&&!function(e,t){let n=!1;return p.K3.parse(e).iterate({enter:({type:e})=>{if(e.id===t)return n=!0,!1}}),n}(e,p.Yw)}function b(e){if(function(e){return void 0!==e.targets.find((e=>m(e.expr)))}(e))return!1;if(function(e){return e.targets.find((e=>"instant"===e.queryType))}(e))return!1;for(let n=0;ne.replace("}",`, __stream_shard__=~"${y}"}`),w=(e,t)=>{if(void 0===t||0===t.length)return e.map((e=>v(f({},e),{expr:e.expr.replace(`, __stream_shard__=~"${y}"}`,"}")})));let n=t.join("|");return"-1"===n||1===t.length?(n="-1"===n?"":n,e.map((e=>v(f({},e),{expr:e.expr.replace(`, __stream_shard__=~"${y}"}`,`, __stream_shard__="${n}"}`)})))):e.map((e=>v(f({},e),{expr:e.expr.replace(new RegExp(`${y}`,"g"),n)})))};var O=n(5953);function x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e){for(var t=1;t{const n=e.data.find((e=>function(e,t){var n,a,i,s,l,o;if(e.refId!==t.refId)return!1;if(null!=e.name&&null!=t.name&&e.name!==t.name)return!1;const c=null===(n=e.meta)||void 0===n?void 0:n.type,u=null===(a=t.meta)||void 0===a?void 0:a.type;if(c!==u)return!1;if(c===r.DataFrameType.TimeSeriesMulti)return function(e,t){const n=e.fields.find((e=>e.type===r.FieldType.number)),a=t.fields.find((e=>e.type===r.FieldType.number));if(void 0===n||void 0===a)return!1;null==e.name&&(e.name=JSON.stringify(n.labels));null==t.name&&(t.name=JSON.stringify(a.labels));return e.name===t.name}(e,t);const d=null===(s=e.meta)||void 0===s||null===(i=s.custom)||void 0===i?void 0:i.frameType,p=null===(o=t.meta)||void 0===o||null===(l=o.custom)||void 0===l?void 0:l.frameType;if("LabeledTimeValues"===d&&"LabeledTimeValues"===p)return!0;if(d===p)return!0;return!1}(e,t)));n?function(e,t){var n,a;const i=e.fields.find((e=>e.type===r.FieldType.time)),s=e.fields.find((e=>e.type===r.FieldType.string&&"id"===e.name)),l=t.fields.find((e=>e.type===r.FieldType.time)),o=t.fields.find((e=>e.type===r.FieldType.string&&"id"===e.name));if(!i||!l)return void O.v.error(new Error("Time fields not found in the data frames"));var c;const u=null!==(c=null==l?void 0:l.values.slice(0))&&void 0!==c?c:[],d=Math.max(e.fields.length,t.fields.length);for(let n=0;n0&&(e.errors=s);const o=null!==(l=e.error)&&void 0!==l?l:t.error;var c,u;null!=o&&(e.error=o);const d=[...null!==(c=e.traceIds)&&void 0!==c?c:[],...null!==(u=t.traceIds)&&void 0!==u?u:[]];return d.length>0&&(e.traceIds=d),e}function k(e,t,n){const a=(0,r.closestIdx)(t.values[n],e.values);return a<0?0:t.values[n]===e.values[a]&&null!=t.nanos&&null!=e.nanos?t.nanos[n]>e.nanos[a]?a+1:a:t.values[n]>e.values[a]?a+1:a}function j(e,t,n,r,a,i){const s=function(e,t,n,r){if(e.nanos&&n.nanos)return void 0!==e.values[t]&&e.values[t]===n.values[r]&&void 0!==e.nanos[t]&&e.nanos[t]===n.nanos[r];return void 0!==e.values[t]&&e.values[t]===n.values[r]}(e,n,r,i);return!!s&&(null==t||null==a||void 0!==t.values[n]&&t.values[n]===a.values[i])}function F(e,t,n){const r=t.filter((t=>t.name===e.name));return 1===r.length?r[0]:t[n]}const L="Summary: total bytes processed";function _(e,t){const n=e.find((e=>e.displayName===L)),r=t.find((e=>e.displayName===L));if(null!=r&&null!=n)return[{value:r.value+n.value,displayName:L,unit:n.unit}];const a=null!=r?r:n;return null!=a?[a]:[]}function T(e){return C(E({},e),{fields:e.fields.map((e=>C(E({},e),{values:e.values})))})}function D(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e){for(var t=1;te.expr)).map((e=>$(N({},e),{expr:S(e.expr)})));return function(e,t,n){let a=!1,i={data:[],state:r.LoadingState.Streaming,key:(0,d.A)()},l=null,o=new Map,c=null;const u=(s,d,p,g)=>{let h=g,f=!1;null!=l&&(l.unsubscribe(),l=null);const v=()=>{i.state=a?r.LoadingState.Error:r.LoadingState.Done,s.next(i),s.complete()};if(a)return void v();const m=()=>{const e=Math.min(d+g,p.length);d{try{if(e&&!function(e){var t,n,r;const a=e.errors?(null!==(n=e.errors[0].message)&&void 0!==n?n:"").toLowerCase():null!==(r=null===(t=e.error)||void 0===t?void 0:t.message)&&void 0!==r?r:"";if(a.includes("timeout"))return!0;if(a.includes("parse error"))throw new Error(a);return!1}(e))return!1}catch(s){var t,n,r,i,l,h;return O.v.error(s,{msg:"sharding retry error",error:null!==(i=null==e||null===(t=e.error)||void 0===t?void 0:t.message)&&void 0!==i?i:"",errors:null!==(l=null==e||null===(n=e.errors)||void 0===n?void 0:n.map((e=>e.message)).join(" | "))&&void 0!==l?l:"",traces:null!==(h=null==e||null===(r=e.traceIds)||void 0===r?void 0:r.join("|"))&&void 0!==h?h:""}),a=!0,!1}if(g>1)return B(`Possible time out, new group size ${g=Math.floor(Math.sqrt(g))}`),f=!0,u(s,d,p,g),!0;var v;const m=null!==(v=o.get(d))&&void 0!==v?v:0;return m>3?(a=!0,!1):(o.set(d,m+1),c=setTimeout((()=>{O.v.info(`Retrying ${d} (${m+1})`),u(s,d,p,g),c=null}),1500*Math.pow(2,m)),f=!0,!0)},y=function(e,t,n){if(t===e.length)return[-1];return e.slice(t,t+n)}(p,d,g);B(`Querying ${y.join(", ")}`);const S=$(N({},t),{targets:w(n,y)});t.requestId&&(S.requestId=`${t.requestId}_shard_${d}_${g}`),l=e.runQuery(S).subscribe({next:e=>{var t;((null!==(t=e.errors)&&void 0!==t?t:[]).length>0||null!=e.error)&&b(e)||(h=function(e,t,n){const r=.7;return Math.min(t,Math.max(Math.floor((n-e)*r),1))}(d+g,function(e,t){var n,r;if(!e.data.length)return t+1;const a=null===(r=e.data[0].meta)||void 0===r||null===(n=r.stats)||void 0===n?void 0:n.find((e=>"Summary: exec time"===e.displayName));if(a){const e=Math.round(a.value);return B(`${a.value}`),e<=1?Math.floor(1.5*t):e<6?Math.ceil(1.1*t):1===t?t:e<20?Math.ceil(.9*t):Math.floor(t/2)}return t}(e,g),p.length),h!==g&&B(`New group size ${h}`),i=P(i,e))},complete:()=>{f||(i.data.length&&s.next(i),m())},error:e=>{O.v.error(e,{msg:"failed to shard"}),s.next(i),b()||m()}})},h=n=>{l=e.query(t).subscribe({next:e=>{i=e},complete:()=>{n.next(i)},error:e=>{O.v.error(e,{msg:"runNonSplitRequest subscription error"}),n.error(i)}})},f=new s.Observable((r=>{const i=(e=>{const t=(0,g.QH)(e,[p.MD]);return t.length>0?e.substring(t[0].from,t[0].to).replace(`, __stream_shard__=~"${y}"}`,"}"):""})(n[0].expr);return(0,g.T0)(i)?(e.languageProvider.fetchLabelValues("__stream_shard__",{timeRange:t.range,streamSelector:i||void 0}).then((e=>{const t=e.map((e=>parseInt(e,10)));t&&t.length?(t.sort(((e,t)=>t-e)),B(`Querying ${t.join(", ")} shards`),u(r,0,t,function(e){return Math.floor(Math.sqrt(e.length))}(t))):(O.v.warn("Shard splitting not supported. Issuing a regular query."),h(r))})).catch((e=>{O.v.error(e,{msg:"failed to fetch label values for __stream_shard__"}),h(r)})),()=>{a=!0,c&&clearTimeout(c),null!=l&&(l.unsubscribe(),l=null)}):(B(`Skipping invalid selector: ${i}`),void r.complete())}));return f}(e,t,n)}Boolean(localStorage.getItem(`${u.id}.sharding_debug_enabled`));function B(e){}var A=n(9598),M=n(7985);function R(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function V(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){R(i,r,a,s,l,"next",e)}function l(e){R(i,r,a,s,l,"throw",e)}s(void 0)}))}}function W(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function z(e){for(var t=1;t{var n;if(!(null===(n=e.scopedVars)||void 0===n?void 0:n.__sceneObject))throw new Error("Scene object not found in request");var r=this;(0,a.getDataSourceSrv)().get((0,l.U4)(e.scopedVars.__sceneObject.valueOf())).then(function(){var n=V((function*(n){var i;if(!(n instanceof a.DataSourceWithBackend&&"interpolateString"in n&&"getTimeRangeParams"in n))throw new Error("Invalid datasource!");const s=n;e.targets=null===(i=e.targets)||void 0===i?void 0:i.map((e=>(e.datasource=s,e)));const l=new Set;if(e.targets.forEach((e=>{var t;l.add(null!==(t=e.resource)&&void 0!==t?t:"")})),1!==l.size)throw new Error("A request cannot contain queries to multiple endpoints");switch(e.targets[0].resource){case"volume":yield r.getVolume(e,s,t);break;case"patterns":yield r.getPatterns(e,s,t);break;case"detected_labels":yield r.getDetectedLabels(e,s,t);break;case"detected_fields":yield r.getDetectedFields(e,s,t);break;case"labels":yield r.getLabels(e,s,t);break;default:r.getData(e,s,t)}}));return function(e){return n.apply(this,arguments)}}())}))}getData(e,t,n){const r=a.config.featureToggles.exploreLogsShardSplitting,i=H(z({},e),{targets:t.interpolateVariablesInQueries(e.targets,e.scopedVars).map((e=>H(z({},e),{resource:void 0,expr:(0,M.VT)(e.expr)})))});return(!1!==b(i)&&r?I(t,i):t.query(i)).subscribe(n),n}getPatterns(e,t,n){var a=this;return V((function*(){const i=e.targets.filter((e=>"patterns"===e.resource));if(1!==i.length)throw new Error("Patterns query can only have a single target!");const{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);n.next({data:[],state:r.LoadingState.Loading});try{var o;const a=t.getResource("patterns",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString(),step:e.interval},{requestId:null!==(o=e.requestId)&&void 0!==o?o:"patterns",headers:{"X-Query-Tags":`Source=${A.s_}`}}),i=yield a,u=null==i?void 0:i.data;let d=-1/0,p=0;var c;const g=null!==(c=null==u?void 0:u.map((e=>{const t=[],n=[];let a=0;return e.samples.forEach((([e,r])=>{t.push(1e3*e),n.push(r),r>d&&(d=r),rd&&(d=r),r{var n,r,a,i;return(null===(r=t.meta)||void 0===r||null===(n=r.custom)||void 0===n?void 0:n.sum)-(null===(i=e.meta)||void 0===i||null===(a=i.custom)||void 0===a?void 0:a.sum)})),n.next({data:g,state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n}))()}interpolate(e,t,n){const r=e.interpolateVariablesInQueries(t,n.scopedVars);if(!r.length)throw new Error("Datasource failed to interpolate query!");const a=r[0];return{interpolatedTarget:a,expression:(0,M.VT)(a.expr)}}getDetectedLabels(e,t,n){var a=this;return V((function*(){const i=e.targets.filter((e=>"detected_labels"===e.resource));if(1!==i.length)throw new Error("Detected labels query can only have a single target!");let{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);"{}"===l&&(l=""),n.next({data:[],state:r.LoadingState.Loading});try{var c,u,d;const a=null===(u=(yield t.getResource("detected_labels",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(d=e.requestId)&&void 0!==d?d:"detected_labels",headers:{"X-Query-Tags":`Source=${A.s_}`}})).detectedLabels)||void 0===u||null===(c=u.filter((e=>!o.rm.includes(e.label))))||void 0===c?void 0:c.sort(((e,t)=>(0,o.p_)(e,t))),i=null==a?void 0:a.map((e=>({name:e.label,values:[e.cardinality]}))),p=(0,r.createDataFrame)({refId:s.refId,fields:null!=i?i:[]});n.next({data:[p],state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n}))()}getDetectedFields(e,t,n){var a=this;return V((function*(){const i=e.targets.filter((e=>"detected_fields"===e.resource));if(1!==i.length)throw new Error("Detected fields query can only have a single target!");n.next({data:[],state:r.LoadingState.Loading});const{interpolatedTarget:s,expression:l}=a.interpolate(t,i,e);try{var c,u;const a=yield t.getResource("detected_fields",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(u=e.requestId)&&void 0!==u?u:"detected_fields",headers:{"X-Query-Tags":`Source=${A.s_}`}}),i={name:K,type:r.FieldType.string,values:[],config:{}},d={name:G,type:r.FieldType.number,values:[],config:{}},p={name:U,type:r.FieldType.string,values:[],config:{}},g={name:q,type:r.FieldType.string,values:[],config:{}};null===(c=a.fields)||void 0===c||c.forEach((e=>{var t;o.$R.includes(e.label)||(i.values.push(e.label),d.values.push(e.cardinality),p.values.push((null===(t=e.parsers)||void 0===t?void 0:t.length)?e.parsers.join(", "):"structuredMetadata"),g.values.push(e.type))}));const h=(0,r.createDataFrame)({refId:s.refId,fields:[i,d,p,g]});n.next({data:[h],state:r.LoadingState.Done})}catch(e){O.v.error(e,{msg:"Detected fields error"}),n.next({data:[],state:r.LoadingState.Error})}return n}))()}getVolume(e,t,n){return V((function*(){if(1!==e.targets.length)throw new Error("Volume query can only have a single target!");const a=e.targets[0],i=a.primaryLabel;if(!i)throw new Error("Primary label is required for volume queries!");const s=t.interpolateVariablesInQueries([a],e.scopedVars),l=(0,M.VT)(s[0].expr.replace(".*.*",".+"));n.next({data:[],state:r.LoadingState.Loading});try{var o,u,d;const a=yield t.getResource("index/volume",{query:l,start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString(),limit:5e3},{requestId:null!==(d=e.requestId)&&void 0!==d?d:"volume",headers:{"X-Query-Tags":`Source=${A.s_}`}});null==a||a.data.result.sort(((e,t)=>{const n=e.value[1],r=t.value[1];return Number(r)-Number(n)}));const s=(0,r.createDataFrame)({fields:[{name:c.OX,values:null==a||null===(o=a.data.result)||void 0===o?void 0:o.map((e=>e.metric[i]))},{name:"volume",values:null==a||null===(u=a.data.result)||void 0===u?void 0:u.map((e=>Number(e.value[1])))}]});n.next({data:[s]})}catch(e){O.v.error(e),n.next({data:[],state:r.LoadingState.Error})}return n.complete(),n}))()}getLabels(e,t,n){return V((function*(){if(1!==e.targets.length)throw new Error("Volume query can only have a single target!");try{var a;const i=yield t.getResource("labels",{start:e.range.from.utc().toISOString(),end:e.range.to.utc().toISOString()},{requestId:null!==(a=e.requestId)&&void 0!==a?a:"labels",headers:{"X-Query-Tags":`Source=${A.s_}`}}),s=(0,r.createDataFrame)({fields:[{name:"labels",values:null==i?void 0:i.data}]});n.next({data:[s],state:r.LoadingState.Done})}catch(e){n.next({data:[],state:r.LoadingState.Error})}return n.complete(),n}))()}testDatasource(){return Promise.resolve({status:"success",message:"Data source is working",title:"Success"})}constructor(e,t){super(e,t)}}const Y=function(){i.Go.registerRuntimeDataSource({dataSource:new J("wrapped-loki-ds",Q)})}},6838:(e,t,n)=>{n.d(t,{O:()=>o,m:()=>l});var r=n(20),a=n(376),i=n(5553),s=n(5953);function l(e,t,n=!0){const s=(0,i.ir)(e);let l="";n&&t===r.e4&&(l=`| ${r.e4} != ""`);const o=s.state.filters,c=(0,a.k$)(s);if(o.length){if("mixed"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.YN} ${r.Oc} [$__auto])) by (${t})`;if("json"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.VL} ${r.Oc} [$__auto])) by (${t})`;if("logfmt"===c)return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.mF} ${r.Oc} [$__auto])) by (${t})`}return`sum(count_over_time({${r.S1}} ${l} ${r.S6} ${r.sC} ${r.rl} ${r.Oc} [$__auto])) by (${t})`}function o(e){switch(e){case r._Y:return r.Sy;case r.sL:return r.fJ;default:const t=new Error(`Unknown variable type: ${e}`);throw s.v.error(t,{variableType:e,msg:`getFieldsTagValuesExpression: Unknown variable type: ${e}`}),t}}},696:(e,t,n)=>{n.d(t,{_J:()=>u,wy:()=>d});var r=n(9736),a=n(2661),i=n(577),s=n(173),l=n(5553),o=n(4351);function c(e){const t=r.jh.getAncestor(e,a.P);r.jh.findAllObjects(t,(e=>e instanceof i.p)).forEach((e=>e.forceRender()));r.jh.findDescendents(t,s.y).forEach((e=>e.forceRender()))}function u(e,t,n){const r=(0,l.S9)(n).getValue();(0,o.OB)(r,e,t),c(n)}function d(e,t,n){const r=(0,l.S9)(n).getValue();(0,o.cC)(r,e,t),c(n)}},376:(e,t,n)=>{n.d(t,{JI:()=>E,Jl:()=>P,OE:()=>O,Qg:()=>y,Ri:()=>S,Zp:()=>w,k$:()=>x,ph:()=>C});var r=n(7781),a=n(2007),i=n(9736),s=n(9405),l=n(20),o=n(1475),c=n(1269),u=n(7352),d=n(5553),p=n(5953),g=n(5700),h=n(3142),f=n(4247);const v=e=>{if(e){if(Object.values(r.ReducerID).includes(e))return e}};function m(e){switch(e){case"json":return"json";case"logfmt":return"logfmt";case"":case"structuredMetadata":return"structuredMetadata";default:return"mixed"}}function b(e){switch(e){case"int":case"float":case"duration":case"boolean":case"bytes":return e;default:return"string"}}function y(e){var t;const n=new Set(null!==(t=null==e?void 0:e.map((e=>e.toString())))&&void 0!==t?t:[]);n.delete("structuredMetadata");const r=Array.from(n);return 1===r.length?m(r[0]):0===n.size?"structuredMetadata":"mixed"}function S(e,t){var n;const r=(0,u.rD)(t),a=null==r?void 0:r.fields[2],i=null==r?void 0:r.fields[0],s=null==i?void 0:i.values.indexOf(e);var l;const o=void 0!==s&&-1!==s?m(null!==(l=null==a||null===(n=a.values)||void 0===n?void 0:n[s])&&void 0!==l?l:""):void 0;return void 0===o?(p.v.warn("missing parser, using mixed format for",{fieldName:e}),"mixed"):o}function w(e,t,n,r,u){return(d,p)=>{const h=v(r.state.sortBy),f=i.d0.timeseries().setOption("legend",{showLegend:!1}).setCustomFieldConfig("fillOpacity",9).setTitle(e(d)).setShowMenuAlways(!0).setData(new i.Es({transformations:[()=>function(e){return t=>t.pipe((0,c.map)((()=>[e])))}(d)]})).setOverrides(o.jC).setMenu(new g.GD({investigationOptions:{frame:d,fieldName:e(d),labelName:u}})).setHeaderActions([new s.oR({frame:d,variableName:n,hideExclude:u===l.e4})]);return t===a.DrawStyle.Bars&&f.setCustomFieldConfig("stacking",{mode:a.StackingMode.Normal}).setCustomFieldConfig("fillOpacity",100).setCustomFieldConfig("lineWidth",0).setCustomFieldConfig("pointSize",0).setOverrides(o.jC).setCustomFieldConfig("drawStyle",a.DrawStyle.Bars),h&&(f.setOption("legend",{showLegend:!0,calcs:[h]}),f.setDisplayName(" ")),new i.xK({body:f.build()})}}function O(e,t,n){const r=e?(0,h.E)(t,e):f.H.Parsed;if(r)return function(e,t){switch(e){case f.H.Indexed:return l.MB;case f.H.Parsed:return l.mB;case f.H.StructuredMetadata:return t===l.e4?l._Y:l._P;default:{const n=new Error(`Invalid label type for ${t}`);throw p.v.error(n,{type:e,msg:`Invalid label type for ${t}`}),n}}}(r,t);const a=S(t,n);return"structuredMetadata"===a?l._P:(p.v.warn("unable to determine label variable, falling back to parsed field",{key:t,parserForThisField:null!=a?a:""}),l.mB)}function x(e){return y(e.state.filters.map((e=>(0,d.bu)(e).parser)))}function E(e){return"duration"===e||"bytes"===e||"float"===e}function C(e,t){var n;const r=null==t?void 0:t.fields[0],a=null==t?void 0:t.fields[3],i=null==r?void 0:r.values.indexOf(e);return void 0!==i&&-1!==i?b(null==a||null===(n=a.values)||void 0===n?void 0:n[i]):void 0}function P(e,t,n){var r,a;const i=null==n?void 0:n.fields[2],s=null==n?void 0:n.fields[0],l=null==n?void 0:n.fields[3],o=null==s?void 0:s.values.indexOf(e),c=void 0!==o&&-1!==o?m(null==i||null===(r=i.values)||void 0===r?void 0:r[o]):"mixed",u=void 0!==o&&-1!==o?b(null==l||null===(a=l.values)||void 0===a?void 0:a[o]):void 0,p=t.state.filters.map((e=>{var t;const n=null==s?void 0:s.values.indexOf(e.key),r=(0,d.bu)(e);if(r.parser)return r.parser;var a;const l=void 0!==n&&-1!==n?m(null!==(a=null==i||null===(t=i.values)||void 0===t?void 0:t[n])&&void 0!==a?a:"mixed"):void 0;return null!=l?l:"mixed"}));let g="",h="";"structuredMetadata"===c?h=`| ${e}!=""`:g=`| ${e}!=""`;return function(e,t){return t.fieldType&&["bytes","duration"].includes(t.fieldType)?`avg_over_time(${(0,d.DX)(t)} | unwrap `+t.fieldType+`(${e}) | __error__="" [$__auto]) by ()`:t.fieldType&&"float"===t.fieldType?`avg_over_time(${(0,d.DX)(t)} | unwrap `+e+' | __error__="" [$__auto]) by ()':`sum by (${e}) (count_over_time(${(0,d.DX)(t)} [$__auto]))`}(e,{structuredMetadataToAdd:h,fieldExpressionToAdd:g,parser:y([...p,c]),fieldType:u})}},8502:(e,t,n)=>{n.d(t,{$R:()=>s,OH:()=>c,dD:()=>i,p_:()=>a,rd:()=>o,rm:()=>l});var r=n(20);function a(e,t){return 1===e.cardinality?1:1===t.cardinality?-1:e.cardinality-t.cardinality}function i(e){const t=[...e];e.includes(r.e4)||t.unshift(r.e4);const n=t.map((e=>({label:e,value:String(e)})));return[{label:"All",value:r.To},...n]}const s=["level_extracted",r.e4,"level"],l=["__aggregated_metric__","__stream_shard__"];function o(e){const t=[...e].map((e=>({label:e,value:String(e)})));return[{label:"All",value:r.To},...t]}function c(e){var t;return((0,r.zE)(e.value)?(0,r.Dx)(e.value):e.value)===(null===(t=e.valueLabels)||void 0===t?void 0:t[0])}},42:(e,t,n)=>{n.d(t,{CP:()=>m,R7:()=>h,_t:()=>v,de:()=>p,di:()=>u,ec:()=>f,oj:()=>d,zr:()=>g});var r=n(20),a=n(376),i=n(7985),s=n(5553),l=n(9405),o=n(708),c=n(5570);const u="repeat(auto-fit, minmax(400px, 1fr))";function d(e,t,n){let l="",o="";const c=(0,s.ir)(e),u=(0,a.k$)(c);return n&&n!==r.e4?l=` ,${n} != ""`:n&&n===r.e4&&(o=` | ${n} != ""`),(0,i.l)(`sum(count_over_time(${(0,s.DX)({labelExpressionToAdd:l,structuredMetadataToAdd:o,parser:u})} [$__auto])) by (${t})`,{legendFormat:`{{${t}}}`,refId:"LABEL_BREAKDOWN_VALUES"})}function p(e){return e.map((e=>(0,c.H7)(e))).flatMap((e=>e?[e]:[]))}function g(e,t,n){const i=(0,s.YS)(n),c=0===i.state.filters.length,u="structuredMetadata"===(0,a.Ri)(e,n),d=i.state.filters.find((e=>u?(0,o.BG)(e.operator)&&e.value===t:(0,o.BG)(e.operator)&&(0,s.bu)(e).value===t));return c||!d?((0,l.Qt)(e,t,"include",n,u?r._P:r.mB),"include"):((0,l.Qt)(e,t,"toggle",n,u?r._P:r.mB),"toggle")}function h(e,t,n){const a=(0,s.cR)(n),i=0===a.state.filters.length,c=a.state.filters.find((e=>e.value===t&&(0,o.BG)(e.operator)));return i||!c?((0,l.Qt)(e,t,"include",n,r.MB),"include"):((0,l.Qt)(e,t,"toggle",n,r.MB),"toggle")}function f(e,t,n){return b(e,t,(0,s.cR)(n))}function v(e,t,n){return b(e,t,(0,s.ir)(n))}function m(e,t,n){return b(e,t,(0,s.oY)(n))}function b(e,t,n){const a=n.state.filters.filter((t=>t.key===e&&(0,o.BG)(t.operator))).map((e=>n.state.name===r.mB?(0,s.bu)(e).value:e.value)),i=n.state.filters.filter((t=>t.key===e&&(0,o.Lw)(t.operator))).map((e=>n.state.name===r.mB?(0,s.bu)(e).value:e.value));return t.filter((e=>!i.includes(e)&&(0===a.length||a.includes(e))))}},5570:(e,t,n)=>{n.d(t,{Ex:()=>d,H7:()=>u,PE:()=>g,pC:()=>o,vX:()=>c});var r=n(2007),a=n(20),i=n(9405),s=n(5553),l=n(708);function o(e,t,n,a){if(n===r.SeriesVisibilityChangeMode.ToggleSelection){const n=null!=t?t:[];return 1===n.length&&n.includes(e)?[]:[e]}let i=(null==t?void 0:t.length)?t:a;return i.includes(e)?i.filter((t=>t!==e)):[...i,e]}function c(e){return e.map((e=>{var t;return null!==(t=u(e))&&void 0!==t?t:"logs"}))}function u(e){var t;const n=null===(t=e.fields[1])||void 0===t?void 0:t.labels;if(!n)return null;const r=Object.keys(n);return 0===r.length?null:n[r[0]]}function d(e,t){const n=(0,s.iw)(t),r=n.state.filters.filter((e=>(0,l.BG)(e.operator))).map((e=>e.value.split("|").map(p))).join("|"),a=n.state.filters.filter((e=>(0,l.Lw)(e.operator))).map((e=>e.value.split("|").map(p))).join("|");return e.filter((e=>!a.includes(e)&&(0===r.length||r.includes(e))))}function p(e){return'""'===e?"logs":e}function g(e,t){const n=(0,s.iw)(t),r=0===n.state.filters.length,o=n.state.filters.find((t=>t.value===e&&(0,l.BG)(t.operator)));return"logs"===e&&(e='""'),r||!o?((0,i.Qt)(a.e4,e,"include",t,a._Y),"include"):((0,i.Qt)(a.e4,e,"toggle",t,a._Y),"toggle")}},2165:(e,t,n)=>{n.d(t,{Il:()=>g,Os:()=>d,bz:()=>c,fF:()=>p,hy:()=>m,po:()=>h,y2:()=>b,z5:()=>f});var r=n(7781);function a(e,t,n){const r=e.getFieldByName(t);if(void 0!==r)return r.type===n?r:void 0}const i="timestamp",s="body",l="severity",o="id",c="labels";function u(e){const t={};return Object.entries(e).forEach((([e,n])=>{t[e]="string"==typeof n?n:JSON.stringify(n)})),t}function d(e){var t;return(null===(t=e.meta)||void 0===t?void 0:t.type)===r.DataFrameType.LogLines?function(e){const t=new r.FieldCache(e),n=a(t,i,r.FieldType.time),d=a(t,s,r.FieldType.string);if(void 0===n||void 0===d)return null;var p;const g=null!==(p=a(t,l,r.FieldType.string))&&void 0!==p?p:null;var h;const f=null!==(h=a(t,o,r.FieldType.string))&&void 0!==h?h:null;var v;const m=null!==(v=a(t,c,r.FieldType.other))&&void 0!==v?v:null,b=null===m?null:m.values,y=t.fields.filter(((e,t)=>t!==n.index&&t!==d.index&&t!==(null==g?void 0:g.index)&&t!==(null==f?void 0:f.index)&&t!==(null==m?void 0:m.index)));return{raw:e,timeField:n,bodyField:d,severityField:g,idField:f,getLogFrameLabels:()=>b,timeNanosecondField:null,getLogFrameLabelsAsLabels:()=>null!==b?b.map(u):null,getLabelFieldName:()=>null!==m?m.name:null,extraFields:y}}(e):function(e){const t=new r.FieldCache(e),n=t.getFirstFieldOfType(r.FieldType.time),a=t.getFirstFieldOfType(r.FieldType.string);if(void 0===n||void 0===a)return null;var i;const s=null!==(i=t.getFieldByName("tsNs"))&&void 0!==i?i:null;var l;const o=null!==(l=t.getFieldByName("level"))&&void 0!==l?l:null;var c;const d=null!==(c=t.getFieldByName("id"))&&void 0!==c?c:null,[p,g]=function(e,t,n){const a=e.getFieldByName("labels");if(void 0!==a&&a.type===r.FieldType.other){const e=a.values.map(u);return[a,()=>e]}return[null,()=>function(e,t){const n=e.labels;if(void 0!==n){const e=new Array(t);return e.fill(n),e}return null}(t,n.length)]}(t,a,e),h=t.fields.filter(((e,t)=>t!==n.index&&t!==a.index&&t!==(null==s?void 0:s.index)&&t!==(null==o?void 0:o.index)&&t!==(null==d?void 0:d.index)&&t!==(null==p?void 0:p.index)));return{timeField:n,bodyField:a,timeNanosecondField:s,severityField:o,idField:d,getLogFrameLabels:g,getLogFrameLabelsAsLabels:g,getLabelFieldName:()=>{var e;return null!==(e=null==p?void 0:p.name)&&void 0!==e?e:null},extraFields:h,raw:e}}(e)}function p(e){var t;return null!==(t=null==e?void 0:e.timeField.name)&&void 0!==t?t:i}function g(e){var t;return null!==(t=null==e?void 0:e.bodyField.name)&&void 0!==t?t:s}function h(e){var t,n;return null!==(n=null==e||null===(t=e.idField)||void 0===t?void 0:t.name)&&void 0!==n?n:o}function f(e){var t;let n=0,a=0;const i=null===(t=e[0])||void 0===t?void 0:t.fields.find((e=>e.type===r.FieldType.time));if(i){const e=[...i.values].sort(),t=e[0]{let r;function a(){r||(r=new i)}n.d(t,{JO:()=>s,rX:()=>a});class i{getServiceSceneState(){return this.serviceSceneState}setPatternsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.patternsCount=e}setLabelsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.labelsCount=e}setFieldsCount(e){this.serviceSceneState||(this.serviceSceneState={}),this.serviceSceneState.fieldsCount=e}setServiceSceneState(e){this.serviceSceneState={patternsCount:e.patternsCount,labelsCount:e.labelsCount,fieldsCount:e.fieldsCount,loading:e.loading,logsCount:e.logsCount,totalLogsCount:e.totalLogsCount}}constructor(){var e,t,n;n=void 0,(t="serviceSceneState")in(e=this)?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}}function s(){return r}},7478:(e,t,n)=>{n.d(t,{FB:()=>f,Ns:()=>O,Vt:()=>y,ad:()=>S,bN:()=>w,fg:()=>v,k9:()=>m,rs:()=>b});var r=n(2661),a=n(20),i=n(2152),s=n(8531),l=n(9683),o=n(9736),c=n(7781),u=n(7389),d=n(9598);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let g;function h(e,t){return c.urlUtil.renderUrl(e,function(e){return function(e){for(var t=1;t(l.tm.includes(t)&&(e[t]=n),e)),{}),e)}(t))}function f(e,t,n){var s,c;const p=o.jh.getAncestor(n,r.P),g=null===(s=p.state.routeMatch)||void 0===s?void 0:s.params.labelName,f=null===(c=p.state.routeMatch)||void 0===c?void 0:c.params.labelValue;if(g&&f){let r=function(e,t,n,r="service"){return e===a.To&&t===l._J.label?(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${l.G3.labels}`):e===a.To&&t===l._J.field?(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${l.G3.fields}`):(0,d._F)(`${l.G3.explore}/${r}/${(0,u.uu)(n)}/${t}/${(0,u.uu)(e)}`)}(t,e,f,g);const s=h(r);if(n){(0,i.JO)().setServiceSceneState(n.state)}return s}return""}function v(e,t,n){const r=f(e,t,n);r&&S(r)}function m(e,t,n){return h(l.bw.logs(t,e),n)}function b(e,t,n){var a,i;const s=o.jh.getAncestor(t,r.P),c=null===(a=s.state.routeMatch)||void 0===a?void 0:a.params.labelValue,p=null===(i=s.state.routeMatch)||void 0===i?void 0:i.params.labelName;if(c){return h((0,d._F)(`${l.G3.explore}/${p}/${(0,u.uu)(c)}/${e}`),n)}return""}function y(e,t,n){const r=b(e,t,n);if(r){if(t){(0,i.JO)().setServiceSceneState(t.state)}S(r)}else;}function S(e){g=e,s.locationService.push(e)}function w(){const e=s.locationService.getLocation();s.locationService.push(e.pathname+e.search)}function O(){const e=s.locationService.getLocation(),t=(0,l.qe)(l.bw.explore()),n=e.pathname+e.search,r=s.locationService.getSearch();t===n||n.includes(t)||(r.get("var-filters")?S(t):(g&&s.locationService.replace(g),s.locationService.push(t)))}},1475:(e,t,n)=>{n.d(t,{rS:()=>I,FH:()=>$,HF:()=>B,jC:()=>P,ZC:()=>k,Nr:()=>T,dO:()=>_,C6:()=>L});var r=n(7781),a=n(9736),i=n(1269),s=n(1625),l=n(8955);class o extends a.dt{runQueries(){const e=a.jh.getTimeRange(this);this.runWithTimeRangeAndScopes(e)}constructor(e){super(e)}}var c=n(2007),u=n(5570),d=n(3142),p=n(7352),g=n(2649),h=n(42),f=n(376);function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e){for(var t=1;te.pipe((0,i.map)((e=>e.map(((t,n)=>b(m({},t),{fields:t.fields.map(((n,a)=>{if(n.type===r.FieldType.time)return n;const i=(0,r.getFieldDisplayName)(n,t,e);return b(m({},n),{config:b(m({},n.config),{displayName:i,color:{mode:r.FieldColorModeId.PaletteClassicByName}})})}))}))))))}function N(){return e=>e.pipe((0,i.map)((e=>e.map((e=>(e.fields.length<2||e.fields[1].config.displayNameFromDS||(e.fields[1].config.displayNameFromDS=y),e))).sort(((e,t)=>{if(e.fields.length<2||t.fields.length<2)return 0;const n=e.fields[1].config.displayNameFromDS,r=(null==n?void 0:n.match(E))?5:(null==n?void 0:n.match(x))?4:(null==n?void 0:n.match(O))?3:(null==n?void 0:n.match(w))||(null==n?void 0:n.match(S))?2:1,a=t.fields[1].config.displayNameFromDS;return r-((null==a?void 0:a.match(E))?5:(null==a?void 0:a.match(x))?4:(null==a?void 0:a.match(O))?3:(null==a?void 0:a.match(w))||(null==a?void 0:a.match(S))?2:1)})))))}function $(e){return new o({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e})}function I(e,t){const n=e.find((e=>{var t;return null===(t=e.legendFormat)||void 0===t?void 0:t.toLowerCase().includes("level")})),r=e.find((e=>e.refId===p.DS||e.refId===p.AA));return n?new a.Es({$data:B(m({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t)),transformations:[N]}):r?(e=e.map((e=>b(m({},e),{get direction(){return((0,g.PY)()||(0,g.zQ)())===s.uH.Descending?d.t.Backward:d.t.Forward}}))),B(m({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t))):new a.Es({$data:B(m({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:e},t)),transformations:[D]})}function B(e){return new a.dt(m({datasource:{uid:l.WRAPPED_LOKI_DS_UID},queries:[]},e))}},9598:(e,t,n)=>{n.d(t,{Gy:()=>a,_F:()=>i,s_:()=>r});const r=n(2533).id,a=`/a/${r}`;function i(e){return`${a}/${e}`}},7985:(e,t,n)=>{n.d(t,{$k:()=>f,BM:()=>p,CY:()=>O,E3:()=>S,PP:()=>b,VT:()=>C,VW:()=>v,ZX:()=>w,_q:()=>y,by:()=>P,c0:()=>m,l:()=>g,sT:()=>E,vC:()=>x});var r=n(20),a=n(9598),i=n(9736),s=n(6854),l=n(1459),o=n(6464);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e){for(var t=1;td(u(d(u({},h),{resource:t,refId:t}),n),{datasource:{uid:r.gR},expr:e,primaryLabel:a}),g=(e,t)=>d(u({},h,t),{expr:e}),h={refId:"A",queryType:"range",editorMode:"code",supportingQueryType:a.s_},f=(e,t,n,r)=>p(e,t,u({},r),n);function v(e,t){return new o.K(e).getLabelsExpr({ignoreKeys:t})}function m(e){var t,n,a;return e.value?{value:(0,r.OQ)(e.value),valueLabels:[null!==(t=e.label)&&void 0!==t?t:e.value]}:{value:e.value,valueLabels:[null!==(a=null!==(n=e.label)&&void 0!==n?n:e.value)&&void 0!==a?a:""]}}function b(e,t){var n,a,i;const s={value:null!==(a=e.value)&&void 0!==a?a:"",parser:null!==(i=null==t||null===(n=t.meta)||void 0===n?void 0:n.parser)&&void 0!==i?i:"mixed"};var l,o;return"structuredMetadata"===s.parser?{value:(0,r.OQ)(s.value),valueLabels:[null!==(l=e.label)&&void 0!==l?l:s.value]}:{value:(0,r.OQ)(JSON.stringify(s)),valueLabels:[null!==(o=e.label)&&void 0!==o?o:s.value]}}function y(e,t){return new o.K(e).getLevelsExpr({ignoreKeys:t})}function S(e,t){return new o.K(e).getMetadataExpr({ignoreKeys:t})}function w(e,t){return new o.K(e).getFieldsExpr({ignoreKeys:t})}function O(e){return(0,l.F)(e),e.map((e=>{if(!e.value)return"";const t=function(e){var t,n,r;return e.operator===s.cK.match||e.operator===s.cK.negativeMatch?e.key===s.ld.caseInsensitive?i.Go.escapeLabelValueInRegexSelector(null!==(t=e.value)&&void 0!==t?t:""):i.Go.escapeLabelValueInExactSelector(null!==(n=e.value)&&void 0!==n?n:""):i.Go.escapeLabelValueInExactSelector(null!==(r=e.value)&&void 0!==r?r:"")}(e);return function(e,t){return e.key===s.ld.caseInsensitive?e.operator===s.cK.negativeRegex||e.operator===s.cK.negativeMatch?`${s.cK.negativeRegex} "(?i)${t}"`:`${s.cK.regex} "(?i)${t}"`:`${e.operator} "${t}"`}(e,t)})).join(" ")}function x(e){return".+"===e?e:"(?i).*"!==e.substring(0,6)?`(?i).*${e}.*`:e}function E(e){return"(?i).*"===e.substring(0,6)&&".*"===e.slice(-2)?e.slice(6).slice(0,-2):e}function C(e){return e.replace(/\s*,\s*}/,"}")}const P=1e3},9683:(e,t,n)=>{n.d(t,{FT:()=>y,G3:()=>d,HU:()=>f,KL:()=>v,NX:()=>E,W6:()=>S,XJ:()=>x,Zt:()=>m,_J:()=>p,bw:()=>g,er:()=>w,mC:()=>h,qe:()=>O,tm:()=>b});var r=n(7781),a=n(20),i=n(8531),s=n(7389),l=n(5553),o=n(5953),c=n(9598);function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=function(e){return e.explore="explore",e.logs="logs",e.labels="labels",e.patterns="patterns",e.fields="fields",e}({}),p=function(e){return e.field="field",e.label="label",e}({});const g={explore:()=>(0,c._F)("explore"),logs:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/logs`),fields:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/fields`),patterns:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/patterns`),labels:(e,t="service")=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/labels`)},h={label:(e,t="service",n)=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/label/${n}`),field:(e,t="service",n)=>(0,c._F)(`explore/${t}/${(0,s.uu)(e)}/field/${n}`)},f={explore:"explore/*",logs:":labelName/:labelValue/logs",fields:":labelName/:labelValue/fields",patterns:":labelName/:labelValue/patterns",labels:":labelName/:labelValue/labels"},v={field:":labelName/:labelValue/field/:breakdownLabel",label:":labelName/:labelValue/label/:breakdownLabel"},m=["from","to",`var-${a.EY}`,`var-${a.MB}`],b=["from","to","mode","urlColumns","visualizationType","selectedLine","displayedFields","panelState",a.uw,`var-${a.uw}`,`var-${a.EY}`,`var-${a.MB}`,`var-${a.mB}`,`var-${a._Y}`,`var-${a.LI}`,`var-${a.Jg}`,`var-${a.EY}`,`var-${a.WM}`,`var-${a._P}`,`var-${a.NW}`];function y(){const e=i.locationService.getLocation();return e.pathname.slice(e.pathname.lastIndexOf("/")+1,e.pathname.length)}function S(){const e=i.locationService.getLocation(),t="/a/grafana-lokiexplore-app/explore",n=e.pathname.slice(e.pathname.indexOf(t)+34+1).split("/");let r=n[0];const s=n[1],l=n[3];return r===a.OX&&(r=a.ky),{labelName:r,labelValue:s,breakdownLabel:l}}function w(){const e=i.locationService.getLocation().pathname.split("/");return e[e.length-2]}function O(e,t){return r.urlUtil.renderUrl(e,function(e){return function(e){for(var t=1;t(m.includes(t)&&(e[t]=n),e)),{}),e)}(t))}function x(e){return{labelName:e.params.labelName,labelValue:e.params.labelValue,breakdownLabel:e.params.breakdownLabel}}function E(e){const t=(0,l.cR)(e);let{labelName:n,labelValue:r}=S();n===a.ky&&(n=a.OX);if(!t.state.filters.find((e=>e.key===n))){const e=i.locationService.getLocation();o.v.info("invalid primary label name in url",{labelName:n,url:`${e.pathname}${e.search}`})}if(!t.state.filters.find((e=>(0,s.uu)(e.value)===r))){const e=i.locationService.getLocation();o.v.info("invalid primary label value in url",{labelValue:r,url:`${e.pathname}${e.search}`})}}},5719:(e,t,n)=>{n.d(t,{Mq:()=>p,Ti:()=>c,U4:()=>u,UX:()=>v,hJ:()=>g,m0:()=>m,oh:()=>f,u9:()=>d});n(7781);var r=n(8531),a=n(9736),i=n(20),s=(n(9683),n(2661)),l=n(5953);function o(e,t,n,r,a,i,s){try{var l=e[i](s),o=l.value}catch(e){return void n(e)}l.done?t(o):Promise.resolve(o).then(r,a)}function c(e){return a.jh.getAncestor(e,s.P)}function u(e){return a.jh.interpolate(e,i.gR)}function d(e){return a.jh.interpolate(e,i.SA).replace(/\s+/g," ")}function p(e){return a.jh.interpolate(e,i.FX).replace(/\s+/g," ")}function g(e){return h.apply(this,arguments)}function h(){var e;return e=function*(e){return yield(0,r.getDataSourceSrv)().get(i.gR,{__sceneObject:{value:e}})},h=function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){o(i,r,a,s,l,"next",e)}function l(e){o(i,r,a,s,l,"throw",e)}s(void 0)}))},h.apply(this,arguments)}function f(e){return a.jh.findDescendents(e,a.dt)}function v(e,t,n){const r=a.jh.findObject(e,t);return r instanceof n?r:(null!==r&&l.v.warn(`invalid return type: ${n.toString()}`),null)}function m(e){var t;return null===(t=e.state.controls)||void 0===t?void 0:t.find((e=>e instanceof a.KE))}},9193:(e,t,n)=>{n.d(t,{E:()=>l,X:()=>s});var r=n(7993),a=n(3241);const i=new r.A({intraMode:1,intraIns:1,intraSub:1,intraTrn:1,intraDel:1});function s(e,t,n){const[a,s,l]=i.search(e,t,0,1e5);let o=[],c=new Set;if(a&&l){const t=(e,t)=>{t&&c.add(e)};for(let n=0;n{n.r(t),n.d(t,{DEFAULT_SORT_BY:()=>u,calculateDataFrameChangepoints:()=>p,calculateOutlierValue:()=>v,sortSeries:()=>d,sortSeriesByName:()=>g,wasmSupported:()=>m});var r=n(1854),a=n(6944),i=n(7781),s=n(5570),l=n(3241),o=n(4509),c=n(5953);const u="changepoint",d=(0,l.memoize)(((e,t,n)=>{if("alphabetical"===t)return g(e,n);"outliers"===t&&h(e);const r=n=>{var r;try{if("changepoint"===t)return p(n);if("outliers"===t)return v(e,n)}catch(e){c.v.error(e,{msg:"failed to sort"}),t=i.ReducerID.stdDev}const a=i.fieldReducers.get(t);var s;var l;return null!==(l=(null!==(s=null===(r=a.reduce)||void 0===r?void 0:r.call(a,n.fields[1],!0,!0))&&void 0!==s?s:(0,i.doStandardCalcs)(n.fields[1],!0,!0))[t])&&void 0!==l?l:0},a=e.map((e=>({value:r(e),dataFrame:e})));return a.sort(((e,t)=>void 0!==e.value&&void 0!==t.value?t.value-e.value:0)),"asc"===n&&a.reverse(),a.map((({dataFrame:e})=>e))}),((e,t,n)=>{const r=e.length>0?e[0].fields[0].values[0]:0,a=e.length>0?e[e.length-1].fields[0].values[e[e.length-1].fields[0].values.length-1]:0,i=e.length>0?(0,s.H7)(e[0]):"",l=e.length>0?(0,s.H7)(e[e.length-1]):"",o=e.map((e=>e.length+"_"+e.fields.map((e=>e.name+"_"+e.values[0]+"_"+e.values[e.values.length-1]))));return`${i}_${l}_${r}_${a}_${e.length}_${o}_${t}_${n}`})),p=e=>{if(!m())throw new Error("WASM not supported, fall back to stdDev");const t=e.fields.filter((e=>e.type===i.FieldType.number)),n=t[0].values.length;let a=Math.floor(n/100)||1;a>1&&(a=Math.ceil(a/2));const s=t[0].values.filter(((e,t)=>t%a==0)),l=new Float64Array(s);return r.ChangepointDetector.defaultArgpcp().detectChangepoints(l).indices.length},g=(e,t)=>{const n=[...e];return n.sort(((e,t)=>{const n=(0,s.H7)(e),r=(0,s.H7)(t);return n&&r&&null!==(a=null==n?void 0:n.localeCompare(r))&&void 0!==a?a:0;var a})),"desc"===t&&n.reverse(),n},h=e=>{if(!m())return;const t=(0,i.outerJoinDataFrames)({frames:e});if(!t)return;const n=t.fields.filter((e=>e.type===i.FieldType.number)).flatMap((e=>new Float64Array(e.values)));try{const e=a.OutlierDetector.dbscan({sensitivity:.4}).preprocess(n);f=e.detect()}catch(e){c.v.error(e,{msg:"initOutlierDetector: OutlierDetector error"})}};let f;const v=(e,t)=>{if(!m())throw new Error("WASM not supported, fall back to stdDev");if(!f)throw new Error("Initialize outlier detector first");const n=e.indexOf(t);return f.seriesResults[n].isOutlier?f.seriesResults[n].outlierIntervals.length:0},m=()=>{const e="object"==typeof WebAssembly;return e||(0,o.EE)(o.NO.service_details,o.ir.service_details.wasm_not_supported),e}},4351:(e,t,n)=>{n.d(t,{Bq:()=>R,Dy:()=>X,GL:()=>M,Gg:()=>v,IW:()=>K,KH:()=>J,N$:()=>P,OB:()=>g,QB:()=>S,RN:()=>T,Rb:()=>U,Rf:()=>D,Xo:()=>A,YK:()=>L,YM:()=>F,ZF:()=>k,Zs:()=>z,cC:()=>h,cO:()=>f,eT:()=>p,ex:()=>Q,fq:()=>E,hp:()=>V,k5:()=>$,ke:()=>w,o5:()=>I,og:()=>W,sj:()=>m,uF:()=>Y,vs:()=>x,zu:()=>Z});var r=n(2533),a=n(5553),i=n(5953),s=n(20),l=n(8428);const o=`${r.id}.services.favorite`,c=`${r.id}.primarylabels.tabs.favorite`,u=`${r.id}.datasource`,d=`${r.id}.scene.layout`;function p(e,t){if(!e||"string"!=typeof e)return[];const n=b(e,t);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}return Array.isArray(r)||(r=[]),r}function g(e,t,n){if(!e||"string"!=typeof e)return;const r=b(e,t);let a=[];try{a=(0,l.aJ)(JSON.parse(localStorage.getItem(r)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(a)||(a=[]);const s=a.filter((e=>e!==n));s.unshift(n),localStorage.setItem(r,JSON.stringify(s))}function h(e,t,n){if(!e||!t||!n||"string"!=typeof e)return;const r=b(e,t);let a=[];try{a=(0,l.aJ)(JSON.parse(localStorage.getItem(r)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(a)||(a=[]);const s=a.filter((e=>e!==n));localStorage.setItem(r,JSON.stringify(s))}function f(e,t){if(!e||!t)return;const n=y(e);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing saved tabs from local storage"})}if(Array.isArray(r)||(r=[]),-1===r.indexOf(t)){const e=r.filter((e=>e!==t));e.unshift(t),localStorage.setItem(n,JSON.stringify(e))}}function v(e,t){if(!e||!t)return;const n=y(e);let r=[];try{r=(0,l.aJ)(JSON.parse(localStorage.getItem(n)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}Array.isArray(r)||(r=[]);const a=r.filter((e=>e!==t));localStorage.setItem(n,JSON.stringify(a))}function m(e){if(!e||"string"!=typeof e)return[];const t=y(e);let n=[];try{n=(0,l.aJ)(JSON.parse(localStorage.getItem(t)||"[]"))}catch(e){i.v.error(e,{msg:"Error parsing favorite services from local storage"})}return Array.isArray(n)||(n=[]),n}function b(e,t){return t=t===s.OX?"":`_${t}`,`${o}_${e}${t}`}function y(e){return`${c}_${e}`}function S(){var e;return null!==(e=localStorage.getItem(u))&&void 0!==e?e:void 0}function w(e){localStorage.setItem(u,e)}const O=`${r.id}.values.sort`;function x(e,t,n){var r;const a=(null!==(r=localStorage.getItem(`${O}.${e}.by`))&&void 0!==r?r:"").split(".");if(!a[0]||!a[1])return{sortBy:t,direction:n};return{sortBy:a[0],direction:a[1]}}function E(e,t,n){t&&n&&localStorage.setItem(`${O}.${e}.by`,`${t}.${n}`)}function C(e){return`${(0,a.nH)(e)}.${(0,a.p_)(e)}`}function P(e){const t=C(e),n=localStorage.getItem(`${r.id}.${t}.logs.fields`);return n?JSON.parse(n):[]}function k(e,t){const n=C(e);localStorage.setItem(`${r.id}.${n}.logs.fields`,JSON.stringify(t))}const j=`${r.id}.logs.option`;function F(e,t){const n=localStorage.getItem(`${j}.${e}`);return n||t}function L(e,t){let n=t.toString();"boolean"!=typeof t||t||(n=""),localStorage.setItem(`${j}.${e}`,n)}const _="grafana.explore.logs.logsVolume";function T(e,t){const n=`${_}.${e}`;void 0!==t?localStorage.setItem(n,t):localStorage.removeItem(n)}function D(e){return Boolean(localStorage.getItem(`${_}.${e}`))}const N="grafana.explore.logs.visualisationType";function $(){var e;const t=null!==(e=localStorage.getItem(N))&&void 0!==e?e:"";switch(t){case"table":case"logs":return t;default:return"logs"}}function I(e){localStorage.setItem(N,e)}const B=`${r.id}.linefilter.option`;function A(e){let t=e.toString();e||(t=""),localStorage.setItem(`${B}.caseSensitive`,t)}function M(e){let t=e.toString();e||(t=""),localStorage.setItem(`${B}.regex`,t)}function R(e){let t=e.toString();e||(t=""),localStorage.setItem(`${B}.exclusive`,t)}function V(e){return"true"===localStorage.getItem(`${B}.caseSensitive`)||e}function W(e){return"true"===localStorage.getItem(`${B}.regex`)||e}function z(e){return"true"===localStorage.getItem(`${B}.exclusive`)||e}const H=`${r.id}.panel.option`;function Q(e,t){const n=localStorage.getItem(`${H}.${e}`);var r;return null!==n&&null!==(r=t.find((e=>n===e)))&&void 0!==r?r:null}function K(e,t){localStorage.setItem(`${H}.${e}`,t)}const G=`${r.id}.expressionBuilder.debug`;function U(){return!!localStorage.getItem(G)}const q=`${r.id}.serviceSelection.pageCount`;function J(){const e=localStorage.getItem(q);return e?parseInt(e,10):void 0}function Y(e){localStorage.setItem(q,e.toString(10))}function X(){return localStorage.getItem(d)}function Z(e){localStorage.setItem(d,e)}},3571:(e,t,n)=>{n.d(t,{b:()=>r});const r={appConfig:{container:"data-testid ac-container",apiKey:"data-testid ac-api-key",apiUrl:"data-testid ac-api-url",submit:"data-testid ac-submit-form"},exploreServiceSearch:{search:"data-testid search-services"},header:{refreshPicker:"data-testid RefreshPicker run button"},variables:{datasource:{label:"data-testid Dashboard template variables submenu Label Data source"},combobox:{},serviceName:{label:"data-testid Dashboard template variables submenu Label Labels"},levels:{inputWrap:"data-testid detected_level filter variable"}},breakdowns:{labels:{},fields:{},common:{sortByFunction:"data-testid SortBy function",sortByDirection:"data-testid SortBy direction",filterButtonGroup:"data-testid filter-button-group",filterButton:"data-testid filter-button",filterSelect:"data-testid filter-select",filterNumericPopover:{removeButton:"data-testid filter-numeric-remove",submitButton:"data-testid filter-numeric-submit",cancelButton:"data-testid filter-numeric-cancel",inputGreaterThan:"data-testid filter-numeric-gt",inputGreaterThanUnit:"data-testid filter-numeric-gtu",inputGreaterThanInclusive:"data-testid filter-numeric-gte",inputLessThan:"data-testid filter-numeric-lt",inputLessThanUnit:"data-testid filter-numeric-ltu",inputLessThanInclusive:"data-testid filter-numeric-lte"}}},index:{showLogsButton:"data-testid button-filter-include",selectServiceButton:"data-testid button-select-service",addNewLabelTab:"data-testid Tab Add label",searchLabelValueInput:"data-testid search-services-input",aggregatedMetricsMenu:"data-testid aggregated-metrics-menu",aggregatedMetricsToggle:"data-testid aggregated-metrics-toggle",header:{showLogsButton:"data-testid Show logs header"}},exploreServiceDetails:{searchLogs:"data-testid search-logs",openExplore:"data-testid open-explore",tabPatterns:"data-testid tab-patterns",tabLogs:"data-testid tab-logs",tabFields:"data-testid tab-fields",tabLabels:"data-testid tab-labels",buttonRemovePattern:"data-testid button-remove-pattern",buttonFilterInclude:"data-testid button-filter-include",buttonFilterExclude:"data-testid button-filter-exclude"},patterns:{tableWrapper:"data-testid table-wrapper",buttonIncludedPattern:"data-testid button-included-pattern",buttonExcludedPattern:"data-testid button-excluded-pattern"},logsPanelHeader:{header:"data-testid Panel header Logs",radio:"data-testid radio-button"},table:{wrapper:"data-testid table-wrapper",inspectLine:"data-testid inspect",rawLogLine:"data-testid raw-log-line"}}},5002:(e,t,n)=>{n.d(t,{Dk:()=>s,EJ:()=>c,Ki:()=>u,Zr:()=>o,gW:()=>l});var r=n(8531),a=n(5953),i=n(7781);const s=e=>{if(navigator.clipboard&&window.isSecureContext)navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}};const l=(e,t,n)=>{const a=r.locationService.getLocation(),s=i.urlUtil.getUrlSearchParams();return s.from=n.from.toISOString(),s.to=n.to.toISOString(),s[e]=JSON.stringify(t),l=i.urlUtil.renderUrl(a.pathname,s),`${window.location.protocol}//${window.location.host}${r.config.appSubUrl}${l}`;var l};function o(e){return e.length?(null==e?void 0:e.charAt(0).toUpperCase())+e.slice(1):(a.v.warn("invalid string argument"),e)}function c(e,t,n){return e.substring(0,t)+(n&&e.length>t?"…":"")}function u(e){const t=(0,i.dateTime)(e.timeEpochMs-1),n=(0,i.dateTime)(e.timeEpochMs+1);return{from:t,to:n,raw:{from:t,to:n}}}},5553:(e,t,n)=>{n.d(t,{BL:()=>k,DX:()=>c,El:()=>P,Gk:()=>O,Hj:()=>S,Ku:()=>u,P4:()=>b,Rr:()=>m,S9:()=>w,YS:()=>h,aW:()=>p,bY:()=>x,bu:()=>F,cR:()=>d,eY:()=>E,h:()=>C,ir:()=>f,iw:()=>v,n5:()=>j,nH:()=>T,oY:()=>g,p_:()=>_,vm:()=>y,z2:()=>L});var r=n(9736),a=n(4702),i=n(20),s=n(5953),l=n(8428),o=n(8502);function c(e){const{labelExpressionToAdd:t="",structuredMetadataToAdd:n="",fieldExpressionToAdd:r="",parser:a}=e;switch(a){case"structuredMetadata":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${r} ${i.Oc}`;case"json":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.VL} ${r} ${i.Oc}`;case"logfmt":return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.mF} ${r} ${i.Oc}`;default:return`{${i.S1}${t}} ${n} ${i.qZ} ${i.S6} ${i.sC} ${i.rl} ${i.YN} ${r} ${i.Oc}`}}function u(e){const t=r.jh.lookupVariable(i.uw,e);if(!(t instanceof r.yP))throw new Error("VAR_PATTERNS not found");return t}function d(e){return x(i.MB,e)}function p(e){return x(i.fi,e)}function g(e){return x(i._P,e)}function h(e){return x(i.sL,e)}function f(e){return x(i.mB,e)}function v(e){return x(i._Y,e)}function m(e){const t=r.jh.lookupVariable(i.WM,e);if(!(t instanceof r.H9))throw new Error("VAR_LINE_FILTER not found");return t}function b(e){const t=r.jh.lookupVariable(i.Jg,e);if(!(t instanceof a.m))throw new Error("VAR_LABEL_GROUP_BY not found");return t}function y(e){const t=r.jh.lookupVariable(i.Wi,e);if(!(t instanceof a.m))throw new Error("SERVICE_LABEL_VAR not found");return t}function S(e){const t=r.jh.lookupVariable(i.LI,e);if(!(t instanceof a.m))throw new Error("VAR_FIELD_GROUP_BY not found");return t}function w(e){const t=r.jh.lookupVariable(i.EY,e);if(!(t instanceof r.mI))throw new Error("VAR_DATASOURCE not found");return t}function O(e){const t=r.jh.lookupVariable(i.NW,e);if(!(t instanceof r.H9))throw new Error("VAR_LINE_FILTERS not found");return t}function x(e,t){const n=r.jh.lookupVariable(e,t);if(!(n instanceof r.H9))throw new Error(`Could not get AdHocFiltersVariable ${e}. Variable not found.`);return n}function E(e){const t=r.jh.lookupVariable(i.Du,e);if(!(t instanceof a.m))throw new Error("VAR_PRIMARY_LABEL_SEARCH not found");return t}function C(e){E(e).setState({value:".+",label:""})}function P(e){const t=r.jh.lookupVariable(i.Gb,e);if(!(t instanceof r.H9))throw new Error("VAR_PRIMARY_LABEL not found");return t}function k(e,t){P(t).setState({filters:[{value:".+",operator:"=~",key:e}]})}function j(e){return`var-${e}`}function F(e,t=i.mB){if((0,o.OH)(e))return{value:e.value,parser:"structuredMetadata"};try{const t=(0,i.zE)(e.value)?(0,i.Dx)(e.value):e.value,n=(0,l.fS)(JSON.parse(t));if(!1!==n)return n;throw new l.QX("getValueFromFieldsFilter: invalid filter value!")}catch(n){if(n instanceof l.QX?s.v.error(n,{msg:`getValueFromFieldsFilter: Failed to validate ${t}`,value:e.value}):s.v.error(n,{msg:`getValueFromFieldsFilter: Failed to parse ${t}`,value:e.value}),e.value)return{value:e.value,parser:"mixed"};throw n}}function L(e,t){return e===i.mB&&t?F(t):{value:null==t?void 0:t.value}}function _(e){return function(e){const t=e.filters.filter((e=>e.key===i.OX)).map((e=>e.value));if(!t)throw new Error("Service present in filters selected");return t[0]}(d(e).state)}function T(e){return w(e).getValue()}},5548:(e,t,n)=>{n.d(t,{Ht:()=>g,mE:()=>d,rA:()=>p});var r=n(9736),a=n(4702),i=n(20),s=n(2661),l=n(9683),o=n(6854),c=n(4532),u=n(708);function d(e){const t=r.jh.getVariables(e);let n=[];for(const e of t.state.variables)e instanceof r.H9&&e.state.filters.length&&n.push(e),e instanceof a.m&&e.state.value&&"logsFormat"!==e.state.name&&n.push(e);return n}function p(e){const t=r.jh.getAncestor(e,s.P);t.setState({patterns:[]});d(t).forEach((e=>{if(e instanceof r.H9&&"adhoc_service_filter"===e.state.key){let{labelName:t}=(0,l.W6)();t===i.ky&&(t=i.OX),e.setState({filters:e.state.filters.filter((e=>e.key===t))})}else e instanceof r.H9?e.setState({filters:[]}):e instanceof a.m&&e.setState({value:"",text:""})}))}const g=function(e){const t=e.state._wip;if(t&&e.state.filters.some((e=>e.key===t.key&&e.operator===o.w7.Equal)))return c._i;const n=e.state.name===i.MB,r=e.state.filters.filter((e=>(0,u.BG)(e.operator))).length,a=!(null==t?void 0:t.key)&&1===r,s=(null==t?void 0:t.key)&&r<1;if(n&&(a||s))return c._i;if(null==t?void 0:t.meta){const e=t.meta.type;if("float"===e||"bytes"===e||"duration"===e)return c.hI}return c.II}}}]); +//# sourceMappingURL=386.js.map?_cache=46b2efad8f9b648bc3ff \ No newline at end of file diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/386.js.map b/compose/grafana/plugins/grafana-lokiexplore-app/386.js.map new file mode 100644 index 0000000..cfc3145 --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/386.js.map @@ -0,0 +1 @@ +{"version":3,"file":"386.js?_cache=46b2efad8f9b648bc3ff","mappings":"uMAoBO,MAAMA,EAAgBC,IAC3B,MAAM,WAAEC,EAAU,WAAEC,EAAU,UAAEC,EAAS,UAAEC,EAAS,QAAEC,EAAO,OAAEC,EAAM,WAAEC,EAAU,YAAEC,GAAgBR,EAC7FS,GAASC,EAAAA,EAAAA,YAAWC,EAAWT,EAAYD,EAAYO,GAC7D,OACE,kBAACI,MAAAA,CAAIC,UAAWJ,EAAOK,WACrB,kBAACC,EAAAA,OAAMA,CACLC,QAASd,EAAa,UAAY,YAClCe,KAAMV,EACNW,KAAK,KACLC,gBAAejB,EACfW,UAAWJ,EAAOW,cAClBC,QAASnB,EAAaG,EAAUF,EAChCmB,cAAaC,EAAAA,EAAQC,sBAAsBC,oBAC3CC,MAAOpB,aAAAA,EAAAA,EAAQqB,SAChB,YAGCnB,GACA,kBAACO,EAAAA,OAAMA,CACLC,QAASf,EAAa,UAAY,YAClCgB,KAAMV,EACNW,KAAK,KACLC,gBAAelB,EACfY,UAAWJ,EAAOmB,cAClBP,QAASpB,EAAaI,EAAUD,EAChCsB,MAAOpB,aAAAA,EAAAA,EAAQuB,QACfP,cAAaC,EAAAA,EAAQC,sBAAsBM,qBAC5C,aAQHnB,EAAY,CAACoB,EAAsB7B,EAAqBD,EAAqBO,KAC1E,CACLM,WAAWkB,EAAAA,EAAAA,KAAI,CACbC,QAAS,OACTC,eAAgB,WAElBd,eAAeY,EAAAA,EAAAA,KAAI,CACjBG,aAAc,EACdC,YAAalC,GAAcM,OAAc6B,EAAY,SAEvDT,eAAeI,EAAAA,EAAAA,KAAI,CACjBG,aAAc,KAAKJ,EAAMO,MAAMC,OAAOC,WAAWT,EAAMO,MAAMC,OAAOC,YACpEC,WAAYxC,OAAaoC,EAAY,U,6ECxDpC,MAAMK,EAAY,EAAGC,eAC1B,MAAMlC,GAASC,EAAAA,EAAAA,YAAWC,GAC1B,OACE,kBAACC,MAAAA,CAAIC,UAAWJ,EAAOmC,MACrB,kBAACC,EAAAA,WAAUA,CAAC7B,QAAQ,YAAY8B,QAASH,EAAW,GAAK,qBACtDA,GAAYA,GAAAA,EAMfhC,EAAaoB,IACV,CACLa,MAAMZ,EAAAA,EAAAA,KAAI,CACRe,OAAQ,Y,uICpBP,SAASC,EAAgBhD,GAC9B,MAAMS,GAASC,EAAAA,EAAAA,YAAWC,GAC1B,OACE,oCACE,kBAACsC,EAAAA,MAAKA,CACJpC,UAAWJ,EAAOyC,MAClBC,SAAU,OACVzB,MAAO,qCACP0B,SAAUpD,EAAMoD,UAEhB,kBAACxC,MAAAA,KAAI,gBACW,IACd,kBAACyC,IAAAA,CACCxC,UAAU,gBACVyC,OAAO,SACPC,KAAK,qFACLC,IAAI,cACL,mBAEG,WACK,IACT,kBAACH,IAAAA,CACCxC,UAAU,gBACVyC,OAAO,SACPC,KAAK,mDACLC,IAAI,cACL,kBAEG,IACH,kBAACC,KAAAA,MAAK,uCAC8B,IACrC,kBAACJ,IAAAA,CAAExC,UAAU,gBAAgByC,OAAO,SAASC,KAAK,sCAAsCC,IAAI,cAAa,oBAEpG,IAAI,uBACY,IACrB,kBAACH,IAAAA,CACCxC,UAAU,gBACVyC,OAAO,SACPC,KAAK,2EACLC,IAAI,cACL,UAEG,MAMd,CAEA,SAAS7C,EAAUoB,GACjB,MAAO,CACLmB,OAAOlB,EAAAA,EAAAA,KAAI,CACT0B,KAAM,SAGZ,C,kCCxDO,MAAMC,EAAqB,KAChC,MAAMlD,GAASC,EAAAA,EAAAA,YAAWC,GAC1B,OACE,kBAACC,MAAAA,CAAIC,UAAWJ,EAAOmD,SACrB,kBAACP,IAAAA,CACCE,KAAK,sCACL1C,UAAWJ,EAAOoD,SAClBnC,MAAM,6CACN4B,OAAO,SACPE,IAAI,uBAEJ,kBAACM,EAAAA,KAAIA,CAACC,KAAK,wBAAwB,oBAMrCpD,EAAaoB,IACV,CACL6B,SAAS5B,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACT+B,WAAY,OACZC,IAAKlC,EAAMmC,QAAQ,GACnBC,SAAU,WACVC,IAAKrC,EAAMmC,SAAS,KAEtBL,UAAU7B,EAAAA,EAAAA,KAAI,CACZqC,UAAW,SACXC,MAAOvC,EAAMwC,OAAOC,KAAKC,UACzBC,SAAU3C,EAAM4C,WAAWC,UAAUF,SACrC,UAAW,CACTJ,MAAOvC,EAAMwC,OAAOC,KAAKK,UCpB1B,MAAMC,UAAqCC,EAAAA,I,YAIlD,UAA8C,MAAEC,I,IAI1CA,EAKAA,EARJ,MAAMC,EAAoBC,EAAAA,GAAWC,aAAaH,GAAOI,WACzD,IAAIC,EAAYJ,EAAkBI,UAalC,OAXuB,QAAnBL,EAAAA,EAAMM,MAAM3D,eAAZqD,IAAAA,OAAAA,EAAAA,EAAqBO,UACvBF,EAAYJ,EAAkBI,UAAUG,QAAQC,I,IAC9CT,EAA8BS,E,OAAX,QAAnBT,EAAAA,EAAMM,MAAM3D,eAAZqD,IAAAA,OAAAA,EAAAA,EAAqBU,SAA4B,QAAnBD,EAAAA,EAASH,MAAMvB,YAAf0B,IAAAA,EAAAA,EAAuB,GAAG,MAGrC,QAAnBT,EAAAA,EAAMM,MAAMzD,eAAZmD,IAAAA,OAAAA,EAAAA,EAAqBO,UACvBF,EAAYJ,EAAkBI,UAAUG,QACrCC,I,IAAcT,EAA8BS,E,QAAX,QAAnBT,EAAAA,EAAMM,MAAMzD,eAAZmD,IAAAA,OAAAA,EAAAA,EAAqBU,SAA4B,QAAnBD,EAAAA,EAASH,MAAMvB,YAAf0B,IAAAA,EAAAA,EAAuB,SAKtE,oCACGJ,EAAUM,KAAKF,GACd,kBAACG,EAAAA,GAA0BA,CAACC,IAAKJ,EAASH,MAAMO,IAAKJ,SAAUA,EAAUK,OAAQd,EAAMM,MAAMQ,WAIrG,G,EAzBgBC,e,EADHjB,G,oGCFN,MAAMkB,EAAa,EAAG5C,WAAU6C,UAAS/E,OAAO,SACrD,MAAMT,GAASC,EAAAA,EAAAA,YAAWC,IACnBuF,EAAUC,IAAef,EAAAA,EAAAA,WAAS,GACzC,OACE,kBAACxE,MAAAA,CAAIC,UAAWJ,EAAOwF,QAAS5E,QAAS,IAAM8E,GAAaD,GAAWE,aAAc,IAAMD,GAAY,IACrG,kBAACE,EAAAA,IAAGA,CACF3E,MAAOuE,EACPJ,IAAKI,EACLlC,KAAMmC,EAAWD,EAAUK,EAAkBL,EAAS/E,GACtDL,UAAWJ,EAAO8F,MAEpB,kBAACxF,EAAAA,OAAMA,CACLyF,aAAW,iBACXlF,cAAaC,EAAAA,EAAQC,sBAAsBiF,oBAC3CzF,QAAQ,YACRE,KAAK,KACLL,UAAWJ,EAAOiG,aAClBrF,QAAS+B,GAET,kBAACU,EAAAA,KAAIA,CAACC,KAAK,W,EAMb4C,EAA6C,CACjDC,GAAI,GACJC,GAAIC,KAAKC,MAAMC,OAAOC,WAAa,IAGrC,SAASX,EAAkBL,EAAiB/E,GAC1C,MAAMqE,EAASU,EAAQV,OACvB,GAAIA,EAASoB,EAAczF,GACzB,OAAO+E,EAGT,MAAMiB,EAAkBJ,KAAKC,MAA4B,GAAtBJ,EAAczF,IAEjD,MAAO,GAAG+E,EAAQkB,UAAU,EAAGD,QAAsBjB,EAAQkB,UAAU5B,EAAS2B,IAClF,CAEA,MAAMvG,EAAaoB,IACV,CACLkE,SAASjE,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACTmF,WAAY,YACZnD,IAAKlC,EAAMmC,QAAQ,KACnBmD,OAAQ,UACRC,SAAU,WAEZf,KAAKvE,EAAAA,EAAAA,KAAI,CACPuF,qBAAsB,EACtBC,wBAAyB,EACzBC,gBAAiB1F,EAAMwC,OAAOE,UAAUiD,KACxCC,OAAQ,aAAa5F,EAAMwC,OAAOE,UAAUkD,SAC5CrD,MAAOvC,EAAMwC,OAAOE,UAAUD,KAC9BoD,UAAW,aACXC,QAAS9F,EAAMmC,QAAQ,IAAM,KAC7BoD,SAAU,SACVQ,aAAc,aAEhBpB,cAAc1E,EAAAA,EAAAA,KAAI,CAChB+F,YAAa,IACbC,aAAc,Q,wBC/Db,MAAMC,EAAkB,EAAGC,WAAU9E,eAC1C,MAAM3C,GAASC,EAAAA,EAAAA,YAAWC,GAE1B,IAAKuH,GAAgC,IAApBA,EAAS3C,OACxB,OAAO,KAGT,MAAM4C,EAAkBD,EAAS1C,QAAQS,GAA6B,YAAjBA,EAAQmC,OACvDC,EAAkBH,EAAS1C,QAAQS,GAA6B,YAAjBA,EAAQmC,OAEvDE,EAAmBrC,KACvBsC,EAAAA,EAAAA,MACAnF,EAAS8E,EAAS1C,QAAQgD,GAAQA,IAAQvC,MAC1CwC,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkBC,gBAAiBC,EAAAA,GAAoBD,gBAAgBE,gBAAiB,CAC3GC,sBAAuBX,EAAgB5C,QAA4B,aAAlBU,aAAAA,EAAAA,EAASmC,MAAqB,EAAI,GACnFW,sBAAuBV,EAAgB9C,QAA4B,aAAlBU,aAAAA,EAAAA,EAASmC,MAAqB,EAAI,GACnFA,KAAMnC,EAAQmC,MACd,EAGJ,OACE,kBAACxH,MAAAA,KACEuH,EAAgB5C,OAAS,GACxB,kBAAC3E,MAAAA,CAAIC,UAAWJ,EAAOuI,mBACrB,kBAACC,EAAAA,KAAIA,CAACjI,QAAQ,YAAYkI,OAAO,OAAO5H,cAAaC,EAAAA,EAAQ2G,SAASiB,uBAAuB,mBAC1EjB,EAAS3C,OAAS,EAAI,IAAM,IAE/C,kBAAC3E,MAAAA,CAAIC,UAAWJ,EAAOyH,UACpBC,EAAgBxC,KAAKyD,GACpB,kBAACpD,EAAUA,CAACH,IAAKuD,EAAEnD,QAASA,QAASmD,EAAEnD,QAAS/E,KAAK,KAAKkC,SAAU,IAAMkF,EAAgBc,SAKjGf,EAAgB9C,OAAS,GACxB,kBAAC3E,MAAAA,CAAIC,UAAWJ,EAAOuI,mBACrB,kBAACC,EAAAA,KAAIA,CAACjI,QAAQ,YAAYkI,OAAO,OAAO5H,cAAaC,EAAAA,EAAQ2G,SAASmB,uBAAuB,mBAC1EhB,EAAgB9C,OAAS,EAAI,IAAM,GAAG,KAEzD,kBAAC3E,MAAAA,CAAIC,UAAWJ,EAAOyH,UACpBG,EAAgB1C,KAAKyD,GACpB,kBAACpD,EAAUA,CACTH,IAAKuD,EAAEnD,QACPA,QAASmD,EAAEnD,QACX/E,KAAMmH,EAAgB9C,OAAS,EAAI,KAAO,KAC1CnC,SAAU,IAAMkF,EAAgBc,S,EAUhD,SAASzI,EAAUoB,GACjB,MAAO,CACLiH,mBAAmBhH,EAAAA,EAAAA,KAAI,CACrBsF,SAAU,WAEZY,UAAUlG,EAAAA,EAAAA,KAAI,CACZC,QAAS,OACTgC,IAAKlC,EAAMmC,QAAQ,GACnBoF,WAAY,SACZC,SAAU,SAGhB,CCjEO,MAAMC,UAA4BzE,EAAAA,K,6GACvC,CADWyE,EACJzD,aAAY,EAAGf,YACpB,MAAMyE,EAAavE,EAAAA,GAAWwE,YAAY1E,EAAO2E,KAC3C,SAAEC,EAAQ,SAAE1B,GAAauB,EAAWrE,WAEpCyE,EAAc3E,EAAAA,GAAWwE,YAAY1E,EAAO8E,IAC5C,mBAAEC,EAAkB,eAAEC,GAAmBH,EAAYzE,WAErD3E,GAASC,EAAAA,EAAAA,aAAYqB,GAiF/B,SAAmBA,GACjB,MAAO,CACLkI,iBAAiBjI,EAAAA,EAAAA,KAAI,CACnB,gBAAiB,CACfiC,IAAK,OACLiG,MAAO,oBAEP,CAACnI,EAAMoI,YAAYC,KAAK,OAAQ,CAC9BC,cAAe,aAIrBC,2BAA2BtI,EAAAA,EAAAA,KAAI,CAC7BkI,MAAO,qBACPjI,QAAS,OACTgC,IAAKlC,EAAMmC,QAAQ,GACnBhC,eAAgB,gBAChBoH,WAAY,aACZ,CAACvH,EAAMoI,YAAYC,KAAK,OAAQ,CAC9BC,cAAe,oBAGnBE,sBAAsBvI,EAAAA,EAAAA,KAAI,CACxB,UAAW,CACTC,QAAS,QAEXiI,MAAO,eACPjI,QAAS,OAETgC,IAAKlC,EAAMmC,QAAQ,GACnBoF,WAAY,aACZ,CAACvH,EAAMoI,YAAYC,KAAK,OAAQ,CAC9BC,cAAe,YAGnBG,yBAAyBxI,EAAAA,EAAAA,KAAI,CAC3BmC,SAAU,SACVC,IAAKqG,EACLC,KAAM,EACNC,WAAY5I,EAAMwC,OAAOoG,WAAWC,OACpCC,OAAQ9I,EAAM8I,OAAOC,YACrB7G,IAAKlC,EAAMmC,QAAQ,GACnB6G,UAAWhJ,EAAMiJ,QAAQC,KAE3BC,mBAAmBlJ,EAAAA,EAAAA,KAAI,CACrBkI,MAAO,oBACPjI,QAAS,OACToI,cAAe,SACfpG,IAAKlC,EAAMmC,QAAQ,GACnB2D,QAAS9F,EAAMmC,QAAQ,KAEzBiH,SAASnJ,EAAAA,EAAAA,KAAI,CACXkI,MAAO,UACPjI,QAAS,SAEXmJ,aAAapJ,EAAAA,EAAAA,KAAI,CACfkI,MAAO,cACPjI,QAAS,OACTgC,IAAKlC,EAAMmC,QAAQ,GACnBmH,MAAO,mBACP9B,SAAU,OACVD,WAAY,aAEdgC,iBAAiBtJ,EAAAA,EAAAA,KAAI,CACnBkI,MAAO,kBACPjI,QAAS,OACToI,cAAe,SACfkB,UAAWxJ,EAAMmC,QAAQ,QAE3BsH,qBAAqBxJ,EAAAA,EAAAA,KAAI,CACvBkI,MAAO,sBACPjI,QAAS,OACTgC,IAAKlC,EAAMmC,QAAQ,GACnBqF,SAAU,OACVrH,eAAgB,aAElBuJ,WAAWzJ,EAAAA,EAAAA,KAAI,CACbkI,MAAO,YACPjI,QAAS,OACToI,cAAe,MACfpG,IAAKlC,EAAMmC,QAAQ,KAGzB,CApKyCvD,CAAUoB,EAAOiD,EAAMM,MAAMnB,YAElE,OACE,kBAACvD,MAAAA,CACCC,WAAW6K,EAAAA,EAAAA,IACTjL,EAAOyK,kBACkB,WAAzBlG,EAAMM,MAAMnB,SAAwB1D,EAAO+J,6BAA0BnI,IAGvE,oCAEGuH,GACC,kBAAChJ,MAAAA,CAAIC,UAAWJ,EAAO6J,2BACrB,kBAAC1J,MAAAA,CAAIC,UAAWJ,EAAO2K,aACrB,kBAACxK,MAAAA,CAAIC,WAAW6K,EAAAA,EAAAA,IAAGjL,EAAO0K,QAAS1K,EAAOwJ,kBACvCL,EAASjE,KAAKgG,GACNA,aAAmBC,EAAAA,GACxB,kBAACD,EAAQ5F,UAAS,CAACF,IAAK8F,EAAQrG,MAAMO,IAAKb,MAAO2G,IAChD,SAIV,kBAAC/K,MAAAA,CAAIC,UAAWJ,EAAO6K,iBACrB,kBAAC3H,EAAkBA,MACnB,kBAAC/C,MAAAA,CAAIC,UAAWJ,EAAO+K,qBACpB5B,EAASjE,KAAKgG,GACNA,EAAQrG,MAAMO,MAAQgG,EAC3B,kBAACF,EAAQ5F,UAAS,CAACF,IAAK8F,EAAQrG,MAAMO,IAAKb,MAAO2G,IAChD,OAGN,kBAAC/K,MAAAA,CAAIC,UAAWJ,EAAOgL,WACpB7B,EAASjE,KAAKgG,GACJA,aAAmB7G,GACxB6G,aAAmBC,EAAAA,GAEnB,KADF,kBAACD,EAAQ5F,UAAS,CAACF,IAAK8F,EAAQrG,MAAMO,IAAKb,MAAO2G,UAUhE,kBAAC/K,MAAAA,CAAIC,UAAWJ,EAAO8J,sBACpBP,GAAkB,kBAACA,EAAejE,UAAS,CAACf,MAAOgF,IACnDJ,GACC,kBAAChJ,MAAAA,CAAIC,UAAWJ,EAAO2K,aACrB,kBAACxK,MAAAA,CAAIC,UAAWJ,EAAO0K,SACpBvB,EAASjE,KAAKgG,GACNA,aAAmB7G,GACxB6G,EAAQrG,MAAMO,MAAQiG,EACtB,kBAACH,EAAQ5F,UAAS,CAACF,IAAK8F,EAAQrG,MAAMO,IAAKb,MAAO2G,IAChD,UAQd,kBAAC/K,MAAAA,CAAIC,UAAWJ,EAAO8J,sBACrB,kBAACtC,EAAeA,CACdC,SAAUA,EACV9E,SAAW8E,GAA+BuB,EAAWsC,SAAS,CAAE7D,gBAKpE,kBAACtH,MAAAA,CAAIC,UAAWJ,EAAO8J,sBACpBR,GAAsB,kBAACA,EAAmBhE,UAAS,CAACf,MAAO+E,M,IASxE,MAAMU,EAAsB,G,wlBClF5B,MAAMuB,EAA4B,GAAGC,EAAAA,+BAMxBH,EAAgC,uBAIhCD,EAA2B,UAGjC,MAAM/B,UAAoB/E,EAAAA,GAyCxBmH,UAAAA,GACL,MAAMC,GAAOC,EAAAA,EAAAA,MACbC,KAAKN,SAAS,CACZhC,mBAAoB,IAAIuC,EAAAA,EAAyB,CAAC,GAClDtC,eAAgB,IAAIuC,EAAAA,GAAoB,CAAC,GACzCC,eAAgB,IAAIhD,EAAoB,CAAErF,SAAUgI,IAASM,EAAAA,GAAUC,QAAU,SAAW,cAEhG,CAEOC,OAAAA,GACLN,KAAKN,SAAS,CACZa,oBAAoB,IAEtBC,aAAaC,QAAQd,EAA2B,OAClD,CAtDAe,WAAAA,CAAYzH,GACV0H,MAAM,E,sUAAA,IACD1H,GAAAA,CACHsH,qBAAsBC,aAAaI,QAAQjB,MAG7CK,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAkDF,SAAS1L,EAAUoB,GACjB,MAAO,CACLqL,eAAepL,EAAAA,EAAAA,KAAI,CACjBqL,SAAU,EACVpL,QAAS,OACTqL,UAAW,OACXjD,cAAe,WAEjBvJ,WAAWkB,EAAAA,EAAAA,KAAI,CACbqL,SAAU,EACVpL,QAAS,OACTqL,UAAW,OACXjD,cAAe,SACfkD,SAAU,UAEZC,MAAMxL,EAAAA,EAAAA,KAAI,CACRkI,MAAO,eACPmD,SAAU,EACVpL,QAAS,OACToI,cAAe,SACfpG,IAAKlC,EAAMmC,QAAQ,GACnB2D,QAAS,KAAK9F,EAAMmC,QAAQ,MAAMnC,EAAMmC,QAAQ,OAElDgH,mBAAmBlJ,EAAAA,EAAAA,KAAI,CACrBkI,MAAO,oBACPjI,QAAS,OACToI,cAAe,SACfpG,IAAKlC,EAAMmC,QAAQ,KAGzB,CA9EE,EAVW4F,EAUJ/D,aAAY,EAAGf,YACpB,MAAMyE,EAAavE,EAAAA,GAAWwE,YAAY1E,EAAO2E,KAC3C,aAAE8D,GAAiBhE,EAAWrE,YAC9B,mBAAEwH,EAAkB,eAAEJ,GAAmBxH,EAAMI,WAErD,IAAKqI,EAEH,OADAC,EAAAA,EAAOC,KAAK,6BACL,KAGT,MAAMlN,GAASC,EAAAA,EAAAA,YAAWC,GAC1B,OACE,kBAACC,MAAAA,CAAIC,UAAWJ,EAAO2M,eACrB,kBAACxM,MAAAA,CAAIC,UAAWJ,EAAOK,YACnB8L,GACA,kBAAC5J,EAAeA,CACdI,SAAU,KACR4B,EAAM2H,SAAS,IAKpBH,GAAkB,kBAACA,EAAezG,UAAS,CAACf,MAAOwH,IAGpD,kBAAC5L,MAAAA,CAAIC,UAAWJ,EAAO+M,MAAOC,GAAgB,kBAACA,EAAa1H,UAAS,CAACf,MAAOyI,M,qdCpBhF,MAAMG,GAAAA,W,MAA0C,cACrDpI,EACAC,EACAoI,EACAC,EACArC,EACAsC,GAKA,MAAMC,QAA8BC,EAAAA,EAAAA,oBAAmBC,KAAIC,EAAAA,EAAAA,IAAcL,IAEzE,KAAME,aAAiCI,EAAAA,uBAErC,MADAV,EAAAA,EAAOW,MAAM,IAAIC,MAAM,8CACjB,IAAIA,MAAM,uBAIlB,MAEMC,EAFiBP,EAEiBO,iBAExC,IAAIC,EAA4B,GAEhC,GAAID,GAAoBA,EAAiBE,yBAA0B,CACjE,MAAMC,EAA2C,CAC/Cb,OACAc,MAAO,IACPlD,YACAmD,YAAY,GAGRC,EAA6C,CACjDC,gBAAgB,GAGlB,IACE,IAAIC,QAAgBR,EAAiBE,yBAAyBjJ,EAAOK,IAAK6I,EAASG,GACnF,GAAIE,IAAWC,EAAAA,EAAAA,SAAQD,GAAU,C,IAuB3BvJ,EArBJ,GAAIuI,IAAiBkB,EAAAA,GACnB,MAAO,CAAEC,SAAS,EAAMV,OAAQO,EAAQpJ,KAAKE,IAAS,CAAErB,KAAMqB,OAGhE,MAAMsJ,EAAiB1J,EAASH,MAAM6F,QAGtC,IAAIiE,EAA2B,GAC/BD,EAAeE,SAAS7J,I,IACRA,EAAAA,EAAd,MAAM8J,EAA+B,QAAvB9J,EAAkB,QAAlBA,EAAAA,EAAO+J,mBAAP/J,IAAAA,OAAAA,EAAAA,EAAqB,UAArBA,IAAAA,EAAAA,EAA2BA,EAAO8J,OAC5CE,EAAAA,GAAAA,IAAgBhK,EAAOiK,UACzBH,EAAMI,MAAM,KAAKL,SAASM,GAAMP,EAAeQ,KAAKD,KAEpDP,EAAeQ,KAAKN,EACtB,IAGF,MAAMO,EAAkBd,EAAQvJ,QAAQ8J,IAC9BF,EAAe1J,SAAS4J,KAGlC,GAA4B,wBAAb,QAAX9J,EAAAA,EAAOsK,YAAPtK,IAAAA,OAAAA,EAAAA,EAAauK,QAAiC,CAChD,GAAIvK,EAAO8J,MAAO,CAChB,MAAMU,GAAeC,EAAAA,EAAAA,IAAyBzK,EAAQuI,GACtD,MAAO,CACLmB,SAAS,EACTV,OAAQqB,EAAgBlK,KAAKgK,IAAO,CAClCnL,KAAMmL,EACNL,MAAOY,KAAKC,UAAU,CACpBb,MAAOK,EACPI,OAAQC,EAAaD,aAI7B,CAEE,MAAO,CACLb,SAAS,EACTV,OAAQqB,EAAgBlK,KAAKgK,I,IAIjBnK,EAAAA,E,MAJwB,CAClChB,KAAMmL,EACNL,MAAOY,KAAKC,UAAU,CACpBb,MAAOK,EACPI,OAA2B,QAAnBvK,EAAW,QAAXA,EAAAA,EAAOsK,YAAPtK,IAAAA,OAAAA,EAAAA,EAAauK,cAAbvK,IAAAA,EAAAA,EAAuB,UAElC,IAGP,CACEgJ,EAASqB,EAAgBlK,KAAKyK,IAAO,CAAE5L,KAAM4L,KAEjD,MACE5B,EAAS,GACTd,EAAAA,EAAOW,MAAMU,EAAS,CAAEsB,IAAK,mCAEjC,CAAE,MAAOC,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CACdD,IAAK,+HAEP7B,EAAS,EACX,CACF,MACEd,EAAAA,EAAOC,KACL,2IAEFa,EAAS,GAGX,MAAO,CAAEU,SAAS,EAAMV,SAC1B,I,gBA5GEhJ,EACAC,EACAoI,EACAC,EACArC,EACAsC,G,gCANWH,GA+HN,SAAe2C,GACpB9K,EACAD,G,OAFoB+K,GAAAA,MAAAA,KAAAA,U,UAAAA,K,OAAAA,GAAf,cACL9K,EACAD,GAKA,MAAMgL,QAAoBvC,EAAAA,EAAAA,oBAAmBC,KAAIC,EAAAA,EAAAA,IAAc1I,IAC/D,KAAM+K,aAAuBpC,EAAAA,uBAE3B,MADAV,EAAAA,EAAOW,MAAM,IAAIC,MAAM,8CACjB,IAAIA,MAAM,uBAElB,MAAMmC,EAAaD,EAEnB,GAAIC,GAAcA,EAAWC,aAAc,CAEzC,MAEMC,EAlCH,SACLC,EACApL,GAEA,IAAIqL,EAAqBD,EAAgBpL,QACtCsL,MAAQC,EAAAA,GAAAA,IAAoBvL,EAAOiK,WAAaqB,EAAEjL,MAAQL,EAAOK,OAQpE,OAJKgL,EAAmBG,MAAMxL,IAAWuL,EAAAA,GAAAA,IAAoBvL,EAAOiK,cAClEoB,EAAqB,IAGhBA,CACT,CAoB4BI,CAFE,IAAIC,GAAAA,EAAkBzL,EAASH,MAAM6F,SAC7BgG,yBAC2B3L,GAEvDkJ,EAAoD,CACxD7I,IAAKL,EAAOK,IACZsF,QAASwF,GAGX,IAAI5B,QAAgB0B,EAAWC,aAAahC,GAE5C,IAAIM,EAAAA,EAAAA,SAAQD,GAAU,C,IAgBlBqC,EAfFrC,EAAUA,EAAQvJ,QAAQ6L,IAEhB5L,EAASH,MAAM6F,QACpB3F,QAAQsL,GAAMA,EAAEjL,MAAQL,EAAOK,MAC/BmL,MAAMF,IACL,IAAItB,EAAAA,GAAAA,IAAgBsB,EAAErB,UAAW,CAE/B,OADeqB,EAAExB,MAAMI,MAAM,KACfsB,MAAM1B,GAAUA,IAAU+B,EAAO7M,MACjD,CAEE,OAAOsM,EAAErB,WAAa6B,GAAAA,GAASC,OAAST,EAAExB,QAAU+B,EAAO7M,IAC7D,MAGN,MAAMgN,GAAsBC,EAAAA,EAAAA,IACc,QAAxCL,GAAAA,EAAAA,EAAAA,IAAsB3L,GAAUiM,kBAAhCN,IAAAA,OAAAA,EAAAA,EAA4CO,WAC5CnM,EAAOK,KAEH+L,EAAoB,IAAIC,IAAIL,GAC9BA,EAAoBjM,QACtBwJ,EAAQ+C,MAAK,CAACzO,EAAG0O,KACPH,EAAkBI,IAAID,EAAEvN,MAAQ,GAAK,IAAMoN,EAAkBI,IAAI3O,EAAEmB,MAAQ,GAAK,IAG9F,CAEA,MAAO,CAAE0K,SAAS,EAAMV,OAAQO,EAClC,CAEE,OADArB,EAAAA,EAAOW,MAAM,IAAIC,MAAM,yDAChB,CAAEY,SAAS,EAAMV,OAAQ,GAEpC,IA3DsB+B,GAAAA,MAAAA,KAAAA,U,gVC7Jf,SAAe0B,GAAyBxM,G,OAAzBwM,GAAAA,MAAAA,KAAAA,U,UAAAA,K,OAAAA,GAAf,cAAwCxM,GAI7C,MAAM+K,QAAoBvC,EAAAA,EAAAA,oBAAmBC,KAAIC,EAAAA,EAAAA,IAAc1I,IAC/D,KAAM+K,aAAuBpC,EAAAA,uBAE3B,MADAV,EAAAA,EAAOW,MAAM,IAAIC,MAAM,4CACjB,IAAIA,MAAM,uBAElB,MAAMmC,EAAaD,EAEnB,GAAIC,GAAcA,EAAWyB,WAAY,CACvC,MAGMxD,EAAkD,CACtDvD,QAJyB,IAAI+F,GAAAA,EAAkBzL,EAASH,MAAM6F,SAC7BgG,0BAM7BgB,QAAgB1B,EAAWyB,WAAWxD,GAEtC0D,GAD4BC,MAAMrD,QAAQmD,GAAWA,EAAU,IACvC3M,QAAQK,IAASyM,GAAAA,GAAiB5M,SAASG,EAAIrB,QAE7E,MAAO,CAAE0K,SAAS,EAAMV,OAAQ4D,EAClC,CAEE,OADA1E,EAAAA,EAAOW,MAAM,IAAIC,MAAM,uDAChB,CAAEY,SAAS,EAAMV,OAAQ,GAEpC,IA5BsByD,GAAAA,MAAAA,KAAAA,U,CAuCf,SAAeM,GAAsB,G,OAAtBA,GAAAA,MAAAA,KAAAA,U,UAAAA,K,OAAAA,GAAf,eAAqC,MAC1C5D,EAAK,UACLlD,EAAS,WACT+G,EAAU,KACV3E,EAAI,SACJC,EAAQ,aACRC,IAKA,MAAMyC,QAAoBvC,EAAAA,EAAAA,oBAAmBC,KAAIC,EAAAA,EAAAA,IAAcL,IAC/D,KAAM0C,aAAuBpC,EAAAA,uBAE3B,MADAV,EAAAA,EAAOW,MAAM,IAAIC,MAAM,4CACjB,IAAIA,MAAM,uBAElB,MAAMmC,EAAaD,EACbjC,EAAmBkC,EAAWlC,iBAE9BG,EAAqC,CACzCb,OACApC,YACA+G,aACAzE,eACAD,WACAa,SAKI8D,EACJ,GACkD,mBAAzClE,EAAiBmE,qBACxBnE,EAAiBmE,oBAAoBvF,KAAKoB,IAC5C,SAAUoE,GACR,O,SAmEJlC,EACAmC,EACA/D,G,OAHa6D,GAAAA,MAAAA,KAAAA,U,CAlEFA,CAAoBjC,EAAYkC,EACzC,EAGF,GAAIF,GAA0D,mBAA1BA,EAAsC,CACxE,MAAMN,QAA8CM,EAAsB/D,GAE1E,GAAIyD,aAAmB7D,MAErB,MADAZ,EAAAA,EAAOW,MAAM8D,EAAS,CAAE9B,IAAK,oCACvB8B,EAGR,MAAMd,EAA4Bc,EAC/B3M,QAAQqN,GACH9E,IAAiBkB,EAAAA,GACZ4D,EAAM3I,QAAU4I,EAAAA,GAGrB/E,IAAiBgF,EAAAA,IAA2BF,EAAM3I,QAAU4I,EAAAA,IAIvC,OAAlBD,EAAMG,UAEdrN,KAAKkN,IACJ,GAAI9E,IAAiBgF,EAAAA,GAAyB,C,IACnBF,EAAzB,IAAI9C,EAA+C,KAAb,QAAb8C,EAAAA,EAAMG,eAANH,IAAAA,OAAAA,EAAAA,EAAetN,QAAesN,EAAMG,QAAQ,GAAK,QACpD,OAAlBH,EAAMG,UACRjD,EAAS,sBAGX,MAAM3H,EAAOyK,EAAMzK,KAEnB,MAAO,CACL5D,KAAMqO,EAAM3I,MACZoF,MAAOuD,EAAM3I,MACb+I,MAAOlD,EACPD,KAAM,CACJC,SACA3H,QAGN,CAEA,MAAO,CAAE5D,KAAMqO,EAAM3I,MAAOoF,MAAOuD,EAAM3I,MAAO,IAapD,OAVAmH,EAAOS,MAAK,CAACzO,EAAG0O,IACE,uBAAZ1O,EAAE4P,OAA8C,uBAAZlB,EAAEkB,OAChC,EAEM,uBAAZ5P,EAAE4P,OAA8C,uBAAZlB,EAAEkB,MACjC,EAEF,IAGF,CAAE/D,SAAS,EAAMV,OAAQ6C,EAClC,CAEE,OADA3D,EAAAA,EAAOW,MAAM,IAAIC,MAAM,uDAChB,CAAEY,SAAS,EAAMV,OAAQ,GAEpC,IAjGsB+D,GAAAA,MAAAA,KAAAA,U,UAqGPG,K,OAAAA,GAAf,cACEjC,EACAmC,EACA/D,GAEA,KAAM,sBAAuB4B,IAAwD,mBAAlCA,aAAAA,EAAAA,EAAYyC,mBAC7D,MAAM,IAAI5E,MAAM,+CAGlB,MAAM6E,EACJP,EAAa/E,MAZM,OAYE+E,EAAa/E,KAC9B4C,EAAWyC,kBAAkBN,EAAa/E,KAAM+E,EAAaJ,iBAC7DnQ,EAEN,IAAK8Q,EACH,MAAM,IAAI7E,MAAM,iD,IAIJsE,EAAd,MAAMQ,EAA+B,QAAvBR,EAAAA,aAAAA,EAAAA,EAAcnH,iBAAdmH,IAAAA,EAAAA,GAA2BS,EAAAA,EAAAA,uBACnCC,EAAc7C,EAAW8C,mBAAmBH,IAC5C,MAAEI,EAAK,IAAEC,GAAQH,E,IACwCV,EAA/D,MAAMc,EAAoC,CAAEF,QAAOC,MAAK9E,MAA0B,QAAnBiE,EAAAA,aAAAA,EAAAA,EAAcjE,aAAdiE,IAAAA,EAAAA,EAAuB,KAGtF,OAFAc,EAAOC,MAAQR,EAER,IAAIS,QAAAA,W,MAAQ,cAAOC,EAASC,GACjC,IAMED,SALoEpD,EAAWsD,YATvE,kBAWNL,EACA7E,IAEWmF,OACf,CAAE,MAAO3F,GACP4F,QAAQ5F,MAAM,QAASA,GACvByF,EAAOzF,EACT,CACF,I,gBAZ0BwF,EAASC,G,gCAAxBF,GAab,IAtCelB,GAAAA,MAAAA,KAAAA,U,gBC1Id,mB,sGA6CD,IAAIwB,GAA8B,CAChC,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,WACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,KACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,IAAK,QASHC,GAAsC,CACxC,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KAWHC,GAAoC,CACtC,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACLC,EAAG,IACH,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACLC,EAAG,IACH,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MAOHC,GAA0C,CAC5CC,OAAQ,MACRC,QAAS,OACTC,OAAQ,QACRC,OAAQ,MACRC,KAAM,IACNC,IAAK,uBAAuBC,KAAKC,UAAUC,UAAY,OAAS,QAQ9DC,GAA6C,KAMjD,IAAK,IAAIC,EAAI,EAAGA,EAAI,KAAMA,EACxBhB,GAAI,IAAMgB,GAAK,IAAMA,EAMvB,IAAK,IAAIA,EAAI,EAAGA,GAAK,IAAKA,EAMxBhB,GAAIgB,EAAI,IAAMA,EAAEvD,WAMlB,SAASwD,GAAmBC,GAE1B,GAAmB,aAAfA,EAAMhN,KAAqB,CAC7B,IAAIiN,EAAYC,OAAOC,aAAaH,EAAMI,OAe1C,OAJKJ,EAAMK,WACTJ,EAAYA,EAAUK,eAGjBL,CACT,CAGA,OAAInB,GAAIkB,EAAMI,OACLtB,GAAIkB,EAAMI,OAGfrB,GAAYiB,EAAMI,OACbrB,GAAYiB,EAAMI,OAQpBF,OAAOC,aAAaH,EAAMI,OAAOE,aAC1C,CA6DA,SAASC,GAAW9P,GAClB,MAAe,UAARA,GAA2B,SAARA,GAA0B,QAARA,GAAyB,SAARA,CAC/D,CA4BA,SAAS+P,GAAe/P,EAAagQ,EAAqBC,GAaxD,OAVKA,IACHA,EA1BJ,WACE,IAAKb,GAAa,CAChBA,GAAc,CAAC,EACf,IAAK,IAAIpP,KAAOqO,GAAK,CACnB,MAAM6B,EAAYC,SAASnQ,EAAK,IAG5BkQ,EAAY,IAAMA,EAAY,KAI9B7B,GAAI+B,eAAepQ,KACrBoP,GAAYf,GAAIrO,IAAQA,EAE5B,CACF,CACA,OAAOoP,EACT,CASaiB,GAAgBrQ,GAAO,UAAY,YAK/B,aAAXiQ,GAAyBD,EAAUtQ,SACrCuQ,EAAS,WAGJA,CACT,CAiBA,SAASK,GAAWC,EAAqBN,GACvC,IAAIO,EACAxQ,EACAqP,EACAW,EAAY,GAMhB,IAFAQ,EApBF,SAAwBD,GACtB,MAAoB,MAAhBA,EACK,CAAC,MAGVA,EAAcA,EAAYlH,QAAQ,SAAU,UACzBQ,MAAM,IAC3B,CAaS4G,CAAeF,GAEjBlB,EAAI,EAAGA,EAAImB,EAAK9Q,SAAU2P,EAC7BrP,EAAMwQ,EAAKnB,GAGPX,GAAgB1O,KAClBA,EAAM0O,GAAgB1O,IAMpBiQ,GAAqB,aAAXA,GAAyB1B,GAAUvO,KAC/CA,EAAMuO,GAAUvO,GAChBgQ,EAAUjG,KAAK,UAIb+F,GAAW9P,IACbgQ,EAAUjG,KAAK/J,GAInB,IAAKA,EACH,MAAM,IAAIyI,MAAM,qBAOlB,MAAO,CACLzI,IAAKA,EACLgQ,UAAWA,EACXC,OALFA,EAASF,GAAe/P,EAAKgQ,EAAWC,GAO1C,CAEA,SAASS,GAAUC,EAAiDC,GAClE,OAAgB,OAAZD,GAAoBA,IAAYE,WAIhCF,IAAYC,GAITF,GAAUC,EAAQG,WAAYF,GACvC,CCnZO,MAAMG,GAAY,IDqZlB,MA0CL7J,WAAAA,CAAY8J,GAzCZvT,GAAAA,KAAAA,cAAAA,GAKAwT,GAAAA,KAAAA,aAA6C,CAAC,GAK9CC,GAAAA,KAAAA,aAAuC,CAAC,GAMxCC,GAAAA,KAAAA,kBAA0C,CAAC,GAK3CC,GAAAA,KAAAA,mBAAkC5U,GAKlC6U,GAAAA,KAAAA,oBAAqC,GAKrCC,GAAAA,KAAAA,uBAAsB,GAMtBC,GAAAA,KAAAA,uBAAwC,GAExCC,GAAAA,KAAAA,mBAA4C,CAAC,GAyB7C,QAAQC,mBAAmBC,IACzBA,EAAaA,GAAc,CAAC,EAE5B,IACE1R,EADE2R,GAAkB,EAGtB,IAAK3R,KAAOwG,KAAK2K,gBACXO,EAAW1R,GACb2R,GAAkB,EAGpBnL,KAAK2K,gBAAgBnR,GAAO,EAGzB2R,IACHnL,KAAK+K,qBAAsB,EAC7B,IAOF,QAAQK,eAAc,CACpBpC,EACAQ,EACAT,EACAsC,EACAtB,EACAuB,KAEA,IAAIzC,EACA0C,EACAC,EAAU,GACV/B,EAASV,EAAMhN,KAGnB,IAAKiE,KAAKyK,WAAWzB,GACnB,MAAO,GAUT,IANe,UAAXS,GAAsBH,GAAWN,KACnCQ,EAAY,CAACR,IAKVH,EAAI,EAAGA,EAAI7I,KAAKyK,WAAWzB,GAAW9P,SAAU2P,EAKnD,GAJA0C,EAAWvL,KAAKyK,WAAWzB,GAAWH,IAIjCwC,IAAgBE,EAASE,KAAOzL,KAAK2K,gBAAgBY,EAASE,OAASF,EAASD,QAMjF7B,IAAW8B,EAAS9B,SAYV,aAAZ,IAA2BV,EAAM2C,UAAY3C,EAAM4C,UAxTnCC,EAyTDpC,EAzTuBqC,EAyTZN,EAAS/B,UAxTlCoC,EAAWnG,OAAOqG,KAAK,OAASD,EAAWpG,OAAOqG,KAAK,OAyTxD,CAMA,IAAIC,GAAeV,GAAgBE,EAASS,QAAUjC,EAClDkC,EAAiBZ,GAAgBE,EAASE,MAAQJ,GAAgBE,EAASD,QAAUA,GACrFS,GAAeE,IACjBjM,KAAKyK,WAAWzB,GAAWkD,OAAOrD,EAAG,GAGvC2C,EAAQjI,KAAKgI,EACf,CAvUN,IAAwBK,EAAsBC,EA0U1C,OAAOL,CAAO,IAYhB,QAAQW,iBAAgB,CAACZ,EAAoBtH,EAAkB+H,EAAeI,KAE5E,MAAMnV,EAASgN,EAAEhN,QAAUgN,EAAEoI,WAxTjC,IAAwBtD,EAyThB9R,GAAUA,aAAkBqV,aAAetM,KAAKuM,aAAatI,EAAGhN,EAAQ+U,EAAOI,KAIxD,IAAvBb,EAAStH,EAAG+H,MA7TIjD,EA8TH9E,GA7TTuI,eACRzD,EAAMyD,iBAIRzD,EAAM0D,aAAc,EAMtB,SAAyB1D,GACnBA,EAAM2D,gBACR3D,EAAM2D,kBAIR3D,EAAM4D,cAAe,CACvB,CA4SMD,CAAgBzI,GAClB,IAMF,QAAQ2I,cAAa,CAAC5D,EAAmBQ,EAAqBvF,KAC5D,IACI4E,EADAgE,EAAY7M,KAAKoL,YAAYpC,EAAWQ,EAAWvF,GAEnDiH,EAAqC,CAAC,EACtC4B,EAAW,EACXC,GAA4B,EAGhC,IAAKlE,EAAI,EAAGA,EAAIgE,EAAU3T,SAAU2P,EAAG,C,IAELgE,EADhC,GAAIA,EAAUhE,GAAG4C,IACfqB,EAAWrS,KAAKuS,IAAIF,EAA4B,QAAlBD,EAAAA,EAAUhE,GAAGyC,aAAbuB,IAAAA,EAAAA,EAAsB,EAExD,CAGA,IAAKhE,EAAI,EAAGA,EAAIgE,EAAU3T,SAAU2P,EAAG,CAMrC,MAAM4C,EAAMoB,EAAUhE,GAAG4C,IACzB,GAAIA,EAAJ,CASE,GAAIoB,EAAUhE,GAAGyC,QAAUwB,EACzB,SAGFC,GAA4B,EAG5B7B,EAAWO,GAAO,EAClBzL,KAAKmM,cAAcU,EAAUhE,GAAG0C,SAAUtH,EAAG4I,EAAUhE,GAAGmD,MAAOP,GAKjE,MAAMwB,EAAoBxB,EAAIyB,YAAYlE,GACpCmE,EAAiB1B,EAAI2B,MAAM,EAAGH,GACpC,IAAK,MAAOxB,EAAKH,KAAU+B,OAAOC,QAAQtN,KAAK2K,iBACzCW,EAAQ,GAAKG,EAAI8B,WAAWJ,KAC9BjC,EAAWO,GAAO,EAKxB,MAIKsB,GACH/M,KAAKmM,cAAcU,EAAUhE,GAAG0C,SAAUtH,EAAG4I,EAAUhE,GAAGmD,MAE9D,C,IAIuB,EAAvB,IAAK,MAAMT,KAAsC,QAA1B,EAAAvL,KAAKyK,WAAWzB,UAAhB,QAA8B,GAC/CuC,EAAS9B,SAAWxF,EAAElI,MAAQwP,EAASE,KAA0B,IAAnBF,EAASD,QACzDJ,EAAWK,EAASE,KAAO,GAyB/B,IAAI+B,EAAgC,aAAXvJ,EAAElI,MAAuBiE,KAAK8K,oBACnD7G,EAAElI,OAASiE,KAAK+K,qBAAwBzB,GAAWN,IAAewE,GACpExN,KAAKiL,gBAAgBC,GAGvBlL,KAAK8K,oBAAsBiC,GAAwC,YAAX9I,EAAElI,IAAkB,IAM9E,QAAQ0R,mBAAmBC,IACzB,KAAMA,aAAoBC,eACxB,MAAM,IAAI1L,MAAM,8BAElB,MAAM8G,EAAuB2E,EAG7B,GAAI3E,EAAM6E,OACR,OAKyB,iBAAhB7E,EAAMI,QAEfJ,EAAMI,MAAQJ,EAAM8E,SAGtB,IAAI7E,EAAYF,GAAmBC,GAG9BC,IAKc,UAAfD,EAAMhN,MAAoBiE,KAAK6K,mBAAqB7B,EAKxDhJ,KAAK8N,UAAU9E,EApenB,SAAwBD,GACtB,IAAIS,EAAY,GAkBhB,OAhBIT,EAAMK,UACRI,EAAUjG,KAAK,SAGbwF,EAAMgF,QACRvE,EAAUjG,KAAK,OAGbwF,EAAM4C,SACRnC,EAAUjG,KAAK,QAGbwF,EAAM2C,SACRlC,EAAUjG,KAAK,QAGViG,CACT,CAgd8BwE,CAAejF,GAAQA,GAJ/C/I,KAAK6K,kBAAmB,EAI6B,IASzD,QAAQoD,uBAAsB,KAC5BC,aAAalO,KAAK4K,aAClB5K,KAAK4K,YAAcuD,WAAWnO,KAAKiL,gBAAiB,IAAK,IAM3D,QAAQmD,iBAAgB,CAACpC,EAAehC,EAAgBuB,EAA6B9B,KAGnFzJ,KAAK2K,gBAAgBqB,GAAS,EAM9B,MAAMqC,EAAqBC,GAClB,KACLtO,KAAK+K,oBAAsBuD,IACzBtO,KAAK2K,gBAAgBqB,GACvBhM,KAAKiO,qBAAqB,EAQxBM,EAAqBtK,IACzBjE,KAAKmM,cAAcZ,EAAUtH,EAAG+H,GAKjB,UAAXvC,IACFzJ,KAAK6K,iBAAmB/B,GAAmB7E,IAK7CjE,KAAKiO,qBAAqB,EAY5B,IAAK,IAAIpF,EAAI,EAAGA,EAAImB,EAAK9Q,SAAU2P,EAAG,CACpC,IACI2F,EADU3F,EAAI,IAAMmB,EAAK9Q,OACGqV,EAAoBF,EAAkB5E,GAAUK,GAAWE,EAAKnB,EAAI,IAAIY,QACxGzJ,KAAKyO,YAAYzE,EAAKnB,GAAI2F,EAAiB/E,EAAQuC,EAAOnD,EAC5D,KAMF,QAAQ4F,eAAc,CACpB1E,EACAwB,EACA9B,EACA4B,EACAC,KAGAtL,KAAK0K,WAAWX,EAAc,IAAMN,GAAU8B,EAK9C,IACImD,EADAtC,GAFJrC,EAAcA,EAAYlH,QAAQ,OAAQ,MAEfQ,MAAM,KAKjC,GAAI+I,EAASlT,OAAS,EAEpB,YADA8G,KAAKoO,cAAcrE,EAAaqC,EAAUb,EAAU9B,GAItDiF,EAAO5E,GAAWC,EAAaN,GAI/BzJ,KAAKyK,WAAWiE,EAAKlV,KAAOwG,KAAKyK,WAAWiE,EAAKlV,MAAQ,GAGzD,MAAMmV,EAAY,CAAE5S,KAAM2S,EAAKjF,OAAQiC,SAAS,EAAOC,SAAS,GAChE3L,KAAKoL,YAAYsD,EAAKlV,IAAKkV,EAAKlF,UAAWmF,EAAWtD,EAActB,EAAauB,GAEjF,MAAMsD,EAA6B,CACjCrD,SAAUA,EACV/B,UAAWkF,EAAKlF,UAChBC,OAAQiF,EAAKjF,OACbgC,IAAKJ,EACLC,MAAOA,EACPU,MAAOjC,GAST/J,KAAKyK,WAAWiE,EAAKlV,KAAK6R,EAAe,UAAY,QAAQuD,EAAa,IAM5E,QAAQC,iBAAgB,CAACC,EAAwBvD,EAA6B9B,KAC5E,IAAK,IAAIZ,EAAI,EAAGA,EAAIiG,EAAa5V,SAAU2P,EACzC7I,KAAKyO,YAAYK,EAAajG,GAAI0C,EAAU9B,EAC9C,IAYF3I,GAAAA,KAAAA,QAAO,CAACkJ,EAAyBuB,EAA6B9B,KAC5DO,EAAOA,aAAgBhE,MAAQgE,EAAO,CAACA,GACvChK,KAAK6O,cAAc7E,EAAMuB,EAAU9B,GAC5BsF,QAgBTC,GAAAA,KAAAA,UAAS,CAAChF,EAAyBP,IAC1BzJ,KAAKc,KAAKkJ,GAAM,WAAa,GAAGP,KAKzCwF,GAAAA,KAAAA,cAAa,CAACjF,EAAyBuB,EAA6B9B,KAGlE,GAFAzJ,KAAKc,KAAKkJ,EAAMuB,EAAU9B,GAEtBO,aAAgBhE,MAClB,IAAK,IAAI6C,EAAI,EAAGA,EAAImB,EAAK9Q,OAAQ2P,IAC/B7I,KAAKgL,iBAAiBhB,EAAKnB,KAAM,OAKrC7I,KAAKgL,iBAAiBhB,IAAQ,CAAI,IAKpCkF,GAAAA,KAAAA,gBAAe,CAAClF,EAAyBP,KAGvC,GAFAzJ,KAAKgP,OAAOhF,EAAMP,GAEdO,aAAgBhE,MAClB,IAAK,IAAI6C,EAAI,EAAGA,EAAImB,EAAK9Q,OAAQ2P,IAC/B7I,KAAKgL,iBAAiBhB,EAAKnB,KAAM,OAKrC7I,KAAKgL,iBAAiBhB,IAAQ,CAAK,IAMrCmF,GAAAA,KAAAA,WAAU,CAACnF,EAAcP,KACvB,IAAIsF,EAAO/O,KAIX,OAHI+O,EAAKrE,WAAWV,EAAO,IAAMP,IAC/BsF,EAAKrE,WAAWV,EAAO,IAAMP,GAAQ,CAAC,EAAGO,GAEpC+E,CAAAA,IAQTK,GAAAA,KAAAA,SAAQ,KACNpP,KAAKyK,WAAa,CAAC,EACnBzK,KAAK0K,WAAa,CAAC,EACZ1K,QAMTuM,GAAAA,KAAAA,gBAAe,CAACtI,EAAUkG,EAAsB6B,EAAeI,KAE7D,GAAIpM,KAAKgL,iBAAiBgB,IAAWI,GAAYpM,KAAKgL,iBAAiBoB,GACrE,OAAO,EAIT,IAAK,IAAMjC,EAAQ3V,UAAY,KAAK6a,QAAQ,gBAAkB,EAC5D,OAAO,EAGT,GAAInF,GAAUC,EAASnK,KAAK/I,QAC1B,OAAO,EAST,GAAI,iBAAkBgN,GAA+B,mBAAnBA,EAAEqL,aAA6B,CAE/D,IAAIC,EAAqBtL,EAAEqL,eAAe,GACtCC,IAAuBtL,EAAEhN,QAAUsY,aAA8BjD,cACnEnC,EAAUoF,EAEd,CAGA,OAAOC,QACe,UAApBrF,EAAQsF,SACc,WAApBtF,EAAQsF,SACY,aAApBtF,EAAQsF,SACP,sBAAuBtF,GAAWA,EAAQuF,kBAAkB,IAOnE5B,GAAAA,KAAAA,aAAoC,IAAI6B,IAC/B3P,KAAK4M,cAAc+C,KAM5BC,GAAAA,KAAAA,eAAeC,IACb,IAAK,IAAIrW,KAAOqW,EACVA,EAAOjG,eAAepQ,KACxBqO,GAAIrO,GAAOqW,EAAOrW,IAGtBoP,GAAc,IAAI,IAjiBlB5I,KAAK/I,OAASuT,EAEdxK,KAAK/I,OAAO6Y,iBAAiB,YAAa/G,IACpCA,aAAiB4E,eACnB3N,KAAKyN,gBAAgB1E,EACvB,IAEF/I,KAAK/I,OAAO6Y,iBAAiB,WAAY/G,IACnCA,aAAiB4E,eACnB3N,KAAKyN,gBAAgB1E,EACvB,IAEF/I,KAAK/I,OAAO6Y,iBAAiB,SAAU/G,IACjCA,aAAiB4E,eACnB3N,KAAKyN,gBAAgB1E,EACvB,GAEJ,GCjdqCsB,UAchC,MAAM0F,GAGXC,UAAAA,CAAWC,GACT1F,GAAUzJ,KACRmP,EAAKzW,KACJ0W,IACCA,EAAI1D,iBACJ0D,EAAIxD,kBACJwD,EAAIzD,aAAc,EAClBwD,EAAKE,WAAW,GAElB,WAEFnQ,KAAKoQ,OAAO7M,KAAK0M,EACnB,CAEAI,SAAAA,GACErQ,KAAKoQ,OAAOpN,SAASiN,IACnB1F,GAAUyE,OAAOiB,EAAKzW,IAAKyW,EAAKlU,KAAK,IAEvCiE,KAAKoQ,OAAS,EAChB,C,4HArBA,MAAQA,SAA2B,G,qdCPrC,MAAME,IAAYC,EAAAA,EAAAA,gBAEX,SAASC,GAAuBC,GACrC,MAAMC,EAAc,IAAIX,GACxB,IAAIY,EAA6B,KAEjC,MAAMC,EAA6BN,GAAUO,UAAUC,EAAAA,wBAAyB/H,IACzC,iBAA1BA,EAAMgI,QAAQC,UACvBL,EAAc5H,EAAMgI,QAAQC,QAC9B,IAGF,SAASC,EAAiBR,EAAmBS,GAC3C,MAAO,KACL,MAAMC,EAAWtY,EAAAA,GAAWuY,WAAWX,GAAQY,GAAMA,EAAEpY,MAAMO,MAAQmX,GAAeU,EAAEC,WAClFH,GAAYA,aAAoBI,EAAAA,IAClCL,EAAGC,EAEL,CAEJ,CAmGA,OArFAT,EAAYV,WAAW,CACrBxW,IAAK,MACL2W,UAAWc,EAAiBR,EAAOe,MAIrCd,EAAYV,WAAW,CACrBxW,IAAK,MACL2W,UApBF,SAAuBM,EAAmBS,GACxC,MAAO,KACarY,EAAAA,GAAW4Y,eAAehB,GAAQY,GAAMA,aAAaE,EAAAA,IAAYF,EAAEC,WAC3EtO,SAASmO,IACbA,GAAYA,aAAoBI,EAAAA,IAClCL,EAAGC,EACL,GACA,CAEN,CAWaO,CAAcjB,EAAOe,MAIlCd,EAAYV,WAAW,CACrBxW,IAAK,MACL2W,UAAWc,EAAiBR,EAAAA,W,MAAO,cAAOU,GACxC,MAAMQ,GAAMC,EAAAA,GAAAA,IAAeT,GACvBQ,GACFE,EAAAA,gBAAgBtO,KAAKoO,EAEzB,I,gBAL0CR,G,gCAAdV,MAS9BC,EAAYV,WAAW,CACrBxW,IAAK,MACL2W,UAAW,MAgIR,SAAsC2B,GAC3C,MAAMC,EAAY,OAAgBC,sBAEjCrX,OAAeqX,sBAAwBF,CAO1C,CAxIMG,CADkBpZ,EAAAA,GAAWqZ,aAAazB,IAE1CH,GAAU6B,QAAQ,IAAIC,GAAgB,IAK1C1B,EAAYV,WAAW,CACrBxW,IAAK,MACL2W,UAAW,KACT,MAAMpH,EAAQ,IAAIsJ,GAAe,CAAEC,WAAW,IAC9C7B,EAAM8B,aAAaxJ,GACnBuH,GAAU6B,QAAQpJ,EAAM,IAK5B2H,EAAYV,WAAW,CACrBxW,IAAK,MACL2W,UAAW,IAAMtX,EAAAA,GAAWqZ,aAAazB,GAAO+B,cAIlD9B,EAAYV,WAAW,CACrBxW,IAAK,MACL2W,UAAW,KACTsC,GAAchC,EAAM,IAKxBC,EAAYV,WAAW,CACrBxW,IAAK,SACL2W,UAAW,KACTsC,GAAchC,EAAM,IAKxBC,EAAYV,WAAW,CACrBxW,IAAK,MACL2W,UAAW,KACT,MAAMuC,GAAaC,EAAAA,EAAAA,IAAclC,GACjCiC,SAAAA,EAAYE,YAAY,IAI5BlC,EAAYV,WAAW,CACrBxW,IAAK,SACL2W,UAAW,KACT0C,GAAqBpC,EAAO,OAAO,IAGvCC,EAAYV,WAAW,CACrBxW,IAAK,UACL2W,UAAW,KACT0C,GAAqBpC,EAAO,QAAQ,IAGjC,KACLC,EAAYL,YACZO,EAA2BkC,aAAa,CAE5C,CAEA,SAASL,GAAchC,GACrB,MAAMiC,GAAaC,EAAAA,EAAAA,IAAclC,GACjCiC,SAAAA,EAAYK,QACd,CAEA,SAASF,GAAqBpC,EAAmBuC,GAC/C,MAAMN,GAAaC,EAAAA,EAAAA,IAAclC,GAE5BiC,IAIa,SAAdM,GACFN,EAAWO,iBAEK,UAAdD,GACFN,EAAWQ,gBAEf,CAEO,SAAS1B,GAAqBL,GACnC,MAAM9O,EAAU8O,EAASlY,MAAMoJ,QAUjC,IAA0B8Q,EACI,OADJA,EATH9Q,IAU4C,iBAAtB8Q,GAAkC,WAAYA,GAVnB,kBAA9B9Q,EAAQ+Q,OAAOC,YACrDlC,EAASmC,gBAAgB,CACvBF,OAAQ,CACNC,YAAYhR,EAAQ+Q,OAAOC,aAInC,CAQO,MAAMjB,WAAsBmB,EAAAA,cACjC,GADWnB,GACJrW,OAAO,aAYT,MAAMsW,WAAuBmB,EAAAA,qB,SA2BdC,K,OAAAA,GAAf,gBACL,MAAMC,QAAYhL,UAAUiL,UAAUC,WACtC,IAAIC,EAEJ,IACEA,EAAehQ,KAAKiQ,MAAMJ,GAC1B,MAAM3M,GAAQgN,EAAAA,GAAAA,IAAgBF,GAC9B,GAAI9M,EACF,MAAO,CAAEiN,SAAS,EAAOjN,QAE7B,CAAE,MAAO9C,GAAI,CACb,MAAO,CAAE8C,MAAO2M,EAAKM,SAAS,EAChC,KAZsBP,MAAAA,KAAAA,U,CA1BpB,GADWpB,GACJtW,OAAO,c,sECpLT,MAAMkY,GAAe,KAC1B,MAAM7f,GAASC,EAAAA,EAAAA,YAAWC,IACpBoB,GAAQwe,EAAAA,EAAAA,aACd,OACE,kBAAC3f,MAAAA,CAAIC,UAAWJ,EAAOmC,MACrB,kBAAChC,MAAAA,CAAIC,UAAWJ,EAAO+f,kBACrB,kBAACC,GAAAA,EAAGA,CACFC,KACE3e,EAAM4e,OACF,gEAKV,kBAAC/f,MAAAA,CAAIC,UAAWJ,EAAO+D,MACrB,kBAACoc,KAAAA,CAAG/f,UAAWJ,EAAOiB,OAAO,qCAE7B,kBAAC0H,IAAAA,KAAE,qDAED,kBAAC3F,KAAAA,MAAK,QACA,IACN,kBAACJ,IAAAA,CAAExC,UAAW,gBAAiB0C,KAAMsd,EAAAA,aAAaC,cAAc,iCAAiC,mBAE5F,IAAI,iBAIX,kBAACrd,KAAAA,MAED,kBAAC2F,IAAAA,KAAE,QACK,IACN,kBAAC/F,IAAAA,CACCE,KAAM,+EACND,OAAQ,SACRzC,UAAW,gBACX2C,IAAI,cACL,QAEI,IAAI,uBAQb7C,GAAaoB,IACV,CACLye,kBAAkBxe,EAAAA,EAAAA,KAAI,CACpBC,QAAS,OACTC,eAAgB,SAChBa,OAAQ,SACRsI,MAAO,QACP0V,OAAQ,QACRlZ,QAAS9F,EAAMmC,QAAQ,GACvB,CAACnC,EAAMoI,YAAY6W,GAAG,OAAQ,CAC5B3c,UAAW,WACXgH,MAAO,QACP0V,OAAQ,OACRlZ,QAAS9F,EAAMmC,QAAQ,IAEzB,CAACnC,EAAMoI,YAAY6W,GAAG,OAAQ,CAC5B3c,UAAW,WACXgH,MAAO,QACP0V,OAAQ,OACRlZ,QAAS9F,EAAMmC,QAAQ,MAI3BM,MAAMxC,EAAAA,EAAAA,KAAI,CACRC,QAAS,OACTC,eAAgB,SAChBoH,WAAY,SACZe,cAAe,WAEjB3I,OAAOM,EAAAA,EAAAA,KAAI,CACTif,aAAc,WAEhBre,MAAMZ,EAAAA,EAAAA,KAAI,CACR,CAACD,EAAMoI,YAAY6W,GAAG,OAAQ,CAC5Bje,OAAQ,sBACRsH,cAAe,OAEjBxC,QAAS,OACT9E,OAAQ,mBACRd,QAAS,OACTqH,WAAY,SACZe,cAAe,SACf6W,UAAW,a,k4BCWV,MAAMC,GAAyB,sBAa/B,MAAMxX,WAAmB5E,EAAAA,GA6FvBmH,UAAAA,GACL,MAAMkV,EAAwC,CAAC,EAC/C/U,KAAKgV,uB,IAOwC,GAJtBnc,EAAAA,GAAWoc,iBAAiBjV,KAAM8U,GAAwBI,GAAAA,GAClExV,SAAS,CAAEyV,QAAQ,IAE7BnV,KAAK/G,MAAMmI,gBACd2T,EAAY3T,aAoUlB,SAAyBgU,GAEvB,IADarV,EAAAA,EAAAA,QACAK,EAAAA,GAAUC,QACrB,OAAO,IAAIgV,EAAAA,EAAsB,CAAC,GAGpC,OAAO,IAAIC,EAAAA,GAAa,CACtBF,kBAEJ,CA7UiCG,CAAqC,QAArB,EAAAvV,KAAK/G,MAAMuc,kBAAX,eAAuBnO,OAAOoO,iBAE3EzV,KAAK0V,kBACL1V,KAAKN,SAASqV,GAEd/U,KAAK2V,eAAe3V,KAAK/G,OAAO2c,EAAAA,EAAAA,IAAoB5V,OACpDA,KAAK6V,0BAAyBC,EAAAA,EAAAA,IAAkB9V,OAAO+V,EAAAA,EAAAA,IAA2BC,EAAAA,KAClFhW,KAAK6V,0BAAyBI,EAAAA,EAAAA,IAAkBjW,OAAO+V,EAAAA,EAAAA,IAA2BnT,EAAAA,KAElF5C,KAAKkW,MAAMC,IACTnW,KAAKoW,kBAAkBC,IACrBrW,KAAK2V,eAAeU,GAAUT,EAAAA,EAAAA,IAAoB5V,MAAM,KAI5D,MAAMZ,EAAYvG,EAAAA,GAAWqZ,aAAalS,MAE1CA,KAAKkW,MAAMC,IAAI/W,EAAUgX,iBAAiBpW,KAAKsW,iBAAiBlX,KAChEY,KAAKkW,MAAMC,IAAInW,KAAKuW,iBAAiBlE,GAAgBrS,KAAKwW,4BAE1D,MAAMC,GAAeX,EAAAA,EAAAA,IAAkB9V,MAAM/G,MAAM6F,QAC7C4X,GAAkBC,EAAAA,EAAAA,IAAoB3W,MAAM/G,MAAM6F,QAElD8X,GAA4BC,EAAAA,EAAAA,IAA6B7W,MAG/D4W,EAA0BE,cAAc,IAAIJ,KAAoBD,IAGhEzW,KAAKkW,MAAMC,IAAIS,EAA0BR,iBAAiBpW,KAAK+W,oCAE/D,MAAMC,EAAmBxG,GAAuBxQ,MAEhD,MAAO,KACLgX,GAAkB,CAEtB,CAeQtB,eAAAA,GACN1V,KAAKiX,oBACP,CAEQA,kBAAAA,GACN,MAAMC,GAAYC,EAAAA,EAAAA,IAAkBnX,MAEpCkX,EAAUE,cAAgB,KAAMC,EAAAA,GAAAA,IAAiBH,GAEjDA,EAAUxX,SAAS,CACjB4X,mBAAoB1R,GACpB2R,qBAAsBrT,IAE1B,CAmCA,iBAAyB9E,GACvB,MAAO,CAACiX,EAA+BmB,KACrC,MAAM,SAAEC,GAAaC,EAAAA,OAAOjU,KAC5B,GAAIgU,aAAAA,EAAAA,EAAUE,SACZ,I,IACkDF,EAAhD,MAAMG,EAAcC,EAAAA,UAAUC,kBAAoC,QAAlBL,EAAAA,aAAAA,EAAAA,EAAUE,gBAAVF,IAAAA,EAAAA,EAAsB,IACtE,IAAKG,EACH,OAEF,MAAMG,EAAoB1B,EAASpT,MAAM+U,GAAGC,KAAK5B,EAASpT,MAAMiV,KAAM,WACtE,GAAIH,EAAoBH,EAAa,CAEnC,GAAIG,GADiBP,EAAUvU,MAAM+U,GAAGC,KAAKT,EAAUvU,MAAMiV,KAAM,WAEjE9Y,EAAUM,SAAS,CACjBuD,MAAOuU,EAAUvU,MACjBiV,KAAMV,EAAUU,KAChBF,GAAIR,EAAUQ,SAEX,CACL,MAAMG,EAAe,IAAIC,EAAAA,GAAeC,EAAAA,IACxCjZ,EAAUM,SAAS,CACjBuD,MAAOkV,EAAalf,MAAMgK,MAC1BiV,KAAMC,EAAalf,MAAMif,KACzBF,GAAIG,EAAalf,MAAM+e,IAE3B,EAEkBzH,EAAAA,EAAAA,gBACR4B,QAAQ,CAChBpW,KAAMuc,EAAAA,UAAUC,aAAa7gB,KAC7BqZ,QAAS,CAAC,oFAGZ3U,EAAAA,EAAAA,IAAqB,MAAO,oBAAqB,CAC/Coc,2BAA4BT,EAC5BU,wBAAyBb,GAE7B,CACF,CAAE,MAAO3T,GACP2D,QAAQ5F,MAAMiC,EAChB,CACF,CAEJ,CAEQ+Q,oBAAAA,GACN,MAAM0D,GAAiBzC,EAAAA,EAAAA,IAAkBjW,MACnC2Y,GAAyB9B,EAAAA,EAAAA,IAA6B7W,MAE5D2Y,EAAuBvB,cAAgB,KAAMC,EAAAA,GAAAA,IAAiBsB,GAE9DD,EAAehZ,SAAS,CACtB6X,qBAAsBvX,KAAK4Y,6BAC3BtB,mBAAoBtX,KAAK6Y,6BAG3BF,EAAuBjZ,SAAS,CAC9B4X,mBAAoBtX,KAAK8Y,mCACzBvB,qBAAsBvX,KAAK+Y,sCAE/B,CAKA,mCACE,MAAO,CAAC3f,EAAgC4f,KAEtC,MAAMC,GAActC,EAAAA,EAAAA,IAAoB3W,MAClCkZ,GAAWpD,EAAAA,EAAAA,IAAkB9V,MAE7BmZ,GAA2BC,EAAAA,GAAAA,GAA6B1S,EAAAA,IAExDgQ,EAAkBuC,EAAYhgB,MAAM6F,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQwf,IACpEvC,EAAeyC,EAASjgB,MAAM6F,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQwf,IAC9DK,EAAqBrZ,KAAKsZ,sBAAsBtD,EAAAA,GAAYS,GAC5D8C,EAAsBvZ,KAAKsZ,sBAAsBE,EAAAA,GAAc9C,GAC/DlV,EAAO2X,EACVtW,QAAQ4W,EAAAA,GAAqBJ,GAC7BxW,QAAQ6W,EAAAA,GAAuBH,GAGlC,OAAOrT,GAAsB,CAC3B1E,KAHmB3I,EAAAA,GAAW8gB,YAAY3Z,KAAMwB,GAIhDC,SAAUzB,KACVZ,UAAWvG,EAAAA,GAAWqZ,aAAalS,MAAM/G,MAAMgK,MAC/CvB,aAAcgF,EAAAA,IACd,CAEN,CAKA,qCACE,MAAO,CAACtN,EAAgCD,KACtC,MAAMggB,GAA2BC,EAAAA,GAAAA,GAA6B1S,EAAAA,IACxDuS,GAActC,EAAAA,EAAAA,IAAoB3W,MAClCkZ,GAAWpD,EAAAA,EAAAA,IAAkB9V,MAE7B0W,EAAkBuC,EAAYhgB,MAAM6F,QAAQ3F,QAC/CsL,GAAMA,EAAEjL,MAAQL,EAAOK,MAAOkL,EAAAA,GAAAA,IAAoBD,EAAErB,YAEjDqT,EAAeyC,EAASjgB,MAAM6F,QAAQ3F,QACzCsL,GAAMA,EAAEjL,MAAQL,EAAOK,MAAOkL,EAAAA,GAAAA,IAAoBD,EAAErB,YAGjDiW,EAAqBrZ,KAAKsZ,sBAAsBtD,EAAAA,GAAYS,GAC5D8C,EAAsBvZ,KAAKsZ,sBAAsBE,EAAAA,GAAc9C,GAE/DlV,EAAO2X,EACVtW,QAAQ4W,EAAAA,GAAqBJ,GAC7BxW,QAAQ6W,EAAAA,GAAuBH,GAC5BK,EAAe/gB,EAAAA,GAAW8gB,YAAY3Z,KAAMwB,GAElD,OAAOD,GACLpI,EACAC,EACAwgB,EACA5Z,KACAnH,EAAAA,GAAWqZ,aAAalS,MAAM/G,MAAMgK,MACpCyD,EAAAA,GAAuBA,CAG7B,CAKA,2BACE,MAAO,CAACtN,EAAgC4f,KAEtC,MAAMla,EAAU1F,EAASH,MAAM6F,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQwf,IACzDK,EAAqBrZ,KAAKsZ,sBAAsB1W,EAAAA,GAAY9D,GAE5D0C,GAD2B4X,EAAAA,GAAAA,GAA6BxW,EAAAA,IACxBC,QAAQ4W,EAAAA,GAAqBJ,GAEnE,OAAOnT,GAAsB,CAC3B1E,KAFmB3I,EAAAA,GAAW8gB,YAAY3Z,KAAMwB,GAGhDC,SAAUzB,KACVZ,UAAWvG,EAAAA,GAAWqZ,aAAalS,MAAM/G,MAAMgK,MAC/CvB,aAAckB,EAAAA,IACd,CAEN,CAKA,6BACE,MAAO,CAACxJ,EAAgCD,KAEtC,MAAM2F,EAAU1F,EAASH,MAAM6F,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQL,EAAOK,KAAOiL,EAAErB,WAAa6B,GAAAA,GAASC,QAC/FmU,EAAqBrZ,KAAKsZ,sBAAsB1W,EAAAA,GAAY9D,GAE5D0C,GAD2B4X,EAAAA,GAAAA,GAA6BxW,EAAAA,IACxBC,QAAQ4W,EAAAA,GAAqBJ,GAC7DO,EAAe/gB,EAAAA,GAAW8gB,YAAY3Z,KAAMwB,GAElD,OAAOD,GACLpI,EACAC,EACAwgB,EACA5Z,KACAnH,EAAAA,GAAWqZ,aAAalS,MAAM/G,MAAMgK,MACpCL,EAAAA,GAAUA,CAGhB,CAEQ0W,qBAAAA,CACN5X,EACA5C,GAEA,GAAI4C,IAAiBsU,EAAAA,GACnB,OAAO6D,EAAAA,EAAAA,IAAwB/a,GAC1B,GAAI4C,IAAiB8X,EAAAA,GAC1B,OAAOM,EAAAA,EAAAA,IAA2Bhb,GAC7B,GAAI4C,IAAiBkB,EAAAA,GAC1B,OAAOkX,EAAAA,EAAAA,IAA2Bhb,GAC7B,CACL,MAAMkD,EAAQ,IAAIC,MAAM,yEAExB,MADAZ,EAAAA,EAAOW,MAAMA,GACPA,CACR,CACF,CAQA,yBAAiC5I,EAAgC2gB,GAC/D,MAAMC,EAAWnI,EAAAA,gBAAgBoI,cAKV,OAJR,IAAIC,gBAAgBF,EAASG,QACdtY,IAAIkY,IAIhC3gB,EAASsG,SAAS,CAAEZ,QAAS,IAEjC,CAEQ6W,cAAAA,CAAeU,EAA2B+D,G,IACN/D,EAA1C,MAAMgE,GAAeC,EAAAA,GAAAA,GAAsC,QAAjBjE,EAAAA,EAASxa,gBAATwa,IAAAA,EAAAA,EAAqB,IAC/D+D,EAAiBG,cAAcF,EACjC,CAEAG,WAAAA,GACE,MAAO,CACL3e,SAAUgI,KAAKC,UAAU9D,KAAK/G,MAAM4C,UAExC,CAEA4e,aAAAA,CAActY,GACZ,MAAM4S,EAAwC,CAAC,EAE3C5S,EAAOtG,UAAuC,iBAApBsG,EAAOtG,WACnCkZ,EAAYlZ,SAAWgI,KAAKiQ,MAAM3R,EAAOtG,WAG3CmE,KAAKN,SAASqV,EAChB,CApaA,YAAmB9b,G,MAEfyhB,EADF,MAAM,eAAEC,EAAc,MAAEC,GAib5B,SAAwBC,EAA8BC,GACpD,MAAMC,EAAgB,IAAIC,EAAAA,GAAqB,CAC7CtjB,KAAMujB,EAAAA,GACN7W,WAAY8W,EAAAA,GACZzhB,OAAQ,WACRoE,MAAO,SACPsd,kBAAkB,EAClBrc,QAASgc,QAAAA,EAAkB,GAC3BM,kBAAmBC,EAAAA,GACnBC,KAAMC,EAAAA,GAAaC,SACnBhiB,IAAK,uBACLiiB,iBAAkBC,EAAAA,KAGpBX,EAAc3D,cAAgB,WAC5B,OAAOuE,GAAAA,EACT,EAEA,MAAMC,EAAiB,IAAIZ,EAAAA,GAAqB,CAC9CtjB,KAAMse,EAAAA,GACNnY,MAAO,kBACPge,UAAW,SACXpiB,OAAQ,WACR2hB,kBAAmBvB,EAAAA,GACnByB,KAAMC,EAAAA,GAAaO,aACnBX,kBAAkB,IAGpBS,EAAexE,cAAgB,IACtBuE,GAAAA,GAGT,MAAMI,EAAmB,IAAIf,EAAAA,GAAqB,CAChDtjB,KAAM8hB,EAAAA,GACN3b,MAAO,WACPge,UAAW,SACXpiB,OAAQ,WACR2hB,kBAAoBtc,IAAqCgb,EAAAA,EAAAA,IAA2Bhb,GACpFwc,KAAMC,EAAAA,GAAaO,aACnBX,kBAAkB,IAGpBY,EAAiB3E,cAAgB,IACxBuE,GAAAA,GAST,MAAM/E,EAA4B,IAAIoE,EAAAA,GAAqB,CACzDtjB,KAAMgP,EAAAA,GACN7I,MAAO,SACPge,UAAW,SACXpiB,OAAQ,WACR6hB,KAAMC,EAAAA,GAAaO,aACnBX,kBAAkB,EAClBM,iBAAkBO,EAAAA,GAClBC,aAAa,IAGTvD,EAAiB,IAAIsC,EAAAA,GAAqB,CAC9CtjB,KAAMkL,EAAAA,GACN/E,MAAO,eACPge,UAAW,SACXpiB,OAAQ,WACR2hB,kBAAmBc,EAAAA,GACnBZ,KAAMC,EAAAA,GAAaO,aACnBK,6BAA6B,IAGzBC,EAAsB,IAAIpB,EAAAA,GAAqB,CACnDtjB,KAAM2kB,EAAAA,GACNf,KAAMC,EAAAA,GAAaO,aACnBxE,mBAAoB,IAAM/P,QAAQC,QAAQ,CAAE3E,SAAS,EAAMV,OAAQ,KACnEoV,qBAAsB,IAAMhQ,QAAQC,QAAQ,CAAE3E,SAAS,EAAMV,OAAQ,KACrEiZ,kBAAmBkB,EAAAA,GACnB7iB,OAAQ,eAGV2iB,EAAoBhF,cAAgB,IAC3BmF,GAAAA,GAGT,MAAMC,EAAa,IAAIC,EAAAA,GAAmB,CACxC/kB,KAAMglB,EAAAA,GACN7e,MAAO,cACPoF,MAAO4X,EACP8B,SAAU,SAGN/B,EAAQ4B,EAAWpG,kBAAkBC,IACzC,MAAMuG,EAAU,GAAGvG,EAASpT,QAC5BoT,EAASpT,QAAS4Z,EAAAA,EAAAA,IAA+BD,EAAQ,IAG3D,MAAO,CACLjC,eAAgB,IAAImC,EAAAA,GAAiB,CACnC9jB,UAAW,CACTwjB,EACAzB,EACAa,EACAlD,EACAqD,EACAnF,EACA,IAAImG,EAAAA,GAAe,CACjBrlB,KAAMslB,EAAAA,GACN/Z,MAAO,GACPqY,KAAMC,EAAAA,GAAaO,eAErB,IAAId,EAAAA,GAAqB,CACvBtjB,KAAMulB,EAAAA,GACN3B,KAAMC,EAAAA,GAAaO,aACnBV,kBAAmBkB,EAAAA,KAErBF,EAGA,IAAIc,EAAAA,EAAuB,CACzBxlB,KAAMylB,EAAAA,GACNla,MAAOma,EAAAA,GACPnB,aAAa,EACbX,KAAMC,EAAAA,GAAaO,aACnBzZ,QAAS,CAAC,CAAEY,MAAOma,EAAAA,GAAmBvf,MAAOuf,EAAAA,UAInDxC,QAEJ,CApjBsCyC,CACA3C,QAAhCA,GAAAA,EAAAA,EAAAA,aAAAA,IAAAA,EAAAA,EAAsC,oBACtCzhB,EAAM6hB,gBAGFvd,EAA0B,CAC9B,IAAIgC,EAAAA,GAAgB,CAClB/F,IPzGmC,gDO0GnCwZ,UAAW,MACX1c,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI1I,EAA6B,CACrCe,IPrGsB,cOsGtBC,OAAQ,WACRnE,QAAS,CAAC2lB,EAAAA,QAGd,IAAI/F,GAAAA,EAAoB,CACtB1b,IAAKsb,GACLyI,UAAU,OAIhB,IAAI9kB,EAA6B,CAC/Be,IPzHsC,gBO0HtCC,OAAQ,WACRnE,QAAS,CAACkkB,EAAAA,MAEZ,IAAI/gB,EAA6B,CAC/Be,IP5H4B,cO6H5BC,OAAQ,WACRnE,QAAS,CAAC0gB,EAAAA,MAEZ,IAAIvd,EAA6B,CAC/Be,IAAKgG,EACL/F,OAAQ,aACRnE,QAAS,CAAConB,EAAAA,MAEZ,IAAIjkB,EAA6B,CAC/Be,IAAKiG,EACLhG,OAAQ,WACRnE,QAAS,CAACoR,EAAAA,MAEZ,IAAI8W,EAAAA,GAAgB,CAAEhkB,IPxIY,oBOyIlC,IAAIikB,EAAAA,GAAmB,CAAEjkB,IPxIM,kB,IOqJnBP,EACAA,EACFA,EAZe,aAAvB8G,EAAAA,EAAAA,OAAoC2d,EAAAA,OAAOC,eAAeC,8BAC5DrgB,EAASgG,KACP,IAAIsa,EAAAA,EAAa,CACfrkB,IP7I2B,eO8I3BskB,QAAQ,KAKdnd,MAAM,G,uUAAA,EACJod,WAA4B,QAAhB9kB,EAAAA,EAAM8kB,kBAAN9kB,IAAAA,EAAAA,EAAoB,IAAImf,EAAAA,GAAe,CAAC,GACpD4F,WAA4B,QAAhB/kB,EAAAA,EAAM+kB,kBAAN/kB,IAAAA,EAAAA,EAAoB0hB,EAChCpd,SAAwB,QAAdtE,EAAAA,EAAMsE,gBAANtE,IAAAA,EAAAA,EAAkBsE,EAE5B1B,SAAU,IACP5C,GAAAA,CACHkI,KAAM,IAAI1D,EAAY,CAAC,M,OAlE3B,QAAUwgB,WAAW,IAAIC,EAAAA,GAAyBle,KAAM,CAAEgK,KAAM,CAAC,eA2IjE,QAAQ+M,qCAAoC,CAC1CV,EACAmB,KAEA,KAAK2G,EAAAA,GAAAA,GAAe9H,EAASvX,QAAS0Y,aAAAA,EAAAA,EAAW1Y,SAAU,CACzD,MAAM4X,EAAkBL,EAASvX,QAAQ3F,QAAQsL,IAAqC2Z,EAAAA,GAAAA,IAAiB3Z,KACjGgS,EAAeJ,EAASvX,QAAQ3F,QAAQsL,KAAsC2Z,EAAAA,GAAAA,IAAiB3Z,MAErGqR,EAAAA,EAAAA,IAAkB9V,MAAM8W,cAAcL,IACtCE,EAAAA,EAAAA,IAAoB3W,MAAM8W,cAAcJ,EAC1C,KAkBF,QAAQF,4BAAAA,IAA4B,YAClC,MAAM6H,QF3EH,W,OAAe5K,GAAAA,MAAAA,KAAAA,U,CE2EQA,GAE1B,GAAI4K,EAAYrK,QACd,OAGF,MAAM5U,EAAYvG,EAAAA,GAAWqZ,aAAa,GACpC8F,EAAqC,iBAAzBqG,EAAYtX,MAAMiR,GAAkBqG,EAAYtX,MAAMiR,QAAKhiB,EACvEkiB,EAAyC,iBAA3BmG,EAAYtX,MAAMmR,KAAoBmG,EAAYtX,MAAMmR,UAAOliB,EAC7EsoB,EAAWzG,EAAAA,UAAU0G,kBAAkBF,EAAYtX,OAErD3H,GAAakf,EACflf,EAAUM,SAAS,CACjBuD,MAAOqb,EACPtG,KACAE,SAGF7W,EAAAA,EAAOW,MAAM,IAAIC,MAAM,qCAAsC,CAC3D+B,IAAK,oCACLwa,sBAAuBpf,EACvB4Y,GAAIA,QAAAA,EAAM,GACVE,KAAMA,QAAAA,EAAQ,IAGpB,KA5HElY,KAAKkW,MAAMC,IAAIyE,GACf5a,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,QAE/Cye,EAAAA,EAAAA,IAAkBze,MAAM0e,MAAMC,IAC5B3e,KAAKN,SAAS,CAAEif,MAAK,GAEzB,EAEA,GA9EWrhB,GA8EJ5D,aAAY,EAAGf,YACpB,MAAM,KAAEwI,GAASxI,EAAMI,WAGvB,OADcgM,EAAAA,EAAAA,IAAsBpM,GACzBM,MAAMoJ,QAAQnJ,OAIrBiI,EACK,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,IAGzB,kBAACyd,EAAAA,mBAAkBA,CAACzmB,KAAM,eAPxB,kBAAC8b,GAAYA,K,qiCC/KnB,MAAM4K,EAA4B,6BAClC,MAAM3e,UAA4BxH,EAAAA,GAOvCmH,UAAAA,GACEG,KAAK8e,iBAEL9e,KAAKkW,MAAMC,KACTF,EAAAA,EAAAA,IAAkBjW,MAAMuW,iBAAiBwI,EAAAA,IAAgC,KACvE/e,KAAK8e,gBAAgB,IAG3B,CAEOA,cAAAA,GACL,MAAME,GAAY/I,EAAAA,EAAAA,IAAkBjW,MACpCA,KAAKN,SAAS,CACZ2C,QAAS2c,EAAU/lB,MAAM6F,QAAQxF,KAAKH,I,IAC9BA,EAAAA,E,MAD0C,CAChDhB,KAA6B,QAAvBgB,EAAkB,QAAlBA,EAAAA,EAAO+J,mBAAP/J,IAAAA,OAAAA,EAAAA,EAAqB,UAArBA,IAAAA,EAAAA,EAA2BA,EAAO8J,MACxCgc,UAAU,EACVhc,MAAO9J,EAAO8J,MACf,KAEL,CAzBAvC,WAAAA,CAAYzH,GACV0H,MAAM,OAAK1H,GAAAA,CAAOimB,WAAW,EAAOC,SAAS,EAAO3lB,IAAKqlB,EAA2Bf,QAAQ,KA0B9FzZ,EAAAA,KAAAA,gBAAe,K,IAGM2a,EAAAA,EAFnBhf,KAAKN,SAAS,CAAEwf,WAAW,IAC3B,MAAMF,GAAY/I,EAAAA,EAAAA,IAAkBjW,M,IAGlCgf,EAFF,MAAMI,EAAaJ,SAAgB,QAAhBA,EAAAA,EAAW/lB,aAAX+lB,IAAAA,GAAsC,QAAtCA,EAAAA,EAAkBzH,4BAAlByH,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EACjBA,EAC0B,QAA1BA,EAAAA,EAAU/lB,MAAM6F,QAAQ,UAAxBkgB,IAAAA,EAAAA,EAA8B,CAAExlB,IAAKiN,EAAAA,KAEvC2Y,SAAAA,EAAYV,MAAMW,IACZrZ,MAAMrD,QAAQ0c,EAASld,SACzBnC,KAAKN,SAAS,CACZwf,WAAW,EACX7c,QAASgd,EAASld,OAAO7I,KAAK2J,I,IAGnBA,EAFT,MAAO,CACL9K,KAAM8K,EAAM9K,KACZ8K,MAAkB,QAAXA,EAAAA,EAAMA,aAANA,IAAAA,EAAAA,EAAeA,EAAM9K,KAC5B8mB,SAAUD,EAAU/lB,MAAM6F,QAAQ6F,MAAMxL,GAAWA,EAAO8J,QAAUA,EAAM9K,OAC3E,KAGP,GACA,IAGJ2e,EAAAA,KAAAA,iBAAgB,CAACwI,EAAsBC,K,IAEf,EADtB,MAAMP,GAAY/I,EAAAA,EAAAA,IAAkBjW,MAC9Bwf,EAAkC,QAAlB,EAAAxf,KAAK/G,MAAMoJ,eAAX,eAAoBlJ,QAAQsmB,GAAQA,EAAIR,W,IAG5DO,EADFR,EAAUlI,cAKR,QAJA0I,EAAAA,aAAAA,EAAAA,EAAelmB,KAAKomB,IAAe,CACjClmB,IAAKiN,EAAAA,GACLrD,SAAU6B,EAAAA,GAASC,MACnBjC,MAAOyc,EAAUvnB,gBAHnBqnB,IAAAA,EAAAA,EAIO,GACP,CAAEF,cAAaC,gBAAa,IAIhCI,EAAAA,KAAAA,mBAAmBtd,I,IAKN,GAHXnG,EAAAA,EAAAA,MAEA8D,KAAKN,SAAS,CACZ2C,QAA2B,QAAlB,EAAArC,KAAK/G,MAAMoJ,eAAX,eAAoB/I,KAAK2J,GAC5BZ,EAAQsC,MAAM8a,GAAQA,EAAIxc,QAAUA,EAAMA,QACrC,OAAKA,GAAAA,CAAOgc,UAAU,IAExB,OAAKhc,GAAAA,CAAOgc,UAAU,QAI5Bjf,KAAK/G,MAAM6kB,OAGd9d,KAAK8W,eAAc,GAFnB9W,KAAK8W,eAAc,EAGrB,IAGF8I,EAAAA,KAAAA,cAAc9B,IACZ9d,KAAKN,SAAS,CAAEoe,UAAS,IAG3B+B,EAAAA,KAAAA,eAAc,KACZ7f,KAAK4f,YAAW,GAEhB5f,KAAK8W,eAAc,GAAO,EAAK,IAxF/B9W,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAmIK,SAAS8f,EAAmBre,GACjC,MAAMse,EAAsBlnB,EAAAA,GAAWuY,WAAW3P,GAAWue,GAAQA,aAAe9f,IAChF6f,aAA+B7f,GACjC6f,EAAoBjB,gBAExB,CA9CE,EA/FW5e,EA+FJxG,aAAY,EAAGf,YACpB,MAAM,QAAE0J,EAAO,UAAE6c,EAAS,QAAEC,EAAO,OAAErB,GAAWnlB,EAAMI,WAChD3E,GAASC,EAAAA,EAAAA,YAAWC,GAI1B,OAHkB2hB,EAAAA,EAAAA,IAAkBtd,GAC1BI,WAELomB,EAKH,kBAAC5qB,MAAAA,CAAIU,cAAaC,EAAAA,EAAQ8D,UAAUinB,OAAOC,UAAW1rB,UAAWJ,EAAOmD,SACtE,kBAAC4oB,EAAAA,GAAaA,CAAC1mB,OAAO,WAAWoE,MAAO,eACxC,kBAACuiB,EAAAA,YAAWA,CACVjmB,aAAY,oBACZkmB,OAAQ,kBAAC5oB,EAAAA,KAAIA,CAAC5C,KAAM,KAAM6C,KAAM,WAChC4oB,YAAa,aACb9rB,UAAWJ,EAAOkL,QAClBihB,SAAU5nB,EAAMgnB,gBAChBE,YAAa,IAAMlnB,EAAMknB,cACzBW,WAAY7nB,EAAM0L,aAClBoc,QAAS,IAAM9nB,EAAMinB,YAAW,GAChCc,kBAAkB,EAClB5C,OAAQA,EACRoB,UAAWA,EACXyB,aAAa,EACbC,mBAAmB,EACnBC,mBAAmB,EACnBC,iBAAiB,EACjBC,yBAAyB,EACzBC,qBAAqB,EACrB/d,MAAOZ,aAAAA,EAAAA,EAASlJ,QAAQmK,GAAMA,EAAE2b,WAChC5c,QAASA,aAAAA,EAAAA,EAAS/I,KAAK2nB,IAAS,CAC9Bhe,MAAOge,EAAIhe,MACXpF,MAAOojB,EAAI9oB,YA3BV,I,IAyCb,MAAM7D,EAAY,KAAO,CACvBgL,SAAS3J,EAAAA,EAAAA,KAAI,CACX0B,KAAM,MAERE,SAAS5B,EAAAA,EAAAA,KAAI,CACX0B,KAAM,WACN6pB,WAAY,Y,+sBCzJT,SAASC,GAAmB,QAAEnsB,EAAO,MAAErB,IAC5C,MAAOytB,EAAOC,IAAYtoB,EAAAA,EAAAA,WAAS,GAC7B3E,GAASC,EAAAA,EAAAA,YAAWitB,GAC1B,OACE,oCACE,kBAACC,OAAAA,KACC,kBAAChtB,MAAAA,CAAIC,UAAWJ,EAAOotB,WACrB,kBAACD,OAAAA,KAAK,eACN,kBAACE,EAAAA,WAAUA,CAACzsB,QAASA,EAAS0C,KAAM,QAAS7C,KAAM,KAAMsF,aAAY,wBAEvE,kBAAConB,OAAAA,CAAK/sB,UAAWJ,EAAOstB,cACtB,kBAACC,EAAAA,EAAgBA,E,sUAAAA,CAAAA,CAAAA,EAAKhuB,GAAAA,CAAOytB,MAAOA,EAAOC,SAAUA,EAAUtlB,KAAM,cACpEqlB,GACC,kBAACK,EAAAA,WAAUA,CACTjtB,UAAWJ,EAAOwtB,YAClBC,QAAS,WACThtB,KAAM,KACNsF,aAAY,kBACZnF,QAAS,IAAMqsB,GAAS,GACxB3pB,KAAM,yBAOpB,CAEA,MAAM4pB,EAAuB5rB,IAA0B,CACrD8rB,WAAW7rB,EAAAA,EAAAA,KAAI,CACbC,QAAS,OACTyC,SAAU3C,EAAM4C,WAAWC,UAAUF,SACrCuc,aAAclf,EAAMmC,QAAQ,IAC5BD,IAAKlC,EAAMmC,QAAQ,KAErB6pB,cAAc/rB,EAAAA,EAAAA,KAAI,CAChBC,QAAS,SAEXgsB,aAAajsB,EAAAA,EAAAA,KAAI,CACfgC,WAAYjC,EAAMmC,QAAQ,O,s5BC5CvB,MAAMoI,UAAiCvH,EAAAA,GAkD5CopB,iBAAAA,EAAkB,SAAE1e,IAClB,OAAOA,IAAa2e,EAAAA,GAAaC,eAAiB5e,IAAa2e,EAAAA,GAAaE,aAC9E,CA6EAC,YAAAA,CAAaC,EAAuCC,EAAqCC,GAAY,GAC/FA,GAEFriB,KAAKsiB,yBAAyBH,EAAgBC,GAAc,GAE5DpiB,KAAKuiB,wBAAwBJ,EAAgBC,GAAc,GAAO,IAElEpiB,KAAKsiB,yBAAyBH,EAAgBC,EAElD,C,kBA1IK,YA0CLI,EAAAA,KAAAA,eAAc,CAACve,EAAoCwe,EAAoBtpB,KACvD,UAAV8K,EAAEzK,OAEJ0C,EAAAA,EAAAA,MACA8D,KAAKsiB,yBAAyBnpB,EAAQ,OAAKA,GAAAA,CAAQ8J,MAAOwf,KAC5D,IAUFC,EAAAA,KAAAA,iBAAiBvpB,IACf,IAAIwpB,EAEJ,OAAQxpB,EAAOiK,UACb,KAAK2e,EAAAA,GAAaa,MAChBD,EAAcZ,EAAAA,GAAac,MAC3B,MAEF,KAAKd,EAAAA,GAAaC,cAChBW,EAAcZ,EAAAA,GAAaE,cAC3B,MAEF,KAAKF,EAAAA,GAAac,MAChBF,EAAcZ,EAAAA,GAAaa,MAC3B,MAEF,KAAKb,EAAAA,GAAaE,cAChBU,EAAcZ,EAAAA,GAAaC,cAC3B,MAEF,QACE,MAAM,IAAI/f,MAAM,qBAIpBjC,KAAKkiB,aAAa/oB,EAAQ,OAAKA,GAAAA,CAAQiK,SAAUuf,KAAe,EAAM,IAMxEG,EAAAA,KAAAA,qBAAqB3pB,IACnB,IAAIwpB,EACJ,OAAQxpB,EAAOiK,UACb,KAAK2e,EAAAA,GAAaa,MAChBD,EAAcZ,EAAAA,GAAaC,cAC3B,MAEF,KAAKD,EAAAA,GAAaC,cAChBW,EAAcZ,EAAAA,GAAaa,MAC3B,MAEF,KAAKb,EAAAA,GAAac,MAChBF,EAAcZ,EAAAA,GAAaE,cAC3B,MAEF,KAAKF,EAAAA,GAAaE,cAChBU,EAAcZ,EAAAA,GAAac,MAC3B,MAEF,QACE,MAAM,IAAI5gB,MAAM,qBAIpBjC,KAAKkiB,aAAa/oB,EAAQ,OAAKA,GAAAA,CAAQiK,SAAUuf,KAAe,EAAM,IAMxEI,EAAAA,KAAAA,yBAAyB5pB,IACvB,MAAM6pB,EACJ7pB,EAAOK,MAAQypB,EAAAA,GAAwBD,cACnCC,EAAAA,GAAwBC,gBACxBD,EAAAA,GAAwBD,cAC9BhjB,KAAKkiB,aAAa/oB,EAAQ,OAAKA,GAAAA,CAAQK,IAAKwpB,KAAiB,EAAM,IAoBrEG,EAAAA,KAAAA,iBAAgB,CAAClf,EAAkC9K,KACjD6G,KAAKkiB,aAAa/oB,EAAQ,OAAKA,GAAAA,CAAQ8J,MAAOgB,EAAEhN,OAAOgM,SAAS,EAAK,IAMvEmgB,EAAAA,KAAAA,gBAAgBjqB,KACd+C,EAAAA,EAAAA,MACA,MAAM9C,GAAWiqB,EAAAA,EAAAA,IAAuBrjB,MAClCsjB,EAAelqB,EAASH,MAAM6F,QAAQ3F,QACzCsL,QAAqBzO,IAAfyO,EAAE8e,UAA0B9e,EAAE8e,WAAapqB,EAAOoqB,WAG3DnqB,EAASsG,SAAS,CAChBZ,QAASwkB,GACT,IAMJ,OAAQhB,4BAA2B,CACjCH,EACAC,EACA9C,GAAc,EACdC,GAAe,KAEf,MAAMnmB,GAAWiqB,EAAAA,EAAAA,IAAuBrjB,MAClCsjB,EAAelqB,EAASH,MAAM6F,QAAQ3F,QACzCsL,QAAqBzO,IAAfyO,EAAE8e,UAA0B9e,EAAE8e,WAAapB,EAAeoB,WAGnEnqB,EAAS0d,cACP,CACE,CACEyM,SAAUpB,EAAeoB,SACzB/pB,IAAK4oB,EAAa5oB,IAClB4J,SAAUgf,EAAahf,SACvBH,MAAOmf,EAAanf,UAEnBqgB,GAEL,CAAEhE,cAAaC,kBAGjBnjB,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBknB,mCACpC,CACEC,kBAAmBtB,EAAelf,MAAM/J,OACxCwqB,cAAevB,EAAelf,MAAMoG,cAAchQ,SAAS,SAC3D+J,SAAUgf,EAAahf,SACvB4f,cAAeZ,EAAa5oB,KAC9B,IAOJ,OAAQ+oB,2BAA0BoB,EAAAA,EAAAA,WAChC,CACExB,EACAC,EACA9C,GAAc,EACdC,GAAe,KAEfvf,KAAKsiB,yBAAyBH,EAAgBC,EAAc9C,EAAaC,EAAa,GAExF,K,EAOG,SAASqE,EAAgB9kB,GAC9BA,EAAQ2G,MAAK,CAACzO,EAAG0O,K,IAAe1O,EAAkC0O,E,OAA3CiE,SAAmB,QAAV3S,EAAAA,EAAEusB,gBAAFvsB,IAAAA,EAAAA,EAAc,IAAK,IAAM2S,SAAmB,QAAVjE,EAAAA,EAAE6d,gBAAF7d,IAAAA,EAAAA,EAAc,IAAK,GAAG,GAC1F,CAEA,SAASpR,EAAUoB,GACjB,MAAO,CACLmuB,iBAAiBluB,EAAAA,EAAAA,KAAI,CACnBkI,MAAO,kBACPjI,QAAS,OACTsH,SAAU,OACVtF,IAAK,GAAGlC,EAAMmC,QAAQ,QAASnC,EAAMmC,QAAQ,OAGnD,CAxOE,EADWoI,EACJvG,aAAY,EAAGf,YACpB,MAAMmrB,GAAgBT,EAAAA,EAAAA,IAAuB1qB,IACvC,QAAEmG,GAAYglB,EAAc/qB,WAC5B3E,GAASC,EAAAA,EAAAA,YAAWC,GAG1B,OAFAsvB,EAAgB9kB,GAEXA,EAAQ5F,OAKX,kBAAC3E,MAAAA,CAAIC,UAAWJ,EAAOyvB,iBACpB/kB,EAAQxF,KAAKH,IACZ,MAAMxF,EAAyB,CAC7B8uB,WAAYtpB,EAAO8J,MACnB4f,MAAO1pB,EAAOiK,WAAa2e,EAAAA,GAAac,OAAS1pB,EAAOiK,WAAa2e,EAAAA,GAAaE,cAClFe,cAAe7pB,EAAOK,MAAQypB,EAAAA,GAAwBD,cACtDe,UAAWprB,EAAMmpB,kBAAkB3oB,GACnCqpB,YAAa,CAACve,EAAGwe,IAAe9pB,EAAM6pB,YAAYve,EAAG9K,EAAO8J,MAAO9J,GACnE6qB,aAAc,IAAMrrB,EAAMmqB,kBAAkB3pB,GAC5C+oB,aAAc,CAACO,EAAYJ,IACzB1pB,EAAMupB,aACJ/oB,EACA,OACKA,GAAAA,CACH8J,MAAOwf,IAETJ,GAEJK,cAAe,IAAM/pB,EAAM+pB,cAAcvpB,GACzCgqB,cAAgBlf,GAAMtL,EAAMwqB,cAAclf,EAAG9K,GAC7C4pB,sBAAuB,IAAMpqB,EAAMoqB,sBAAsB5pB,IAE3D,OAAO,kBAACgoB,EAAkBA,CAAC3nB,IAAKL,EAAOoqB,SAAUvuB,QAAS,IAAM2D,EAAMyqB,aAAajqB,GAASxF,MAAOA,G,KA1BhG,IA2BL,G,sPCtCD,MAAMuhB,UAA4Bxc,EAAAA,GASvCmH,UAAAA,GACE,MAAMqX,GAAYC,EAAAA,EAAAA,IAAkBnX,MAC9BikB,EAAoB/M,EAAUje,MAAM6F,QAAQ6F,MAAMF,IAAMC,EAAAA,EAAAA,IAAoBD,EAAErB,YACpFpD,KAAKN,SAAS,CACZ6d,UAAW0G,IAGb/M,EAAUd,kBAAkBC,IAC1B,MAAM4N,EAAoB5N,EAASvX,QAAQ6F,MAAMF,IAAMC,EAAAA,EAAAA,IAAoBD,EAAErB,YAC7EpD,KAAKN,SAAS,CACZ6d,UAAW0G,GACX,GAEN,CArBAvjB,WAAAA,CAAYzH,GACV0H,M,sUAAM,IACD1H,IAqBPirB,EAAAA,KAAAA,WAAU,KACR,MACMC,GADYhN,EAAAA,EAAAA,IAAkBnX,MACH/G,MAAM6F,QAAQslB,MAAM3f,IAAMC,EAAAA,EAAAA,IAAoBD,EAAErB,YAEjF,OAAI+gB,GACKE,EAAAA,EAAAA,IAAsBF,EAAe3qB,IAAK2qB,EAAelhB,OAG3D,EAAE,IA1BTjD,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAoDF,SAAS1L,EAAUoB,GACjB,MAAO,CACL4uB,QAAQ3uB,EAAAA,EAAAA,KAAI,CACV,CAACD,EAAMoI,YAAYC,KAAK,OAAQ,CAC9B/F,UAAW,YAEb,CAACtC,EAAMoI,YAAYC,KAAK,OAAQ,CAC9BmB,UAAWxJ,EAAMmC,QAAQ,GACzBG,UAAW,cAGbA,UAAW,aACXkH,UAAW,SAGjB,CAvCE,EAnCWgW,EAmCJxb,aAAY,EAAGf,YACpB,MAAM,SAAE4kB,EAAQ,OAAEpI,GAAWxc,EAAMI,WAC7B3E,GAASC,EAAAA,EAAAA,YAAWC,GAE1B,IAAe,IAAX6gB,EACF,OAAO,KAGT,MAAM3c,EAAOG,EAAMurB,UAEnB,OACE,kBAACK,EAAAA,WAAUA,CACTtvB,cAAaC,EAAAA,EAAQsvB,MAAMC,OAAOC,eAClCnH,SAAUA,IAAa/kB,EACvB5D,KAAM,UACNJ,UAAWJ,EAAOkwB,OAClBptB,KAAMsB,GACP,e,gQCzDP,MAAMmsB,EAAoD,GAAGC,EAAAA,wCAYtD,MAAM/G,UAAqBnlB,EAAAA,GAChCgI,WAAAA,CAAYzH,GACV,MAAM4rB,EAAerkB,aAAaI,QAAQ+jB,GACpCG,EAASpH,EAAAA,OAAOC,eAAeC,8BAAiD,UAAjBiH,E,IAOjDA,EALpBlkB,M,sUAAM,EACJmd,QAAQ,EACRzb,QAAS,CACP0iB,kBAAmB,CACjBD,OAAQA,SAAAA,EACRD,aAA+B,QAAjBA,EAAiB,SAAjBA,SAAAA,IAAAA,GAAAA,EACdtH,UAAU,KAGXtkB,IAIP,OAAO+rB,mCAAkC,KACvC,MAAMF,GAAU9kB,KAAK/G,MAAMoJ,QAAQ0iB,kBAAkBD,QAErD1oB,EAAAA,EAAAA,IACEC,EAAAA,GAAkB4oB,kBAClB1oB,EAAAA,GAAoB0oB,kBAAkBC,2BACtC,CACEC,QAASL,IAIbtkB,aAAaC,QAAQkkB,EAAmDG,EAAOxf,YAE/EtF,KAAKN,SAAS,CACZ2C,QAAS,CACP0iB,kBAAmB,CACjBD,SACAvH,SAAUvd,KAAK/G,MAAMoJ,QAAQ0iB,kBAAkBxH,SAC/CsH,aAAcC,KAGlB,IAGJ,OAAOM,gBAAgBtH,IACrB9d,KAAKN,SAAS,CAAEoe,UAAS,GA3B3B,EAmFF,SAASxpB,EAAUoB,GACjB,MAAO,CACL2vB,SAAS1vB,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACT4F,QAAS9F,EAAMmC,QAAQ,GACvBmG,cAAe,SACfM,WAAY5I,EAAMwC,OAAOoG,WAAWgnB,QACpC5mB,UAAWhJ,EAAMiJ,QAAQ4mB,GACzBzvB,aAAcJ,EAAMO,MAAMC,OAAOC,QACjCmF,OAAQ,aAAa5F,EAAMwC,OAAOoD,OAAOkqB,OACzChnB,OAAQ,EACRinB,YAAa/vB,EAAMmC,QAAQ,KAE7B6tB,SAAS/vB,EAAAA,EAAAA,KAAI,CACXgwB,WAAYjwB,EAAM4C,WAAWstB,iBAC7BC,cAAenwB,EAAMmC,QAAQ,KAE/BwK,SAAS1M,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACTkwB,oBAAqB,WACrBC,OAAQrwB,EAAMmC,QAAQ,GACtBmuB,UAAWtwB,EAAMmC,QAAQ,GACzBoF,WAAY,WAGlB,CA9EE,EA9CW4gB,EA8CJnkB,aAAY,EAAGf,YACpB,MAAM,OAAEmlB,EAAM,QAAEzb,GAAY1J,EAAMI,WAC5B3E,GAASC,EAAAA,EAAAA,YAAWC,GAEpB2xB,EAAgB,IAElB,kBAAC1xB,MAAAA,CAAIC,UAAWJ,EAAOixB,QAASrwB,QAAUkb,GAAQA,EAAIxD,mBACpD,kBAACnY,MAAAA,CAAIC,UAAWJ,EAAOsxB,SAAS,iBAChC,kBAACnxB,MAAAA,CAAIC,UAAWJ,EAAOiO,SACrB,kBAAC9N,MAAAA,CACCc,MACE,uGAEH,sBAGD,kBAACksB,OAAAA,CACClsB,MACEgN,EAAQ0iB,kBAAkBxH,SACtB,qEAAqE2I,EAAAA,EAA6BC,mBAClG,IAGN,kBAACC,EAAAA,OAAMA,CACLvoB,MAAO,4BACP5I,cAAaC,EAAAA,EAAQsvB,MAAM6B,wBAC3BpjB,MAAOZ,EAAQ0iB,kBAAkBD,OACjCvH,SAAUlb,EAAQ0iB,kBAAkBxH,SACpCgD,SAAU5nB,EAAMqsB,qCAQ5B,OAAI3iB,EAAQ0iB,kBAER,kBAACuB,EAAAA,SAAQA,CAACC,QAASN,EAAeO,UAAU,SAASC,gBAAiB9tB,EAAMysB,cAC1E,kBAACsB,EAAAA,cAAaA,CACZC,KAAK,MACLhyB,QAAQ,SACRmpB,OAAQA,EACR7oB,cAAaC,EAAAA,EAAQsvB,MAAMoC,yBAM5B,uC,wICnFJ,MAAMvO,EAAqB,CAAEH,KAAM,UAAWF,GAAI,OACzD,SAAS6O,EAAiBrR,GACxB,OAAO,IAAIsR,EAAAA,GAAc,CACvB3lB,KAAM,IAAI7D,EAAAA,EAAW,CACnBygB,WAAY,IAAI3F,EAAAA,GAAeC,GAC/B7C,gBAGN,CAGO,SAASuR,IACd,OAAO,IAAIC,EAAAA,GAAa,CAEtB3xB,MAAO,yBACPsc,KAAKsV,EAAAA,EAAAA,IAAY7mB,EAAAA,GAAUC,SAC3B5G,OAAQytB,EAAAA,eAAeC,OACvBC,gBAAiBC,EAAAA,GACjBC,UAAW,GAAGlnB,EAAAA,GAAUC,YACxBknB,SAAW/R,GAAeqR,EAAiBrR,GAC3CgS,WAAY,CACV,CACEF,UAAWG,EAAAA,GAAkBC,KAC7BC,QAAS,CAACnS,EAAYoS,IAAWC,EAAkBrS,EAAYoS,EAAQxnB,EAAAA,GAAUsnB,MACjFI,cAAc,GAEhB,CACER,UAAWG,EAAAA,GAAkBM,OAC7BJ,QAAS,CAACnS,EAAYoS,IAAWC,EAAkBrS,EAAYoS,EAAQxnB,EAAAA,GAAU2nB,SAEnF,CACET,UAAWG,EAAAA,GAAkB5rB,SAC7B8rB,QAAS,CAACnS,EAAYoS,IAAWC,EAAkBrS,EAAYoS,EAAQxnB,EAAAA,GAAUvE,WAEnF,CACEyrB,UAAWG,EAAAA,GAAkB9f,OAC7BggB,QAAS,CAACnS,EAAYoS,IAAWC,EAAkBrS,EAAYoS,EAAQxnB,EAAAA,GAAUuH,SAEnF,CACE2f,UAAWU,EAAAA,GAAwBnqB,MACnC8pB,QAAS,CAACnS,EAAYoS,IAAWK,EAAuBzS,EAAYoS,EAAQM,EAAAA,GAAWrqB,QAEzF,CACEypB,UAAWU,EAAAA,GAAwBxhB,MACnCmhB,QAAS,CAACnS,EAAwBoS,IAAWK,EAAuBzS,EAAYoS,EAAQM,EAAAA,GAAW1hB,QAErG,CACE8gB,UAAW,IACXK,QAAS,IAAMQ,OAIvB,CAGO,SAASA,IACd,OAAO,IAAInB,EAAAA,GAAa,CACtB3xB,MAAO,GACPsc,IAAKyW,EAAAA,QAAQC,UAAUC,EAAAA,QAAiBtyB,GACxCuxB,SAYK,IACL,IAAIT,EAAAA,GAAc,CAChB3lB,KAAM,IAAI5B,EAAAA,GAAgB,CACxByT,UAAW,SACX1c,SAAU,OAfdiyB,qBAAqB,EACrBjB,UAAW,IACXkB,WAAY,CACV,MACEC,EAAAA,EAAAA,KAAiB,IAIzB,CAYO,SAASZ,EACdrS,EACAoS,EACA9nB,GAEA,MAAM,UAAE4oB,EAAS,WAAEC,IAAeC,EAAAA,EAAAA,IAAuBpT,GACzD,OAAO,IAAIwR,EAAAA,GAAa,CACtB3xB,OAAOwzB,EAAAA,EAAAA,IAAsB/oB,GAC7BrG,OAAQytB,EAAAA,eAAeC,OACvBxV,IAAKmX,EAAAA,GAAOhpB,GAAM6oB,EAAYD,GAC9BpB,UAAWG,EAAAA,GAAkB3nB,GAC7BsnB,gBAAiB2B,EAAAA,GACjBC,cAAe,IAAMpB,EACrBL,SAAW/R,GAAeqR,EAAiBrR,IAE/C,CAEO,SAASyS,EACdzS,EACAoS,EACA9nB,GAEA,MAAM,UAAE4oB,EAAS,WAAEC,EAAU,eAAElT,IAAmBmT,EAAAA,EAAAA,IAAuBpT,GAEzE,IAAKC,EAAgB,CACnB,MAAMxR,EAAI,IAAIhC,MAAM,4BAOpB,MANAZ,EAAAA,EAAOW,MAAMiC,EAAG,CACdD,IAAK,mDACL0kB,YACAC,aACAlT,eAAgBA,QAAAA,EAAkB,KAE9BxR,CACR,CAEA,OAAO,IAAI+iB,EAAAA,GAAa,CACtB3xB,OAAOwzB,EAAAA,EAAAA,IAAsBpT,GAC7Bhc,OAAQytB,EAAAA,eAAeC,OACvBxV,IAAKsX,EAAAA,GAAWnpB,GAAM6oB,EAAYD,EAAWjT,GAC7C6R,UAAWU,EAAAA,GAAwBloB,GACnCsnB,gBAAiB2B,EAAAA,GACjBC,cAAe,IAAMpB,EACrBL,SAAW/R,GAAeqR,EAAiBrR,IAE/C,C,kMC5IO,MAqBM0T,EAAqB,CAAC9rB,EAAwBoE,EAAe2nB,GAAO,KAC1E3nB,IACHA,GAAO4nB,EAAAA,EAAAA,IAAahsB,IAGtBoE,EAAOA,EAAKqB,QAAQ,OAAQ,KAAKwmB,UAEjC,MAAMjlB,GAAatC,EAAAA,EAAAA,IAAc1E,GAC3BgC,EAAYvG,EAAAA,GAAWqZ,aAAa9U,GAAYnE,MAAMgK,MACtDqmB,GAAkBC,EAAAA,EAAAA,IAAmBnsB,GACrCosB,GAAoBC,EAAAA,EAAAA,MACpBC,EAyBR,WACE,MACMC,EADS,IAAIzP,gBAAgBvf,OAAOqf,SAASG,QACzBtY,IAAI,cAC9B,GAAI8nB,EACF,IACE,MAAMD,GAAUE,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAM6V,IAC5C,IAAIE,EAAuC,CAAC,EAC5C,IAAK,MAAMrwB,KAAOkwB,EAChBG,EAAarwB,GAAOkwB,EAAQlwB,GAE9B,OAAOqwB,CACT,CAAE,MAAO5lB,GACP2D,QAAQ5F,MAAMiC,EAChB,CAEF,MACF,CAzCkB6lB,GACVC,EAAelmB,KAAKC,UAAU,CAClC,eAAkB,CAChBiD,OAAOijB,EAAAA,EAAAA,YAAW5qB,EAAUsU,KAC5BuW,QAAS,CAAC,CAAEC,MAAO,OAAQ1oB,OAAM4C,eACjC+lB,YAAa,CACXzC,KAAM,CACJ4B,kBACAE,oBACAE,UACAU,eAAsC,UAAtBZ,EAAgCa,EAAAA,QAAwBr0B,IAG5EoO,gB,IAGWsZ,EAAf,MAAM4M,EAAyB,QAAhB5M,EAAAA,EAAAA,OAAO6M,iBAAP7M,IAAAA,EAAAA,EAAoB,GAC7BllB,EAAO4vB,EAAAA,QAAQC,UAAU,GAAGiC,YAAkB,CAAEE,MAAOT,EAAcU,cAAe,IAK1F,OAJItB,GACFxuB,OAAOwuB,KAAK3wB,EAAM,UAGbA,CAAI,E,i9BC5BN,MAAMkyB,UAAiChyB,EAAAA,GAC5CgI,WAAAA,CAAYzH,GACV0H,MAAM,OAAK1H,GAAAA,CAAOgxB,QAAS,MAI7B,OAAQpqB,cAAa,MACnB4e,EAAAA,EAAAA,IAAkBze,MAAM0e,MAAMC,IAC5B3e,KAAKN,SAAS,CAAEif,MAAK,IAGvB3e,KAAKkW,MAAMC,IACTnW,KAAKoW,kBAAiB,CAACC,EAAUmB,KAC1BxX,KAAK/G,MAAMgxB,QAAQ/wB,QACtB8G,KAAK2qB,cAGF3qB,KAAK/G,MAAM2xB,SAAW5qB,KAAK/G,MAAMgxB,QAAQ/wB,QAC5C8G,KAAK6qB,YACP,IACF,IAIJ,OAAQF,cAAa,KACnB,MAAMG,EAAOjyB,EAAAA,GAAWkyB,QAAQ/qB,MAC1BgrB,GAAcC,EAAAA,EAAAA,IAAiBH,GAAOzZ,GAAMA,aAAa6Z,EAAAA,IAAkBA,EAAAA,IAEjF,GAAIF,EAAa,CACf,MAAM7xB,EAAS6G,KAAK/G,MAAMkyB,MAAQC,EAAUprB,KAAK/G,MAAMkyB,OAAS,KAC1DlB,EAAUe,EAAY/xB,MAAMgxB,QAAQ3wB,KAAK+xB,I,IAIjCA,E,OAJwC,OACjDA,GAAAA,CACH7pB,KAAM3I,EAAAA,GAAW8gB,YAAYqR,EAAaK,EAAE7pB,MAC5C8pB,cAAcnyB,aAAAA,EAAAA,EAAQzB,MAAO,MAAMyB,EAAOzB,UAAYmB,EAAAA,GAAW8gB,YAAYqR,EAAaK,EAAEC,cAC5FlnB,WAAwB,QAAZinB,EAAAA,EAAEjnB,kBAAFinB,IAAAA,EAAAA,OAAgBr1B,G,IAG1B6N,KAAKC,UAAUmmB,KAAapmB,KAAKC,UAAU9D,KAAK/G,MAAMgxB,UACxDjqB,KAAKN,SAAS,CAAEuqB,WAEpB,KAGF,OAAQsB,kBAAiB,K,IAGRT,EAFf,MAAMU,GAAQP,EAAAA,EAAAA,IAAiBjrB,MAAOqR,GAAMA,aAAaE,EAAAA,IAAUA,EAAAA,IAC7DuZ,EAAOjyB,EAAAA,GAAWkyB,QAAQ/qB,MAC1ByrB,EAASX,SAAgB,QAAhBA,EAAAA,EAAM7xB,MAAM6xB,YAAZA,IAAAA,OAAAA,EAAAA,EAAkBY,OACjC,IAAIC,EAAcH,aAAAA,EAAAA,EAAOvyB,MAAM0yB,YAC/B,GAAIA,IAAeF,aAAAA,EAAAA,EAAQvyB,QACzB,IAAK,MAAMiyB,KAASM,EAClB,IAAK,MAAMjlB,KAAS2kB,EAAMxjB,OAAQ,CAChC,MACMikB,EADave,OAAOrD,KAAKxD,EAAMkX,QACPpkB,KAAKE,IAAS,CAC1CqyB,GAAIryB,EACJyJ,MAAOuD,EAAMkX,OAAOlkB,OAIhBsyB,EAAmBH,EAAYI,UAAU3H,MAC5C/S,I,IACwB7K,EAAAA,E,OAAvB6K,EAAE2a,QAAQ3pB,WAAuE,QAA1DmE,EAA8B,QAA9BA,EAAAA,EAAMkX,OAAOuO,yBAAbzlB,IAAAA,EAAAA,EAAkCA,EAAMkX,OAAOwO,mBAA/C1lB,IAAAA,EAAAA,EAA8DA,EAAM9O,OAC1E,WAAjB2Z,EAAE2a,QAAQH,EAAe,I,IAOdrlB,EAAAA,EALf,IAAKslB,EAEHH,EAAYI,UAAUI,QAAQ,CAC5BH,QAAS,CACPH,GAAI,SACJxpB,QAAmE,QAA1DmE,EAA8B,QAA9BA,EAAAA,EAAMkX,OAAOuO,yBAAbzlB,IAAAA,EAAAA,EAAkCA,EAAMkX,OAAOwO,mBAA/C1lB,IAAAA,EAAAA,EAA8DA,EAAM9O,MAE/Ek0B,eAIAE,GAAoBjoB,KAAKC,UAAUgoB,EAAiBF,cAAgB/nB,KAAKC,UAAU8nB,KACrFE,EAAiBF,WAAaA,EAElC,CAGJ,OAAOD,CAAW,IAGpB,OAAQd,cAAa,KACnB,MAAMc,EAAc3rB,KAAKurB,kBACnB,QAAEtB,EAAO,GAAEtL,EAAE,UAAE+J,EAAS,UAAE0D,EAAS,KAAErwB,GAASiE,KAAK/G,MACnDmG,EAAYvG,EAAAA,GAAWqZ,aAAalS,MAE1C,IAAKZ,IAAc6qB,KAAYtL,aAAAA,EAAAA,EAAI0N,KACjC,OAEF,MAAMC,EAAM,CACVC,OAAQ,yBACRxwB,KAAMA,QAAAA,EAAQ,aACdkuB,UACA7qB,UAAW,KAAKA,EAAUnG,MAAMgK,OAChCmB,WAAY,CAAEioB,IAAK1N,EAAG0N,KACtB1a,IAAKhX,OAAOqf,SAAS9iB,KACrB20B,GAAI,GAAGhoB,KAAKC,UAAUmmB,KAAWvB,IAAY0D,IAC7C/2B,MAAO,GAAGqzB,IAAY0D,EAAY,MAAMA,IAAc,KACtDI,SAAUC,EACVrX,eAAgBgX,EAChBT,YAAaA,GAEX9nB,KAAKC,UAAUwoB,KAASzoB,KAAKC,UAAU9D,KAAK/G,MAAM2xB,UACpD5qB,KAAKN,SAAS,CAAEkrB,QAAS0B,GAC3B,IAvGAtsB,KAAKa,qBAAqBb,KAAKH,WACjC,EAyGA,EA7GW6qB,EA6GGhxB,aAAY,EAAGf,YAC3B,MAAM,QAAEiyB,GAAYjyB,EAAMI,YACpB,MAAE2zB,IAAUC,EAAAA,EAAAA,gBAAe,CAAEC,iBAAkBC,EAAAA,GAAgBC,oBAAqBlC,YAE1F,OACE,oCACG8B,EACEvzB,QAAQX,GAA2B,+BAAlBA,EAAKmkB,UAA6CnkB,EAAKxD,UACxEsE,KAAKd,I,IAKIA,E,OAJR,kBAACipB,EAAAA,WAAUA,CACTI,QAASrpB,EAAKu0B,YACd5yB,aAAW,qCACXX,IAAKhB,EAAKqzB,GACVn0B,KAAe,QAATc,EAAAA,EAAKmuB,YAALnuB,IAAAA,EAAAA,EAAa,YACnBxD,QAAUiP,IACJzL,EAAKxD,SACPwD,EAAKxD,QAAQiP,EACf,G,QAShB,MAAMmnB,EAAaD,I,IACaA,EAAAA,EAA9B,MAAM6B,EAA+C,QAAvB7B,EAAe,QAAfA,EAAAA,EAAMxjB,OAAO,UAAbwjB,IAAAA,OAAAA,EAAAA,EAAiBpD,cAAjBoD,IAAAA,EAAAA,EAA2B,CAAC,EAC1D,GAAkD,IAA9C9d,OAAOrD,KAAKgjB,GAAuB9zB,OACrC,OAEF,MAAMxB,EAAO2V,OAAOrD,KAAKgjB,GAAuB,GAChD,MAAO,CAAEt1B,OAAMuL,MAAO+pB,EAAsBt1B,GAAO,E,s8BCtJrD,MAAMu1B,EAAiC,uBACjCC,EAAyC,yBACzCC,EAAuC,iBAEtC,eAAKC,G,yDAAAA,C,CAAL,C,IAKA,WAAKC,G,kDAAAA,C,CAAL,C,IAyBA,MAAMC,UAAkB50B,EAAAA,GA4E7B60B,OAAAA,CAAQtd,GACFjQ,KAAK/G,MAAMkI,MACbnB,KAAK/G,MAAMkI,KAAKosB,QAAQtd,EAE5B,CACAud,QAAAA,CAASC,GACHztB,KAAK/G,MAAMkI,MACbnB,KAAK/G,MAAMkI,KAAKqsB,SAASC,EAE7B,CApFA/sB,WAAAA,CAAYzH,G,IAC+BA,EAAzC0H,MAAM,E,sUAAA,IAAK1H,GAAAA,CAAOy0B,sBAAkD,QAA3Bz0B,EAAAA,EAAMy0B,6BAANz0B,IAAAA,GAAAA,KACzC+G,KAAKa,sBAAqB,K,IA+BT,EACP,EACA,EACO,EACJ,EACD,EA8BR,EAhEF,MAAM4sB,EAAyB,CAC7B,CACEt1B,KAAM,aACN4D,KAAM,SAER,CACE5D,KAAM,UACNw1B,cAAe,UACfz2B,KAAM0a,EAAe5R,MACrBhL,QAAS,IAAM44B,IACfC,SAAU,QAId,IAAIC,EACJ,IACEA,EAAMj1B,EAAAA,GAAWwE,YAAY2C,KAAMuR,EAAAA,GACrC,CAAE,MAAOtN,GAOP,YALAjE,KAAKN,SAAS,CACZyB,KAAM,IAAI4sB,EAAAA,GAAa,CACrBN,WAIN,C,IAgBE,GAdFztB,KAAKN,SAAS,CACZsuB,qBAAsB,IAAItD,EAAyB,CACjDhC,WAA0C,QAA/B,EAAA1oB,KAAK/G,MAAMg1B,4BAAX,eAAiCC,cACT,QAA/B,EAAAluB,KAAK/G,MAAMg1B,4BAAX,eAAiCC,eACF,QAA/B,EAAAluB,KAAK/G,MAAMg1B,4BAAX,eAAiCvF,UACrC0D,UAA0C,QAA/B,EAAApsB,KAAK/G,MAAMg1B,4BAAX,eAAiC7B,UAC5CjB,MAAsC,QAA/B,EAAAnrB,KAAK/G,MAAMg1B,4BAAX,eAAiC9C,MACxCpvB,KAAqC,QAA/B,EAAAiE,KAAK/G,MAAMg1B,4BAAX,eAAiClyB,SAIvCiE,KAAK/G,MAAMy0B,yBAGkB,QAA/B,EAAA1tB,KAAK/G,MAAM+0B,4BAAX,SAAiCG,aAI/BnuB,KAAK/G,MAAMm1B,YAAaN,aAAAA,EAAAA,EAAK70B,MAAMo1B,eAgD7C,SAAgCZ,GAC9BA,EAAMlqB,KAAK,CACTpL,KAAM,GACN4D,KAAM,YAER0xB,EAAMlqB,KAAK,CACTpL,KAAM,gBACN4D,KAAM,SAEV,CAxDQuyB,CAAuBb,IAGrBK,aAAAA,EAAAA,EAAK70B,MAAMo1B,cAuDrB,SAA4BZ,EAAwBc,GAClD,MAAMT,EAAMj1B,EAAAA,GAAWwE,YAAYkxB,EAAMhd,EAAAA,IACzCkc,EAAMlqB,KAAK,CACTpL,KAAM21B,EAAI70B,MAAMu1B,UAAY,SAAH,WACzBb,cAAeG,EAAI70B,MAAMu1B,UAAY,qBAAuB,mBAC5Dx5B,QAAS,KACP,MAAMy5B,EAAsBX,EAAI70B,MAAMu1B,UAAY,SAAH,WAGzCE,EAAqB71B,EAAAA,GAAWwE,YAAYkxB,EAAMhvB,EAAAA,KACxDovB,EAAAA,EAAAA,IAAsBD,EAAoBD,GAG1CX,EAAIpuB,SAAS,CACX8uB,WAAYV,EAAI70B,MAAMu1B,aAExBI,EAAAA,EAAAA,IAAe,YAAaH,EAAoB,GAGtD,CAzEQI,CAAmBpB,EAAOztB,MAGxBA,KAAK/G,MAAMm1B,WAwErB,SAA0BX,EAAwBhsB,GAChDgsB,EAAMlqB,KAAK,CACTpL,KAAmC,cAA7BsJ,EAASxI,MAAMm1B,UAA4C,YAAc,cAC/ET,cAA4C,cAA7BlsB,EAASxI,MAAMm1B,UAA4C,YAAc,aAExFp5B,QAAS,KACP,MAAM85B,EAAWj2B,EAAAA,GAAWwE,YAAYoE,EAAUstB,EAAAA,IAC5CjB,EAAMj1B,EAAAA,GAAWwE,YAAYoE,EAAU8P,EAAAA,IAAUyd,QACjDC,EAAQp2B,EAAAA,GAAWkyB,QAAQtpB,GAAUutB,QACrCT,EAAO9sB,EAASutB,QAChBE,EAAgBlpB,MAAMrD,QAAQmrB,EAAI70B,MAAMi2B,eAC1CpB,EAAI70B,MAAMi2B,cAAc51B,KAAK+X,GAAMA,EAAE2d,UACrClB,EAAI70B,MAAMi2B,cACd,IAAI/tB,EAGFA,EAD+B,cAA7BM,EAASxI,MAAMm1B,UACVe,EAAAA,GAAcC,aAAaC,aAAaC,EAAAA,IAExCH,EAAAA,GAAcI,YAGvBT,EAASpvB,SAAS,CAChByB,KAAMA,EAAKquB,QAAQjB,GAAMkB,SAAS3B,EAAI70B,MAAM5D,OAAOq6B,iBAAiBR,GAAeS,QAAQV,GAAOW,UAGpG,MAAMC,EACyB,eAA7BpuB,EAASxI,MAAMm1B,UAAS,0BAG1BQ,EAAAA,EAAAA,IAAe,YAAaiB,GAC5BtB,EAAK7uB,SAAS,CAAE0uB,UAAWyB,IAE3B,MAAMC,GAAiC7E,EAAAA,EAAAA,IACrC6D,GACCzd,GAAMA,aAAa0e,EAAAA,GACpBA,EAAAA,GAEED,GACFA,EAA+BE,mBAGjCC,EAAwBJ,EAAa,GAG3C,CAnHQK,CAAiBzC,EAAOztB,MAG1BA,KAAKN,SAAS,CACZyB,KAAM,IAAI4sB,EAAAA,GAAa,CACrBN,Y,WAIJztB,KAAKkW,MAAMC,IACsB,QAA/B,EAAAnW,KAAK/G,MAAM+0B,4BAAX,eAAiC5X,iBAAgB,GAAC,kB,SAiLb+Z,G,OAA9BC,EAAAA,MAAAA,KAAAA,U,CAhLCA,CAA8B,EACtC,QAGN,EAaA,EAvFW9C,EAuFG5zB,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,GAASxI,EAAMI,WAEvB,OAAIoI,EACK,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,IAGzB,wCAkFJ,MAAMyQ,EAAkBnQ,IAC7B,MAAMrE,EAAavE,EAAAA,GAAWwE,YAAYoE,EAAUnE,EAAAA,GAC9C2xB,EAAQp2B,EAAAA,GAAWkyB,QAAQtpB,GACjC,IAAIupB,EAAciE,aAAiB/D,EAAAA,GAAmB+D,GAAQoB,EAAAA,EAAAA,IAA2BpB,GAAO,GAGhG,IAAKjE,EAAa,CAChB,MAAMsF,EAAiBz3B,EAAAA,GAAWuY,WAChC3P,GACC4P,GAAMA,aAAakf,EAAAA,GAA6Blf,aAAamf,EAAAA,IAEhE,GAAIF,EAAgB,CAClB,MAAMG,EAAgB53B,EAAAA,GAAWkyB,QAAQuF,GAGvCtF,EADEyF,aAAyBvF,EAAAA,GACbuF,GAEAJ,EAAAA,EAAAA,IAA2BI,GAAe,EAE5D,MACEpvB,EAAAA,EAAOW,MAAM,IAAIC,MAAM,kCAAmC,CACxD+B,IAAK,8DAGX,CACA,MAAM0sB,EAAyC1F,EAAY/xB,MAAMgxB,QAAQ,GAAGzoB,KACtEA,EAAO3I,EAAAA,GAAW8gB,YAAYlY,EAAUivB,GAE9C,OAAOxH,EAAmB9rB,EAAYoE,EAAK,EAGvCosB,EAA6B,MACjCxxB,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkBs0B,IAAKp0B,EAAAA,GAAoBo0B,IAAIC,6BAA6B,EAG7FX,EAA2BY,KAC/Bz0B,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkBC,gBAAiBC,EAAAA,GAAoBD,gBAAgBw0B,gBAAiB,CAC3GD,cACA,EAGEE,EAAAA,W,MAAuB,aAAOC,GAClC,MAAMpE,EAAmBC,EAAAA,GAAgBC,oBACnClC,EAAUoG,EAAmB/3B,MAAM2xB,QAGzC,QAAgC50B,IAA5Bi7B,EAAAA,wBAAuC,CAMzC,OALcA,EAAAA,EAAAA,yBAAwB,CACpCrE,mBACAhC,YAGWsG,WAAW,EAC1B,CAGA,QAAiCl7B,IAA7Bm7B,EAAAA,yBAAwC,CAQ1C,aAP2CC,EAAAA,EAAAA,iBACzCD,EAAAA,EAAAA,0BAAyB,CACvBvE,mBACAhC,cAIS,EACf,CAGF,I,gBA3BoCoG,G,gCAA9BD,G,SA6BSX,I,OAAAA,EAAf,aAA6CD,GAC3C,MAAMkB,EAA2BlB,EAAwBl3B,MAAM+0B,qBAC/D,GAAIqD,EAA0B,C,IAGFlB,EAF1B,MAAM33B,QAAau4B,EAAqBM,G,IAEdlB,EAA1B,MAAMmB,EAAmE,QAA/CnB,EAAkC,QAAlCA,EAAAA,EAAwBl3B,MAAMkI,YAA9BgvB,IAAAA,OAAAA,EAAAA,EAAoCl3B,MAAMw0B,aAA1C0C,IAAAA,EAAAA,EAAmD,GAEvEoB,EAA+BD,EAAkBlN,MAAMnU,GAASA,EAAK9X,OAAS80B,I,IAmB9EkD,EAfFA,EAIAA,EAIAA,EAVJ,GAAI33B,EACF,GAAK+4B,GAeH,GAAIA,EACgC,QAAlCpB,EAAAA,EAAwBl3B,MAAMkI,YAA9BgvB,IAAAA,GAAAA,EAAoC3C,SAClC8D,EAAkBn4B,QACf8W,IAK2B,IAJ1B,CACEid,EACAC,EACAF,GACA5zB,SAAS4W,EAAK9X,cAtBU,QAAlCg4B,EAAAA,EAAwBl3B,MAAMkI,YAA9BgvB,IAAAA,GAAAA,EAAoC5C,QAAQ,CAC1Cp1B,KAAM+0B,EACNnxB,KAAM,YAE0B,QAAlCo0B,EAAAA,EAAwBl3B,MAAMkI,YAA9BgvB,IAAAA,GAAAA,EAAoC5C,QAAQ,CAC1Cp1B,KAAMg1B,EACNpxB,KAAM,UAE0B,QAAlCo0B,EAAAA,EAAwBl3B,MAAMkI,YAA9BgvB,IAAAA,GAAAA,EAAoC5C,QAAQ,CAC1Cp1B,KAAM80B,EACNU,cAAe,cACf34B,QAAUiP,GAAMzL,EAAKxD,SAAWwD,EAAKxD,QAAQiP,IAiBrD,CACF,KAxCemsB,MAAAA,KAAAA,U,CA0CR,MAAMoB,EAAyB97B,IAC7B,CACL+7B,cAAc97B,EAAAA,EAAAA,KAAI,CAChBqJ,MAAO,OACP0V,OAAQ,OACR7W,MAAO,gBACP/F,SAAU,WACVlC,QAAS,U,yXC/TR,MAAM87B,UAAuBne,EAAAA,aAClC7S,WAAAA,CACE,EACA,EACA,EACA,GAEAC,QAAK,mGALEgxB,OAAAA,EAAAA,KACAvuB,SAAAA,EAAAA,KACA5J,IAAAA,EAAAA,KACAyJ,MAAAA,CAGT,EACA,EATWyuB,EASG31B,OAAO,cAGhB,MAAM61B,UAAyBre,EAAAA,aACpC7S,WAAAA,CAAY,EAAoB,EAAuB,GACrDC,QAAK,2EADYnH,IAAAA,EAAAA,KAAoByJ,MAAAA,EAAAA,KAAuBG,SAAAA,CAE9D,EAcK,SAASyuB,EAAe14B,EAA6BsX,EAAoB/O,GAC9E,MAAM3F,EAAuC,MAApB5C,EAAOiK,SAAmB,UAAY,UAC/D0uB,EAAa34B,EAAOK,IAAKL,EAAO8J,MAAOlH,EAAM0U,EAAO/O,EACtD,CAMO,SAASqwB,EACdv4B,EACAiX,EACA/O,EACAuB,EACAG,GAEA,MAAMhK,EAAW44B,EAAmBtwB,EAAclI,EAAKiX,GAEvD,IAAI3R,EAAU1F,EAASH,MAAM6F,QAAQ3F,QAAQA,IAC3C,MAAM84B,GAAaC,EAAAA,EAAAA,IAAgCxwB,EAAcvI,GACjE,OAAI8J,GAASG,IACFjK,EAAOK,MAAQA,GAAOy4B,EAAWhvB,QAAUA,GAAS9J,EAAOiK,WAAaA,GAE/EH,IACO9J,EAAOK,MAAQA,GAAOy4B,EAAWhvB,QAAUA,GAElDG,IACOjK,EAAOK,MAAQA,GAAOL,EAAOiK,WAAaA,KAG5CjK,EAAOK,MAAQA,EAAE,IAG5BiX,EAAM8B,aAAa,IAAIqf,EAAiBp4B,EAAKyJ,EAAOG,IAAW,GAE/DhK,EAASsG,SAAS,CAChBZ,WAEJ,CAnDE,EAJW8yB,EAIG71B,OAAO,cAsDvB,MAAMo2B,EAA0BC,GAC1BA,IAAOntB,EAAAA,GAASotB,IAAMD,IAAOntB,EAAAA,GAASqtB,IACjC,UAELF,IAAOntB,EAAAA,GAASstB,IAAMH,IAAOntB,EAAAA,GAASutB,IACjC,cADT,EAMK,SAASC,EACdj5B,EACAiX,EACArN,EACA1B,GAEKA,IACHA,EAAegxB,EAA4Bl5B,EAAKiX,IAElD,MAAMrX,EAAW44B,EAAmBtwB,EAAclI,EAAKiX,GACjDkiB,EAAevvB,EAAW+uB,EAAuB/uB,QAAYpN,EAEnE,IAAI8I,EAAU1F,EAASH,MAAM6F,QAAQ3F,QAAQA,KAEzCA,EAAOK,MAAQA,IACd24B,EAAuBh5B,EAAOiK,YAAcuvB,GAAgBx5B,EAAOiK,WAAa6B,EAAAA,GAAS2tB,aAI9Fx5B,EAASsG,SAAS,CAChBZ,WAEJ,CAEO,SAAS+zB,EACdr5B,EACAyJ,EACAG,EACAqN,EACA/O,GAEA,MAAMixB,EAAeR,EAAuB/uB,GAEvC1B,IACHA,EAAegxB,EAA4Bl5B,EAAKiX,IAElD,MAAMrX,EAAW44B,EAAmBtwB,EAAclI,EAAKiX,GAEvD,IAAIqiB,EACApxB,IAAiBsU,EAAAA,KACnB8c,EAAcjvB,KAAKC,UAAU,CAC3Bb,QACAS,QAAQqvB,EAAAA,EAAAA,IAAkBv5B,EAAKiX,MAInC,IAAI3R,EAAU1F,EAASH,MAAM6F,QAAQ3F,QAAQA,KAEzCA,EAAOK,MAAQA,IACd24B,EAAuBh5B,EAAOiK,YAAcuvB,GAAgBx5B,EAAOiK,WAAa6B,EAAAA,GAAS2tB,aAI9F9zB,EAAU,IACLA,EACH,CACEtF,MACA4J,SAAUA,EACVH,MAAO6vB,GAA4B7vB,EACnCC,YAAa,CAACD,KAIlB7J,EAASsG,SAAS,CAChBZ,YAGF2R,EAAM8B,aAAa,IAAImf,EAAe,eAAgBtuB,EAAU5J,EAAKyJ,IAAQ,EAC/E,CAMO,SAAS6uB,EACdt4B,EACAyJ,EACAG,EACAqN,EACA/O,IAGAxF,EAAAA,EAAAA,MAEIwF,IAAiBuZ,EAAAA,KACnB+X,EAAAA,EAAAA,IAAex5B,EAAKyJ,EAAOwN,GAG7B,MAAMrX,EAAW44B,EAAmBtwB,EAAclI,EAAKiX,GAEvD,IAAIqiB,EACAG,EAAahwB,EACbvB,IAAiBsU,EAAAA,GACnB8c,EAAcjvB,KAAKC,UAAU,CAC3Bb,QACAS,QAAQqvB,EAAAA,EAAAA,IAAkBv5B,EAAKiX,KAExB/O,IAAiBkB,EAAAA,IAA2B,YAAbQ,IACxC6vB,EAAa,IAAIhwB,KAInB,IAAInE,EAAU1F,EAASH,MAAM6F,QAAQ3F,QAAQA,IAC3C,MAAM84B,GAAaC,EAAAA,EAAAA,IAAgCxwB,EAAcvI,GAGjE,MAAiB,YAAbiK,IACOjK,EAAOK,MAAQA,GAAOL,EAAOiK,WAAa6B,EAAAA,GAAS2tB,UAE7C,YAAbxvB,IACOjK,EAAOK,MAAQA,GAAOL,EAAOiK,WAAa6B,EAAAA,GAASC,SAGrD/L,EAAOK,MAAQA,GAAOy4B,EAAWhvB,QAAUA,EAAI,IAG1D,MAAMiwB,EAAep0B,EAAQ5F,SAAWE,EAASH,MAAM6F,QAAQ5F,QAE9C,YAAbkK,GAAuC,YAAbA,IAA4B8vB,GAA6B,WAAb9vB,KACxEtE,EAAU,IACLA,EACH,CACEtF,MACA4J,SAAuB,YAAbA,EAAyB6B,EAAAA,GAAS2tB,SAAW3tB,EAAAA,GAASC,MAChEjC,MAAO6vB,GAA4B7vB,EACnCC,YAAa,CAAC+vB,MAMpB75B,EAASsG,SAAS,CAChBZ,YAGF2R,EAAM8B,aAAa,IAAImf,EAAe,eAAgBtuB,EAAU5J,EAAKyJ,IAAQ,EAC/E,CAuBO,SAASkwB,EAA6B3sB,EAAe4sB,GAE1D,OAAI5sB,IAAUC,EAAAA,GACL7D,EAAAA,GAEFwwB,CACT,CAEA,SAASV,EAA4BlsB,EAAeiK,G,IAC7B4iB,EAAAA,EACrB,OAD4C5iB,QAAvB4iB,GAAAA,EAAAA,EAAAA,IAAuB5iB,UAAvB4iB,IAAAA,GAAqC,QAArCA,EAAAA,EAA+B1rB,cAA/B0rB,IAAAA,OAAAA,EAAAA,EAAuCjP,MAAMvmB,GAAUA,EAAMnG,OAAS8O,KACrEyU,EAAAA,GAAajF,EAAAA,EACrC,CAEO,MAAMsd,UAA2B56B,EAAAA,GAOtCmH,UAAAA,GACE,MAAM1G,EAASiyB,EAAUprB,KAAK/G,MAAMkyB,OACpC,GAAIhyB,EAAQ,CACV,MAAMC,EAAW44B,EAAmBhyB,KAAK/G,MAAMm6B,aAAcj6B,EAAOzB,KAAMsI,MAC1EA,KAAKuzB,eAAen6B,GAEpB4G,KAAKkW,MAAMC,IACT/c,EAASgd,kBAAiB,CAACC,EAAUmB,MAC9B2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKuzB,eAAen6B,EACtB,IAGN,CACF,CAEQm6B,cAAAA,CAAen6B,GACrB,MAAMD,EAASiyB,EAAUprB,KAAK/G,MAAMkyB,OACpC,IAAKhyB,EAKH,YAJA6G,KAAKN,SAAS,CACZ7L,YAAY,EACZD,YAAY,IAMhB,MAAM4/B,EAA0Bp6B,EAASH,MAAM6F,QAAQslB,MAAM3f,IAC3D,MAAMgvB,GAAarV,EAAAA,EAAAA,IAAiBjlB,GAC9B8J,GAAQivB,EAAAA,EAAAA,IAAgCuB,EAAaja,EAAAA,GAAexD,EAAAA,GAAYvR,GACtF,OAAOA,EAAEjL,MAAQL,EAAOzB,MAAQuL,EAAMA,QAAU9J,EAAO8J,KAAK,IAGzDuwB,EAQLxzB,KAAKN,SAAS,CACZ7L,WAAY2/B,EAAwBpwB,WAAa6B,EAAAA,GAASC,MAC1DtR,WAAY4/B,EAAwBpwB,WAAa6B,EAAAA,GAAS2tB,WAT1D5yB,KAAKN,SAAS,CACZ7L,YAAY,EACZD,YAAY,GASlB,CAnDA8M,WAAAA,CAAYzH,GACV0H,MAAM1H,GAoDR,OAAOjE,WAAW+G,IAChB,MAAM5C,EAASiyB,EAAUprB,KAAK/G,MAAMkyB,OACpC,IAAKhyB,EACH,OAGF24B,EAAa34B,EAAOzB,KAAMyB,EAAO8J,MAAOlH,EAAMiE,KAAMA,KAAK/G,MAAMm6B,cAC/D,MAAMh6B,EAAW44B,EAAmBhyB,KAAK/G,MAAMm6B,aAAcj6B,EAAOzB,KAAMsI,OAE1E5D,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBo3B,oCACpC,CACEC,WAAY3zB,KAAK/G,MAAMm6B,aACvB55B,IAAKL,EAAOzB,KACZ+R,OAAQ1N,EACR63B,eAAex6B,aAAAA,EAAAA,EAAUH,MAAM6F,QAAQ5F,SAAU,GACnD,IAnEF8G,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAsEA,EA3EWszB,EA2EG55B,aAAY,EAAGf,YAC3B,MAAM,YAAExE,EAAW,WAAEP,EAAU,WAAEC,GAAe8E,EAAMI,WACtD,OACE,kBAACrF,EAAAA,EAAYA,CACXQ,WAAY,UACZL,WAAYA,SAAAA,EACZD,WAAYA,SAAAA,EACZE,UAAW,IAAM6E,EAAM3D,QAAQ,WAC/BhB,QAAS,IAAM2E,EAAM3D,QAAQ,SAC7BjB,UAAW,IAAM4E,EAAM3D,QAAQ,WAC/Bb,YAAaA,G,IAMrB,MAAMi3B,EAAaD,I,IAEaA,EAAAA,EAA9B,MAAM6B,EAA+C,QAAvB7B,EAAe,QAAfA,EAAAA,EAAMxjB,OAAO,UAAbwjB,IAAAA,OAAAA,EAAAA,EAAiBpD,cAAjBoD,IAAAA,EAAAA,EAA2B,CAAC,EAE1D,GAAkD,IAA9C9d,OAAOrD,KAAKgjB,GAAuB9zB,OAErC,YADAmI,EAAAA,EAAOC,KAAK,sCAGd,MAAM5J,EAAO2V,OAAOrD,KAAKgjB,GAAuB,GAEhD,MAAO,CAAEt1B,OAAMuL,MADD+pB,EAAsBt1B,GACd,EAGlBs6B,EAAqB,CAACtwB,EAAsClI,EAAaiX,IACtE/O,IAAiBsU,EAAAA,IAActU,IAAiB8X,EAAAA,IACnD3C,EAAAA,EAAAA,IAA6BpG,IAC7BojB,EAAAA,EAAAA,IAAwBV,EAA6B35B,EAAKkI,GAAe+O,E,8PC3YxE,MAAMqjB,UAA6BvgB,EAAAA,cACxC,EADWugB,EACG/3B,OAAO,0BAOvB,MAAMg4B,EAAwC,CAAC,EAExC,MAAMC,UAA6Bt7B,EAAAA,GAoChCu7B,YAAAA,CAAa96B,GACnB,MAAMm3B,EAAiBz3B,EAAAA,GAAWuY,WAChCpR,MACCqR,GAAMA,aAAa6iB,EAAAA,GAAuB7iB,aAAa8iB,EAAAA,KAE1D,GAAI7D,aAA0B4D,EAAAA,GAAuB5D,aAA0B6D,EAAAA,GAAsB,CACnGJ,EAAc/zB,KAAKo0B,UAAYj7B,EAC/B,MAAMk7B,EAAkBx7B,EAAAA,GAAWy7B,gBAAgBhE,EAAgBiE,EAAAA,GACnEF,SAAAA,EAAiBrxB,SAASwxB,IACpBA,EAAMv7B,MAAMkI,KAAKmQ,UACnBkjB,EAAMC,eAAet7B,EACvB,GAEJ,MACEkI,EAAAA,EAAOC,KAAK,iCAAkC,CAC5CozB,kBAAmBpE,EACnBn3B,UAGN,CArDAuH,WAAAA,CAAY0zB,G,IAEAL,EADVpzB,MAAM,CACJxH,OAA+B,QAAvB46B,EAAAA,EAAcK,UAAdL,IAAAA,EAAAA,EAA2B,KAHvC,OAAQK,gBAAR,GAoBA,OAAOO,uBAAuB5rB,IAC5B/I,KAAKN,SAAS,CAAEvG,OAAQ4P,EAAM9R,OAAOgM,QACrCjD,KAAKi0B,aAAalrB,EAAM9R,OAAOgM,MAAM,IAGvC,OAAO2xB,oBAAmB,KACxB50B,KAAKN,SAAS,CAAEvG,OAAQ,KACxB6G,KAAKi0B,aAAa,GAAG,IAGvB,OAAO7kB,SAAQ,KACbpP,KAAKN,SAAS,CAAEvG,OAAQ,KACxB46B,EAAc/zB,KAAKo0B,UAAY,EAAE,IA3BjCp0B,KAAKo0B,SAAWA,CAClB,EAEA,EATWJ,EASGt6B,aAAY,EAAGf,YAC3B,MAAM,OAAEQ,GAAWR,EAAMI,WACzB,OACE,kBAAC87B,EAAAA,EAAWA,CACV5xB,MAAO9J,EACPonB,SAAU5nB,EAAMg8B,oBAChB3gC,QAAS2E,EAAMi8B,iBACftU,YAAY,oB,+pBCAb,MAAMiU,UAAwB77B,EAAAA,GAgD3Bo8B,aAAAA,CAAchK,GACpB,MAAMiK,EAA+B,GAC/BC,GAAeC,EAAAA,EAAAA,YAAWnK,EAAKY,OAAQ1rB,KAAKk1B,OAAQl1B,KAAKgT,WAE/D,IAAK,IAAImiB,EAAc,EAAGA,EAAcH,EAAa97B,OAAQi8B,IAAe,CAC1E,MAAMC,EAAcp1B,KAAK/G,MAAMo8B,eAAeL,EAAaG,GAAcA,GACzEJ,EAAYxxB,KAAK6xB,EACnB,CAEAp1B,KAAKg1B,aAAeA,EACpBh1B,KAAKs1B,mBAAqBP,EAEtB/0B,KAAKorB,aACPprB,KAAK/G,MAAMkI,KAAKzB,SAAS,CAAEpJ,SAAU,KACrC0J,KAAKy0B,eAAez0B,KAAKorB,cAEzBprB,KAAK/G,MAAMkI,KAAKzB,SAAS,CAAEpJ,SAAUy+B,GAEzC,CAwCA,mBAA2BjK,GACzB,MAAMyK,EAAiB18B,EAAAA,GAAWwE,YAAY2C,KAAMw1B,EAAAA,GAEpD,GAAID,EAAgB,CAClB,MAAME,EAAoB58B,EAAAA,GAAW4Y,eACnC8jB,GACCvV,GAAQA,EAAI1O,UAAY0O,EAAI/mB,MAAMO,MAAQk8B,EAAAA,KAE7C,GAAID,EAAkB,aAAcl2B,EAAAA,GAAiB,CACnD,MAAMisB,EAAQ3yB,EAAAA,GAAWy7B,gBAAgBmB,EAAkB,GAAIlkB,EAAAA,IAAU,GACrEia,aAAiBja,EAAAA,GACnBia,EAAM9rB,SAAS,CACbuvB,MAAO,IAAI0G,EAAAA,GAAqB,CAC9BC,gBAAiB,CAAC,KAAMC,OA4EJrqB,EA5EsBsf,EAAK,GA6EnD6G,GACCA,EAAOmE,MACZx8B,EAAAA,EAAAA,MAAKmyB,IACH,IAAKjgB,IAAYA,EAAQtS,OACvB,OAAOuyB,EAET,IAAIsK,EAAyB,GAO7B,OANAtK,EAAOzoB,SAASyB,IACd,MAAM5G,GAAQm4B,EAAAA,EAAAA,IAAcvxB,GACxB+G,EAAQnS,SAASwE,IACnBk4B,EAAUxyB,KAAKkB,EACjB,IAEKsxB,CAAS,KAdjB,IAA2BvqB,C,OAxExBnK,EAAAA,EAAOC,KAAK,yCAA0C,CAAE20B,mBAAoBzK,GAEhF,MACEnqB,EAAAA,EAAOC,KAAK,8CAA+C,CAAE40B,yBAA0BT,GAE3F,CACF,CA3HA,YAAmB,G,IAAA,OACjBP,EAAM,UACNliB,EAAS,UACToY,GAHiB,EAMjBzqB,MAFG1H,EAJc,GACjBi8B,SACAliB,YACAoY,eARF,OAAQkK,qBAAsC,IAC9C,OAAQJ,cAAR,GACA,OAAQliB,iBAAR,GACA,OAAQgiB,eAA4B,IACpC,OAAQ5J,iBAAR,GAkCA,OAAO3lB,QAAO,CAACyvB,EAAgBliB,KAC7B,MAAM8X,EAAOjyB,EAAAA,GAAWkyB,QAAQ/qB,MAChCA,KAAKk1B,OAASA,EACdl1B,KAAKgT,UAAYA,EACb8X,EAAK7xB,MAAM6xB,MACb9qB,KAAK80B,cAAchK,EAAK7xB,MAAM6xB,KAChC,IAuBF,OAAOqL,iBAAiB5qB,IAEtB,GADa1S,EAAAA,GAAWkyB,QAAQ/qB,MAAM/G,MAAM6xB,KAI5C,IAAK,IAAIqK,EAAc,EAAGA,EAAcn1B,KAAKg1B,aAAa97B,OAAQi8B,IAChE5pB,EAASvL,KAAKg1B,aAAcG,EAC9B,IAGFV,EAAAA,KAAAA,kBAAkBt7B,IAChB,IAAIi9B,EAAqB,GAEzBp2B,KAAKm2B,eAAc,CAAC1K,EAAQ0J,KAC1B,MAAMxM,GAAaqN,EAAAA,EAAAA,IAAcvK,EAAO0J,IACxCiB,EAAS7yB,KAAKolB,EAAW,KAE3B0N,EAAAA,EAAAA,GAAYD,EAAUj9B,GAAS2xB,IACzBA,GAAQA,EAAK,GAEf9qB,KAAKs2B,cAAcnL,IACjB,MAAMttB,GAAQm4B,EAAAA,EAAAA,IAAc7K,GAC5B,OAAOL,EAAK,GAAGzxB,SAASwE,EAAM,IAIhCmC,KAAKs2B,cAAa,KAAM,IAG1Bt2B,KAAKu2B,mBAAmBzL,EAAK,GAC7B,IAiCJ,OAAOwL,gBAAgBE,IACrB,MAAMzB,EAA+B,GAOrC,GANA/0B,KAAKm2B,eAAc,CAAC1K,EAAQ0J,KACtBqB,EAAS/K,EAAO0J,KAClBJ,EAAYxxB,KAAKvD,KAAKs1B,mBAAmBH,GAC3C,IAGyB,IAAvBJ,EAAY77B,OAAc,CAC5B,MAAMC,EAAS6G,KAAKorB,YACpBprB,KAAK/G,MAAMkI,KAAKzB,SAAS,CAAEpJ,SAAU,CAACmgC,EAAoBt9B,EAAQ6G,KAAK02B,eACzE,MACE12B,KAAK/G,MAAMkI,KAAKzB,SAAS,CAAEpJ,SAAUy+B,GACvC,IAGF,OAAO2B,eAAc,KACnB12B,KAAKuS,aAAa,IAAIuhB,EAAAA,GAAwB,EAAK,IAtInD9zB,KAAKk1B,OAASA,EACdl1B,KAAKgT,UAAYA,EACjBhT,KAAKorB,UAAYA,EAEjBprB,KAAKa,sBAAqB,KACxB,MAAMiqB,EAAOjyB,EAAAA,GAAWkyB,QAAQ/qB,MAEhCA,KAAKkW,MAAMC,IACT2U,EAAK1U,kBAAiB,CAAC0U,EAAM6L,K,IAEzB7L,EACCA,EAC4B6L,EAAAA,IAFpB,QAAT7L,EAAAA,EAAKA,YAALA,IAAAA,OAAAA,EAAAA,EAAW7xB,SAAU29B,EAAAA,aAAaC,OACxB,QAAT/L,EAAAA,EAAKA,YAALA,IAAAA,OAAAA,EAAAA,EAAW7xB,SAAU29B,EAAAA,aAAaE,WACjChM,EAAKA,KAAKY,OAAOxyB,QAAsC,QAA5By9B,EAAa,QAAbA,EAAAA,EAAS7L,YAAT6L,IAAAA,OAAAA,EAAAA,EAAejL,OAAOxyB,cAAtBy9B,IAAAA,EAAAA,EAAgC,KAE7D32B,KAAK80B,cAAchK,EAAKA,KAC1B,KAIAA,EAAK7xB,MAAM6xB,MACb9qB,KAAK80B,cAAchK,EAAK7xB,MAAM6xB,KAChC,GAEJ,EAwHF,SAAS2L,EAAoBt9B,EAAgBu9B,GAC3C,OAAO,IAAIn3B,EAAAA,GAAgB,CACzByT,UAAW,MACX1c,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI41B,EAAAA,GAAiB,CACzBC,UACE,kBAACziC,MAAAA,CAAIC,UAAWJ,EAAO6iC,gBACrB,kBAACrgC,EAAAA,MAAKA,CAACvB,MAAM,GAAGyB,SAAS,OAAOtC,UAAWJ,EAAO8iC,gBAAgB,6BAC/B/9B,EAAO,IACxC,kBAACzE,EAAAA,OAAMA,CAACF,UAAWJ,EAAO+iC,YAAaniC,QAAS0hC,GAAa,wBAU7E,CA1BE,EAvJWnC,EAuJG76B,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,GAASxI,EAAMI,WACvB,OAAO,kBAACoI,EAAKzH,UAAS,CAACf,MAAOwI,G,IA0BlC,MAAM/M,EAAS,CACb6iC,gBAAgBthC,EAAAA,EAAAA,KAAI,CAClBqL,SAAU,EACVpL,QAAS,OACTC,eAAgB,SAChBoH,WAAY,WAEdi6B,gBAAgBvhC,EAAAA,EAAAA,KAAI,CAClByhC,SAAU,OACVp2B,SAAU,IAEZm2B,aAAaxhC,EAAAA,EAAAA,KAAI,CACfgC,WAAY,W,gGCxNT,MAAM0/B,UAAyB3+B,EAAAA,GACpC,gBAAcgB,EAAU,MAAEf,IACxB,MAAM,KAAEoD,GAASpD,EAAMI,WACvB,OACE,kBAAC1C,EAAAA,EAASA,KACR,kBAACO,EAAAA,MAAKA,CAACvB,MAAM,GAAGyB,SAAS,WAAU,uBACZiF,EAAK,mCAAiC,IAC3D,kBAAC/E,IAAAA,CACCxC,UAAW8iC,EAAAA,GAAiB9+B,KAC5BtB,KAAK,sCACLD,OAAO,SACPE,IAAI,uBACL,eAEI,IAAI,mCAKjB,E,yqBCNK,SAASogC,GAAiB,QAAEl1B,EAAO,MAAEY,EAAK,SAAEsd,EAAQ,MAAE1iB,IAC3D,MAAMzJ,GAASC,EAAAA,EAAAA,YAAWC,IACnB2qB,EAAUuY,IAAez+B,EAAAA,EAAAA,WAAS,GAEnC0+B,EAAuCp1B,EAAQ/I,KAAK6O,IACjD,CACLtK,MAAOsK,EAAOtK,MACdoF,MAAOkF,EAAOlF,UAGlB,OACE,kBAACy0B,EAAAA,YAAWA,CAACljC,UAAWJ,EAAOujC,cAAe95B,MAAOA,GACnD,kBAAC+5B,EAAAA,OAAMA,CACCv1B,QAASo1B,EAAmBx0B,QAClCud,WAAY,IAAMgX,GAAY,GAC9B3X,YAAa,IAAM2X,GAAY,GAC/BjX,SAAWtB,GAAiCsB,EAAStB,EAAShc,OAC9DzO,UAAWJ,EAAOyjC,OAClBxX,OAAQpB,OAAWjpB,EAAY,kBAACyB,EAAAA,KAAIA,CAACC,KAAM,aAInD,CAEO,SAASogC,GAAqB,QACnCz1B,EAAO,MACPY,EAAK,SACLsd,EAAQ,MACR1iB,EAAK,aACLk6B,EAAY,UACZ7Y,EAAS,cACT8Y,I,IAa2BC,EAX3B,MAAM7jC,GAASC,EAAAA,EAAAA,YAAWC,IACnB2qB,EAAUuY,IAAez+B,EAAAA,EAAAA,WAAS,IAClCk/B,EAAcC,IAAmBn/B,EAAAA,EAAAA,UAAkCi/B,GAEpEP,EAAuCp1B,EAAQ/I,KAAK6O,IACjD,CACLtK,MAAOsK,EAAOtK,MACdoF,MAAOkF,EAAOlF,UAGZk1B,EACJF,GAAgBh1B,IAA2B,QAAlBg1B,EAAAA,EAAah1B,aAAbg1B,IAAAA,OAAAA,EAAAA,EAAoB5+B,SAAS4J,IAClD,CAACg1B,KAAiBR,GAClBA,EAEAW,EAAiBD,aAAAA,EAAAA,EAAY/T,MAAM3E,GAAQA,EAAIxc,QAAUA,IAE/D,OACE,kBAACy0B,EAAAA,YAAWA,CAACljC,UAAWJ,EAAOikC,0BAA2Bx6B,MAAOA,GAC/D,kBAAC+5B,EAAAA,OAAMA,CACL1Y,UAAWA,EACXjqB,cAAaC,EAAAA,EAAQojC,qBAAqBne,OAC1CmG,YAAa,gBACbje,QAAS81B,EACTxX,aAAa,EACb1d,MAAOA,EACPud,WAAY,IAAMgX,GAAY,GAC9B3X,YAAa,IAAM2X,GAAY,GAC/Brc,kBAAkB,EAClBkF,OAAQpB,IAAYmZ,aAAAA,EAAAA,EAAgBG,gBAAYviC,EAAY,kBAACyB,EAAAA,KAAIA,CAACC,KAAM,WACxE6oB,SAAU,CAACtd,EAAgCu1B,KAErCv1B,aAAAA,EAAAA,EAAOs1B,aAAat1B,aAAAA,EAAAA,EAAO0jB,OAC7BuR,EAAgB,E,sUAAA,IAAKj1B,GAAAA,CAAO0jB,KAAM,YAC3BpG,EAAStd,EAAMA,QAIE,UAAtBu1B,EAAW/uB,OACN8W,EAAS,SAIQ,kBAAtBiY,EAAW/uB,QAA8BxG,EAAMA,QAAUA,EAAMs1B,WACjER,EAAa90B,EAAMA,QAGvBkgB,cAAe,CAAClgB,EAA2Bu1B,KAEzC,MAAM/0B,EAAO+0B,EAGb,MAAoB,iBAAhB/0B,EAAKgG,OACA8W,EAAStd,GAIE,eAAhBQ,EAAKgG,QAA2BhG,EAAKg1B,gBACvCP,EAAgB,CACdj1B,OAAOy1B,EAAAA,EAAAA,IAAmBj1B,EAAKg1B,gBAC/B56B,MAAO4F,EAAKg1B,eACZ9R,KAAM,SACN4R,WAAW,IAENhY,EAAS9c,EAAKg1B,sBAPvB,CAQA,IAKV,CAEA,SAASnkC,EAAUoB,GACjB,MAAO,CACLijC,OAAOhjC,EAAAA,EAAAA,KAAI,CACTif,aAAc,IAEhBijB,QAAQliC,EAAAA,EAAAA,KAAI,CACVuL,SAAUxL,EAAMmC,QAAQ,IACxBu/B,SAAU1hC,EAAMmC,QAAQ,MAE1B8/B,eAAehiC,EAAAA,EAAAA,KAAI,CACjBkI,MAAO,gCACPqD,SAAUxL,EAAMmC,QAAQ,MACxBu/B,SAAU1hC,EAAMmC,QAAQ,IACxB4tB,YAAa/vB,EAAMmC,QAAQ+gC,GAC3BhkB,aAAc,IAEhByjB,2BAA2B1iC,EAAAA,EAAAA,KAAI,CAC7BkI,MAAO,yBACPqD,SAAUxL,EAAMmC,QAAQ,MACxBu/B,SAAU1hC,EAAMmC,QAAQ,IACxB4tB,YAAa/vB,EAAMmC,QAAQ+gC,GAC3BhkB,aAAc,IAGpB,C,qjBClGO,MAAM2b,UAAkC73B,EAAAA,GAM7C,eAAcmgC,EAAS,MAAElgC,IACvB,MAAM,KAAEwI,GAASxI,EAAMI,WACvB,OAAIoI,aAAgBq0B,EAAAA,EACX,oCAAGr0B,GAAQ,kBAACq0B,EAAAA,EAAeqD,SAAQ,CAAClgC,MAAOwI,KAG7C,oCACT,CAYQ23B,SAAAA,GACN,MAAMC,GAAkBC,EAAAA,EAAAA,IAAwBh5B,MAChD,OAAOiJ,OAAO8vB,EAAgB9/B,MAAMgK,MACtC,CAEApD,UAAAA,G,IAWI,EAVF,MAAMyH,EAAQtH,KAAKi5B,aAGnBj5B,KAAKN,SAAS,CACZyB,KAAMnB,KAAK4vB,MAAMtoB,GACjB2nB,MAAOjvB,KAAKk5B,qBAIdl5B,KAAKkW,MAAMC,IACO,QAAhB,EAAAnW,KAAK/G,MAAMg2B,aAAX,eAAkB7Y,kBAAkBC,IAClCrW,KAAKm5B,wBAAwB9iB,EAAU/O,EAAM,KAIjDtH,KAAKo5B,WACLp5B,KAAKq5B,kBACP,CAEQH,gBAAAA,GACN,MAAM5xB,EAAQtH,KAAKi5B,aACnB,OAAOK,EAAAA,EAAAA,IAAe,CAAChyB,GAAQ,CAAEiyB,eAAgB,UACnD,CAKA,aACE,MAAMC,EAASx5B,KAAK84B,YACdld,GAAiB9F,EAAAA,EAAAA,IAAkB9V,MACnCy5B,GAAsBC,EAAAA,EAAAA,IAAuB15B,MAC7C25B,GAAcC,EAAAA,EAAAA,IAAuBJ,EAAQ5d,EAAgB6d,IAE7D,aAAErG,EAAY,iBAAEyG,GAAqB75B,KAAK85B,4CAC1CC,EAAalhC,EAAAA,GAAW8gB,YAAY3Z,KAAM25B,EAAY92B,QAAQ,MAAMuwB,KAAiByG,IAE3F,OAAOG,EAAAA,EAAAA,GAAeD,EAAY,CAAEzO,aAAc,KAAKkO,MAAYtP,MAAOsP,GAC5E,CAKA,mBAEEx5B,KAAKkW,MAAMC,IACTtd,EAAAA,GAAWqZ,aAAalS,MAAMoW,kBAAiB,KAE7CpW,KAAKo5B,UAAU,KAMnBp5B,KAAKkW,MAAMC,KACTkN,EAAAA,EAAAA,IAAuBrjB,MAAMoW,kBAAiB,CAACC,EAAUmB,MAClD2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKo5B,UACP,KAKJp5B,KAAKkW,MAAMC,KACTP,EAAAA,EAAAA,IAAoB5V,MAAMoW,kBAAiB,CAACC,EAAUmB,KAChDnB,EAASpT,QAAUuU,EAAUvU,OAC/BjD,KAAKo5B,UACP,KAKJp5B,KAAKkW,MAAMC,KACTgB,EAAAA,EAAAA,IAAkBnX,MAAMoW,kBAAiB,CAACC,EAAUmB,MAC7C2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKo5B,UACP,KAKJp5B,KAAKkW,MAAMC,KACTF,EAAAA,EAAAA,IAAkBjW,MAAMoW,kBAAiB,CAACC,EAAUmB,MAC7C2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKo5B,UACP,KAIJ,MAAM,OAAE11B,GAAW1D,KAAKi6B,wBAET,uBAAXv2B,EACF1D,KAAKk6B,8BAELl6B,KAAKm6B,gCAET,CAKA,iCACE,MAAM3gC,EAAMwG,KAAK84B,Y,WAEjB94B,KAAKkW,MAAMC,KACTL,EAAAA,EAAAA,IAAkB9V,MAAMoW,iBAAgB,W,MAAC,aAAOC,EAAUmB,IACnD2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9C,EAAKs6B,UAET,I,gBAJgD/iB,EAAUmB,G,gCAAlB,K,WAO1CxX,KAAKkW,MAAMC,KACTQ,EAAAA,EAAAA,IAAoB3W,MAAMoW,iBAAgB,W,MAAC,aAAOC,EAAUmB,IAEvD2G,EAAAA,EAAAA,GACC9H,EAASvX,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQA,IACzCge,EAAU1Y,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQA,MAG5C,EAAK4/B,UAET,I,gBATkD/iB,EAAUmB,G,gCAAlB,IAW9C,CAKA,8BACE,MAAMhe,EAAMwG,KAAK84B,Y,WAEjB94B,KAAKkW,MAAMC,KACTQ,EAAAA,EAAAA,IAAoB3W,MAAMoW,iBAAgB,W,MAAC,aAAOC,EAAUmB,IACrD2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9C,EAAKs6B,UAET,I,gBAJkD/iB,EAAUmB,G,gCAAlB,K,WAO5CxX,KAAKkW,MAAMC,KACTL,EAAAA,EAAAA,IAAkB9V,MAAMoW,iBAAgB,W,MAAC,aAAOC,EAAUmB,IAErD2G,EAAAA,EAAAA,GACC9H,EAASvX,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQA,IACzCge,EAAU1Y,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQA,MAG5C,EAAK4/B,UAET,I,gBATgD/iB,EAAUmB,G,gCAAlB,IAW5C,CAMA,e,IAEE,EADA,MAAMlQ,EAAQtH,KAAKi5B,aACK,QAAxB,EAAAj5B,KAAKo6B,6BAAL,SAA4B16B,SAAS,CACnCuqB,QAAS,CAAC3iB,IAEd,CAMA,WAEEtH,KAAKq6B,eACL,MAAMrP,EAAchrB,KAAKo6B,sBACzBpP,SAAAA,EAAasP,YACf,CAKA,sBACE,GAAIt6B,KAAK/G,MAAMg2B,MAAO,CACpB,MAAMsL,EAAe1hC,EAAAA,GAAWy7B,gBAAgBt0B,KAAK/G,MAAMg2B,MAAO/D,EAAAA,IAClE,GAA4B,IAAxBqP,EAAarhC,OAAc,CAC7B,MAAM8I,EAAQ,IAAIC,MAAM,mDAExB,MADAZ,EAAAA,EAAOW,MAAMA,EAAO,CAAEgC,IAAK,+EACrBhC,CACR,CAEA,OAAOu4B,EAAa,EACtB,CACAl5B,EAAAA,EAAOC,KAAK,4FAEd,CAKA,4CACE,MAAMk4B,EAASx5B,KAAK84B,YACpB,IAAIe,EACAzG,EAIJ,GAAe,uBADApzB,KAAKw6B,iBACiB,CACnC,MAAMvhB,GAActC,EAAAA,EAAAA,IAAoB3W,MACxCozB,EAAe5Z,EAAAA,GACfqgB,GAAmB/f,EAAAA,EAAAA,IAA2Bb,EAAYhgB,MAAM6F,QAAS,CAAC06B,GAC5E,KAAO,CACLpG,EAAepd,EAAAA,GACf,MAAMykB,GAAY3kB,EAAAA,EAAAA,IAAkB9V,MACpC65B,GAAmBhgB,EAAAA,EAAAA,IAAwB4gB,EAAUxhC,MAAM6F,QAAS,CAAC06B,GACvE,CAEA,MAAO,CAAEK,mBAAkBzG,eAC7B,CAKA,wBAAgC/c,EAA0B/O,G,IACpD+O,EAOAA,GAPa,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,MACpC72B,KAAK/G,MAAMkI,gBAAgB41B,EAAAA,IAC7B/2B,KAAKN,SAAS,CACZyB,KAAMnB,KAAK4vB,MAAMtoB,MAIN,QAAb+O,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAa30B,OACxCjC,KAAK06B,cAAcrkB,EAASyU,KAAK6P,OAErC,CAKA,cAAsBA,GACpB36B,KAAKN,SAAS,CACZyB,KAAM,IAAI41B,EAAAA,GAAiB,CACzBC,UACE,kBAACpgC,EAAAA,MAAKA,CAACvB,MAAO,yCAA0CyB,SAAU,SAC/D6jC,aAAAA,EAAAA,EAAQrhC,KAAI,CAACshC,EAAKphC,IACjB,kBAACjF,MAAAA,CAAIiF,IAAKA,GACPohC,EAAIC,QACH,oCACE,kBAACC,SAAAA,KAAO,UAAe,KAAGF,EAAIC,OAAO,IAAC,kBAACzjC,KAAAA,OAG1CwjC,EAAInkC,SACH,oCACE,kBAACqkC,SAAAA,KAAO,WAAgB,KAAGF,EAAInkC,QAAQ,IAAC,kBAACW,KAAAA,OAG5CwjC,EAAIG,SACH,oCACE,kBAACD,SAAAA,KAAO,WAAgB,KAAGF,EAAIG,gBASjD,CAKA,MAAczzB,GACZ,MAAM,YAAE0zB,EAAW,OAAEt3B,GAAW1D,KAAKi6B,yBAC/B,OAAE/E,EAAM,UAAEliB,IAAcioB,EAAAA,EAAAA,IAAoB,SAAUC,EAAAA,gBAAiB,QACvEC,EAAuBtiC,EAAAA,GAAWwE,YAAY2C,KAAMm0B,EAAAA,IACpD/I,EAAY,K,IAAM+P,E,OAA8C,QAA9CA,EAAAA,EAAqBliC,MAAMkhB,OAAOlhB,MAAME,cAAxCgiC,IAAAA,EAAAA,EAAkD,EAAE,EAE5E,OAAO,IAAI3F,EAAAA,EAAe,CACxBnzB,QAAS,CACP,CAAEY,MAAO,SAAUpF,MAAO,UAC1B,CAAEoF,MAAO,OAAQpF,MAAO,QACxB,CAAEoF,MAAO,OAAQpF,MAAO,SAE1BinB,OAAQ,OACRsW,QAAS,CAEP,IAAI77B,EAAAA,GAAgB,CAClByT,UAAW,SACX1c,SAAU,CACR,IAAIygC,EAAAA,GAAiB,CACnBC,UAAW,kBAAC7C,EAAAA,GAAqBkH,WAAU,CAAC1iC,MAAOwiC,MAErD,IAAI7d,EAAAA,GAAc,CAChBrc,UAAW,IACXE,KAAMguB,EAAAA,GAAcC,aACjBK,SAASuL,GACTM,mBAAkB,GAClB9L,QAAQ,IAAIlC,EAAAA,GAAU,CAAC,IACvBsC,aAMT,IAAIrwB,EAAAA,GAAgB,CAClByT,UAAW,SACX1c,SAAU,CACR,IAAIygC,EAAAA,GAAiB,CACnBC,UAAW,kBAAC7C,EAAAA,GAAqBkH,WAAU,CAAC1iC,MAAOwiC,MAErD,IAAII,EAAAA,GAAuB,CAAElmC,MAAO2lC,EAAaj/B,KAAM,QAASy9B,OAAQx5B,KAAK84B,cAC7E,IAAI/B,EAAAA,GAAiB,CACnBC,UAAW,kBAAC7C,EAAAA,GAAqBqH,WAAU,CAAC7iC,MAAOwiC,MAErD,IAAI5G,EAAAA,EAAgB,CAClBpzB,KAAM,IAAIs6B,EAAAA,GAAmB,CAC3BC,gBAAiBC,EAAAA,GACjBC,SAAU,QACVtlC,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI41B,EAAAA,GAAiB,CACzBC,UAAW,kBAACpY,EAAAA,mBAAkBA,CAACzmB,KAAK,oBAI1C0jC,QAAQ,IAEVxG,gBAAgByG,EAAAA,EAAAA,IACd9F,EAAAA,IACA1uB,aAAAA,EAAAA,EAAO9F,KAAKnI,SAAS,oBAAqB0iC,EAAAA,UAAUC,KAAOD,EAAAA,UAAUE,KAC1D,uBAAXv4B,EAAkC8V,EAAAA,GAAexD,EAAAA,GACjDnd,EAAAA,GAAWwE,YAAY2C,KAAMm0B,EAAAA,IAAsBl7B,MAAMwM,KACzDu1B,GAEF9F,SACAliB,YACAoY,iBAMN,IAAI7rB,EAAAA,GAAgB,CAClByT,UAAW,SACX1c,SAAU,CACR,IAAIygC,EAAAA,GAAiB,CACnBC,UAAW,kBAAC7C,EAAAA,GAAqBkH,WAAU,CAAC1iC,MAAOwiC,MAErD,IAAII,EAAAA,GAAuB,CAAElmC,MAAO2lC,EAAaj/B,KAAM,QAASy9B,OAAQx5B,KAAK84B,cAC7E,IAAI/B,EAAAA,GAAiB,CACnBC,UAAW,kBAAC7C,EAAAA,GAAqBqH,WAAU,CAAC7iC,MAAOwiC,MAErD,IAAI5G,EAAAA,EAAgB,CAClBpzB,KAAM,IAAIs6B,EAAAA,GAAmB,CAC3BC,gBAAiB,MACjBE,SAAU,QACVtlC,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI41B,EAAAA,GAAiB,CACzBC,UAAW,kBAACpY,EAAAA,mBAAkBA,CAACzmB,KAAK,oBAI1C0jC,QAAQ,IAEVxG,gBAAgByG,EAAAA,EAAAA,IACd9F,EAAAA,IACA1uB,aAAAA,EAAAA,EAAO9F,KAAKnI,SAAS,oBAAqB0iC,EAAAA,UAAUC,KAAOD,EAAAA,UAAUE,KAC1D,uBAAXv4B,EAAkC8V,EAAAA,GAAexD,EAAAA,GACjDnd,EAAAA,GAAWwE,YAAY2C,KAAMm0B,EAAAA,IAAsBl7B,MAAMwM,KACzDu1B,GAEF9F,SACAliB,YACAoY,mBAMZ,CAKA,wBACE,MAAM2N,GAAkBC,EAAAA,EAAAA,IAAwBh5B,MAC1Cg7B,EAAc/xB,OAAO8vB,EAAgB9/B,MAAMgK,OAEjD,MAAO,CAAE+3B,cAAat3B,QADKqvB,EAAAA,EAAAA,IAAkBiI,EAAah7B,MAE5D,CAKA,qBACE,OAAOk8B,EAAAA,EAAAA,KAA2BpmB,EAAAA,EAAAA,IAAkB9V,MACtD,CAKA,iBACE,MAAM,OAAE0D,GAAW1D,KAAKi6B,wBAClBkC,EAAkBn8B,KAAKo8B,qBAG7B,OAAI14B,IAAWy4B,EACNA,OAGMnmC,IAAX0N,EACK,QAGM,uBAAXA,EACKy4B,EAGe,uBAApBA,EACKz4B,EAEF,OACT,CAlcAhD,WAAAA,CAAYzH,GACV0H,MAAM1H,GACN+G,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,E,EAW0B,EAAGrH,YAC3B,MAAM,KAAEwI,GAASxI,EAAMI,WACjB3E,GAASC,EAAAA,EAAAA,YAAWm9B,EAAAA,IAC1B,OAAIrwB,EACK,kBAACogB,OAAAA,CAAK/sB,UAAWJ,EAAOq9B,cAAetwB,GAAQ,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,KAGxE,kBAACyd,EAAAA,mBAAkBA,CAACzmB,KAAM,c,KAPrBuB,e,EAfH62B,G,6aCNN,MAAMR,UAAuCr3B,EAAAA,GAc1C2jC,cAAAA,CAAehmB,EAA4BimB,OAAoCtmC,G,IAOrF,EANA,MAAMyjC,GAAsB8C,EAAAA,EAAAA,IAA2ClmB,GACjEmmB,GAAgBC,EAAAA,EAAAA,IAA2CpmB,GAC3DqmB,GAAkBC,EAAAA,EAAAA,IAA6CtmB,GAC/DumB,EAAiB58B,KAAK68B,wBAAwBxmB,GAGrC,QAAf,EAAArW,KAAK/G,MAAMkI,YAAX,SAAiBlI,MAAMmiC,QAAQp4B,SAASvJ,IACtC,GAAIA,aAAkBgiC,EAAAA,GAAoB,CAExC,MAAMqB,EAAe,IAAIt3B,IAAYg3B,aAAAA,EAAAA,EAAer6B,QAC9C46B,EAAkBtjC,EAAOR,MAAM3C,SAGrC,IAAK,IAAIuS,EAAI,EAAGA,EAAIk0B,EAAgB7jC,OAAQ2P,IAAK,CAC/C,MAAMimB,EAAWr1B,EAAOR,MAAM3C,SAASuS,GACvC,GAAIimB,aAAoBC,EAAAA,GAAkB,CACxC,MAAMvD,EAAQsD,EAAS71B,MAAMkI,KAC7B,GAAIqqB,aAAiBja,EAAAA,GAAU,CAC7B,GAAI+qB,EAAW,CACb,MAAM9X,EAAQgY,aAAAA,EAAAA,EAAer6B,OAAOkN,QAAQmc,EAAMvyB,MAAM5D,OAIxD,IAHuBmvB,IAAoB,IAAXA,EAAekY,aAAAA,EAAAA,EAAiBv6B,OAAOqiB,QAASxuB,KAGzDsmC,EAAW,CAChC,MAAMU,GAAYC,EAAAA,EAAAA,IAAqBzR,EAAMvyB,MAAM5D,MAAOokC,GACpDyD,EAAkBl9B,KAAKm9B,uBAC3B3R,EAAMvyB,MAAM5D,MACZokC,EACAuD,GAEFxR,EAAM9rB,SAAS,CACbuvB,MAAOiO,GAEX,CACF,CAEIJ,EAAan3B,IAAI6lB,EAAMvyB,MAAM5D,OAE/BynC,EAAaM,OAAO5R,EAAMvyB,MAAM5D,QAGhC0nC,EAAgB7wB,OAAOrD,EAAG,GAE1BA,IAEJ,MACExH,EAAAA,EAAOC,KAAK,yBAEhB,MACED,EAAAA,EAAOC,KAAK,mCAEhB,CAEA,MACMe,EADc2D,MAAMkS,KAAK4kB,GACHxjC,KAAK8yB,GAAcA,IAE/C2Q,EAAgBx5B,QAAQvD,KAAKq9B,cAAch7B,IAC3C06B,EAAgBt3B,KAAKzF,KAAKs9B,aAAaV,IAEvCG,EAAgBzjC,KAAKk7B,IACnBx0B,KAAKu9B,iBAAiB/I,EAAM,IAG9B/6B,EAAOiG,SAAS,CACdpJ,SAAUymC,GAEd,MACE17B,EAAAA,EAAOC,KAAK,mCACd,GAEJ,CAEQg8B,YAAAA,CAAaV,GACnB,MAAO,CAAC5lC,EAAqB0O,KAC3B,MAAM83B,EAASxmC,EAAEiC,MAAMkI,KACjBs8B,EAAS/3B,EAAEzM,MAAMkI,K,IACFy7B,EAArB,MAAMc,EAAoD,QAArCd,EAAAA,EAAe/6B,IAAI27B,EAAOvkC,MAAM5D,cAAhCunC,IAAAA,EAAAA,EAA0C,E,IAC1CA,EACrB,OAD0D,QAArCA,EAAAA,EAAe/6B,IAAI47B,EAAOxkC,MAAM5D,cAAhCunC,IAAAA,EAAAA,EAA0C,GACzCc,CAAY,CAEtC,CAEQb,uBAAAA,CAAwBxmB,GAC9B,MAAMojB,GAAsB8C,EAAAA,EAAAA,IAA2ClmB,GACjEumB,EAAiB,IAAIe,IAC3B,GAAIlE,aAAAA,EAAAA,EAAqBvgC,OACvB,IAAK,IAAI2P,EAAI,EAAGA,GAAI4wB,aAAAA,EAAAA,EAAqBvgC,QAAQ2P,IAAK,CACpD,MAAMnR,EAAe+hC,EAAoB9xB,OAAO,GAAGxF,OAAO0G,GACpD+0B,EAAsBnE,EAAoB9xB,OAAO,GAAGxF,OAAO0G,GACjE+zB,EAAeiB,IAAInmC,EAAMkmC,EAC3B,CAEF,OAAOhB,CACT,CAEA/8B,UAAAA,G,IAUiBi+B,EATf99B,KAAKN,SAAS,CACZyB,KAAMnB,KAAK4vB,UAGb,MAAMkO,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,SACXtf,IAAnC8nC,EAAa7kC,MAAM8kC,aACrB/9B,KAAKg+B,mBAGPh+B,KAAKkW,MAAMC,IAA0C,QAAtC2nB,EAAAA,EAAa7kC,MAAMglC,2BAAnBH,IAAAA,OAAAA,EAAAA,EAAwC1nB,iBAAiBpW,KAAKk+B,yBAC7El+B,KAAKkW,MAAMC,IAAInW,KAAKm+B,uBACtB,CAEQA,oBAAAA,GAGN,OAFkBroB,EAAAA,EAAAA,IAAkB9V,MAEnBoW,kBAAiB,CAACC,EAAUmB,KAC3C,MAAMsmB,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAC5C8oB,EAAa/nB,EAASvX,QAAQxF,KAAKmL,IAAMb,EAAAA,EAAAA,IAAyBa,GAAGf,SACrE26B,EAAa7mB,EAAU1Y,QAAQxF,KAAKmL,IAAMb,EAAAA,EAAAA,IAAyBa,GAAGf,SAEtE44B,GAAYgC,EAAAA,EAAAA,IAAuBF,GAGzC,GAAI9B,KAFcgC,EAAAA,EAAAA,IAAuBD,GAEZ,C,IACCP,EAA5B,MAAMS,EAA4D,QAAtCT,EAAAA,EAAa7kC,MAAMglC,2BAAnBH,IAAAA,OAAAA,EAAAA,EAAwC7kC,MAChEslC,GACFv+B,KAAKq8B,eAAekC,EAAqBjC,EAE7C,IAEJ,CAEO1M,KAAAA,G,IAU+CkO,EATpD,MACMz7B,GADkB22B,EAAAA,EAAAA,IAAwBh5B,MAChB/G,MAAMoJ,QAAQ/I,KAAKmmB,GAAQxW,OAAOwW,EAAIxc,SAEzCpK,EAAAA,GAAWwE,YAAY2C,KAAMm0B,EAAAA,IACrCl7B,MAAMkhB,OAAO/K,QAElC,MAAM9Y,EAAW0J,KAAKq9B,cAAch7B,GAE9By7B,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAC5CsnB,EAAiB58B,KAAK68B,wBAA8D,QAAtCiB,EAAAA,EAAa7kC,MAAMglC,2BAAnBH,IAAAA,OAAAA,EAAAA,EAAwC7kC,OAC5F3C,EAASmP,KAAKzF,KAAKs9B,aAAaV,IAChC,MAAM4B,EAAiBloC,EAASgD,KAAKk7B,GAAUA,EAAMxF,UAOrD,MAJA,IAAI14B,KAAakoC,GAAgBllC,KAAKk7B,IACpCx0B,KAAKu9B,iBAAiB/I,EAAM,IAGvB,IAAIgB,EAAAA,EAAe,CACxBnzB,QAAS,CACP,CAAEY,MAAO,OAAQpF,MAAO,QACxB,CAAEoF,MAAO,OAAQpF,MAAO,SAE1BinB,OAAQ,OACRsW,QAAS,CACP,IAAIK,EAAAA,GAAmB,CACrBC,gBAAiBC,EAAAA,GACjBC,SAAU,QACVtlC,SAAUA,EACVulC,QAAQ,IAEV,IAAIJ,EAAAA,GAAmB,CACrBC,gBAAiB,MACjBE,SAAU,QACVtlC,SAAUkoC,EACV3C,QAAQ,MAIhB,CAEQ0B,gBAAAA,CAAiB/I,GACvB,MAAMhJ,EAAQgJ,EAAMv7B,MAAMkI,K,IAGtBqqB,EAFAA,GACFxrB,KAAKkW,MAAMC,IACTqV,SAAkB,QAAlBA,EAAAA,EAAOvyB,MAAMg2B,aAAbzD,IAAAA,OAAAA,EAAAA,EAAoBiT,mBAAmB5tB,WAAW7L,IAC5CA,EAAO8lB,KAAK6P,QAAU31B,EAAO8lB,KAAK6P,OAAOzhC,OAAS,IACpDs7B,EAAM90B,SAAS,CAAEg/B,UAAU,IAC3B1+B,KAAKg+B,mBACP,IAIR,CAEOhO,gBAAAA,GACL,MAAMyJ,GAAsBC,EAAAA,EAAAA,IAAuB15B,MAC7C2+B,EAAe3+B,KAAK4+B,uBACpBtoC,EAA+B,G,IAEnCuoC,EADF,MAAMzQ,EACmF,QAAvFyQ,GAAAA,EAAAA,EAAAA,IAAe,YAAa,CAACzR,EAAAA,GAAkBmC,UAAWnC,EAAAA,GAAkBgC,oBAA5EyP,IAAAA,EAAAA,EACAzR,EAAAA,GAAkBgC,WAEpBuP,SAAAA,EAAc1lC,MAAM3C,SAAS0M,SAASwxB,IACpC,GAAIA,aAAiBzF,EAAAA,KAAqByF,EAAMv7B,MAAMylC,SAAU,CAC9D,MAAMI,EAASjmC,EAAAA,GAAWy7B,gBAAgBE,EAAOjjB,EAAAA,IACjD,GAAIutB,EAAO5lC,OAAQ,CAEjB,MACMwvB,EADQoW,EAAO,GACG7lC,MAAM5D,MACxB2nC,GAAYC,EAAAA,EAAAA,IAAqBvU,EAAW+Q,GAClD,IAAIsF,EAAAA,EAAAA,IAAW/B,GAAY,CACzB,MAAMgC,EAAWh/B,KAAKi/B,WAAWvW,EAAW+Q,EAAqBrL,GAC7D4Q,GACF1oC,EAASiN,KAAKy7B,EAElB,MACE1oC,EAASiN,KAAKixB,EAElB,CACF,KAGEl+B,EAAS4C,SACXylC,SAAAA,EAAcj/B,SAAS,CACrBpJ,aAGN,CAEQ+mC,aAAAA,CAAch7B,GACpB,MAAM/L,EAA+B,GAC/BmjC,GAAsBC,EAAAA,EAAAA,IAAuB15B,M,IAEjD6+B,EADF,MAAMzQ,EACmF,QAAvFyQ,GAAAA,EAAAA,EAAAA,IAAe,YAAa,CAACzR,EAAAA,GAAkBgC,WAAYhC,EAAAA,GAAkBmC,mBAA7EsP,IAAAA,EAAAA,EACAzR,EAAAA,GAAkBgC,WACpB,IAAK,MAAMjnB,KAAU9F,EAAS,CAC5B,GAAI8F,IAAW+2B,EAAAA,KAAuB/2B,EACpC,SAGF,MAAMqsB,EAAQx0B,KAAKi/B,WAAW92B,EAAQsxB,EAAqBrL,GACvDoG,GACFl+B,EAASiN,KAAKixB,EAElB,CACA,OAAOl+B,CACT,CAEQ2oC,UAAAA,CAAWvW,EAAmB+Q,EAA4CrL,GAChF,GAAI1F,IAAcwW,EAAAA,KAAuBxW,EACvC,OAGF,MAAMsU,GAAYC,EAAAA,EAAAA,IAAqBvU,EAAW+Q,GAC5CyD,EAAkBl9B,KAAKm9B,uBAAuBzU,EAAW+Q,EAAqBuD,GACpF,IAAI77B,EAEJ,MAAM+tB,EAAgB,IACjB6P,EAAAA,EAAAA,IAAW/B,IAcZ77B,EADgB,cAAditB,EACKe,EAAAA,GAAcI,YAEdJ,EAAAA,GAAcC,aAEvBjuB,EACGsuB,SAAS/G,GACTiH,QAAQuN,GACR1N,QAAQ,IAAIlC,EAAAA,GAAU,CAAEW,qBAAsB,CAAEvF,UAAWA,GAAa0F,eAC3Ec,EAAc3rB,KACZ,IAAI47B,EAAAA,EAAuB,CACzBzW,UAAWzf,OAAOyf,GAClB0W,oBAAoB,EACpBpC,UAAW9U,EAAAA,GAAW1hB,WAzB1BrF,EAAOguB,EAAAA,GAAcC,aAClBK,SAAS/G,GACTiH,QAAQuN,GACR1N,QAAQ,IAAIlC,EAAAA,GAAU,CAAEW,qBAAsB,CAAEvF,UAAWA,MAC3D2W,qBAAqB,WAAY,CAAEC,KAAMC,EAAAA,aAAaC,SACtDH,qBAAqB,cAAe,KACpCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAatD,EAAAA,UAAUC,MAC5C3M,aAAaC,EAAAA,IAChBJ,EAAc3rB,KAAK,IAAI47B,EAAAA,EAAuB,CAAEzW,UAAWzf,OAAOyf,GAAYsU,UAAW9U,EAAAA,GAAW1hB,UAmBtGrF,EAAKuuB,iBAAiBR,GACtB/tB,EAAKs+B,eAAeC,EAAAA,GACpBv+B,EAAKm6B,mBAAkB,GAEvB,MAAMxN,EAAM3sB,EAAKyuB,QACjB,OAAO,IAAIb,EAAAA,GAAiB,CAC1B5tB,KAAM2sB,GAEV,CAEQqP,sBAAAA,CACNnC,EACAvB,EACAuD,GAEA,MAAMphB,GAAiB9F,EAAAA,EAAAA,IAAkB9V,MACnC25B,GAAcC,EAAAA,EAAAA,IAAuBoB,EAAapf,EAAgB6d,GAClEnyB,GAAQ0yB,EAAAA,EAAAA,GAAeL,EAAa,CACxCrO,cAAcyT,EAAAA,EAAAA,IAAW/B,GAAahC,EAAc,KAAKA,MACzD9Q,MAAO8Q,IAGT,OAAO1B,EAAAA,EAAAA,IAAe,CAAChyB,GACzB,CAEQs3B,oBAAAA,G,IACE,EAA0D,EAA1D,EAAR,OAA6D,QAArD,EAAe,QAAf,EAAA5+B,KAAK/G,MAAMkI,YAAX,eAAiBlI,MAAMmiC,QAAQhX,MAAMub,GAAMA,EAAEruB,kBAA7C,QAAyE,QAAf,EAAAtR,KAAK/G,MAAMkI,YAAX,eAAiBlI,MAAMmiC,QAAQ,EAGnG,CAEQ4C,gBAAAA,G,IAMN7C,EAAAA,EALA,MAAMwD,EAAe3+B,KAAK4+B,uBACpBgB,EAAuBjB,aAAAA,EAAAA,EAAc1lC,MAAM3C,SAC3CupC,EAAeD,aAAAA,EAAAA,EAAsBzmC,QAAQq7B,IAAWA,EAAMv7B,MAAMylC,W,IAG5BmB,EAAH,QAA3C1E,GAAAA,EAD6BtiC,EAAAA,GAAWwE,YAAY2C,KAAMm0B,EAAAA,IACrCl7B,OAAM6mC,wBAA3B3E,IAAAA,GAAAA,EAAAA,KAAAA,EAAkE,QAApB0E,EAAAA,aAAAA,EAAAA,EAAc3mC,cAAd2mC,IAAAA,EAAAA,EAAwB,EACxE,CAEA,eAAchH,EAAS,MAAElgC,IACvB,MAAM,KAAEwI,GAASxI,EAAMI,WACvB,OAAO,oCAAGoI,GAAQ,kBAACq0B,EAAAA,EAAeqD,SAAQ,CAAClgC,MAAOwI,IACpD,CAhVAT,WAAAA,CAAYzH,GACV0H,MAAM1H,GAKR,OAAQilC,0BAA0B7nB,I,IAC5BA,GAAa,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,MAExC72B,KAAKq8B,eAAehmB,EACtB,IAPArW,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA8UA,EAnVW+vB,EAmVGr2B,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,GAASxI,EAAMI,WACjB3E,GAASC,EAAAA,EAAAA,YAAWm9B,EAAAA,IAC1B,OAAIrwB,EACK,kBAACogB,OAAAA,CAAK/sB,UAAWJ,EAAOq9B,cAAetwB,GAAQ,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,KAGxE,kBAACyd,EAAAA,mBAAkBA,CAACzmB,KAAM,c,idClW9B,MACMwjC,EAAyC,uCAiB/C,MAAMxH,UAA6Bz7B,EAAAA,GA8BhCmH,UAAAA,G,IAKKi+B,EAAAA,EA+BTA,EAnCF,MAAM/E,GAAkBC,EAAAA,EAAAA,IAAwBh5B,MAC1C89B,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAElDtV,KAAKN,SAAS,CACZqgC,SAA+C,QAAtCjC,EAAAA,EAAa7kC,MAAM+mC,2BAAnBlC,IAAAA,GAAkD,QAAlDA,EAAAA,EAAwC7kC,MAAM6xB,YAA9CgT,IAAAA,OAAAA,EAAAA,EAAoD7kC,SAAU29B,EAAAA,aAAaC,OAItF72B,KAAKkW,MAAMC,IACTnW,KAAKuW,iBAAiBud,EAAAA,GAAsB,KAC1C9zB,KAAK/G,MAAMkhB,OAAOya,kBAAkB,KAGxC50B,KAAKkW,MAAMC,IAAInW,KAAKuW,iBAAiB0pB,EAAAA,GAAqBjgC,KAAKkgC,qBAC/DlgC,KAAKkW,MAAMC,IAAI4iB,EAAgB3iB,iBAAiBpW,KAAKmgC,kBAErDngC,KAAKkW,MAAMC,KACTgB,EAAAA,EAAAA,IAAkBnX,MAAMoW,kBAAiB,CAACC,EAAUmB,KAClD,MAAMpe,GAAW4/B,EAAAA,EAAAA,IAAwBh5B,MACzC,IAAI,UAAE0oB,IAAc0X,EAAAA,EAAAA,MAEpB,MAAMC,EAAahqB,EAASvX,QAAQslB,MAAMjrB,GAAWA,EAAOK,MAAQkvB,IAC9D4X,EAAc9oB,EAAU1Y,QAAQslB,MAAMjrB,GAAWA,EAAOK,MAAQkvB,IAGlEtvB,EAASH,MAAMgK,QAAUi8B,EAAAA,IAAsBmB,IAAeC,GAChEtgC,KAAKN,SAAS,CACZqgC,SAAS,EACT5+B,UAAMnL,GAEV,KAIJgK,KAAKkW,MAAMC,IAC6B,QAAtC2nB,EAAAA,EAAa7kC,MAAMglC,2BAAnBH,IAAAA,OAAAA,EAAAA,EAAwC1nB,kBACtC,CAACC,EAA4BkqB,K,IACvBlqB,EACEA,EACiBA,GAFN,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,QAChB,QAApBxgB,EAAAA,EAASyU,KAAKY,cAAdrV,IAAAA,OAAAA,EAAAA,EAAuB,KACzBrW,KAAKwgC,cAAkC,QAApBnqB,EAAAA,EAASyU,KAAKY,cAAdrV,IAAAA,OAAAA,EAAAA,EAAuB,IAE9C,KAKN,MAAMojB,GAAsBC,EAAAA,EAAAA,IAAuB15B,MAE/Cy5B,GACFz5B,KAAKwgC,cAAc/G,IAGrBgH,EAAAA,EAAAA,IAAkBzgC,KACpB,CAcQwgC,aAAAA,CAAcE,GACpB,IAAKA,IAAcA,EAAUxnC,OAAQ,CACnC,MAAMkE,EAAavE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,GAGhD,IAAI6D,E,IAEF,IADF,IAHyBw/B,EAAAA,EAAAA,IAA6BvjC,GAGjClE,OAAS,EACD,QAA3B,KAAA8G,KAAK/G,OAAM6mC,wBAAX,gBAA8B,GAC9B3+B,EAAO,IAAIy/B,EAAAA,EAAsB,CAAEC,cAAe,KAAMC,EAAAA,EAAAA,IAAe9gC,aAEvEmB,EAAO,IAAIk2B,EAAAA,EAAiB,CAAEt7B,KAAM,WAMtC,YAJAiE,KAAKN,SAAS,CACZqgC,SAAS,EACT5+B,QAGJ,CAEA,MAAM28B,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,I,IAKzCwoB,GAJQ9E,EAAAA,EAAAA,IAAwBh5B,MAChCN,SAAS,CAChB2C,SAAS0+B,EAAAA,EAAAA,IAAgBL,EAAU/4B,OAAO,GAAGxF,OAAO7I,KAAKgK,GAAM2F,OAAO3F,MACtEy8B,SAAS,EACT98B,MAAwC,QAAjC66B,EAAAA,EAAa7kC,MAAMmc,sBAAnB0oB,IAAAA,EAAAA,EAAqCoB,EAAAA,KAE9Cl/B,KAAKN,SAAS,CACZqgC,SAAS,GAEb,CAyBQiB,UAAAA,CAAW3qB,GACjB,MAAMuF,GAAiBod,EAAAA,EAAAA,IAAwBh5B,MAG/C,IAAK4b,EAAe3iB,MAAMoJ,UAAYuZ,EAAe3iB,MAAMoJ,QAAQnJ,OACjE,OAGF,MAAM6b,EAAkD,CAAC,EAEzD,GAAI6G,EAAe3iB,MAAMoJ,SAAWuZ,EAAe3iB,MAAMoJ,QAAQnJ,QAAU,EAAG,CAE5E,MAAMkE,EAAavE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,G,IAI9C,IADF,IAFyBqjC,EAAAA,EAAAA,IAA6BvjC,GAEjClE,OAAS,EACD,QAA3B,KAAA8G,KAAK/G,OAAM6mC,wBAAX,gBAA8B,GAC9B/qB,EAAY5T,KAAO,IAAIy/B,EAAAA,EAAsB,CAAEC,cAAe,KAAMC,EAAAA,EAAAA,IAAe9gC,aAEnF+U,EAAY5T,KAAO,IAAIk2B,EAAAA,EAAiB,CAAEt7B,KAAM,UAEpD,MAEMsa,EAASpT,QAAUi8B,EAAAA,IAAsBl/B,KAAK/G,MAAMkI,gBAAgBovB,EAAAA,EACtExb,EAAY5T,KAAO,IAAI4uB,EAAAA,EAA+B,CAAC,GAC9C1Z,EAASpT,QAAUi8B,EAAAA,IAAsBl/B,KAAK/G,MAAMkI,gBAAgB4uB,EAAAA,EAC7Ehb,EAAY5T,KAAO,IAAIovB,EAAAA,EAA0B,CAAC,SAG9Bv6B,IAApBgK,KAAK/G,MAAMkI,MACXnB,KAAK/G,MAAMkI,gBAAgBk2B,EAAAA,GAC3Br3B,KAAK/G,MAAMkI,gBAAgBy/B,EAAAA,KAE3B7rB,EAAY5T,KACVkV,EAASpT,QAAUi8B,EAAAA,GACf,IAAInP,EAAAA,EAA+B,CAAC,GACpC,IAAIQ,EAAAA,EAA0B,CAAC,IAIzCvwB,KAAKN,SAASqV,EAChB,CA5LArU,WAAAA,CAAYzH,G,IAUOA,EACEA,EARfA,EAeKA,EAjBT0H,M,sUAAM,EACJqd,WACkB,QAAhB/kB,EAAAA,EAAM+kB,kBAAN/kB,IAAAA,EAAAA,EACA,IAAI6jB,EAAAA,GAAiB,CACnB9jB,UAAW,CACT,IAAIkkB,EAAAA,EAAuB,CACzBxlB,KAAMupC,EAAAA,GACNC,cAAc,EACdC,YAAY,EACZl+B,MAAkB,QAAXhK,EAAAA,EAAMgK,aAANhK,IAAAA,EAAAA,EAAeimC,EAAAA,GACtB78B,QAAsB,QAAbpJ,EAAAA,EAAMoJ,eAANpJ,IAAAA,EAAAA,EAAiB,QAIlC8mC,SAAS,EACTt6B,KAAM,IAAI27B,EAAAA,GAAY,CAAEnqC,OAAQ,WAChCkjB,OAAQ,IAAI6Z,EAAAA,EAAqB,UACjC/wB,MAAkB,QAAXhK,EAAAA,EAAMgK,aAANhK,IAAAA,EAAAA,EAAeimC,EAAAA,IACnBjmC,IAvBP,OAAUooC,sBAAsB,IAAIC,EAAAA,GAAyBthC,KAAM,CACjEuhC,cAAe,CAACtmB,EAAAA,OAoFlB,OAAQklB,mBAAkB,CAAC9pB,EAAuCkqB,MAE9DlqB,EAASpT,QAAUs9B,EAASt9B,SAC3Bkb,EAAAA,EAAAA,GAAe9H,EAAShU,QAASk+B,EAASl+B,eACvBrM,IAApBgK,KAAK/G,MAAMkI,MACXnB,KAAK/G,MAAMkI,gBAAgBk2B,EAAAA,GAC3Br3B,KAAK/G,MAAMkI,gBAAgBy/B,EAAAA,IAE3B5gC,KAAKghC,WAAW3qB,EAClB,IAkCF,OAAQ6pB,sBAAsBn3B,IAC5B,GAAqB,WAAjBA,EAAM9R,OACR,OAGF,MAAMkK,EAAOnB,KAAK/G,MAAMkI,K,IAEtBA,EADEA,aAAgBovB,EAAAA,GAA6BpvB,EAAKlI,MAAMkI,gBAAgBq0B,EAAAA,IAC3D,QAAfr0B,EAAAA,EAAKlI,MAAMkI,YAAXA,IAAAA,GAAAA,EAAiBlI,MAAMmiC,QAAQp4B,SAASvJ,IACdZ,EAAAA,GAAWy7B,gBAAgBnzB,EAAMozB,EAAAA,GACzCvxB,SAASe,GAAMA,EAAE0B,KAAKsD,EAAMmsB,OAAQnsB,EAAMiK,YAAW,MAGzE5W,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBklC,4BACpC,CACEvqC,OAAQ,SACRwqC,SAAU14B,EAAMmsB,OAChBliB,UAAWjK,EAAMiK,WACnB,IA8CJ,OAAO0uB,yBAAyBz+B,IAC9B,IAAKA,EACH,OAGF,MAAM7J,GAAW4/B,EAAAA,EAAAA,IAAwBh5B,OACnC,OAAEk1B,EAAM,UAAEliB,IAAcioB,EAAAA,EAAAA,IAAoB,SAAUC,EAAAA,gBAAiB,SAE7E9+B,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBqlC,kCACpC,CACEn7B,MAAOvD,EACP2+B,cAAexoC,EAASyoC,eACxBC,KAAM,SACN5M,SACA6M,gBAAiB/uB,IAIrB,MAAM8qB,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,KAClD0sB,EAAAA,EAAAA,IAAyB9Z,EAAAA,GAAW1hB,MAAOvD,EAAO66B,EAAa,IA5L/D99B,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA8LA,EA1NWm0B,EA0NGkH,cAAa,EAAG1iC,YAC5B,MAAM,KAAEwI,EAAI,QAAE4+B,EAAO,OAAE5lB,GAAWxhB,EAAMI,WAClC3E,GAASC,EAAAA,EAAAA,YAAWC,GACpB8E,GAAW4/B,EAAAA,EAAAA,IAAwBrgC,IACnC,QAAE0J,EAAO,MAAEY,GAAU7J,EAASL,WACpC,OACE,kBAACxE,MAAAA,CAAIC,UAAWJ,EAAO6tC,mBACpB9gC,aAAgB4uB,EAAAA,GAAkC,kBAACA,EAAAA,EAA+B8I,SAAQ,CAAClgC,MAAOwI,IAClGA,aAAgBovB,EAAAA,GAA6B,kBAACA,EAAAA,EAA0BsI,SAAQ,CAAClgC,MAAOwI,IACxFA,aAAgBovB,EAAAA,GAA6B,kBAACpW,EAAOzgB,UAAS,CAACf,MAAOwhB,KACrE4lB,GAAW19B,EAAQnJ,OAAS,GAC5B,kBAACq+B,EAAAA,EAAaA,CAAC15B,MAAM,QAAQwE,QAASA,EAASY,MAAOgG,OAAOhG,GAAQsd,SAAU5nB,EAAM+oC,wB,IAK7F,EA1OWvN,EA0OGqH,cAAa,EAAG7iC,YAC5B,MAAM,QAAEonC,EAAO,KAAEt6B,GAAS9M,EAAMI,WAC1B3E,GAASC,EAAAA,EAAAA,YAAWC,GACpB8E,GAAW4/B,EAAAA,EAAAA,IAAwBrgC,IACnC,MAAEsK,GAAU7J,EAASL,WAC3B,OACE,kBAACxE,MAAAA,CAAIC,UAAWJ,EAAO8tC,oBACnBnC,GAAW98B,IAAUi8B,EAAAA,IACrB,oCACE,kBAACz5B,EAAK/L,UAAS,CAACf,MAAO8M,K,IAOjC,EA1PW0uB,EA0PGz6B,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,EAAI,QAAE4+B,EAAO,gBAAEoC,GAAoBxpC,EAAMI,WAC3C3E,GAASC,EAAAA,EAAAA,YAAWC,GAE1B,OACE,kBAACC,MAAAA,CAAIC,UAAWJ,EAAOK,WACrB,kBAAC2tC,EAAAA,EAAkB,CAAEljB,UAAW6gB,EAASoC,mBACtChhC,aAAgB4uB,EAAAA,GAAkCp3B,GAAS,kBAACw7B,EAAqBkH,WAAU,CAAC1iC,MAAOA,IACpG,kBAACpE,MAAAA,CAAIC,UAAWJ,EAAOiuC,SAAUlhC,GAAQ,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,M,IAOnE,MAAMm2B,EAAmB,CAC9B9+B,MAAM7C,EAAAA,EAAAA,KAAI,CACR2sC,eAAgB,cAElBhe,QAAQ3uB,EAAAA,EAAAA,KAAI,CACVgC,WAAY,YAIhB,SAASrD,EAAUoB,GACjB,MAAO,CACLjB,WAAWkB,EAAAA,EAAAA,KAAI,CACbqL,SAAU,EACVpL,QAAS,OACTqL,UAAW,OACXjD,cAAe,SACfpG,IAAKlC,EAAMmC,QAAQ,KAErBwqC,SAAS1sC,EAAAA,EAAAA,KAAI,CACXqL,SAAU,EACVpL,QAAS,OACT2sC,WAAY7sC,EAAMmC,QAAQ,KAE5BoqC,mBAAmBtsC,EAAAA,EAAAA,KAAI,CACrBqL,SAAU,EACVpL,QAAS,OACTqH,WAAY,MACZpH,eAAgB,gBAChBmI,cAAe,cACfpG,IAAKlC,EAAMmC,QAAQ,KAErBqqC,mBAAmBvsC,EAAAA,EAAAA,KAAI,CACrBqL,SAAU,EACVpL,QAAS,OACTqH,WAAY,MACZrF,IAAKlC,EAAMmC,QAAQ,GACnBmG,cAAe,QAGrB,C,gbC1UO,MAAMwkC,UAAuC9pC,EAAAA,GASlDmH,UAAAA,G,IAYW4iC,EAXT,MAAM96B,GAASmO,EAAAA,EAAAA,IAAkB9V,MAE3ByiC,EADe5pC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IACbrc,MAAM+mC,oBAGtChgC,KAAK/G,MAAMkI,MAMPshC,SAA2B,QAA3BA,EAAAA,EAAiBxpC,MAAM6xB,YAAvB2X,IAAAA,OAAAA,EAAAA,EAA6BxpC,SAAU29B,EAAAA,aAAaC,MAC3D72B,KAAK0iC,OAAOD,aAAAA,EAAAA,EAAiBxpC,MAAM6xB,KAAKY,OAAO,IAN/C1rB,KAAKN,SAAS,CACZyB,KAAMnB,KAAK4vB,UAQf5vB,KAAKkW,MAAMC,IACTssB,aAAAA,EAAAA,EAAiBrsB,kBAAiB,CAACC,EAAUmB,K,IACvCnB,GAAa,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,MACxC72B,KAAK0iC,OAAOrsB,EAASyU,KAAKY,OAAO,GACnC,KAIJ1rB,KAAKkW,MAAMC,IACTxO,EAAOyO,kBAAiB,KACtBpW,KAAK2iC,qCAAqC,IAGhD,CAyBQC,eAAAA,CAAgBnpC,EAA4BoP,GAClD,MACM2iB,EADW/xB,EAAOR,MAAM3C,SAASuS,GAChB5P,MAAMkI,KAG7B,MAAO,CAAEqqB,QAAOn2B,MADFm2B,EAAMvyB,MAAM5D,MAE5B,CAEQqtC,MAAAA,CAAOG,G,IAIb,EAHA,MACMC,GADWC,EAAAA,EAAAA,IAAwB/iC,MACd/G,MAAMoJ,QAAQlJ,QAAQsmB,GAAQA,EAAIxc,QAAUi8B,EAAAA,KAAoB5lC,KAAKmmB,GAAQA,EAAI5hB,QAE7F,QAAf,EAAAmC,KAAK/G,MAAMkI,YAAX,SAAiBlI,MAAMmiC,QAAQp4B,SAASggC,IACtC,IAAIC,EAAiB,GACrB,MAAMxpC,EAASupC,EACTE,EAAe,IAAI19B,IAAYs9B,GAC/B/F,EAAkBtjC,EAAOR,MAAM3C,SAErC,IAAK,IAAIuS,EAAI,EAAGA,EAAIk0B,EAAgB7jC,OAAQ2P,IAAK,CAC/C,MAAM,MAAExT,GAAU2K,KAAK4iC,gBAAgBnpC,EAAQoP,GAE3Cq6B,EAAav9B,IAAItQ,GAEnB6tC,EAAa9F,OAAO/nC,IAGpB0nC,EAAgB7wB,OAAOrD,EAAG,GAE1BA,KAEFo6B,EAAe1/B,KAAKlO,EACtB,CAEA,MAEMgN,EAFc2D,MAAMkS,KAAKgrB,GAEH5pC,KAAK8yB,IACxB,CACLvuB,MAAOuuB,EACPnpB,MAAOmpB,MAIX2Q,EAAgBx5B,QAAQvD,KAAKq9B,cAAch7B,IAE3C,MAAMu6B,EAAiB58B,KAAK68B,wBAAwBgG,GACpD9F,EAAgBt3B,KAAKzF,KAAKs9B,aAAaV,IAEvCnjC,EAAOiG,SAAS,CACdpJ,SAAUymC,GACV,GAEN,CAEQF,uBAAAA,CAAwBsG,GAC9B,MAAMvG,EAAiB,IAAIe,IAC3B,GAAIwF,aAAAA,EAAAA,EAAgBjqC,OAClB,IAAK,IAAI2P,EAAI,EAAGA,GAAIs6B,aAAAA,EAAAA,EAAgBx7B,OAAOzO,QAAQ2P,IAAK,CACtD,MAAMnR,EAAeyrC,EAAex7B,OAAOkB,GAAGnR,KACxCkmC,EAAsBuF,EAAex7B,OAAOkB,GAAG1G,OAAO,GAC5Dy6B,EAAeiB,IAAInmC,EAAMkmC,EAC3B,CAEF,OAAOhB,CACT,CAEQhN,KAAAA,G,IASF6S,EARJ,MAAMrpC,GAAW2pC,EAAAA,EAAAA,IAAwB/iC,MACbnH,EAAAA,GAAWwE,YAAY2C,KAAMk0B,GACrCj7B,MAAMkhB,OAAO/K,QAEjC,MAAM9Y,EAAW0J,KAAKq9B,cAAcjkC,EAASH,MAAMoJ,SAG7CogC,EADe5pC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IACbrc,MAAM+mC,oBAC3C,IAAIyC,SAA2B,QAA3BA,EAAAA,EAAiBxpC,MAAM6xB,YAAvB2X,IAAAA,OAAAA,EAAAA,EAA6BxpC,SAAU29B,EAAAA,aAAaC,KAAM,CAC5D,MAAM+F,EAAiB58B,KAAK68B,wBAAwB4F,aAAAA,EAAAA,EAAiBxpC,MAAM6xB,KAAKY,OAAO,IACvFp1B,EAASmP,KAAKzF,KAAKs9B,aAAaV,GAClC,CAEA,MAAM4B,EAAiBloC,EAASgD,KAAKk7B,GAAUA,EAAMxF,UAErD,OAAO,IAAIwG,EAAAA,EAAe,CACxBnzB,QAAS,CACP,CAAEY,MAAO,OAAQpF,MAAO,QACxB,CAAEoF,MAAO,OAAQpF,MAAO,SAE1BinB,OAAQ,OACRsW,QAAS,CACP,IAAIK,EAAAA,GAAmB,CACrBI,QAAQ,EACRH,gBAAiB0H,EAAAA,GACjBxH,SAAU,QACVtlC,SAAUA,IAEZ,IAAImlC,EAAAA,GAAmB,CACrBI,QAAQ,EACRH,gBAAiB,MACjBE,SAAU,QACVtlC,SAAUkoC,MAIlB,CAEQnB,aAAAA,CAAch7B,GACpB,MAAM/L,EAA+B,GACrC,IAAK,MAAM6R,KAAU9F,EAAS,CAC5B,MAAM,MAAEY,GAAUkF,EACZ6yB,EAAc/xB,OAAOhG,GAC3B,GAAIA,IAAUi8B,EAAAA,KAAuBj8B,EACnC,SAEF,MAAMqE,GAAQ+7B,EAAAA,EAAAA,IAAiBrjC,KAAMiJ,OAAOd,EAAOlF,OAAQgG,OAAOd,EAAOlF,QACnE+nB,GAAcsO,EAAAA,EAAAA,IAAe,CAAChyB,IAEpChR,EAASiN,KACP,IAAIwrB,EAAAA,GAAiB,CACnB5tB,KAAMguB,EAAAA,GAAcC,aACjBK,SAASuL,GACTrL,QAAQ3E,GACR0E,iBAAiB,CAAC,IAAIyP,EAAAA,EAAuB,CAAEzW,UAAWsS,EAAagC,UAAW9U,EAAAA,GAAWrqB,UAC7FwhC,qBAAqB,WAAY,CAAEC,KAAMC,EAAAA,aAAaC,SACtDH,qBAAqB,cAAe,KACpCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAatD,EAAAA,UAAUC,MAC5CsH,gBAAe,GACfhI,mBAAkB,GAClBjM,aAAaC,EAAAA,IACbE,QAAQ,IAAIlC,EAAAA,GAAU,CAAEW,qBAAsB,CAAEvF,UAAWsS,MAC3DyE,eAAeC,EAAAA,GACf9P,UAGT,CACA,OAAOt5B,CACT,CAEQgnC,YAAAA,CAAaV,GACnB,MAAO,CAAC5lC,EAAqB0O,KAC3B,MAAM83B,EAASxmC,EAAEiC,MAAMkI,KACjBs8B,EAAS/3B,EAAEzM,MAAMkI,KACvB,GAAIq8B,EAAOvkC,MAAM5D,QAAUoR,EAAAA,GACzB,OAAQ,EAEV,GAAIg3B,EAAOxkC,MAAM5D,QAAUoR,EAAAA,GACzB,OAAO,E,IAEYm2B,EAArB,MAAMc,EAAoD,QAArCd,EAAAA,EAAe/6B,IAAI27B,EAAOvkC,MAAM5D,cAAhCunC,IAAAA,EAAAA,EAA0C,E,IAC1CA,EACrB,OAD0D,QAArCA,EAAAA,EAAe/6B,IAAI47B,EAAOxkC,MAAM5D,cAAhCunC,IAAAA,EAAAA,EAA0C,GACzCc,CAAY,CAEtC,CAEA,eAAc7E,EAAS,MAAElgC,IACvB,MAAM,KAAEwI,GAASxI,EAAMI,WACvB,OAAO,oCAAGoI,GAAQ,kBAACq0B,EAAAA,EAAeqD,SAAQ,CAAClgC,MAAOwI,IACpD,CA3NAT,WAAAA,CAAYzH,GACV0H,M,sUAAM,IACD1H,IAqCP,OAAQ0pC,uCAAsC,K,IAC5C,EAAe,QAAf,EAAA3iC,KAAK/G,MAAMkI,YAAX,SAAiBlI,MAAMmiC,QAAQp4B,SAASggC,IACtC,MAAMvpC,EAASupC,EAEf,IAAK,IAAIn6B,EAAI,EAAGA,EAAIpP,EAAOR,MAAM3C,SAAS4C,OAAQ2P,IAAK,CACrD,MAAM,MAAE2iB,EAAK,MAAEn2B,GAAU2K,KAAK4iC,gBAAgBnpC,EAAQoP,GAChDmiB,EAAgEQ,EAAMvyB,MAAMg2B,MAC5E3nB,GAAQ+7B,EAAAA,EAAAA,IAAiBrjC,KAAM3K,EAAOA,G,IAIvB21B,EAAAA,EADrB,GAAIA,aAAuBE,EAAAA,GACzB,GAAI5jB,EAAM9F,QAASwpB,SAA0B,QAA1BA,EAAAA,EAAa/xB,MAAMgxB,eAAnBe,IAAAA,GAA+B,QAA/BA,EAAAA,EAA6B,UAA7BA,IAAAA,OAAAA,EAAAA,EAAiCxpB,MAClD,MAIJgqB,EAAM9rB,SAAS,CACbuvB,OAAOqK,EAAAA,EAAAA,IAAe,CAAChyB,KAE3B,IACA,IAtDFtH,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAuNA,EA9NWwiC,EA8NG9oC,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,GAASxI,EAAMI,WACjB3E,GAASC,EAAAA,EAAAA,YAAWm9B,EAAAA,IAE1B,OAAIrwB,EACK,kBAACogB,OAAAA,CAAK/sB,UAAWJ,EAAOq9B,cAAetwB,GAAQ,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,KAGxE,kBAACyd,EAAAA,mBAAkBA,CAACzmB,KAAM,c,m6BCtN9B,MAAM+7B,UAA4Bx7B,EAAAA,GA+B/BmH,UAAAA,G,IAKKi+B,EAAAA,EACFA,EAAAA,EAUMA,EAff,MAAMA,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAC5CyjB,GAAkBgK,EAAAA,EAAAA,IAAwB/iC,MAEhDA,KAAKN,SAAS,CACZqgC,SAA+C,QAAtCjC,EAAAA,EAAa7kC,MAAM+mC,2BAAnBlC,IAAAA,GAAkD,QAAlDA,EAAAA,EAAwC7kC,MAAM6xB,YAA9CgT,IAAAA,OAAAA,EAAAA,EAAoD7kC,SAAU29B,EAAAA,aAAaC,KACpF70B,OAA6C,QAAtC87B,EAAAA,EAAa7kC,MAAM+mC,2BAAnBlC,IAAAA,GAAkD,QAAlDA,EAAAA,EAAwC7kC,MAAM6xB,YAA9CgT,IAAAA,OAAAA,EAAAA,EAAoD7kC,SAAU29B,EAAAA,aAAa30B,QAGpFjC,KAAKkW,MAAMC,IACTnW,KAAKuW,iBAAiBud,EAAAA,GAAsB,KAC1C9zB,KAAK/G,MAAMkhB,OAAOya,kBAAkB,KAGxC50B,KAAKkW,MAAMC,IAAInW,KAAKuW,iBAAiB0pB,EAAAA,GAAqBjgC,KAAKkgC,qBAE/DlgC,KAAKkW,MAAMC,IAA0C,QAAtC2nB,EAAAA,EAAa7kC,MAAM+mC,2BAAnBlC,IAAAA,OAAAA,EAAAA,EAAwC1nB,iBAAiBpW,KAAKujC,6BAE7EvjC,KAAKkW,MAAMC,KACTgB,EAAAA,EAAAA,IAAkBnX,MAAMoW,kBAAiB,CAACC,EAAUmB,KAClDxX,KAAKwjC,uBAAuBntB,EAAUmB,EAAU,KAIpDxX,KAAKkW,MAAMC,IACT4iB,EAAgB3iB,kBAAiB,CAACC,EAAUmB,KAC1CxX,KAAKyjC,wBAAwBptB,EAAUmB,EAAU,KAIrD,MAAMqrB,GAAsBxP,EAAAA,EAAAA,IAAuBrzB,MAE/C6iC,GACF7iC,KAAKwgC,cAAcqC,IAGrBpC,EAAAA,EAAAA,IAAkBzgC,KACpB,CAEQyjC,uBAAAA,CAAwBptB,EAAuCmB,IAGnEnB,EAASpT,QAAUuU,EAAUvU,SAC5Bkb,EAAAA,EAAAA,GAAe9H,EAAShU,QAASmV,EAAUnV,eACxBrM,IAApBgK,KAAK/G,MAAMkI,MACXnB,KAAK/G,MAAMkI,gBAAgBk2B,EAAAA,IAE3Br3B,KAAKghC,YAET,CAEQwC,sBAAAA,CACNntB,EACAmB,GAEA,IAAI,UAAEkR,IAAc0X,EAAAA,EAAAA,MAChB1X,IAAcgb,EAAAA,KAChBhb,EAAYib,EAAAA,IAEd,MAAMvqC,GAAW2pC,EAAAA,EAAAA,IAAwB/iC,MACnC4jC,EAAkBvtB,EAASvX,QAAQslB,MAAMjrB,GAAWA,EAAOK,MAAQkvB,IACnEmb,EAAmBrsB,EAAU1Y,QAAQslB,MAAMjrB,GAAWA,EAAOK,MAAQkvB,IAGvEtvB,EAASH,MAAMgK,QAAUi8B,EAAAA,IAAsB0E,IAAoBC,GACrE7jC,KAAKN,SAAS,CACZqgC,SAAS,EACT5+B,UAAMnL,EACNgM,WAAOhM,GAGb,CA6CQwqC,aAAAA,CAAc2C,GACpB,IAAKA,IAAmBA,EAAejqC,OAKrC,YAJA8G,KAAKN,SAAS,CACZqgC,SAAS,EACT5+B,KAAM,IAAIk2B,EAAAA,EAAiB,CAAEt7B,KAAM,aAIvC,MAAM3C,GAAW2pC,EAAAA,EAAAA,IAAwB/iC,MACnCqC,GAAUyhC,EAAAA,EAAAA,IAAgBX,EAAex7B,OAAOrO,KAAKuE,GAAUA,EAAMnG,Q,IAKlE,EAHT0B,EAASsG,SAAS,CAChBqgC,SAAS,EACT19B,UACAY,MAAuB,QAAhB,EAAAjD,KAAK/G,MAAMgK,aAAX,QAAoBi8B,EAAAA,IAE/B,CAEQ8B,UAAAA,GACN,MAAM5nC,GAAW2pC,EAAAA,EAAAA,IAAwB/iC,MAEzC,IAAK5G,EAASH,MAAMoJ,UAAYjJ,EAASH,MAAMoJ,QAAQnJ,OACrD,OAGF,MAAM6b,EAAiD,CACrDgrB,SAAS,EACToC,qBAAiBnsC,EACjBgM,OAAO,GAGL5I,EAAS2qC,eAAiB/jC,KAAK/G,MAAMkI,gBAAgBqvB,EAAAA,EACvDzb,EAAY5T,KAAO,IAAIqhC,EAA+B,CAAC,IAC7CppC,EAAS2qC,eAAiB/jC,KAAK/G,MAAMkI,gBAAgBqhC,EAC/DztB,EAAY5T,KAAO,IAAIqvB,EAAAA,EAA0B,CAAC,QACrBx6B,IAApBgK,KAAK/G,MAAMkI,KAChB/H,EAASH,MAAMoJ,QAAQnJ,OAAS,EAClC6b,EAAY5T,KAAO/H,EAAS2qC,cACxB,IAAIvB,EAA+B,CAAC,GACpC,IAAIhS,EAAAA,EAA0B,CAAC,GAEnCzb,EAAY5T,KAAO,IAAIk2B,EAAAA,EAAiB,CAAEt7B,KAAM,WAEzCiE,KAAK/G,MAAMkI,gBAAgBk2B,EAAAA,GAChCj+B,EAASH,MAAMoJ,QAAQnJ,OAAS,IAClC6b,EAAY5T,KAAO/H,EAAS2qC,cACxB,IAAIvB,EAA+B,CAAC,GACpC,IAAIhS,EAAAA,EAA0B,CAAC,IAIvCxwB,KAAKN,SAAS,KAAKqV,GACrB,CAjMArU,WAAAA,CAAYzH,G,IAWOA,EACEA,EARfA,EAHJ0H,MAAM,OACD1H,GAAAA,CACH+kB,WACkB,QAAhB/kB,EAAAA,EAAM+kB,kBAAN/kB,IAAAA,EAAAA,EACA,IAAI6jB,EAAAA,GAAiB,CACnB9jB,UAAW,CACT,IAAIkkB,EAAAA,EAAuB,CACzBxlB,KAAMssC,EAAAA,GACN9C,cAAc,EACdC,YAAY,EACZl+B,MAAkB,QAAXhK,EAAAA,EAAMgK,aAANhK,IAAAA,EAAAA,EAAeimC,EAAAA,GACtB78B,QAAsB,QAAbpJ,EAAAA,EAAMoJ,eAANpJ,IAAAA,EAAAA,EAAiB,QAIlC8mC,SAAS,EACTt6B,KAAM,IAAI27B,EAAAA,GAAY,CAAEnqC,OAAQ,WAChCkjB,OAAQ,IAAI6Z,EAAAA,EAAqB,UACjC/wB,MAAOhK,EAAMgK,SAxBjB,OAAUo+B,sBAAsB,IAAIC,EAAAA,GAAyBthC,KAAM,CACjEuhC,cAAe,CAACtmB,EAAAA,OA2GlB,OAAQsoB,8BAA6B,CAACltB,EAA4BmB,K,IAE9DnB,EACAA,EACgBA,EAAAA,EAAmCmB,EAAAA,EAAAA,EAG1CnB,EADUA,EALrB,IACe,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,OAClB,QAApBxgB,EAAAA,EAASyU,KAAKY,cAAdrV,IAAAA,OAAAA,EAAAA,EAAuB,OACtB8H,EAAAA,EAAAA,GAAmC,QAApB9H,EAAAA,EAASyU,KAAKY,cAAdrV,IAAAA,GAAyB,QAAzBA,EAAAA,EAAuB,UAAvBA,IAAAA,OAAAA,EAAAA,EAA2B1O,OAAsB,QAAd6P,EAAAA,EAAUsT,YAAVtT,IAAAA,GAAsB,QAAtBA,EAAAA,EAAgBkU,cAAhBlU,IAAAA,GAA2B,QAA3BA,EAAAA,EAAyB,UAAzBA,IAAAA,OAAAA,EAAAA,EAA6B7P,QAEhF3H,KAAKwgC,cAAkC,QAApBnqB,EAAAA,EAASyU,KAAKY,cAAdrV,IAAAA,OAAAA,EAAAA,EAAuB,SACrC,IAAiB,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KAAM,EAEpCkM,EAAAA,EAAAA,IAAwB/iC,MAChCN,SAAS,CAChBqgC,SAAS,GAEb,KAGF,OAAQG,sBAAsBn3B,IAC5B,GAAqB,WAAjBA,EAAM9R,OACR,OAEF,MAAMkK,EAAOnB,KAAK/G,MAAMkI,KACxB,GAAIA,aAAgBqvB,EAAAA,EAA2B,CACpB33B,EAAAA,GAAWy7B,gBAAgBnzB,EAAMozB,EAAAA,GACzCvxB,SAASvJ,IACxBA,EAAOgM,KAAKsD,EAAMmsB,OAAQnsB,EAAMiK,UAAU,GAE9C,EACA5W,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBklC,4BACpC,CACEvqC,OAAQ,SACRwqC,SAAU14B,EAAMmsB,OAChBliB,UAAWjK,EAAMiK,WACnB,IA0DJ,OAAOuN,YAAYtd,IACjB,IAAKA,EACH,OAGF,MAAM7J,GAAW2pC,EAAAA,EAAAA,IAAwB/iC,MACzC5G,EAASmhB,cAActX,GAEvB,MAAM,OAAEiyB,EAAM,UAAEliB,IAAcioB,EAAAA,EAAAA,IAAoB,SAAUC,EAAAA,gBAAiB,SAC7E9+B,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBqlC,kCACpC,CACE9jC,MAAOoF,EACPghC,cAAe7qC,EAASyoC,eACxBC,KAAM,SACN5M,SACA6M,gBAAiB/uB,IAIrB,MAAM8qB,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,KAClD0sB,EAAAA,EAAAA,IAAyB9Z,EAAAA,GAAWrqB,MAAOoF,EAAO66B,EAAa,IAnM/D99B,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA8PF,SAAS1L,EAAUoB,GACjB,MAAO,CACLjB,WAAWkB,EAAAA,EAAAA,KAAI,CACbqL,SAAU,EACVpL,QAAS,OACTqL,UAAW,OACXjD,cAAe,SACfpG,IAAKlC,EAAMmC,QAAQ,KAErBwqC,SAAS1sC,EAAAA,EAAAA,KAAI,CACXqL,SAAU,EACVpL,QAAS,OACT2sC,WAAY7sC,EAAMmC,QAAQ,KAE5BoqC,mBAAmBtsC,EAAAA,EAAAA,KAAI,CACrBqL,SAAU,EACVpL,QAAS,OACTqH,WAAY,MACZpH,eAAgB,gBAChBmI,cAAe,cACfpG,IAAKlC,EAAMmC,QAAQ,KAErBqqC,mBAAmBvsC,EAAAA,EAAAA,KAAI,CACrBqL,SAAU,EACVpL,QAAS,OACTqH,WAAY,MACZrF,IAAKlC,EAAMmC,QAAQ,GACnBmG,cAAe,QAGrB,CAvFE,EAlOWk2B,EAkOGmH,cAAa,EAAG1iC,YAC5B,MAAM,KAAEwI,EAAI,QAAE4+B,EAAO,OAAE5lB,GAAWxhB,EAAMI,WAClCK,GAAW2pC,EAAAA,EAAAA,IAAwBpqC,IACnC,QAAE0J,EAAO,MAAEY,GAAU7J,EAASL,WAC9B3E,GAASC,EAAAA,EAAAA,YAAWC,GAE1B,OACE,kBAACC,MAAAA,CAAIC,UAAWJ,EAAO6tC,mBACpB9gC,aAAgBqvB,EAAAA,GAA6B,kBAACA,EAAAA,EAA0BqI,SAAQ,CAAClgC,MAAOwI,IACxFA,aAAgBqhC,GAAkC,kBAACA,EAA+B3J,SAAQ,CAAClgC,MAAOwI,IAClGA,aAAgBqvB,EAAAA,GAA6B,kBAACrW,EAAOzgB,UAAS,CAACf,MAAOwhB,KACrE4lB,GAAW19B,EAAQnJ,OAAS,GAC5B,kBAACq+B,EAAAA,EAAaA,CAAC15B,MAAM,QAAQwE,QAASA,EAASY,MAAOgG,OAAOhG,GAAQsd,SAAU5nB,EAAM4nB,W,IAM7F,EApPW2T,EAoPGsH,cAAa,EAAG7iC,YAC5B,MAAM,QAAEonC,EAAO,KAAEt6B,GAAS9M,EAAMI,WAC1BK,GAAW2pC,EAAAA,EAAAA,IAAwBpqC,IACnC,MAAEsK,GAAU7J,EAASL,WACrB3E,GAASC,EAAAA,EAAAA,YAAWC,GAE1B,OACE,kBAACC,MAAAA,CAAIC,UAAWJ,EAAO8tC,oBACnBnC,GAAW98B,IAAUi8B,EAAAA,IACrB,oCACE,kBAACz5B,EAAK/L,UAAS,CAACf,MAAO8M,K,IAOjC,EArQWyuB,EAqQGx6B,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,EAAI,QAAE4+B,EAAO,gBAAEoC,EAAe,MAAEngC,GAAUrJ,EAAMI,WAClD3E,GAASC,EAAAA,EAAAA,YAAWC,GAE1B,OACE,kBAACC,MAAAA,CAAIC,UAAWJ,EAAOK,WACrB,kBAAC2tC,EAAAA,EAAkB,CAAEljB,UAAW6gB,EAASoC,mBACtCngC,GACC,kBAACpL,EAAAA,MAAKA,CAACvB,MAAM,GAAGyB,SAAS,WAAU,uGAKpCqK,aAAgBqhC,GAAkC7pC,GAAS,kBAACu7B,EAAoBmH,WAAU,CAAC1iC,MAAOA,IAEnG,kBAACpE,MAAAA,CAAIC,UAAWJ,EAAOiuC,SAAUlhC,GAAQ,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,M,y+CCrQnE,MAAMqvB,UAAkC93B,EAAAA,GAU7CmH,UAAAA,GACEG,KAAKN,SAAS,CACZuvB,MAAOjvB,KAAKk5B,mBACZ/3B,KAAMnB,KAAK4vB,UAIb5vB,KAAKo5B,WACLp5B,KAAKq5B,kBACP,CAEQH,gBAAAA,GACN,MAAM5xB,EAAQtH,KAAKi5B,aACnB,OAAOK,EAAAA,EAAAA,IAAe,CAAChyB,GAAQ,CAAEiyB,eAAgB,UACnD,CAEQN,UAAAA,GACN,MAAM3xB,GAAQ+7B,EAAAA,EAAAA,IAAiBrjC,KAAMkkC,EAAAA,GAAyBj7B,QAAO85B,EAAAA,EAAAA,IAAwB/iC,MAAM/G,MAAMgK,SAEnG,aAAEmwB,EAAY,iBAAEyG,GAAqB75B,KAAKmkC,4CAEhD,OADA78B,EAAM9F,KAAO8F,EAAM9F,KAAKqB,QAAQ,MAAMuwB,KAAiByG,GAChDvyB,CACT,CAKA,mB,IAII,EADFtH,KAAKkW,MAAMC,IACO,QAAhB,EAAAnW,KAAK/G,MAAMg2B,aAAX,eAAkB7Y,kBAAiB,CAACC,EAAUmB,KAC5CxX,KAAKm5B,wBAAwB9iB,EAAS,KAM1CrW,KAAKkW,MAAMC,KACT4sB,EAAAA,EAAAA,IAAwB/iC,MAAMoW,kBAAkBC,IAC1CA,EAASpT,QAAUi8B,EAAAA,IACrBl/B,KAAKN,SAAS,CACZuvB,WAAOj5B,EACPmL,UAAMnL,GAEV,KAKJgK,KAAKkW,MAAMC,IACTtd,EAAAA,GAAWqZ,aAAalS,MAAMoW,kBAAiB,KAE7CpW,KAAKo5B,UAAU,KAInBp5B,KAAKkW,MAAMC,KACTL,EAAAA,EAAAA,IAAkB9V,MAAMoW,kBAAiB,CAACC,EAAUmB,MAC7C2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAE9CkB,KAAKo5B,UACP,KAKJp5B,KAAKkW,MAAMC,KACTQ,EAAAA,EAAAA,IAAoB3W,MAAMoW,kBAAiB,CAACC,EAAUmB,MAC/C2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKo5B,UACP,KAKJp5B,KAAKkW,MAAMC,KACTkN,EAAAA,EAAAA,IAAuBrjB,MAAMoW,kBAAiB,CAACC,EAAUmB,MAClD2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKo5B,UACP,KAKJp5B,KAAKkW,MAAMC,KACTP,EAAAA,EAAAA,IAAoB5V,MAAMoW,kBAAiB,CAACC,EAAUmB,KAChDnB,EAASpT,QAAUuU,EAAUvU,OAC/BjD,KAAKo5B,UACP,KAIJ,MAAM5/B,EAAMwG,KAAK84B,Y,WAEjB94B,KAAKkW,MAAMC,KACTgB,EAAAA,EAAAA,IAAkBnX,MAAMoW,iBAAgB,W,MAAC,aAAOC,EAAUmB,IAErD2G,EAAAA,EAAAA,GACC9H,EAASvX,QAAQ3F,QAAQsL,GAAMjL,IAAQiN,EAAAA,IAAwBhC,EAAEjL,MAAQA,IACzEge,EAAU1Y,QAAQ3F,QAAQsL,GAAMjL,IAAQiN,EAAAA,IAAwBhC,EAAEjL,MAAQA,MAG5E,EAAK4/B,UAET,I,gBATgD/iB,EAAUmB,G,gCAAlB,K,WAY1CxX,KAAKkW,MAAMC,KACTF,EAAAA,EAAAA,IAAkBjW,MAAMoW,iBAAgB,W,MAAC,aAAOC,EAAUmB,IAErD2G,EAAAA,EAAAA,GACC9H,EAASvX,QAAQ3F,QAAQsL,GAAMjL,IAAQiN,EAAAA,IAAwBhC,EAAEjL,MAAQA,IACzEge,EAAU1Y,QAAQ3F,QAAQsL,GAAMjL,IAAQiN,EAAAA,IAAwBhC,EAAEjL,MAAQA,MAG5E,EAAK4/B,UAET,I,gBATgD/iB,EAAUmB,G,gCAAlB,IAW5C,CAKA,e,IAEE,EAAwB,QAAxB,EAAAxX,KAAKo6B,6BAAL,SAA4B16B,SAAS,CACnCuqB,QAAS,CAACjqB,KAAKi5B,eAEnB,CAMA,WACEj5B,KAAKq6B,eACL,MAAMrP,EAAchrB,KAAKo6B,sBACzBpP,SAAAA,EAAasP,YACf,CAKA,sBACE,GAAIt6B,KAAK/G,MAAMg2B,MAAO,CACpB,MAAMsL,EAAe1hC,EAAAA,GAAWy7B,gBAAgBt0B,KAAK/G,MAAMg2B,MAAO/D,EAAAA,IAClE,GAA4B,IAAxBqP,EAAarhC,OAAc,CAC7B,MAAM8I,EAAQ,IAAIC,MAAM,mDAExB,MADAZ,EAAAA,EAAOW,MAAMA,EAAO,CAAEgC,IAAK,+EACrBhC,CACR,CAEA,OAAOu4B,EAAa,EACtB,CACAl5B,EAAAA,EAAOC,KAAK,4FAEd,CAOA,4CACE,MAAMk4B,EAASx5B,KAAK84B,YACpB,IAAIe,EACAzG,EAEJ,GAAIoG,IAAW/yB,EAAAA,GAAsB,CACnC,MAAMuY,GAAY/I,EAAAA,EAAAA,IAAkBjW,MACpCozB,EAAexwB,EAAAA,GACfi3B,GAAmB3d,EAAAA,EAAAA,IAAmB8C,EAAU/lB,MAAM6F,QAAS,CAAC06B,GAClE,KAAO,CACL,MAAMtiB,GAAYC,EAAAA,EAAAA,IAAkBnX,MACpCozB,EAAenY,EAAAA,GACf4e,GAAmBxe,EAAAA,EAAAA,IAAwBnE,EAAUje,MAAM6F,QAAS,CAAC06B,GACvE,CAEA,MAAO,CAAEK,mBAAkBzG,eAC7B,CAKA,YACE,MAAMh6B,GAAW2pC,EAAAA,EAAAA,IAAwB/iC,MACzC,OAAOiJ,OAAO7P,EAASH,MAAMgK,MAC/B,CAKA,wBAAgCoT,GAE9BrW,KAAKokC,eAAe/tB,GAGpBrW,KAAKqkC,eAAehuB,EACtB,CAKA,eAAuBA,G,IAEjBA,EAA0BA,EAA9B,IAAIA,SAAc,QAAdA,EAAAA,EAAUyU,YAAVzU,IAAAA,OAAAA,EAAAA,EAAgBskB,UAAuB,QAAbtkB,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KAAM,C,IAExExgB,EADA,MAAMskB,EAAwB36B,KAAK/G,MAAM0hC,OACzCtkB,SAAc,QAAdA,EAAAA,EAAUyU,YAAVzU,IAAAA,GAAAA,EAAgBskB,OAAO33B,SAAS43B,IAC9B,MAAM0J,EAAa,GAAG1J,EAAIC,UAAUD,EAAIG,WAAWH,EAAInkC,eAC5BT,IAAvB2kC,EAAO2J,KACT3J,EAAO2J,GAAc,OAAK1J,GAAAA,CAAK2J,WAAW,IAC5C,IAEFvkC,KAAKN,SAAS,CACZi7B,WAGF36B,KAAKwkC,eAAexkC,KAAK/G,MAAM0hC,OACjC,CACF,CAKA,eAAuBtkB,G,IACjBA,EAAJ,IAAiB,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KACxC,GAAIxgB,EAASyU,KAAKY,OAAOxyB,OAAS,KAAO8G,KAAK/G,MAAMkI,gBAAgBq0B,EAAAA,GAClEx1B,KAAKN,SAAS,CACZyB,KAAMnB,KAAK4vB,eAER,GAAoC,IAAhCvZ,EAASyU,KAAKY,OAAOxyB,OAAc,CAC5C,MAAMkE,EAAavE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,IACvBqjC,EAAAA,EAAAA,IAA6BvjC,GAEjClE,OAAS,EAC5B8G,KAAKN,SAAS,CACZyB,KAAM,IAAIy/B,EAAAA,EAAsB,CAAEC,cAAe,KAAMC,EAAAA,EAAAA,IAAe9gC,UAGxEA,KAAKN,SAAS,CACZyB,KAAM,IAAIk2B,EAAAA,EAAiB,CAAEt7B,KAAM,YAGzC,CAEJ,CAKA,kBACE,MAAMw5B,EAAiBv1B,KAAK/G,MAAMkI,KAClC,GAAIo0B,aAA0BC,EAAAA,EAAgB,CAC5C,MAAMmJ,EAAepJ,aAAAA,EAAAA,EAAgBt8B,MAAMmiC,QAAQhX,MAAM3qB,GAAWA,EAAO6X,WAC3E,GAAIqtB,aAAwBp/B,EAAAA,GAC1B,OAAOo/B,CAEX,CAEF,CAKA,+BACE,MAAMA,EAAe3+B,KAAKykC,kBAC1B,GAAI9F,EAAc,CAEhB,OADyB9lC,EAAAA,GAAWy7B,gBAAgBqK,EAAcpK,EAAAA,GAC1C5vB,MAAM+/B,IAC5B,MAAMlQ,EAAQkQ,EAASzrC,MAAMkI,KAAKlI,MAAM3C,SAAS,GACjD,OAAOk+B,aAAiBlX,EAAAA,IAAiBkX,aAAiBuC,EAAAA,EAAgBA,GAE9E,CAEA,OAAO,CACT,CAKA,QACE,MACM4N,GADW5B,EAAAA,EAAAA,IAAwB/iC,MACV/G,MACzBugC,EAASvwB,OAAO07B,aAAAA,EAAAA,EAAe1hC,OAC/B2hC,EAAsB/rC,EAAAA,GAAWwE,YAAY2C,KAAMk0B,EAAAA,GAEzD,IAAI2Q,EAAW1V,EAAAA,GAAcC,aAC7ByV,EAAWA,EACRxF,qBAAqB,WAAY,CAAEC,KAAMC,EAAAA,aAAaC,SACtDH,qBAAqB,cAAe,KACpCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAatD,EAAAA,UAAUC,MAC5CV,mBAAkB,GAClBjM,aAAaC,EAAAA,IACbE,QAAQ,IAAIlC,EAAAA,GAAU,CAAC,IACvBmC,SAAS+J,GAEZ,MAAMr4B,EAAO0jC,EAASjV,SAEhB,OAAEsF,EAAM,UAAEliB,IAAcioB,EAAAA,EAAAA,IAAoB,SAAUC,EAAAA,gBAAiB,QAEvE9P,EAAY,K,IAAMwZ,E,OAA6C,QAA7CA,EAAAA,EAAoB3rC,MAAMkhB,OAAOlhB,MAAME,cAAvCyrC,IAAAA,EAAAA,EAAiD,EAAE,EAE3E,OAAO,IAAIpP,EAAAA,EAAe,CACxBnzB,QAAS,CACP,CAAEY,MAAO,SAAUpF,MAAO,UAC1B,CAAEoF,MAAO,OAAQpF,MAAO,QACxB,CAAEoF,MAAO,OAAQpF,MAAO,SAE1BinB,OAAQ,OACRsW,QAAS,CACP,IAAI77B,EAAAA,GAAgB,CAClByT,UAAW,SACX1c,SAAU,CACR,IAAIygC,EAAAA,GAAiB,CAAEC,UAAW,kBAAC9C,EAAAA,EAAoBmH,WAAU,CAAC1iC,MAAOisC,MACzE,IAAItnB,EAAAA,GAAc,CAChBrc,UAAW,IACXE,YAIN,IAAI5B,EAAAA,GAAgB,CAClByT,UAAW,SACX1c,SAAU,CACR,IAAIygC,EAAAA,GAAiB,CAAEC,UAAW,kBAAC9C,EAAAA,EAAoBmH,WAAU,CAAC1iC,MAAOisC,MACzE,IAAIrJ,EAAAA,GAAuB,CAAElmC,MAAOmkC,EAAQsL,YAAY,EAAMtL,OAAQx5B,KAAK84B,YAAa/8B,KAAM,UAC9F,IAAIg7B,EAAAA,GAAiB,CAAEC,UAAW,kBAAC9C,EAAAA,EAAoBsH,WAAU,CAAC7iC,MAAOisC,MACzE,IAAIrQ,EAAAA,EAAgB,CAClBpzB,KAAM,IAAIs6B,EAAAA,GAAmB,CAC3BI,QAAQ,EACRH,gBAAiB0H,EAAAA,GACjBxH,SAAU,QACVtlC,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI41B,EAAAA,GAAiB,CACzBC,UAAW,kBAACpY,EAAAA,mBAAkBA,CAACzmB,KAAK,sBAK5Ck9B,gBAAgByG,EAAAA,EAAAA,IACd9F,EAAAA,GACA+F,EAAAA,UAAUC,KACV/gB,EAAAA,GACApiB,EAAAA,GAAWwE,YAAY2C,KAAMk0B,EAAAA,GAAqBj7B,MAAMwM,KACxD+zB,GAEFtE,SACAliB,YACAoY,iBAIN,IAAI7rB,EAAAA,GAAgB,CAClByT,UAAW,SACX1c,SAAU,CACR,IAAIygC,EAAAA,GAAiB,CAAEC,UAAW,kBAAC9C,EAAAA,EAAoBmH,WAAU,CAAC1iC,MAAOisC,MACzE,IAAIrJ,EAAAA,GAAuB,CAAElmC,MAAOmkC,EAAQsL,YAAY,EAAMtL,OAAQx5B,KAAK84B,YAAa/8B,KAAM,UAC9F,IAAIg7B,EAAAA,GAAiB,CAAEC,UAAW,kBAAC9C,EAAAA,EAAoBsH,WAAU,CAAC7iC,MAAOisC,MACzE,IAAIrQ,EAAAA,EAAgB,CAClBpzB,KAAM,IAAIs6B,EAAAA,GAAmB,CAC3BC,gBAAiB,MACjBE,SAAU,QACVtlC,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI41B,EAAAA,GAAiB,CACzBC,UAAW,kBAACpY,EAAAA,mBAAkBA,CAACzmB,KAAK,sBAK5Ck9B,gBAAgByG,EAAAA,EAAAA,IACd9F,EAAAA,GACA+F,EAAAA,UAAUC,KACV/gB,EAAAA,GACApiB,EAAAA,GAAWwE,YAAY2C,KAAMk0B,EAAAA,GAAqBj7B,MAAMwM,KACxD+zB,GAEFtE,SACAliB,YACAoY,mBAMZ,CAEQoZ,cAAAA,CAAe7J,GACrB,MAAMrqB,GAAYC,EAAAA,EAAAA,gBAGlB,IAAIw0B,EAA6B,GACjC,IAAK,MAAMnK,KAAOD,EAAQ,CACxB,MAAMqK,EAAerK,EAAOC,GACvBoK,EAAaT,YAChBQ,EAAWxhC,KAAKyhC,GAChBA,EAAaT,WAAY,EAE7B,CAEIQ,EAAW7rC,SAER8G,KAAKilC,gCACR30B,EAAU6B,QAAQ,CAChBpW,KAAMuc,EAAAA,UAAU4sB,WAAWxtC,KAC3BqZ,QAASg0B,aAAAA,EAAAA,EAAYzrC,KAAI,CAACshC,EAAKphC,IAAQwG,KAAKmlC,YAAY3rC,EAAKohC,OAGjE56B,KAAKN,SAAS,CACZi7B,WAGN,CAEQwK,WAAAA,CAAY3rC,EAAaohC,GAC/B,OACE,kBAACrmC,MAAAA,CAAIiF,IAAKA,GACPohC,EAAIC,QACH,oCACE,kBAACC,SAAAA,KAAO,UAAe,KAAGF,EAAIC,OAAO,IAAC,kBAACzjC,KAAAA,OAG1CwjC,EAAInkC,SACH,oCACE,kBAACqkC,SAAAA,KAAO,WAAgB,KAAGF,EAAInkC,QAAQ,IAAC,kBAACW,KAAAA,OAG5CwjC,EAAIG,SACH,oCACE,kBAACD,SAAAA,KAAO,WAAgB,KAAGF,EAAIG,SAKzC,CAEA,eAAclC,EAAS,MAAElgC,IACvB,MAAM,KAAEwI,GAASxI,EAAMI,WACvB,OAAO,oCAAGoI,GAAQA,aAAgBq0B,EAAAA,GAAkB,kBAACA,EAAAA,EAAeqD,SAAQ,CAAClgC,MAAOwI,IACtF,CApcAT,WAAAA,CAAYzH,GACV0H,MAAM,OACD1H,GAAAA,CACH0hC,OAAQ,CAAC,KAGX36B,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA+bA,EAvcWwwB,EAucG92B,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,GAASxI,EAAMI,WACjB3E,GAASC,EAAAA,EAAAA,YAAWm9B,EAAAA,IAC1B,OAAIrwB,EACK,kBAACogB,OAAAA,CAAK/sB,UAAWJ,EAAOq9B,cAAetwB,GAAQ,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,KAGxE,kBAACyd,EAAAA,mBAAkBA,CAACzmB,KAAM,c,wrBCrf9B,MAAMq9B,UAAuB98B,EAAAA,GAElCgI,WAAAA,CAAYzH,G,IAGAA,EAFV0H,MAAM,E,sUAAA,IACD1H,GAAAA,CACH6rB,OAAoB,QAAZ7rB,EAAAA,EAAM6rB,cAAN7rB,IAAAA,EAAAA,EAAgB,UAM5B,OAAOmsC,wBAAuB,IAETplC,KAAK/G,MAAMoJ,QAAQgjC,OAAOh0B,GAAkB,WAAZA,EAAEpO,UAIvD,OAAOqiC,gBAAe,KACpB,MAAM7rC,GAAS8rC,EAAAA,EAAAA,MACX9rC,IACa,WAAXA,GAAoCuG,KAAKolC,uBAE3CplC,KAAKN,SAAS,CAAEolB,OAAQ,SAExB9kB,KAAKN,SAAS,CACZolB,OACa,SAAXrrB,GAA6C,SAAXA,GAA6C,WAAXA,EAChEA,EAAAA,SAIZ,IAGF,OAAO+rC,kBAAkB1gB,KACvB1oB,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkBC,gBAAiBC,EAAAA,GAAoBD,gBAAgBmpC,oBAAqB,CAC/GhsC,OAAQqrB,EACRgd,MAAM/hC,EAAAA,EAAAA,SAER2lC,EAAAA,EAAAA,IAAe5gB,GACf9kB,KAAKN,SAAS,CAAEolB,UAAS,IAG3B,OAAOjlB,cAAa,KAClBG,KAAKslC,cAAc,IApCnBtlC,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EARA,EADWw1B,EACGqD,YA4DhB,UAAiC,MAAElgC,IACjC,MAAM,OAAEmsB,EAAM,QAAEziB,GAAY1J,EAAMI,WAC5B3E,GAASC,EAAAA,EAAAA,YAAWC,GAE1B,OACE,kBAACqxC,EAAAA,MAAKA,CAACnxC,UAAWJ,EAAOoS,OACvB,kBAACo/B,EAAAA,iBAAgBA,CAACvjC,QAASA,EAASY,MAAO6hB,EAAQvE,SAAU5nB,EAAM6sC,iBAGzE,IAvBE,EA/CWhQ,EA+CG97B,aAAY,EAAGf,YAC3B,MAAM,QAAEyiC,EAAO,QAAE/4B,EAAO,OAAEyiB,GAAWnsB,EAAMI,WAErCyrB,EAAQniB,EAAQwjC,WAAWx0B,GAAMA,EAAEpO,QAAU6hB,IACnD,IAAe,IAAXN,EACF,OAAO,KAGT,MAAM/qB,EAAS2hC,EAAQ5W,GAEvB,OAAO,kBAAC/qB,EAAOC,UAAS,CAACf,MAAOc,G,IAepC,MAAMnF,EAAaoB,IACV,CACL8Q,OAAO7Q,EAAAA,EAAAA,KAAI,CACTif,aAAc,K,uGC1Fb,MAAMgsB,UAA8BloC,EAAAA,I,EACf,EAAGC,YAC3B,MAAM,cAAEkoC,GAAkBloC,EAAMI,WAChC,OACE,kBAAC1C,EAAAA,EAASA,KACR,kBAACO,EAAAA,MAAKA,CAACvB,MAAM,GAAGyB,SAAS,QAAO,iCACC,IAC/B,kBAACpC,EAAAA,OAAMA,CAACF,UAAW8iC,EAAAA,GAAiBhT,OAAQtvB,QAAS,IAAM6rC,KAAiB,iBAElE,Q,EARJnnC,e,EADHknC,G,6YCoCN,MAAMrF,UAA+B7iC,EAAAA,GAmB1CmH,UAAAA,G,IAEIg/B,EADF,MAAMrQ,EACuF,QAA3FqQ,GAAAA,EAAAA,EAAAA,IAAe,YAAa,CAACxR,EAAAA,GAAqBmB,UAAWnB,EAAAA,GAAqBxzB,kBAAlFglC,IAAAA,EAAAA,EACAxR,EAAAA,GAAqBxzB,SACjBi0B,EAoMV,SAAgCz4B,EAAegN,G,IAE3Cw8B,EADF,MAAMrQ,EACuF,QAA3FqQ,GAAAA,EAAAA,EAAAA,IAAe,YAAa,CAACxR,EAAAA,GAAqBmB,UAAWnB,EAAAA,GAAqBxzB,kBAAlFglC,IAAAA,EAAAA,EACAxR,EAAAA,GAAqBxzB,SAEjBsH,EAAOguB,EAAAA,GAAcC,aACxBK,SAASp6B,GACTm6B,QAAQ,IAAIlC,EAAAA,GAAU,CAAC,IACvBwY,gBAAe,GACfC,aAAavX,IAAcnB,EAAAA,GAAqBmB,WAChD6Q,qBAAqB,WAAY,CAAEC,KAAMC,EAAAA,aAAaC,SACtDH,qBAAqB,cAAe,KACpCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAatD,EAAAA,UAAUC,MAC5CV,mBAAkB,GAClBmE,eApP8B,MAsP7Bp9B,aAAAA,EAAAA,EAASyiC,aACX3jC,EAAKkuB,aAAaC,EAAAA,IAEpB,OAAOnuB,EAAKyuB,OACd,CA1NgBoW,CAAuBhmC,KAAK/G,MAAM5D,MAAO,CAAEyvC,WAAY9kC,KAAK/G,MAAM6rC,aACxEpwB,EAASuxB,EAAsBzX,GAErCV,EAAIpuB,SAAS,CACXwmC,mBAAoB,CAACj+B,EAAG2iB,IAAY5qB,KAAKmmC,0BAA0Bvb,KAGrE5qB,KAAKN,SAAS,CACZyB,KAAM,IAAI5B,EAAAA,GAAgB,CACxB/F,IAAKk8B,EACLz0B,UAAWyT,EACXA,OAAQA,EACR0xB,UAAW1xB,EACXne,KAAM,SACND,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM2sB,SAMd9tB,KAAKkW,MAAMC,IACT2X,EAAI1X,kBAAiB,CAACC,EAAUmB,KAC9B,GAAInB,EAASmY,YAAchX,EAAUgX,UAAW,CAE9CG,EAD2B91B,EAAAA,GAAWwE,YAAYywB,EAAKvuB,EAAAA,IAGrD8W,EAASmY,UAAYnB,EAAAA,GAAqBmB,UAAYnB,EAAAA,GAAqBxzB,WAE7E+0B,EAAAA,EAAAA,IACE,YACAvY,EAASmY,UAAYnB,EAAAA,GAAqBmB,UAAYnB,EAAAA,GAAqBxzB,SAE/E,KAGN,CAyDA,kBAA0B6mC,EAAoClnC,EAAagyB,GACrEkV,IACsB,UAApB1gC,KAAK/G,MAAM8C,KACTvC,IAAQiN,EAAAA,IACV4/B,EAAAA,EAAAA,IAAwB7a,EAAOkV,EAAW1gC,OAE1CsmC,EAAAA,EAAAA,IAAoC9sC,EAAKgyB,EAAOkV,EAAW1gC,OAG7DumC,EAAAA,EAAAA,IAAoC/sC,EAAKgyB,EAAOkV,EAAW1gC,MAGjE,CAKA,qBAA6BxG,EAAay1B,EAA0BzD,GAClE,OAAOyD,EAAM7Y,kBAAiB,CAACC,EAAUmB,K,IACnCnB,GAAa,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,OAChB,UAApB72B,KAAK/G,MAAM8C,KACTvC,IAAQiN,EAAAA,IACV4/B,EAAAA,EAAAA,IAAwB7a,EAAOnV,EAASyU,KAAKY,OAAQ1rB,OAErDsmC,EAAAA,EAAAA,IAAoC9sC,EAAKgyB,EAAOnV,EAASyU,KAAKY,OAAQ1rB,OAGxEumC,EAAAA,EAAAA,IAAoC/sC,EAAKgyB,EAAOnV,EAASyU,KAAKY,OAAQ1rB,MAE1E,GAEJ,CAEQwmC,uCAAAA,CAAwChtC,EAAaJ,GAC3D,OAAOA,aAAAA,EAAAA,EAAUgd,kBAAiB,K,IACV,EAUJ6Y,EAVlB,MAAMwX,EAA+B,QAAf,EAAAzmC,KAAK/G,MAAMkI,YAAX,eAAiBlI,MAAM3C,SAAS,GACtD,KAAMmwC,aAAyBnpB,EAAAA,IAC7B,MAAM,IAAIrb,MAAM,6BAElB,MAAMupB,EAAQib,EAAcxtC,MAAMkI,KAClC,KAAMqqB,aAAiBja,EAAAA,IACrB,MAAM,IAAItP,MAAM,gFAGlB,MACMy+B,EAA4B,QAAhBzR,EADJp2B,EAAAA,GAAWkyB,QAAQ/qB,MACT/G,MAAM6xB,YAAZmE,IAAAA,OAAAA,EAAAA,EAAkBvD,OAE/BgV,GAKL6F,EAAAA,EAAAA,IAAoC/sC,EAAKgyB,EAAOkV,EAAW1gC,MAJzDqB,EAAAA,EAAOC,KAAK,6EAIkD,GAEpE,CAKA,wCAAgD9H,GAC9C,MAAMktC,EAAUltC,IAAQiN,EAAAA,GAClBrN,EAAWstC,GAAUzwB,EAAAA,EAAAA,IAAkBjW,OAAQmX,EAAAA,EAAAA,IAAkBnX,MACvE,OAAO5G,aAAAA,EAAAA,EAAUgd,kBAAiB,K,IACV,EAUJ6Y,EAVlB,MAAMwX,EAA+B,QAAf,EAAAzmC,KAAK/G,MAAMkI,YAAX,eAAiBlI,MAAM3C,SAAS,GACtD,KAAMmwC,aAAyBnpB,EAAAA,IAC7B,MAAM,IAAIrb,MAAM,6BAElB,MAAMupB,EAAQib,EAAcxtC,MAAMkI,KAClC,KAAMqqB,aAAiBja,EAAAA,IACrB,MAAM,IAAItP,MAAM,gFAGlB,MACMy+B,EAA4B,QAAhBzR,EADJp2B,EAAAA,GAAWkyB,QAAQ/qB,MACT/G,MAAM6xB,YAAZmE,IAAAA,OAAAA,EAAAA,EAAkBvD,OAE/BgV,EAKDgG,GACFL,EAAAA,EAAAA,IAAwB7a,EAAOkV,EAAW1gC,OAE1CsmC,EAAAA,EAAAA,IAAoC9sC,EAAKgyB,EAAOkV,EAAW1gC,MAP3DqB,EAAAA,EAAOC,KAAK,6EAQd,GAEJ,CA1MAZ,WAAAA,CAAYzH,GACV0H,MAAM1H,GA+DR,OAAQktC,6BAA6Bvb,I,IAEjBqE,EAGI,EAJtB,MAAMA,EAAQp2B,EAAAA,GAAWkyB,QAAQ/qB,MAC3B0gC,EAA4B,QAAhBzR,EAAAA,EAAMh2B,MAAM6xB,YAAZmE,IAAAA,OAAAA,EAAAA,EAAkBvD,OAC9BlyB,EAAMwG,KAAK/G,MAAMugC,OAEjBiN,EAA+B,QAAf,EAAAzmC,KAAK/G,MAAMkI,YAAX,eAAiBlI,MAAM3C,SAAS,GACtD,KAAMmwC,aAAyBnpB,EAAAA,IAC7B,MAAM,IAAIrb,MAAM,6BAElB,MAAMupB,EAAQib,EAAcxtC,MAAMkI,KAElC,KAAMqqB,aAAiBja,EAAAA,IACrB,MAAM,IAAItP,MAAM,wBAGlBjC,KAAK2mC,kBAAkBjG,EAAWlnC,EAAKgyB,GAEf,UAApBxrB,KAAK/G,MAAM8C,KACbiE,KAAKkW,MAAMC,IAAInW,KAAK4mC,wCAAwCptC,KAE5DwG,KAAKkW,MAAMC,IAAInW,KAAKwmC,wCAAwChtC,GAAKsc,EAAAA,EAAAA,IAAkB9V,QACnFA,KAAKkW,MAAMC,IAAInW,KAAKwmC,wCAAwChtC,GAAKmd,EAAAA,EAAAA,IAAoB3W,SAGvFA,KAAKkW,MAAMC,IAAInW,KAAK6mC,qBAAqBrtC,EAAKy1B,EAAOzD,IAErDZ,EAAQkc,yBAA2B,CAAC7jC,EAAeq8B,KACjD,IAAI71B,EAGAA,EAFoB,UAApBzJ,KAAK/G,MAAM8C,KACTvC,IAAQiN,EAAAA,IACDsgC,EAAAA,EAAAA,IAAsB9jC,EAAOjD,OAE7BgnC,EAAAA,EAAAA,IAAsBxtC,EAAKyJ,EAAOjD,OAGpCinC,EAAAA,EAAAA,IAAsBztC,EAAKyJ,EAAOjD,OAG7C5D,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgB4qC,+BACpC,CACErpC,MAAOoF,EACPwG,UACF,CAEH,IA5GDzJ,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA0MK,SAAS2uB,EAAsBD,EAAqCyY,GACzE,MAAMzyB,EAASuxB,EAAsBkB,GACrCzY,EAAmBhvB,SAAS,CAC1BuB,UAAWyT,EACXA,OAAQA,EACR0xB,UAAW1xB,GAEf,CAEA,SAASuxB,EAAsBkB,GAC7B,OAAOA,IAAqB9Z,EAAAA,GAAqBmB,UAAY,GAAK,GACpE,CAnNE,EANW+M,EAMG7hC,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,GAASxI,EAAMI,WACvB,OAAIoI,EAEA,kBAAC5M,MAAAA,KACC,kBAAC4M,EAAKzH,UAAS,CAACf,MAAOwI,KAKtB,IAAI,IAmOR,MAAMu0B,EAA0B,qB,yjBCrRhC,MAAMb,EAAe,I,IAAA,MAAE5xB,EAAK,SAAEsd,EAAQ,YAAED,EAAW,QAAEtsB,EAAO,OAAEozC,GAAwB,EAAbC,EAAAA,EAAAA,EAAAA,CAAlDpkC,QAAOsd,WAAUD,cAAatsB,UAASozC,WACnE,MAAMhzC,GAASC,EAAAA,EAAAA,YAAWC,GAC1B,OACE,kBAACgzC,EAAAA,M,sUAAKA,CAAAA,CACJrkC,MAAOA,EACPsd,SAAUA,EACV6mB,OACE,kBAAC7lB,OAAAA,CAAK/sB,UAAWJ,EAAOmzC,eACrBvzC,GAAWiP,EACV,kBAACwe,EAAAA,WAAUA,CACTtnB,aAAY,eACZ0nB,QAAS,eACT7sB,QAAShB,EACT0D,KAAK,QACLlD,UAAWJ,EAAOozC,iBAElBxxC,EACHoxC,GAAUA,GAGf/mB,OAAQ,kBAAC5oB,EAAAA,KAAIA,CAACC,KAAK,WACnB4oB,YAAaA,GACT+mB,GAAAA,EAKJ/yC,EAAaoB,IAA0B,CAC3C6xC,eAAe5xC,EAAAA,EAAAA,KAAI,CACjBiC,IAAKlC,EAAMmC,QAAQ,IACnBjC,QAAS,gBAEX4xC,WAAW7xC,EAAAA,EAAAA,KAAI,CACbqF,OAAQ,a,2TCXZ,eAAKysC,G,6DAAAA,C,CAAL,CAAKA,GAAAA,CAAAA,GAkBL,eAAKC,G,uDAAAA,C,CAAL,CAAKA,GAAAA,CAAAA,GAkDE,MAAMC,UAAkCjvC,EAAAA,GAoB7CmH,UAAAA,GAEE,MAIMf,GAJW+0B,EAAAA,EAAAA,KACfV,EAAAA,EAAAA,IAA6BnzB,KAAK/G,MAAMyvB,UAAW1oB,KAAK/G,MAAMyI,cAC9D1B,MAEuB/G,MAAM6F,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQwG,KAAK/G,MAAMyvB,YACpEkf,EAAW9oC,EAAQslB,MAAM3f,GAAMA,EAAErB,WAAa6B,EAAAA,GAASqtB,KAAO7tB,EAAErB,WAAa6B,EAAAA,GAASotB,KACtFwV,EAAW/oC,EAAQslB,MAAM3f,GAAMA,EAAErB,WAAa6B,EAAAA,GAASutB,KAAO/tB,EAAErB,WAAa6B,EAAAA,GAASstB,KAC5F,IAAIxd,EAA4D,CAAC,EAEjE,GAA6B,aAAzB/U,KAAK/G,MAAM+jC,WAAqD,UAAzBh9B,KAAK/G,MAAM+jC,UAAuB,CAC3E,GAAI4K,EAAU,CACZ,MAAME,EAAiBC,GAAuBnkC,EAAAA,EAAAA,IAAyBgkC,GAAU3kC,MAAOjD,KAAK/G,MAAM+jC,WAE/F8K,IACF/yB,EAAYsd,GAAKyV,EAAe7kC,MAChC8R,EAAYizB,IAAMF,EAAeG,KACjClzB,EAAYud,IAAMsV,EAASxkC,WAAa6B,EAAAA,GAASqtB,IAErD,CAEA,GAAIuV,EAAU,CACZ,MAAMC,EAAiBC,GAAuBnkC,EAAAA,EAAAA,IAAyBikC,GAAU5kC,MAAOjD,KAAK/G,MAAM+jC,WAE/F8K,IACF/yB,EAAYwd,GAAKuV,EAAe7kC,MAChC8R,EAAYmzB,IAAMJ,EAAeG,KACjClzB,EAAYyd,IAAMqV,EAASzkC,WAAa6B,EAAAA,GAASutB,IAErD,CACF,KAAO,CAEL,GAAIoV,EAAU,CACZ,MAAME,GAAiBlkC,EAAAA,EAAAA,IAAyBgkC,GAAU3kC,MAC1D8R,EAAYsd,GAAK8V,OAAOL,GACxB/yB,EAAYizB,IAAM,GAClBjzB,EAAYud,IAAMsV,EAASxkC,WAAa6B,EAAAA,GAASqtB,GACnD,CACA,GAAIuV,EAAU,CACZ,MAAMC,GAAiBlkC,EAAAA,EAAAA,IAAyBikC,GAAU5kC,MAC1D8R,EAAYwd,GAAK4V,OAAOL,GACxB/yB,EAAYmzB,IAAM,GAClBnzB,EAAYyd,IAAMqV,EAASzkC,WAAa6B,EAAAA,GAASutB,GACnD,CACF,CAEwC,IAApCnlB,OAAOrD,KAAK+K,GAAa7b,SAC3B6b,EAAYqzB,mBAAoB,GAGlCpoC,KAAKN,SAASqV,EAChB,CAEAszB,QAAAA,GAGMroC,KAAK/G,MAAMo5B,IACbQ,EAAAA,EAAAA,IACE7yB,KAAK/G,MAAMyvB,UACX1oB,KAAK/G,MAAMo5B,GAAG/sB,WAAatF,KAAK/G,MAAM+uC,IACtChoC,KAAK/G,MAAMq5B,IAAMrtB,EAAAA,GAASqtB,IAAMrtB,EAAAA,GAASotB,GACzCryB,KACAA,KAAK/G,MAAMyI,eAGb+wB,EAAAA,EAAAA,IACEzyB,KAAK/G,MAAMyvB,UACX1oB,KACAA,KAAK/G,MAAMq5B,IAAMrtB,EAAAA,GAASqtB,IAAMrtB,EAAAA,GAASotB,GACzCryB,KAAK/G,MAAMyI,cAIX1B,KAAK/G,MAAMs5B,IACbM,EAAAA,EAAAA,IACE7yB,KAAK/G,MAAMyvB,UACX1oB,KAAK/G,MAAMs5B,GAAGjtB,WAAatF,KAAK/G,MAAMivC,IACtCloC,KAAK/G,MAAMu5B,IAAMvtB,EAAAA,GAASutB,IAAMvtB,EAAAA,GAASstB,GACzCvyB,KACAA,KAAK/G,MAAMyI,eAGb+wB,EAAAA,EAAAA,IACEzyB,KAAK/G,MAAMyvB,UACX1oB,KACAA,KAAK/G,MAAMu5B,IAAMvtB,EAAAA,GAASutB,IAAMvtB,EAAAA,GAASstB,GACzCvyB,KAAK/G,MAAMyI,cAIgB7I,EAAAA,GAAWwE,YAAY2C,KAAMm/B,GACrCmJ,eACzB,CAhHA5nC,WAAAA,CAAYzH,GACV,IAAIsvC,EACJ,MAAMvL,EAA4C/jC,EAAM+jC,UACxD,GAAkB,UAAdA,EACFuL,EAAQ,CAAEL,IAAK,IAAoBF,IAAK,UACnC,GAAkB,aAAdhL,EACTuL,EAAQ,CAAEL,IAAK,IAAwBF,IAAK,SACvC,IAAkB,UAAdhL,EAGT,MAAM,IAAI/6B,MAAM,mCAAmC+6B,KAFnDuL,EAAQ,CAAEL,IAAK,GAAIF,IAAK,GAG1B,CAGArnC,M,sUAAM,IAAK1H,EAAUsvC,IAmGvBC,EAAAA,KAAAA,kBAAkBvkC,IAChB,MAAMwkC,OAAiCzyC,IAAlBgK,KAAK/G,MAAMo5B,SAAsCr8B,IAAlBgK,KAAK/G,MAAMs5B,GACjD,UAAVtuB,EAAEzK,KAAoBivC,GACxBzoC,KAAKqoC,UACP,IArGAroC,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA+RK,SAAS+nC,EACdW,EACAC,GAEA,GAAkB,aAAdA,EAA0B,CAC5B,MAGMC,EAHiBv7B,OAAOlL,OAAOslC,GAGArjB,MAAMwkB,IACzC,MAAMC,EAAsBD,EAAc1vC,OAC1C,OAAOwvC,EAAYt7B,OAA6B,EAAvBy7B,KAA8BD,CAAa,IAGtE,GAAIA,EAAe,CACjB,MAAM3lC,EAAQklC,OAAOO,EAAY7lC,QAAQ+lC,EAAe,KACxD,IAAKE,MAAM7lC,GACT,MAAO,CACLglC,KAAMW,EACN3lC,MAAOA,EAGb,CACF,CAEA,GAAkB,UAAd0lC,EAAuB,CACzB,MAKMI,EALc17B,OAAOlL,OAAOulC,GAE/BjiC,MAAK,CAACzO,EAAG0O,IAAMA,EAAExM,OAASlC,EAAEkC,SAGAkrB,MAAM2kB,IACnC,MAAMC,EAAkBD,EAAW7vC,OACnC,OAAOwvC,EAAYt7B,OAAyB,EAAnB47B,KAA0BD,CAAU,IAG/D,GAAIA,EAAY,CACd,MAAM9lC,EAAQklC,OAAOO,EAAY7lC,QAAQkmC,EAAY,KACrD,IAAKD,MAAM7lC,GACT,MAAO,CACLglC,KAAMc,EACN9lC,MAAOA,EAGb,CACF,CAGF,CAEA,SAASgmC,EACPjM,GAEA,GAAkB,aAAdA,EAA0B,CAE5B,OADa3vB,OAAOrD,KAAKy9B,GACbnuC,KAAKE,IACR,CACLrB,KAAMqB,EACNyJ,MAAOwkC,EAAqBjuC,GAC5BqE,MAAOrE,KAGb,CAEA,GAAkB,UAAdwjC,EAAuB,CAEzB,OADa3vB,OAAOrD,KAAK09B,GACbpuC,KAAKE,IACR,CACLrB,KAAMqB,EACNyJ,MAAOykC,EAAiBluC,GACxBqE,MAAOrE,KAGb,CAEA,MAAMwI,EAAQ,IAAIC,MAAM,uBAAuB+6B,KAE/C,MADA37B,EAAAA,EAAOW,MAAMA,EAAO,CAAEgC,IAAK,uCACrBhC,CACR,CArQE,EAzHW2lC,EAyHGjuC,aAAY,EAAGf,YAC3B,MAAMuwC,GAAgB70C,EAAAA,EAAAA,YAAW80C,IAC3B,UAAEzgB,EAAS,GAAE2J,EAAE,GAAEE,EAAE,IAAED,EAAG,IAAEE,EAAG,IAAEwV,EAAG,IAAEE,EAAG,UAAElL,EAAS,kBAAEoL,GAAsBzvC,EAAMI,WAChFqwC,EAAyB,UAAdpM,GAAyBA,IAActU,EAAY,IAAIsU,UAAehnC,EAEjFqzC,EAAyBxwC,EAAAA,GAAWwE,YAAY1E,EAAOwmC,GACvDsJ,OAAsBzyC,IAAPq8B,QAA2Br8B,IAAPu8B,EAEzC,OACE,kBAAC+W,EAAAA,oBAAmBA,CAACC,YAAY,EAAMv0C,QAAS,IAAMq0C,EAAuBf,iBAC3E,kBAACkB,EAAAA,MAAKA,CAACx2B,UAAU,SAASpb,IAAK,EAAG6xC,KAAK,WACrC,kBAACl1C,MAAAA,CAAIC,UAAW00C,EAAcQ,KAAKvoC,MACjC,kBAAC5M,MAAAA,CAAIC,UAAW00C,EAAcQ,KAAKr0C,OAChCqzB,EAAU,IAAE0gB,GAGf,kBAAC70C,MAAAA,CAAIC,UAAW00C,EAAcQ,KAAKC,WAEjC,kBAACC,EAAAA,SAAQA,CAACp1C,UAAW00C,EAAcQ,KAAKG,UACtC,kBAAClE,EAAAA,MAAKA,CACJ1wC,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqBC,0BAC5DC,YAAY,EACZ11C,WAAW6K,EAAAA,EAAAA,IAAG6pC,EAAcQ,KAAKljC,MAAO0iC,EAAcQ,KAAKS,iBAE3D,kBAACvS,EAAAA,OAAMA,CACLpjC,UAAW00C,EAAcQ,KAAKU,eAC9B1pB,kBAAkB,EAClBzd,WAAejN,IAARs8B,EAAoBA,EAAIhtB,WAAa,QAC5CjD,QAAS,CACP,CAAExE,MAAO,eAAgBoF,MAAO,SAChC,CAAEpF,MAAO,wBAAyBoF,MAAO,SAE3Csd,SAAWtd,GAAUtK,EAAM+G,SAAS,CAAE4yB,IAAqB,SAAhBrvB,EAAMA,WAGrD,kBAAC0iC,EAAAA,MAAKA,CACJ1wC,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqBK,iBAC5DH,YAAY,EACZ11C,UAAW00C,EAAcQ,KAAKljC,OAE9B,kBAAC8gC,EAAAA,MAAKA,CACJgD,iBAAkB3xC,EAAM6vC,eACxB+B,WAAW,EACXhqB,SAAWtc,IACTtL,EAAM+G,SAAS,CACb2yB,GAA8B,KAA1BpuB,EAAEumC,cAAcvnC,MAAeklC,OAAOlkC,EAAEumC,cAAcvnC,YAASjN,GACnE,EAEJxB,UAAW00C,EAAcQ,KAAKe,YAC9BxnC,MAAOovB,EACPt2B,KAAM,YAGK,UAAdihC,GACC,kBAAC0N,EAAAA,MAAKA,KACJ,kBAAC/E,EAAAA,MAAKA,CACJ1wC,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqBW,qBAC5DT,YAAY,EACZ11C,UAAW00C,EAAcQ,KAAKljC,MAC9B3I,MAAO,kBAAC0jB,OAAAA,CAAK/sB,UAAW00C,EAAcQ,KAAKkB,gBAAgB,SAE3D,kBAAChT,EAAAA,OAAMA,CACLrX,SAAWtc,IACTtL,EAAM+G,SAAS,CACbsoC,IAAK/jC,EAAEhB,OACP,EAEJyd,kBAAkB,EAClBre,QAAS4mC,EAAejM,GACxBxoC,UAAW00C,EAAcQ,KAAKmB,YAC9B5nC,MAAO+kC,OAQjB,kBAAC4B,EAAAA,SAAQA,CAACp1C,UAAW00C,EAAcQ,KAAKG,UACtC,kBAAClE,EAAAA,MAAKA,CACJ1wC,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqBc,uBAC5DZ,YAAY,EACZ11C,WAAW6K,EAAAA,EAAAA,IAAG6pC,EAAcQ,KAAKljC,MAAO0iC,EAAcQ,KAAKS,iBAE3D,kBAACvS,EAAAA,OAAMA,CACLpjC,UAAW00C,EAAcQ,KAAKU,eAC9B1pB,kBAAkB,EAClBzd,WAAejN,IAARw8B,EAAoBA,EAAIltB,WAAa,QAC5CjD,QAAS,CACP,CAAExE,MAAO,YAAaoF,MAAO,SAC7B,CAAEpF,MAAO,qBAAsBoF,MAAO,SAExCsd,SAAWtd,GAAUtK,EAAM+G,SAAS,CAAE8yB,IAAqB,SAAhBvvB,EAAMA,WAGrD,kBAAC0iC,EAAAA,MAAKA,CACJ1wC,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqBe,cAC5Db,YAAY,EACZ11C,UAAW00C,EAAcQ,KAAKljC,OAE9B,kBAAC8gC,EAAAA,MAAKA,CACJgD,iBAAkB3xC,EAAM6vC,eACxBjoB,SAAWtc,GACTtL,EAAM+G,SAAS,CAAE6yB,GAA8B,KAA1BtuB,EAAEumC,cAAcvnC,MAAeklC,OAAOlkC,EAAEumC,cAAcvnC,YAASjN,IAEtFxB,UAAW00C,EAAcQ,KAAKe,YAC9BxnC,MAAOsvB,EACPx2B,KAAM,YAGK,UAAdihC,GACC,kBAAC0N,EAAAA,MAAKA,KACJ,kBAAC/E,EAAAA,MAAKA,CACJ1wC,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqBgB,kBAC5Dd,YAAY,EACZ11C,UAAW00C,EAAcQ,KAAKljC,MAC9B3I,MAAO,kBAAC0jB,OAAAA,CAAK/sB,UAAW00C,EAAcQ,KAAKkB,gBAAgB,SAE3D,kBAAChT,EAAAA,OAAMA,CACLrX,SAAWtc,IACTtL,EAAM+G,SAAS,CACbwoC,IAAKjkC,EAAEhB,OACP,EAEJyd,kBAAkB,EAClBre,QAAS4mC,EAAejM,GACxBxoC,UAAW00C,EAAcQ,KAAKmB,YAC9B5nC,MAAOilC,QASnB,kBAAC3zC,MAAAA,CAAIC,UAAW00C,EAAcQ,KAAKuB,SAChC7C,GACC,kBAAC1zC,EAAAA,OAAMA,CACLO,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqB3vC,aAC5DkjB,UAAW6qB,EACXpzC,QAAS,KACP2D,EAAM+G,SAAS,CACb2yB,QAAIr8B,EACJu8B,QAAIv8B,IAEN2C,EAAM0vC,UAAU,EAElBxzC,KAAM,KACNF,QAAS,cACTC,KAAM,WACP,UAIH,kBAACF,EAAAA,OAAMA,CACLO,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqBkB,aAC5D3tB,SAAUkrB,EACVzzC,QAAS,IAAM2D,EAAM0vC,WACrBxzC,KAAM,KACNF,QAAS,UACTC,KAAM,UACNmH,KAAM,UACP,OAID,kBAACrH,EAAAA,OAAMA,CACLO,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOC,qBAAqBmB,aAC5Dn2C,QAAS,IAAMq0C,EAAuBf,gBACtCzzC,KAAM,KACNF,QAAS,YACTC,KAAM,WACP,iBA0Ff,MAAMu0C,EAAoBzzC,IAA0B,CAClDg0C,KAAM,CACJuB,SAASt1C,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACTsH,SAAU,OACVrH,eAAgB,WAChB+B,IAAKlC,EAAMmC,QAAQ,KACnBqH,UAAWxJ,EAAMmC,QAAQ,KAE3BuyC,gBAAgBz0C,EAAAA,EAAAA,KAAI,CAClByhC,SAAU,UAEZyT,aAAal1C,EAAAA,EAAAA,KAAI,CACfyhC,SAAU,SAEZqT,aAAa90C,EAAAA,EAAAA,KAAI,CACfqJ,MAAO,SAET2qC,WAAWh0C,EAAAA,EAAAA,KAAI,CACbC,QAAS,OACToI,cAAe,SACfukC,WAAY7sC,EAAMmC,QAAQ,GAC1BguB,cAAe,IAEjBrf,OAAO7Q,EAAAA,EAAAA,KAAI,CACTC,QAAS,OACTqH,WAAY,SACZ2X,aAAclf,EAAMmC,QAAQ,KAE9BsyC,gBAAgBx0C,EAAAA,EAAAA,KAAI,CAClB8vB,YAAa/vB,EAAMmC,QAAQ,KAE7B+yC,gBAAgBj1C,EAAAA,EAAAA,KAAI,CAClBgC,WAAYjC,EAAMmC,QAAQ,GAC1B4tB,YAAa/vB,EAAMmC,QAAQ,OAE7BuzC,kBAAkBz1C,EAAAA,EAAAA,KAAI,CACpBqJ,MAAO,UAETqsC,kBAAkB11C,EAAAA,EAAAA,KAAI,CACpBgC,WAAYjC,EAAMmC,QAAQ,GAC1B4tB,YAAa/vB,EAAMmC,QAAQ,KAE7BgyC,UAAUl0C,EAAAA,EAAAA,KAAI,CACZC,QAAS,OACTqH,WAAY,SACZpH,eAAgB,gBAChBmJ,MAAO,OACP4V,aAAc,IAEhBvf,OAAOM,EAAAA,EAAAA,KAAI,CAAC,GACZwL,MAAMxL,EAAAA,EAAAA,KAAI,CACR6F,QAAS9F,EAAMmC,QAAQ,KAEzBkF,GAAGpH,EAAAA,EAAAA,KAAI,CACLuL,SAAU,S,y6BCrehB,MAAMoqC,EAAgB,UAChBC,EAAgB,UAChBC,EAAuB,gBAEtB,MAAMrM,UAA+BzmC,EAAAA,GAM1C6nB,QAAAA,CAAStd,GACP,MAAM7J,EAAW4G,KAAKyrC,cAChBrY,EAAeh6B,EAASH,MAAMvB,KAC9ByqB,EAAiBniB,KAAK0rC,kBAAkBtyC,GACxC64B,GAAaC,EAAAA,EAAAA,IAAgCkB,EAAcjR,IAC9CA,aAAAA,EAAAA,EAAgB/e,YAAa6B,EAAAA,GAAS2tB,UAAYX,EAAWhvB,QAAU0oC,EAAAA,IAExE1oC,EAAMA,QAAUqoC,EAChCtrC,KAAK02B,YAAYtD,GACRnwB,EAAMA,QAAUqoC,EACzBtrC,KAAK4rC,oBAAoBxY,GAChBnwB,EAAMA,QAAUsoC,EACzBvrC,KAAK6rC,oBAAoBzY,GAChBnwB,EAAMA,QAAUuoC,GACzBxrC,KAAK8rC,qBAAqB1Y,GAG5BpzB,KAAKN,SAAS,CACZqsC,cAAe9oC,GAEnB,CAwJQyoC,iBAAAA,CAAkBtyC,GACxB,IAAI,UAAEsvB,IAAc0X,EAAAA,EAAAA,MACpB,GAAIpgC,KAAK/G,MAAMyvB,YAAcA,EAC3B,OAAOtvB,aAAAA,EAAAA,EAAUH,MAAM6F,QAAQslB,MAAMjrB,GAC5BA,EAAOK,MAAQwG,KAAK/G,MAAMyvB,WAKvC,CAEO7oB,UAAAA,G,IAGDi+B,EAAAA,EAFJ,MAAMA,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,KAEtB,QAAxBwoB,EAAAA,EAAa7kC,MAAMg2B,aAAnB6O,IAAAA,GAAoC,QAApCA,EAAAA,EAA0B7kC,MAAM6xB,YAAhCgT,IAAAA,OAAAA,EAAAA,EAAsC7kC,SAAU29B,EAAAA,aAAaC,MAC/D72B,KAAKgsC,oBAGPhsC,KAAKkW,MAAMC,IACTtd,EAAAA,GAAWkyB,QAAQ/qB,MAAMoW,kBAAkBC,I,IACrCA,EACEynB,EAAAA,EAKFA,GANa,QAAbznB,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,QACZ,QAAxBiH,EAAAA,EAAa7kC,MAAMg2B,aAAnB6O,IAAAA,GAAoC,QAApCA,EAAAA,EAA0B7kC,MAAM6xB,YAAhCgT,IAAAA,OAAAA,EAAAA,EAAsC7kC,SAAU29B,EAAAA,aAAaC,MAC/D72B,KAAKgsC,oBAGPhsC,KAAKkW,MAAMC,IACe,QAAxB2nB,EAAAA,EAAa7kC,MAAMg2B,aAAnB6O,IAAAA,OAAAA,EAAAA,EAA0B1nB,kBAAkB61B,I,IACtCA,GAAsB,QAAtBA,EAAAA,EAAkBnhB,YAAlBmhB,IAAAA,OAAAA,EAAAA,EAAwBhzC,SAAU29B,EAAAA,aAAaC,MACjD72B,KAAKgsC,mBACP,KAGN,IAGN,CA2CO1D,aAAAA,GACLtoC,KAAKN,SAAS,CACZwsC,aAAclsC,KAAK/G,MAAMizC,aAE7B,CAEQF,iBAAAA,G,IAEkClO,EADxC,MAAMA,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAC5C62B,GAAgBC,EAAAA,EAAAA,IAA0C,QAAxBtO,EAAAA,EAAa7kC,MAAMg2B,aAAnB6O,IAAAA,OAAAA,EAAAA,EAA0B7kC,MAAM6xB,MAClE/C,EAAoCokB,aAAAA,EAAAA,EAAexkC,OAAOyc,MAAM5d,GAAyB,WAAfA,EAAM9O,OAEhFozB,EAAOjyB,EAAAA,GAAWkyB,QAAQ/qB,MAC1BgrB,GAAcC,EAAAA,EAAAA,IAAiBH,GAAOzZ,GAAMA,aAAa6Z,EAAAA,IAAkBA,EAAAA,IACjF,GAAIF,EAAa,CACf,MACM1jB,EADU0jB,EAAY/xB,MAAMgxB,QACZ,IAClB3iB,aAAAA,EAAAA,EAAO9F,KAAKnI,SAAS,mBACvB2G,KAAKN,SAAS,CACZ2sC,mBAAmB,GAGzB,CAEA,IAAKtkB,IAAWokB,EAId,YAHAnsC,KAAKN,SAAS,CACZ4sC,kBAAkB,IAItB,MAAMlzC,EAAW4G,KAAKyrC,cAEhBc,EAAyBxkB,EAAO5lB,OAAOqqC,QAAO,CAACC,EAAK1kB,MACpDA,aAAAA,EAAAA,EAAS/nB,KAAK/G,MAAMyvB,aACtB+jB,IAEKA,IACN,GAEGjhB,EAAQ3yB,EAAAA,GAAWwE,YAAY2C,KAAMuR,EAAAA,IAC3C,QAA+Bvb,IAA3Bu2C,GAAwCJ,EAAcjzC,OAAS,EAAG,CACpE,MAAMwzC,GAAc,EAA0BP,EAAcjzC,OAAU,KAAKitB,iBACrE4G,EAAc,GAAG/sB,KAAK/G,MAAMyvB,uBAAuBgkB,SAAkBP,EAAcjzC,2BAGzFsyB,EAAM9rB,SAAS,CACbqtB,eAEJ,MACEvB,EAAM9rB,SAAS,CACbqtB,iBAAa/2B,IAKjB,MAAMmsB,EAAiBniB,KAAK0rC,kBAAkBtyC,GACxCuzC,EACJxqB,GAAkB/oB,EAASH,MAAMvB,OAASse,EAAAA,IAAapS,EAAAA,EAAAA,IAAyBue,QAAkBnsB,EAEhGu2C,EAAyBJ,EAAcjzC,SAAUyzC,aAAAA,EAAAA,EAAqB1pC,SAAU0oC,EAAAA,GAClF3rC,KAAKN,SAAS,CACZ4sC,kBAAkB,IAGpBtsC,KAAKN,SAAS,CACZ4sC,kBAAkB,GAGxB,CAEQb,WAAAA,GACN,OAAIzrC,KAAK/G,MAAM+jC,YAAc9U,EAAAA,GAAW1hB,OAC/BsP,EAAAA,EAAAA,IAAkB9V,MAChBA,KAAK/G,MAAMyvB,YAAcjiB,EAAAA,IAC3BwP,EAAAA,EAAAA,IAAkBjW,OAElBmX,EAAAA,EAAAA,IAAkBnX,KAE7B,CA5UAU,WAAAA,CAAYzH,GACV0H,MAAM,OAAK1H,GAAAA,CAAOizC,aAAa,KAqNjC,OAAOJ,wBAAwBpqC,IAC7B,MAAMkrC,GAAqBlT,EAAAA,EAAAA,IAAuB15B,MAC5Cg9B,GAAYC,EAAAA,EAAAA,IAAqBj9B,KAAK/G,MAAMyvB,UAAWkkB,GAE7D,IAAK5P,GAA2B,WAAdA,GAAwC,YAAdA,GAAyC,QAAdA,EAAqB,CAC1F,MAAMh7B,EAAQ,IAAIC,MAAM,yBAAyB+6B,KAEjD,MADA37B,EAAAA,EAAOW,MAAMA,EAAO,CAAEgC,IAAK,2CAA2Cg5B,MAChEh7B,CACR,CAEAhC,KAAKN,SAAS,CACZ2lB,QAAS,IAAIsiB,EAA0B,CAAEjf,UAAW1oB,KAAK/G,MAAMyvB,UAAWhnB,eAAcs7B,gBAE1Fh9B,KAAKsoC,eAAe,IAGtB,OAAOuE,qBAAoB,KACzB,MAAM/O,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAClD,OAAOw3B,EAAAA,EAAAA,IAAsB9sC,KAAK/G,MAAM+jC,UAAWh9B,KAAK/G,MAAMyvB,UAAWoV,EAAa,IAGxF,OAAO8N,uBAAuBlqC,KAC5BowB,EAAAA,EAAAA,IAAa9xB,KAAK/G,MAAMyvB,UAAWijB,EAAAA,GAAsB,UAAW3rC,KAAM0B,EAAa,IAGzF,OAAOmqC,uBAAuBnqC,KAE5BowB,EAAAA,EAAAA,IAAa9xB,KAAK/G,MAAMyvB,UAAWijB,EAAAA,GAAsB,UAAW3rC,KAAM0B,EAAa,IAGzF,OAAOg1B,eAAeh1B,KACpBowB,EAAAA,EAAAA,IAAa9xB,KAAK/G,MAAMyvB,UAAWijB,EAAAA,GAAsB,QAAS3rC,KAAM0B,EAAa,IAGvF,OAAOqwB,gBAAgBrwB,KACrBqwB,EAAAA,EAAAA,IAAa/xB,KAAK/G,MAAMyvB,UAAW1oB,KAAM0B,GACrC1B,KAAK/G,MAAMyvB,YAAcjiB,EAAAA,KAC3BqZ,EAAAA,EAAAA,IAAmB9f,KACrB,IA1PAA,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA4UF,SAAS+sC,EAAyBp5C,GAChC,MAAMS,GAASC,EAAAA,EAAAA,YAAW24C,GAC1B,OACE,kBAACzrB,OAAAA,CAAK/sB,UAAWJ,EAAO24B,aACrBp5B,EAAMsrB,UAAY,kBAACsC,OAAAA,CAAK/sB,UAAWJ,EAAO6qB,WAC1CtrB,EAAMwE,KAGb,CA5TE,EA5BWgnC,EA4BGzlC,aAAY,EAAGf,YAC3B,MAAM,mBACJymC,EAAkB,UAClB1W,EAAS,iBACT4jB,EAAgB,kBAChBD,EAAiB,cACjBN,EAAa,QACb1mB,EAAO,YACP6mB,EAAW,UACXlP,GACErkC,EAAMI,WACJK,EAAWT,EAAM8yC,cACjBrY,EAAeh6B,EAASL,WAAWrB,KACnCyqB,EAAiBxpB,EAAM+yC,kBAAkBtyC,GACzC64B,GAAaC,EAAAA,EAAAA,IAAgCkB,EAAcjR,GAC3D/tB,GAASC,EAAAA,EAAAA,YAAWC,GACpB24C,GAAaC,EAAAA,EAAAA,QAA0B,MACvCC,EACJnQ,IAAc9U,EAAAA,GAAWrqB,OACzBzE,EAASH,MAAMvB,OAASse,EAAAA,IAC8E,IAAtG5c,EAASH,MAAM6F,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQkvB,GAAajkB,EAAErB,WAAa6B,EAAAA,GAASC,QAAOhM,OAEvFrF,GAAasuB,aAAAA,EAAAA,EAAgB/e,YAAa6B,EAAAA,GAAS2tB,UAAYX,EAAWhvB,QAAU0oC,EAAAA,GACpFyB,IAAmBjrB,E,IAGvB4pB,EADF,MAAMsB,EACgB,QAApBtB,EAAAA,aAAAA,EAAAA,EAAe9oC,aAAf8oC,IAAAA,EAAAA,EAAyBl4C,EAAay3C,EAAgBe,EAAoBb,EAAuBF,EAE7FgC,KAA2BnrB,aAAAA,EAAAA,EAAgB/e,WAC7C,CAAC6B,EAAAA,GAASqtB,IAAKrtB,EAAAA,GAASotB,GAAIptB,EAAAA,GAASutB,IAAKvtB,EAAAA,GAASstB,IAAIl5B,SAAS8oB,EAAe/e,UAE7EmqC,EAAkBF,IAAwB7B,GAAwB8B,EAClEE,EAAkBH,IAAwB/B,IAAkBiC,EAE5DE,EAA+C,CACnDxqC,MAAOqoC,EACPoC,UAAW,IACT,kBAACX,EAAAA,CAAyB9tB,SAAUuuB,EAAiBr1C,KAAM,8BAA8BuwB,OAGvFilB,EAA+C,CACnD1qC,MAAOsoC,EACPmC,UAAW,IAAM,kBAACX,EAAAA,CAAyB9tB,UAAU,EAAO9mB,KAAM,8BAA8BuwB,OAE5FklB,EAA+C,CACnD3qC,MAAOuoC,EACPkC,UAAW,IACT,kBAACX,EAAAA,CAAyB9tB,SAAUsuB,EAAiBp1C,KAAM,2BAA2BuwB,YAIpFrmB,EAA0C,GAC5CgqC,GACFhqC,EAAQkB,KAAKqqC,GAGXtB,IACGgB,GACHjrC,EAAQkB,KAAKkqC,GAGfprC,EAAQkB,KAAKoqC,IAGf,MAAME,EAAgBh6C,EAClB45C,EACApB,EACAuB,EACAH,E,IAuBS1B,EArBb,OACE,oCACGqB,GACC,kBAAC3rB,EAAAA,WAAUA,CACTlE,SAAU4vB,EACVz1C,KAAM,SACNmqB,QAAS,SAAS6G,YAClB1zB,QAAS,IAAM2D,EAAMo5B,aAAaqB,MAGpCiZ,GAAqBC,IACrB,oCACE,kBAACwB,EAAAA,YAAWA,CAAC74C,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOgE,mBAClD,kBAACr5C,EAAAA,OAAMA,CACLO,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOiE,aACvCC,IAAKhB,EACLj4C,QAAS,IAAM2D,EAAM4nB,SAASwrB,QAAAA,EAAiB8B,GAC/Ch5C,KAAM,KACND,KAAM,UACND,QAAS,aAEY,QAApBo3C,EAAAA,aAAAA,EAAAA,EAAe9oC,aAAf8oC,IAAAA,EAAAA,EAAwB8B,EAAc5qC,OAEzC,kBAACirC,EAAAA,aAAYA,CACXj5C,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOoE,aACvC35C,UAAWJ,EAAOg6C,aAClBz5C,QAAS,UACT0N,QAASA,EACTke,SAAWtd,IACTtK,EAAM4nB,SAAStd,EAAM,OAMP,IAAvBm8B,GACC,kBAAC7a,EAAAA,WAAUA,CACTlvB,MAAO,gCAAgCqzB,IACvC/zB,QAAQ,UACRC,KAAK,UACLC,KAAK,KACLsF,aAAY,UAAUuuB,IACtBxxB,KAAMyB,EAAMk0C,qBACb,UAKFxnB,GACC,kBAACgpB,EAAAA,kBAAiBA,CAAChM,QAAS,kBAAChd,EAAQ3rB,UAAS,CAACf,MAAO0sB,MACnD,CAACipB,EAAYC,EAAYC,KACxB,MAAMC,EAAiB,CACrBC,OAAQH,EACR9tB,QAAS6tB,GAGX,OACE,oCACGrB,EAAW0B,SACV,oCACE,kBAACC,EAAAA,QAAOA,EAAAA,EAAAA,EAAAA,CAAAA,EACFJ,EACAnH,EAAAA,MAAIA,CACRwH,KAAM3C,EACN4C,iBAAkB16C,EAAOixB,QACzB0pB,iBAAkB9B,EAAW0B,QAC7BK,aAAa,IACTP,KAAAA,IAMhB,IA+KZ,MAAMzB,EAAqCt3C,IAClC,CACLupB,UAAUtpB,EAAAA,EAAAA,KAAI,CACZkI,MAAO,4BACP,WAAY,CACVwkC,QAAS,KACTvqC,SAAU,WACVuG,KAAM,EACNtG,IAAK,MACL2c,OAAQ,mBACR1V,MAAO,MACP5D,gBAAiB1F,EAAMwC,OAAO+2C,QAAQ5zC,QAG1C0xB,aAAap3B,EAAAA,EAAAA,KAAI,CACfkf,UAAW,OACXxc,SAAU3C,EAAM4C,WAAW42C,QAAQ,QAKnC56C,EAAaoB,IACV,CACL2vB,SAAS1vB,EAAAA,EAAAA,KAAI,CACXG,aAAcJ,EAAMO,MAAMC,OAAOC,QACjCuI,UAAWhJ,EAAMiJ,QAAQ4mB,GACzBjnB,WAAY5I,EAAMwC,OAAOoG,WAAWgnB,QACpChqB,OAAQ,aAAa5F,EAAMwC,OAAOoD,OAAOkqB,SAE3CuH,aAAap3B,EAAAA,EAAAA,KAAI,CACfkf,UAAW,OACXxc,SAAU3C,EAAM4C,WAAW42C,QAAQ,MAErCd,cAAcz4C,EAAAA,EAAAA,KAAI,CAChB2F,OAAQ,aAAa5F,EAAMwC,OAAOoD,OAAOw/B,SACzC1kC,WAAY,OACZ+4C,oBAAqB,EACrBC,uBAAwB,EACxB5zC,QAAS,EACTkZ,OAAQ,U,0QC3aP,MAAMurB,UAA4B1sB,EAAAA,aACvC7S,WAAAA,CAAY,EAAoC,EAAuB,GACrEC,QAAK,gFADY1J,OAAAA,EAAAA,KAAoCi+B,OAAAA,EAAAA,KAAuBliB,UAAAA,CAE9E,EACA,EAJWitB,EAIGlkC,OAAO,yBAGhB,MAAMqlC,UAAoB1oC,EAAAA,GAgD/BgI,WAAAA,CAAYzH,GACV,MAAM,OAAEi8B,EAAM,UAAEliB,IAAcioB,EAAAA,EAAAA,IAAoBhiC,EAAMhC,OAAQikC,EAAAA,gBAAiB,QACjFv6B,MAAM,CACJ1J,OAAQgC,EAAMhC,OACdi+B,SACAliB,cApDJ,OAAOq8B,iBAA6E,CAClF,CACExxC,MAAO,GACPwE,QAAS,CACP,CACEY,MAAO,cACPpF,MAAO,gBACPkvB,YAAa,6EAEf,CACE9pB,MAAO,WACPpF,MAAO,kBACPkvB,YAAa,sDAEf,CACE9pB,MAAOqsC,EAAAA,UAAUC,OACjB1xC,MAAO,gBACPkvB,YAAa,mDAEf,CACE9pB,MAAO,eACPpF,MAAO,OACPkvB,YAAa,sBAEf,CACE9pB,MAAOqsC,EAAAA,UAAUE,IACjB3xC,MAAO,QACPkvB,YAAa,uCAEf,CACE9pB,MAAOqsC,EAAAA,UAAUtiC,IACjBnP,MAAO,gBACPkvB,YAAa,2CAEf,CACE9pB,MAAOqsC,EAAAA,UAAUG,IACjB5xC,MAAO,aACPkvB,YAAa,8CAInB,CACElvB,MAAO,cACPwE,QAAS,IAAIqtC,EAAAA,cAAcC,cAAc,GAAIC,GAAsBvtC,YAavE,OAAOwtC,oBAAoBpO,IACpBA,EAASx+B,QAGdjD,KAAKN,SAAS,CAAEw1B,OAAQuM,EAASx+B,SACjC6sC,EAAAA,EAAAA,IAAoB9vC,KAAK/G,MAAMhC,OAAQwqC,EAASx+B,MAAOjD,KAAK/G,MAAM+Z,WAClEhT,KAAKuS,aAAa,IAAI0tB,EAAoBjgC,KAAK/G,MAAMhC,OAAQwqC,EAASx+B,MAAOjD,KAAK/G,MAAM+Z,YAAY,GAAK,IAG3G,OAAO+8B,qBAAqB/8B,IACrBA,EAAU/P,QAGfjD,KAAKN,SAAS,CAAEsT,UAAWA,EAAU/P,SACrC6sC,EAAAA,EAAAA,IAAoB9vC,KAAK/G,MAAMhC,OAAQ+I,KAAK/G,MAAMi8B,OAAQliB,EAAU/P,OACpEjD,KAAKuS,aAAa,IAAI0tB,EAAoBjgC,KAAK/G,MAAMhC,OAAQ+I,KAAK/G,MAAMi8B,OAAQliB,EAAU/P,QAAQ,GAAK,GAjBzG,EAoBA,EA3EWm+B,EA2EG1nC,aAAY,EAAGf,YAC3B,MAAM,OAAEu8B,EAAM,UAAEliB,GAAcra,EAAMI,WAC9B6N,EAAQjO,EAAM02C,eAAejrB,MAAMxd,GACvCA,EAAMvE,QAAQ+hB,MAAMjc,GAAoCA,EAAOlF,QAAUiyB,MAErE8a,EAAmDppC,aAAAA,EAAAA,EAAOvE,QAAQ+hB,MACrEjc,GAAoCA,EAAOlF,QAAUiyB,IAExD,OACE,oCACE,kBAACwC,EAAAA,YAAWA,CACV75B,MAAM,UACNoyC,QAAQ,mBACRpuB,QAAQ,+HAER,kBAAC+V,EAAAA,OAAMA,CACL3iC,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOmG,eACvCjtC,MAAO+sC,EACPhxC,MAAO,GACPmxC,cAAc,EACd9tC,QAAS1J,EAAM02C,eACf/uB,YAAa,kBACbC,SAAU5nB,EAAMk3C,iBAChBO,QAAQ,sBAGZ,kBAAC1Y,EAAAA,YAAWA,KACV,kBAACE,EAAAA,OAAMA,CACL3iC,cAAaC,EAAAA,EAAQ40C,WAAWC,OAAOhI,gBACvCxhB,SAAU5nB,EAAMo3C,kBAChB51C,aAAW,iBACXmmB,YAAY,GACZrd,MAAO+P,EACP3Q,QAAS,CACP,CACExE,MAAO,MACPoF,MAAO,OAET,CACEpF,MAAO,OACPoF,MAAO,Y,IAUvB,MAAMotC,EAAsB,CAAC,MAAO,MAAO,MAAO,MAAO,OACzD,SAAST,EAAqBU,GAC5B,OAAIA,EAAIzkB,IAAM,MAAQykB,EAAIzkB,IAAM,OACvBwkB,EAAoBh3C,SAASi3C,EAAIzkB,GAG5C,CAEO,SAASmK,EAAc7K,G,IACrBolB,EAAP,OAAkCplB,QAA3BolB,GAAAA,EAAAA,EAAAA,IAA2BplB,UAA3BolB,IAAAA,EAAAA,EAAqC,WAC9C,C,6ECnJO,SAASnO,GAAc,gBAAED,EAAe,UAAEjjB,EAAS,SAAE5oB,IAC1D,MAAMlC,GAASC,EAAAA,EAAAA,YAAWC,GAM1B,OAJI4qB,IAAcijB,IAChBA,EAAkB,cAGhBjjB,EACK,kBAACN,EAAAA,mBAAkBA,CAACpqB,UAAWJ,EAAOo8C,cAAer4C,KAAMgqC,IAG/DA,EAIE,kBAAC5tC,MAAAA,CAAIC,UAAWJ,EAAOo8C,eAAgBrO,GAHrC,oCAAG7rC,EAId,CAEA,SAAShC,EAAUoB,GACjB,MAAO,CACL86C,eAAe76C,EAAAA,EAAAA,KAAI,CACjB86C,UAAW,SACXvxC,UAAWxJ,EAAMmC,QAAQ,GACzBgd,UAAW,WAGjB,C,kCCtCO,MAAM6qB,EAA4B,E,qFCGlC,SAASgR,EAAeh7C,GAC7B,MAAO,CACLi7C,QAAS,yBACTC,cAAe,MACflyC,UAAW,aAAahJ,EAAMwC,OAAOoG,WAAWC,uBAAuB7I,EAAMwC,OAAOotB,QAAQjqB,OAC5Fw1C,yBAA0B,iCAC1BC,mBAAoB,OACpBC,mBAAoB,sCAExB,CASO,SAASC,EAAoBC,EAAmBv7C,GACrD,MAAO,CACL8I,OAAQ,KACR1G,SAAU,WACVo5C,QAAS,IACTlyC,MAAO,GAAGiyC,MACVv8B,OAAQ,GAAGu8B,MACXn7C,aAAcJ,EAAMO,MAAMC,OAAOC,QACjCksC,QAAS,KACT,CAAC3sC,EAAMy7C,YAAYC,aAAa,gBAAiB,WAAY,CAC3DN,mBAAoB,OACpBD,yBAA0B,+BAC1BE,mBAAoB,WAG1B,C,w4BCxBO,MAAMM,EAAmB19C,IAC9B,MAAM+B,GAAQwe,EAAAA,EAAAA,aACRtf,EAAOjB,EAAMkvB,MAAQntB,EAAMwC,OAAOC,KAAKm5C,YAAc57C,EAAMwC,OAAOC,KAAKolB,SACvEnpB,EAASE,EAAUoB,GACnBq3B,GAAiBp5B,EAAMkvB,MAAQ,UAAY,UAA7B,SAEpB,OACE,kBAAC0uB,EAAAA,QAAOA,CAAClP,QAAStV,GAChB,kBAACzI,SAAAA,CACCtvB,QAAS,IAAMrB,EAAM+uB,cAAc/uB,EAAMkvB,MAAQ,QAAU,SAC3DruB,WAAW6K,EAAAA,EAAAA,IAAGjL,EAAOkwB,OAAQ3wB,EAAMkvB,MAAQzuB,EAAO0wB,OAAS,MAC3D3qB,aAAY4yB,GAEZ,kBAACykB,MAAAA,CAAI58C,KAAMA,EAAMoK,MAAM,KAAK0V,OAAO,KAAK+8B,QAAQ,YAAYC,MAAM,8BAChE,kBAACv5C,OAAAA,CAAKE,SAAS,KAAK2G,MAAM,KAAK0V,OAAO,KAAKi9B,EAAE,MAAMC,EAAE,MAAMC,iBAAiB,UAAUC,WAAW,UAAS,UAS9Gx9C,EAAY,CAACoB,EAAsBf,EAA6B,eACpE,MAAMs8C,EAAY,GAAKv7C,EAAMmC,QAAQk6C,SAErC,MAAO,CACLztB,QAAQ3uB,EAAAA,EAAAA,KAAI,CACV6I,OAAQ,EACR1G,SAAU,WACVpB,OAAQ,KAAKhB,EAAMmC,QAAQm6C,UAAUt8C,EAAMmC,QAAQm6C,OACnDtzC,UAAW,OACXpD,OAAQ,OACR1F,QAAS,cACT0I,WAAY,cACZzI,eAAgB,SAChBoH,WAAY,SACZzB,QAAS,EACTvD,MAAOvC,EAAMwC,OAAOC,KAAKmtB,QAEzB,WAAY,OACP0rB,EAAoBC,EAAWv7C,IAAAA,CAClCoC,SAAU,aAGZ,UAAW,CACT,WAAY,CACVsD,gBACc,cAAZzG,EACIe,EAAMwC,OAAOuR,OAAOwoC,MACpBC,EAAAA,iBAAiBC,MAAMz8C,EAAMwC,OAAOC,KAAKmtB,QAAS,KACxD4rB,QAAS,IAIb,2BAA4BR,EAAeh7C,GAC3C,8BDrDG,CACLi7C,QAAS,OACTjyC,UAAW,UCqDXomB,QAAQnvB,EAAAA,EAAAA,KAAI,CACV,WAAY,CACVyF,gBACc,cAAZzG,EAA0Be,EAAMwC,OAAOuR,OAAOwoC,MAAQC,EAAAA,iBAAiBC,MAAMz8C,EAAMwC,OAAOC,KAAKmtB,QAAS,KAC1G4rB,QAAS,GAEX,UAAW,CACT,WAAY,CACV91C,gBAAiB,OACjB81C,QAAS,MAIhB,E,g6BCvEI,MAAMkB,EAAmCz+C,IAC9C,MAAM+B,GAAQwe,EAAAA,EAAAA,aACRtf,EAAOjB,EAAMqvB,cAAgBttB,EAAMwC,OAAOC,KAAKm5C,YAAc57C,EAAMwC,OAAOC,KAAKolB,SAC/EnpB,EAASE,EAAUoB,GACnBq3B,GAAiBp5B,EAAMqvB,cAAgB,UAAY,UAArC,cAEpB,OACE,kBAACuuB,EAAAA,QAAOA,CAAClP,QAAStV,GAChB,kBAACzI,SAAAA,CACCtvB,QAAS,IACPrB,EAAMovB,sBACJpvB,EAAMqvB,cAAgBC,EAAAA,GAAwBC,gBAAkBD,EAAAA,GAAwBD,eAG5FxuB,WAAW6K,EAAAA,EAAAA,IAAGjL,EAAOkwB,OAAQ3wB,EAAMqvB,cAAgB5uB,EAAO0wB,OAAS,MACnE3qB,aAAY4yB,GAEZ,kBAACykB,MAAAA,CAAI58C,KAAMA,EAAMoK,MAAM,KAAK0V,OAAO,KAAK+8B,QAAQ,YAAYC,MAAM,8BAChE,kBAACv5C,OAAAA,CAAKE,SAAS,KAAK2G,MAAM,KAAK0V,OAAO,KAAKi9B,EAAE,MAAMC,EAAE,MAAMC,iBAAiB,UAAUC,WAAW,UAAS,UAS9Gx9C,EAAY,CAACoB,EAAsBf,EAA6B,eACpE,MAAMs8C,EAAY,GAAKv7C,EAAMmC,QAAQk6C,SAErC,MAAO,CACLztB,QAAQ3uB,EAAAA,EAAAA,KAAI,CACV6I,OAAQ,EACR1G,SAAU,WACVpB,OAAQ,KAAKhB,EAAMmC,QAAQm6C,UAAUt8C,EAAMmC,QAAQm6C,OACnDtzC,UAAW,OACXpD,OAAQ,OACR1F,QAAS,cACT0I,WAAY,cACZzI,eAAgB,SAChBoH,WAAY,SACZzB,QAAS,EACTvD,MAAOvC,EAAMwC,OAAOC,KAAKmtB,QAEzB,WAAY,OACP0rB,EAAoBC,EAAWv7C,IAAAA,CAClCoC,SAAU,aAGZ,UAAW,CACT,WAAY,CACVsD,gBACc,cAAZzG,EACIe,EAAMwC,OAAOuR,OAAOwoC,MACpBC,EAAAA,iBAAiBC,MAAMz8C,EAAMwC,OAAOC,KAAKmtB,QAAS,KACxD4rB,QAAS,IAIb,2BAA4BR,EAAeh7C,GAC3C,8BFzDG,CACLi7C,QAAS,OACTjyC,UAAW,UEyDXomB,QAAQnvB,EAAAA,EAAAA,KAAI,CACV,WAAY,CACVyF,gBACc,cAAZzG,EAA0Be,EAAMwC,OAAOuR,OAAOwoC,MAAQC,EAAAA,iBAAiBC,MAAMz8C,EAAMwC,OAAOC,KAAKmtB,QAAS,KAC1G4rB,QAAS,GAEX,UAAW,CACT,WAAY,CACV91C,gBAAiB,OACjB81C,QAAS,MAIhB,E,mnBCxEH,IAAImB,EAEG,MAAMC,EAAmB,I,IAAA,MAAErvC,EAAK,SAAEsd,EAAQ,YAAED,EAAW,QAAEtsB,EAAO,OAAEozC,EAAM,MAAEpoC,EAAK,MAAE6jB,GAAuB,EAAbwkB,EAAAA,EAAAA,EAAAA,CAAhEpkC,QAAOsd,WAAUD,cAAatsB,UAASozC,SAAQpoC,QAAO6jB,UACtF,MAAMzuB,GAASC,EAAAA,EAAAA,YAAWC,IACnBi+C,EAASC,IAAcz5C,EAAAA,EAAAA,WAAS,IAChC05C,EAAcC,IAAmB35C,EAAAA,EAAAA,UAAS,IAE3C45C,GAAWC,EAAAA,EAAAA,cACd3vC,IAEC,IAAKA,IAAU4f,EAGb,OAFA6vB,EAAgB,SAChBF,GAAW,GAIb,QAAcx8C,IAAVq8C,EAKJ,IACEA,SAAAA,EAAOQ,QAAQ5vC,GACfuvC,GAAW,GACXE,EAAgB,GAClB,CAAE,MAAOzuC,GACP,MAAMD,GAAM8uC,EAAAA,EAAAA,IAAmB7uC,GAC/BuuC,GAAW,GACPxuC,GACF0uC,EAAgB1uC,EAEpB,MAdE+uC,IAAOr0B,MAAK,IAAMi0B,EAAS1vC,IAc7B,GAEF,CAAC4f,IAOH,OAJAmwB,EAAAA,EAAAA,YAAU,KACRL,EAAS1vC,EAAM,GACd,CAAC0vC,EAAU1vC,IAGZ,kBAACsuC,EAAAA,QAAOA,CAAC/qB,UAAW,aAAcqoB,OAAQ4D,GAAgBF,EAASlQ,QAASoQ,GAC1E,kBAACnL,EAAAA,M,sUAAKA,CAAAA,CACJiL,QAASA,EACTU,eAAcV,EACdW,KAAM,EACNl0C,MAAOA,EACPiE,MAAOA,EACPsd,SAAUA,EACV6mB,OACE,kBAAC7lB,OAAAA,CAAK/sB,UAAWJ,EAAOmzC,eACrBvzC,GAAWiP,EACV,kBAACwe,EAAAA,WAAUA,CACTtnB,aAAY,oBACZ0nB,QAAS,oBACT7sB,QAAShB,EACT0D,KAAK,QACLlD,UAAWJ,EAAOozC,iBAElBxxC,EACHoxC,GAAUA,GAGf/mB,OAAQ,kBAAC5oB,EAAAA,KAAIA,CAACC,KAAK,WACnB4oB,YAAaA,GACT+mB,IAAAA,EAMN0L,EAAAA,W,WAAO,YACXV,EAAQ,KACRA,SAAe,+BAAiBc,KAClC,E,iOAHMJ,GAKAz+C,EAAaoB,IAA0B,CAC3C6xC,eAAe5xC,EAAAA,EAAAA,KAAI,CACjBiC,IAAKlC,EAAMmC,QAAQ,IACnBjC,QAAS,gBAEX4xC,WAAW7xC,EAAAA,EAAAA,KAAI,CACbqF,OAAQ,cCjFNo4C,EAAsB,GAErB,SAASzxB,GAAiB,UAC/BoC,EAAS,WACTtB,EAAU,cACVO,EAAa,aACbgB,EAAY,MACZnB,EAAK,cACLM,EAAa,sBACbJ,EAAqB,cACrBL,EAAa,YACbF,EAAW,mBACX6wB,EAAkB,kBAClBC,EAAiB,MACjBlyB,EAAK,SACLC,EAAQ,KACRtlB,IAEA,MAAM3H,GAASC,EAAAA,EAAAA,aAAYqB,GAAUpB,EAAUoB,EAAOqG,MAC/CiD,EAAOu0C,IAAYx6C,EAAAA,EAAAA,UAASq6C,GAEnC,SAASI,EAAOnR,G,IAESA,EAAvB,MAAMrjC,EAAQvE,KAAKuS,IAAmB,QAAfq1B,EAAAA,aAAAA,EAAAA,EAASnpC,cAATmpC,IAAAA,EAAAA,EAAmB,EAAG+Q,GAE7CG,EAASv0C,EAAQ,EACnB,CAMA,OAJAg0C,EAAAA,EAAAA,YAAU,KACRQ,EAAO/wB,EAAW,GACjB,CAACA,EAAYrB,IAGd,kBAAC7sB,MAAAA,CAAIC,UAAWJ,EAAOmD,UACnB87C,GACA,kBAACzb,EAAAA,OAAMA,CACLvX,OAAQ,KACR7rB,UAAWJ,EAAOyjC,OAClB50B,MAAO8gB,EAAY,YAAc,YACjC1hB,QAAS,CACP,CACEY,MAAO,YACPpF,MAAO,WAET,CACEoF,MAAO,YACPpF,MAAO,YAGX0iB,SAAU,IAAMyD,GAAcD,KAGlC,kBAAC4hB,EAAAA,MAAKA,CAACnxC,UAAWJ,EAAOoS,OACvB,kBAAC8rC,EAAeA,CACdzvB,MAAOA,EAEP7jB,MAAOoiB,EAAQpiB,OAAQhJ,EACvByqB,QAAS,IAAMY,GAAS,GACxBpsB,cAAaC,EAAAA,EAAQC,sBAAsBs+C,WAC3CxwC,MAAOwf,QAAAA,EAAc,GACrBjuB,WAAW6K,EAAAA,EAAAA,IAAGg0C,EAAqBj/C,EAAOs/C,wBAAqB19C,EAAW5B,EAAOukC,OACjFpY,SAAU4C,EACVikB,OACE,kBAAC7lB,OAAAA,CAAK/sB,UAAW,GAAGJ,EAAOgzC,uBACzB,kBAACgL,EAA+BA,CAC9BpvB,cAAeA,EACfD,sBAAuBA,IAEzB,kBAACsuB,EAAeA,CAACxuB,MAAOA,EAAOH,cAAeA,KAGlDrC,OAAQ,KACRC,YAAY,sBACZtsB,QAASs/C,EACTK,QAAU1vC,IACRue,EAAYve,EAAGwe,GACf+wB,EAAO/wB,EAAW,KAIvB4wB,GACC,kBAAC9xB,OAAAA,CAAK/sB,UAAWJ,EAAOw/C,YACtB,kBAACl/C,EAAAA,OAAMA,CACLM,QAAS,KACPgvB,GAAa,GACbqvB,GAAoB,EAEtB7+C,UAAWJ,EAAOW,cAClBJ,QAAS,YACTC,KAAM,UACN2oB,UAAWkF,GACZ,WAGD,kBAAC/tB,EAAAA,OAAMA,CACLM,QAAS,KACPgvB,GAAa,GACbqvB,GAAoB,EAEtB7+C,UAAWJ,EAAOmB,cAClBZ,QAAS,YACTC,KAAM,UACN2oB,UAAWkF,GACZ,YAOX,CAEA,MAAMnuB,EAAY,CAACoB,EAAsBqG,KAAiC,CACxE23C,oBAAoB/9C,EAAAA,EAAAA,KAAI,CACtBgjC,MAAO,CACLz9B,qBAAsB,EACtBC,wBAAyB,KAG7BisC,QAAQzxC,EAAAA,EAAAA,KAAI,CACVC,QAAS,cACTgC,IAAKlC,EAAMmC,QAAQ,MAErBg8C,WAAWl+C,EAAAA,EAAAA,KAAI,CACbw5C,oBAAqB,EACrBC,uBAAwB,IAE1BwE,YAAYj+C,EAAAA,EAAAA,KAAI,CACdC,QAAS,OACTC,eAAgB,WAElBd,eAAeY,EAAAA,EAAAA,KAAI,CACjBS,WAAY,OACZN,aAAc,EACdC,YAAa,OACb,cAAe,CACbA,YAAa,UAGjBR,eAAeI,EAAAA,EAAAA,KAAI,CACjBG,aAAc,KAAKJ,EAAMO,MAAMC,OAAOC,WAAWT,EAAMO,MAAMC,OAAOC,YACpEC,WAAY,OACZ,cAAe,CACbA,WAAY,UAGhB09C,QAAQn+C,EAAAA,EAAAA,KAAI,CACVw5C,oBAAqB,EACrBC,uBAAwB,IAE1BvX,QAAQliC,EAAAA,EAAAA,KAAI,CACVkI,MAAO,wBACPlG,WAAY,EACZ+D,YAAa,EACbgZ,OAAQ,OACRvZ,wBAAyB,IACzBD,qBAAsB,IACtBnF,YAAa,OACbkL,UAAW,OACXm2B,SAAU,OACVl2B,SAAU,OACVyvC,QAAS,SAEXp5C,SAAS5B,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACToJ,MAAO,SAET25B,OAAOhjC,EAAAA,EAAAA,KAAI,CACTkI,MAAO,4BACPu5B,SAAU,QAGVl2B,SAAmB,WAATnF,EAAoB,sBAAwB,sBAEtD48B,MAAO,CACLwW,oBAAqB,EACrBC,uBAAwB,EACxBr0C,WAAY,YACZ1C,SAAU3C,EAAM4C,WAAWC,UAAUF,SACrC2G,MAAO,UAGX+0C,cAAcp+C,EAAAA,EAAAA,KAAI,CAChB8vB,YAAa,SAEfjf,OAAO7Q,EAAAA,EAAAA,KAAI,CACTkI,MAAO,QACPxG,KAAM,WACNud,aAAc,K,4TCtLX,MAAMo/B,UAAwBt7C,EAAAA,GAGnCgI,WAAAA,CAAYzH,GACV0H,M,sUAAM,IACD1H,IAIPg7C,EAAAA,KAAAA,yBAAyBl4C,IACvBiE,KAAKk0C,oBAAoBx0C,SAAS,CAAEy0C,eAAgBp4C,KACpDq4C,EAAAA,EAAAA,IAAa,iBAAkBr4C,GAC/BiE,KAAKq0C,mBAAmBC,iBAAiB,CAAEH,eAAgBp4C,IAC3DiE,KAAKq0C,mBAAmBC,iBAAiB,CAAEC,mBAAoBx4C,GAAO,IAGxEy4C,EAAAA,KAAAA,yBAAyBC,IACvBz0C,KAAKk0C,oBAAoBx0C,SAAS,CAAE+0C,UAAWA,KAC/CL,EAAAA,EAAAA,IAAa,YAAaK,GAC1Bz0C,KAAKq0C,mBAAmBC,iBAAiB,CAAEG,UAAWA,GAAY,IAGpEJ,EAAAA,KAAAA,oBAAmB,IACVx7C,EAAAA,GAAWwE,YAAY2C,KAAM00C,EAAAA,KAGtCR,EAAAA,KAAAA,qBAAoB,IACXr7C,EAAAA,GAAWwE,YAAY2C,KAAM20C,EAAAA,KAGtCC,EAAAA,KAAAA,wBAAuB,KACD50C,KAAKq0C,mBACbO,wBACZx4C,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBu4C,4BAA2B,GA5BnE,EA6FK,SAASC,IACd,OAAOC,EAAAA,EAAAA,IAA4B,YAAaC,EAAAA,cAAcC,WAChE,CAEO,SAASC,IAGd,MAAMl7B,EAAWnI,EAAAA,gBAAgBoI,cAE3Bw6B,EADS,IAAIv6B,gBAAgBF,EAASG,QACnBtY,IAAI,aAE7B,IACE,GAAyB,iBAAd4yC,EAAwB,CACjC,MAAMU,GAAmBC,EAAAA,EAAAA,IAAoBvxC,KAAKiQ,MAAM2gC,IACxD,GAAIU,EACF,OAAOA,CAEX,CACF,CAAE,MAAOlxC,GAEP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,4EACzB,CAEA,OAAO,CACT,CA3HE,EADWgwC,EACJt6C,aAuCT,UAA4B,MAAEf,IAC5B,MAAM,0BAAE08C,EAAyB,kBAAEC,GAAsB38C,EAAMI,YACzD,eAAEo7C,EAAc,UAAEM,GAAc97C,EAAMu7C,oBAAoBn7C,YAC1D,gBAAEuwB,GAAoB3wB,EAAM07C,mBAAmBt7C,WAC/C3E,GAASC,EAAAA,EAAAA,YAAWC,GACpBihD,EAAYpB,SAAAA,EAElB,OACE,kBAAC5/C,MAAAA,CAAIC,UAAWJ,EAAOK,WACpB60B,EAAgBpwB,OAAS,GACxB,kBAACq4C,EAAAA,QAAOA,CAAClP,QAAS,2BAA2B/Y,EAAgBxd,KAAK,SAChE,kBAACpX,EAAAA,OAAMA,CAACG,KAAM,KAAMF,QAAQ,YAAYC,KAAK,UAAUI,QAAS2D,EAAMi8C,sBAAsB,2BAKhG,kBAACld,EAAAA,YAAWA,CAACljC,UAAWJ,EAAOohD,mBAAoBC,aAAAA,GACjD,kBAAC7P,EAAAA,iBAAgBA,CACf/wC,KAAK,KACLwN,QAAS,CACP,CACExE,MAAO,eACPoF,MAAO+xC,EAAAA,cAAcC,WACrBloB,YAAa,iCAEf,CACElvB,MAAO,eACPoF,MAAO+xC,EAAAA,cAAcU,UACrB3oB,YAAa,kCAGjB9pB,MAAOwxC,EACPl0B,SAAU5nB,EAAM67C,yBAIpB,kBAAC9c,EAAAA,YAAWA,CAACljC,UAAWJ,EAAOohD,mBAAoBC,aAAAA,GACjD,kBAAC7P,EAAAA,iBAAgBA,CACf/wC,KAAK,KACLoO,MAAOsyC,EACPh1B,SAAU5nB,EAAMs7C,sBAChB5xC,QAAS,CACP,CACExE,MAAO,OACPoF,OAAO,EACP8pB,YAAa,qCAEf,CACElvB,MAAO,UACPoF,OAAO,EACP8pB,YAAa,0CAKrB,kBAAC4oB,EAAAA,EAAsBA,CAACC,QAASN,EAAmB/0B,SAAU80B,IAGpE,IA4BA,MAAM/gD,EAAaoB,IAA0B,CAC3CjB,WAAWkB,EAAAA,EAAAA,KAAI,CACbC,QAAS,OACTqH,WAAY,SACZrF,IAAKlC,EAAMmC,QAAQ,GACnBqH,UAAWxJ,EAAMmC,QAAQ,MAE3B29C,oBAAoB7/C,EAAAA,EAAAA,KAAI,CACtBe,OAAQ,EACRuG,WAAY,Y,87BCrJhB,MAAM44C,EAA0B,GAAGj2C,EAAAA,uBAqB5B,eAAKk2C,G,qDAAAA,C,CAAL,C,IAMP,MAAMC,GAAsBC,EAAAA,EAAAA,eAAuC,CACjEC,eAAgB,CAAC,EACjBC,kBAAmB,OACnBxsB,QAAS,CAAC,EACVysB,gBAAiB,CAAC,EAClBC,WAAY,OACZC,mBAAoB,OACpBC,WAAY,KAAM,EAClBn3B,SAAS,EACTo3B,UAAW,OACXC,aAAc,OACdC,kBAAmB,SA+Cd,MAAMC,EAA6B,EACxCpgD,WACAqgD,iBACAC,YACAC,gBACAJ,oBACAK,uBACAC,oBACAC,6BACAC,+BAYA,MAAOvtB,EAAS0sB,IAAcr9C,EAAAA,EAAAA,UAA6Bm+C,EAAmBP,KACvEJ,EAAWC,IAAgBz9C,EAAAA,EAAAA,UAAuBg+C,QAAAA,EAAAA,SAClDZ,EAAiBE,IAAsBt9C,EAAAA,EAAAA,eAAyC/C,GAEjFmhD,EA7CR,WACE,IAAIA,EAAsB,CAAC,EAC3B,MAAMC,EAAiB52C,aAAaI,QAAQi1C,GAC5C,GAAIuB,EACF,IAQE,OAPAD,GAAsBE,EAAAA,EAAAA,IAAyBxzC,KAAKiQ,MAAMsjC,KAC9B,IAAxBD,GACF91C,EAAAA,EAAOW,MACL,IAAIs1C,EAAAA,GAAe,+EACnB,CAAEtzC,IAAK,yEAGJmzC,CACT,CAAE,MAAOlzC,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,wDACzB,CAEF,OAAOmzC,CACT,CA2B8BI,IACrBtB,EAAgBuB,IAA0Bz+C,EAAAA,EAAAA,UAAiCo+C,GAsB5EM,GAAmB7E,EAAAA,EAAAA,cACtB8E,IACC,GAAIA,EAAY,CACd,MAAMhuB,EAAUwtB,EAAmBQ,GAEnCtB,EAAW1sB,GAGXmtB,EAxBmB,CAACntB,IACxB,IAAIiuB,EAA0B,GAY9B,OAXAtqC,OAAOrD,KAAK0f,GAAS1mB,SAASopB,IACxB1C,EAAQ0C,GAAWtH,aAAuC9uB,IAA7B0zB,EAAQ0C,GAAW5H,OAClDmzB,EAAcp0C,KAAK6oB,EACrB,IAEFurB,EAAclyC,MAAK,CAACzO,EAAG0O,KAErB,MAAMkyC,EAAwBluB,EAAQ1yB,GAChC6gD,EAAwBnuB,EAAQhkB,GACtC,OAAOkyC,EAAKpzB,MAAQqzB,EAAKrzB,KAAK,IAEzBmzB,CAAa,EAWFG,CAAiBpuB,GACjC,IAEF,CAACmtB,IAGGkB,GAAqBnF,EAAAA,EAAAA,cACxBoF,IACCxB,EAAawB,GAGblB,EAAqBkB,EAAa,GAEpC,CAAClB,IAOGmB,GAAmBrF,EAAAA,EAAAA,cACtBsF,IACClB,EAA2BkB,EAAU,GAEvC,CAAClB,IA0BH,OAtBAhE,EAAAA,EAAAA,YAAU,KACJ2D,GACFc,EAAiBd,EACnB,GACC,CAACA,EAAgBc,KAGpBzE,EAAAA,EAAAA,YAAU,KACR,MAAM2E,EAiDV,SAA2BQ,EAAuCvB,GAChE,IAAKA,EAEH,YADAv1C,EAAAA,EAAOC,KAAK,2CAId,MAAM82C,EAAkB/qC,OAAOrD,KAAKmuC,GAEjCh/C,QAAQK,I,IAAQ2+C,E,OAAsB,QAAtBA,EAAAA,EAAkB3+C,UAAlB2+C,IAAAA,OAAAA,EAAAA,EAAwBrzB,MAAM,IAC9Crf,MAAK,CAACzO,EAAG0O,KACR,MAAM2yC,EAAKF,EAAkBnhD,GACvBshD,EAAKH,EAAkBzyC,GAC7B,YAAiB1P,IAAbqiD,EAAG7zB,YAAoCxuB,IAAbsiD,EAAG9zB,MACxB6zB,EAAG7zB,MAAQ8zB,EAAG9zB,MAEhB,CAAC,IAGN+zB,EAAY3B,EAAU2B,UACtBC,EAAY5B,EAAU4B,UAE5B,GAAI,GAAcA,GAAcJ,EAAgBl/C,OAAQ,CACtD,MAAMu/C,EAAiB,GASvB,OARIF,aAAAA,EAAAA,EAAW7gD,OACb+gD,EAAel1C,KAAKg1C,EAAU7gD,OAE5B8gD,aAAAA,EAAAA,EAAW9gD,OACb+gD,EAAel1C,KAAKi1C,EAAU9gD,MAIzB0gD,EAAgBl/C,OAASk/C,EAAkBK,CACpD,CAEA,MAAO,EACT,CApF0BC,CAAkBhvB,EAASktB,GACjD,GAAIe,aAAAA,EAAAA,EAAez+C,OAAQ,CAIG,IAHPmU,OAAOrD,KAAK0f,GAASvwB,QAAQw/C,GAAQjvB,EAAQivB,GAAK7zB,SAGtD5rB,QA7IvB,SACEwwB,EACA+tB,EACAb,GAEA,MAAMgC,EAAiB,KAAKlvB,GAE5BkvB,GAAeC,EAAAA,EAAAA,IAAYjC,IAAc,CACvCpyB,MAAO,EACPM,QAAQ,EACR/oB,KAAM,aACN+8C,wBAAyB,IACzBlb,YAAamb,KAEfH,GAAeI,EAAAA,EAAAA,IAAYpC,IAAc,CACvCpyB,MAAO,EACPM,QAAQ,EACR/oB,KAAM,aACN+8C,wBAAyB,IACzBlb,YAAamb,KAEftB,EAAiBmB,EACnB,CAwHQK,CAAkBvvB,EAAS+tB,EAAkBb,GAI/CP,OAAmBrgD,EACrB,IACC,CAAC0zB,EAASktB,EAAWP,EAAoBoB,IAG1C,kBAAC1B,EAAoBmD,SAAQ,CAC3Bj2C,MAAO,CACLizC,kBAlFqB58C,IACzBkH,aAAaC,QAAQo1C,EAAyBhyC,KAAKC,UAAUxK,IAC7Dk+C,EAAuBl+C,EAAI,EAiFvB28C,iBACAM,YACAC,aAAcuB,EACd1B,qBACAF,kBACAzsB,UACA0sB,WAAYqB,EACZt4B,QAAS83B,EACTX,WAAY2B,EACZxB,kBA/C0B,KAC9BA,GAAmB,IAiDhBngD,EAAAA,EAQD4gD,EAAsBxtB,IAE1B,GAAI,eAAgBA,EAAS,CAC3B,MAA4D,OACvDA,IADC,WAAEyvB,GAAoD,EAG5D,OAHuBC,EAAqC,GAApDD,cAIV,CACA,OAAOzvB,CAAO,EAwCT,MAAM2vB,EAAwB,KAC5BC,EAAAA,EAAAA,YAAWvD,G,4CCjQpB,MAAMwD,GAAmBvD,EAAAA,EAAAA,eAAoC,CAC3DwD,UAAW,CAAEh1B,MAAO,KAAMi1B,kBAAmB,GAC7CC,mBAAqBF,IAAyB,IAGnCG,EAA2B,EAAGrjD,eACzC,MAAOsjD,EAAYC,IAAiB9gD,EAAAA,EAAAA,UAAoB,CAAEyrB,MAAO,OAE3Ds1B,GAAmBlH,EAAAA,EAAAA,cAAa4G,IACpCK,EAAcL,EAAU,GACvB,IAEH,OACE,kBAACD,EAAiBL,SAAQ,CAACj2C,MAAO,CAAEu2C,UAAWI,EAAYF,mBAAoBI,IAC5ExjD,EAAAA,EAKMyjD,EAAsB,KAC1BT,EAAAA,EAAAA,YAAWC,GC5BdS,GAAqBhE,EAAAA,EAAAA,eAAsC,CAC/DiE,oBAAoB,EACpBC,oBAAsBD,IAAgC,IAG3CE,EAA6B,EAAG7jD,eAC3C,MAAO2jD,EAAoBC,IAAuBnhD,EAAAA,EAAAA,WAAkB,GAE9DqhD,GAA2BxH,EAAAA,EAAAA,cAAaqH,IAC5CC,EAAoBD,EAAmB,GACtC,IAEH,OACE,kBAACD,EAAmBd,SAAQ,CAACj2C,MAAO,CAAEg3C,qBAAoBC,oBAAqBE,IAC5E9jD,EAAAA,EAKM+jD,EAAwB,KAC5Bf,EAAAA,EAAAA,YAAWU,G,cCJb,SAASM,GAAiB,YAAEC,EAAW,eAAEC,IAC9C,MAAM,QAAE9wB,EAAO,mBAAE2sB,GAAuBgD,IAGlCoB,EAAc3vB,IAClB,MAAMtf,EAAUsf,EAAK,GACrB,IAAI4vB,EAAyC,CAAC,EAC1CC,EAAkB,EAqC1B,IAA2BC,EApCvBpvC,EAAQxI,SAAS4f,IACXA,KAAS8G,IACXgxB,EAAmB93B,GAAS8G,EAAQ9G,GACpC+3B,IACF,IAEFtE,EAAmBqE,GA8BIE,EA7BLD,GA8BpBE,EAAAA,EAAAA,mBAAkB,kDAAmD,CACnEC,YAAaF,GA/BqB,EAqB9BxmD,EAhDR,SAAmBsB,GACjB,MAAO,CACLqlD,YAAYplD,EAAAA,EAAAA,KAAI,CACd6F,QAAS,GAAG9F,EAAMmC,QAAQ,SAAUnC,EAAMmC,QAAQ,OAAQnC,EAAMmC,QAAQ,QAG9E,CA0CiBvD,EADD4f,EAAAA,EAAAA,cAEd,OACE,kBAACyxB,EAAAA,MAAKA,CAACnxC,UAAWJ,EAAO2mD,YACvB,kBAACzT,EAAAA,MAAKA,CAACrkC,MAAOs3C,EAAax+C,KAAM,OAAQukB,YAAa,wBAAyBC,SAftDtc,I,IACbA,EAAd,MAAMhB,EAAuB,QAAfgB,EAAAA,EAAEumC,qBAAFvmC,IAAAA,OAAAA,EAAAA,EAAiBhB,MANlB,IAAC+3C,EAOdR,EAAev3C,GACXA,GARU+3C,EASL/3C,GARTg4C,EAAAA,EAAAA,GAAqB5tC,OAAOrD,KAAK0f,GAAUsxB,EAAQP,IAWjDpE,OAAmBrgD,EACrB,IAUJ,C,cCjDO,SAASklD,IACd,MACM9mD,EAZR,SAAmBsB,GACjB,MAAO,CACLylD,OAAOxlD,EAAAA,EAAAA,KAAI,CACTif,aAAclf,EAAMmC,QAAQ,GAC5BF,WAAYjC,EAAMmC,QAAQ,MAC1BQ,SAAU3C,EAAM4C,WAAWD,WAGjC,CAIiB/D,EADD4f,EAAAA,EAAAA,cAEd,OAAO,kBAAC3f,MAAAA,CAAIC,UAAWJ,EAAO+mD,OAAO,YACvC,C,84BCZO,SAASC,EAAkBznD,GAShC,MACMS,EAmDR,SAAmBsB,GACjB,MAAO,CACL2lD,UAAU1lD,EAAAA,EAAAA,KAAI,CACZqF,OAAQ,OACRrD,WAAYjC,EAAMmC,QAAQ,GAC1Bq5C,QAAS,KAEXoK,YAAY3lD,EAAAA,EAAAA,KAAI,CACdgC,WAAYjC,EAAMmC,QAAQ,IAC1B4tB,YAAa/vB,EAAMmC,QAAQ,IAC3B0jD,WAAY,OACZj9C,WAAY,OACZhD,OAAQ,OACRjD,SAAU3C,EAAM4C,WAAW42C,QAAQ,IACnCgC,QAAS,GACTt7C,QAAS,OACToI,cAAe,SACff,WAAY,aAEdu+C,aAAa7lD,EAAAA,EAAAA,KAAI,CACfC,QAAS,OACTqH,WAAY,SACZpH,eAAgB,gBAChBmJ,MAAO,SAETy8C,iBAAiB9lD,EAAAA,EAAAA,KAAI,CACnB0C,SAAU3C,EAAM4C,WAAWC,UAAUF,SACrC2C,OAAQ,YAGV0gD,eAAe/lD,EAAAA,EAAAA,KAAI,CACjB,SAAU,CACRsF,SAAU,SACVQ,aAAc,WACdylB,WAAY,SACZtrB,QAAS,QACTsL,SAAU,UAIlB,CA3FiB5M,EADD4f,EAAAA,EAAAA,c,IAWKvgB,EAIDA,EAEHA,EACAA,EAI6CA,EAXzCA,EARnB,OAAIA,EAAMo0B,OAAOp0B,EAAMkK,OAEnB,oCACE,kBAACtJ,MAAAA,CAAIC,UAAWJ,EAAOonD,aACrB,kBAACG,EAAAA,SAAQA,CACPnnD,UAAWJ,EAAOsnD,cAClB79C,MAAOlK,EAAMkK,MACb0iB,SAAU5sB,EAAM4sB,SAChBq7B,QAA0C,QAAjCjoD,EAAyB,QAAzBA,EAAAA,EAAMo0B,OAAOp0B,EAAMkK,cAAnBlK,IAAAA,OAAAA,EAAAA,EAA2BmxB,cAA3BnxB,IAAAA,GAAAA,IAEVA,EAAMkoD,WACL,kBAACtnD,MAAAA,CAAIC,UAAWJ,EAAOknD,YACrB,kBAAC/mD,MAAAA,KAA8B,QAAzBZ,EAAAA,EAAMo0B,OAAOp0B,EAAMkK,cAAnBlK,IAAAA,OAAAA,EAAAA,EAA2BmlD,wBAAwB,KACzD,kBAACvkD,MAAAA,KAC2B,QAAzBZ,EAAAA,EAAMo0B,OAAOp0B,EAAMkK,cAAnBlK,IAAAA,OAAAA,EAAAA,EAA2BiqC,YAAa,IACG,KAAlB,QAAzBjqC,EAAAA,EAAMo0B,OAAOp0B,EAAMkK,cAAnBlK,IAAAA,OAAAA,EAAAA,EAA2BiqC,aAAoB,QAAU,WAI/DjqC,EAAMsiD,gBAAkBtiD,EAAMuiD,wBAA6DlgD,KAApB,QAApBrC,EAAAA,EAAMsiD,sBAANtiD,IAAAA,OAAAA,EAAAA,EAAuBA,EAAMkK,SAC/E,kBAACtJ,MAAAA,CACCS,QAAS,K,IAEPrB,EADA,MAAwC,E,sUAAA,IAAKA,EAAMsiD,gBAA1CtiD,EAAAA,EAAMkK,OAAP,CAAClK,GAAcmoD,GAAiB,EAARxiD,EAAAA,EAAQ,GAA/B3F,G,QACc,QAAvBA,EAAAA,EAAMuiD,yBAANviD,IAAAA,GAAAA,EAAAA,KAAAA,EAA0B2F,EAAI,EAEhCjE,MAAO,8BACPb,UAAWJ,EAAOqnD,iBACnB,qBAEC,kBAAChkD,EAAAA,KAAIA,CAACC,KAAM,QAIjB/D,EAAMooD,WACL,kBAACtkD,EAAAA,KAAIA,CACH0C,aAAW,qBACX9E,MAAM,2BACNqC,KAAK,gBACL7C,KAAK,KACLL,UAAWJ,EAAOinD,YAOrB,IACT,C,w4BCpBO,MAAMW,EAAyBroD,IAOpC,MAAM,eAAEsiD,EAAc,kBAAEC,GAAsBmD,KACxC,cAAE4C,EAAa,OAAEl0B,EAAM,YAAEm0B,EAAW,aAAEC,GAAiBxoD,EACvD+B,GAAQwe,EAAAA,EAAAA,cACR,QAAEwV,GAAY2vB,IACdjlD,EA7CD,SAA6BsB,GAClC,MAAO,CACLa,MAAMZ,EAAAA,EAAAA,KAAI,CACRuJ,UAAWxJ,EAAMmC,QAAQ,GACzB+c,aAAclf,EAAMmC,QAAQ,GAC5BjC,QAAS,OACT0I,WAAY5I,EAAMwC,OAAOoG,WAAWgnB,UAEtC82B,UAAUzmD,EAAAA,EAAAA,KAAI,CACZ2I,WAAY5I,EAAMwC,OAAOoG,WAAWlG,YAEtCikD,eAAe1mD,EAAAA,EAAAA,KAAI,CACjBif,aAAclf,EAAMmC,QAAQ,KAE5B6D,YAAahG,EAAMmC,QAAQ,MAGjC,CA4BiBykD,CAAoB5mD,GAC7B6mD,EAAYlvC,OAAOrD,KAAK+d,GAAQ5uB,QAAQuvB,GAAcwzB,EAAYxzB,KAElE8zB,EAAax3C,IACZA,EAAOy3C,aAGZR,EAAcvyB,EAAS1kB,EAAO2sB,OAAOnN,MAAOxf,EAAOy3C,YAAYj4B,MAAM,EAGjEk4B,EAAeh0B,IACnB,MAAM7qB,EAAQkqB,EAAOW,GACrB,GAAI7qB,EACF,MAAO,GAAG6qB,gBAAwB7qB,aAAAA,EAAAA,EAAOi7C,uCAG3B,EAGlB,OAAIyD,EAAUrjD,OAEV,kBAACyjD,EAAAA,GAAeA,CAACH,UAAWA,GAC1B,kBAACI,EAAAA,GAASA,CAACC,YAAY,eAAe7pC,UAAU,aAC5C8pC,GACA,kBAACvoD,MAAAA,EAAAA,EAAAA,CAAIC,UAAWJ,EAAOioD,eAAmBS,EAASC,gBAAc,CAAE9O,IAAK6O,EAASE,WAC9ET,EAAU92C,KAnDzB,SAAoBsiB,GAClB,MAAO,CAAC/wB,EAAW0O,KACjB,MAAMu3C,EAAKl1B,EAAO/wB,GACZkmD,EAAKn1B,EAAOriB,GAGlB,OAAgB,MAAZu3C,EAAGz4B,OAA6B,MAAZ04B,EAAG14B,MAClBy4B,EAAGz4B,MAAQ04B,EAAG14B,MAIhB,CAAC,CAEZ,CAsC8B24B,CAAWp1B,IAASzuB,KAAI,CAACovB,EAAWlE,IAClD,kBAAC44B,EAAAA,GAASA,CAACC,YAAa30B,EAAWlvB,IAAKkvB,EAAWlE,MAAOA,IACvD,CAACs4B,EAA6BQ,IAC7B,kBAAC/oD,MAAAA,EAAAA,EAAAA,CACCC,WAAW6K,EAAAA,EAAAA,IAAGjL,EAAOmC,KAAM+mD,EAASC,WAAanpD,EAAOgoD,cAAWpmD,GACnEi4C,IAAK6O,EAASE,UACVF,EAASU,eACTV,EAASW,iBAAe,CAC5BpoD,MAAOqnD,EAAYh0B,KAEnB,kBAAC0yB,EAAiBA,CAChBlF,kBAAmBA,EACnBD,eAAgBA,EAChBp4C,MAAO6qB,EACPnI,SAAU,IAAM47B,EAAazzB,GAC7BX,OAAQA,EACRg0B,WAAW,SAMpBe,EAASx8B,gBAQf,kBAAC46B,EAAoBA,KAAAA,ECtGxBwC,EAAW,IAAIC,KAAKC,cAAS5nD,EAAW,CAAE6nD,YAAa,SAyCtD,MAAMC,EAA4BnqD,IAKvC,MAAM,OAAEo0B,EAAM,YAAEm0B,EAAW,aAAEC,GAAiBxoD,EAExCS,EA9CR,SAA6BsB,GAC3B,MAAO,CACLa,MAAMZ,EAAAA,EAAAA,KAAI,CACRuJ,UAAWxJ,EAAMmC,QAAQ,KACzB+c,aAAclf,EAAMmC,QAAQ,KAC5BjC,QAAS,OACT0I,WAAY5I,EAAMwC,OAAOoG,WAAWgnB,QACpCy4B,aAAc,aAAaroD,EAAMwC,OAAOoG,WAAWC,WAErD69C,UAAUzmD,EAAAA,EAAAA,KAAI,CACZ2I,WAAY5I,EAAMwC,OAAOoG,WAAWlG,YAEtCikD,eAAe1mD,EAAAA,EAAAA,KAAI,CACjBif,aAAclf,EAAMmC,QAAQ,KAE5B6D,YAAahG,EAAMmC,QAAQ,MAGjC,CA4BiBykD,EADDpoC,EAAAA,EAAAA,cAERqoC,EAAYlvC,OAAOrD,KAAK+d,GAAQ5uB,QAAQuvB,GAAcwzB,EAAYxzB,KACxE,OAAI6zB,EAAUrjD,OAGV,kBAAC3E,MAAAA,CAAIC,UAAWJ,EAAOioD,eACpBE,EAAU92C,KAhCnB,SAAoBsiB,GAClB,MAAO,CAAC/wB,EAAW0O,KACjB,MAAMu3C,EAAKl1B,EAAO/wB,GACZkmD,EAAKn1B,EAAOriB,GAGlB,OAAU,MAANu3C,GAAoB,MAANC,EAEd/U,OAAmB,eAAZ+U,EAAGnhD,MAAyBosC,OAAmB,eAAZ8U,EAAGlhD,OAC7CosC,OAAmB,eAAZ+U,EAAGnhD,MAAyBosC,OAAmB,eAAZ8U,EAAGlhD,OAC7C2hD,EAASM,QAAQhnD,EAAG0O,GAKjB,CAAC,CAEZ,CAewBy3C,CAAWp1B,IAASzuB,KAAKovB,I,IAIHX,E,OAHpC,kBAACxzB,MAAAA,CACCiF,IAAKkvB,EACLl0B,UAAWJ,EAAOmC,KAClBlB,MAAO,GAAGqzB,gBAAyC,QAAjBX,EAAAA,EAAOW,UAAPX,IAAAA,OAAAA,EAAAA,EAAmB+wB,yCAErD,kBAACsC,EAAiBA,CAChBS,WAAW,EACXh+C,MAAO6qB,EACPnI,SAAU,IAAM47B,EAAazzB,GAC7BX,OAAQA,I,KAQb,kBAACmzB,EAAoBA,KAAAA,ECpCvB,MAAM+C,EAAwBtqD,IAOnC,MACMS,EA5CR,SAAmBsB,GACjB,MAAO,CACLwoD,aAAavoD,EAAAA,EAAAA,KAAI,CACfwoD,UAAW,SACXzpC,OAAQ,oBAER,uBAAwB,CACtB9e,QAAS,QAGXwoD,eAAgB,SAElBC,oBAAoB1oD,EAAAA,EAAAA,KAAI,CACtB4lD,WAAY,OACZj9C,WAAY,OACZhD,OAAQ,OACRjD,SAAU3C,EAAM4C,WAAW42C,QAAQ,MAErCoP,cAAc3oD,EAAAA,EAAAA,KAAI,CAChBC,QAAS,OACTC,eAAgB,gBAChBwC,SAAU3C,EAAM4C,WAAWimD,GAAGlmD,SAC9BiG,WAAY5I,EAAMwC,OAAOoG,WAAWlG,UACpCN,SAAU,SACVC,IAAK,EACLsG,KAAM,EACNkkC,WAAY7sC,EAAMmC,QAAQ,KAC1B8D,aAAcjG,EAAMmC,QAAQ,KAC5BguB,cAAenwB,EAAMmC,QAAQ,KAC7B6D,YAAahG,EAAMmC,QAAQ,KAC3B2G,OAAQ,EACRoW,aAAclf,EAAMmC,QAAQ,KAGlC,CAUiBvD,EADD4f,EAAAA,EAAAA,c,IAgBEvgB,EAQAA,EArBhB,OACE,kBAACY,MAAAA,CAAIC,UAAWJ,EAAO8pD,aAErB,oCACE,kBAAC3pD,MAAAA,CAAIC,UAAWJ,EAAOkqD,cAAc,kBAEnC,kBAACh6B,SAAAA,CAAOtvB,QAASrB,EAAM6qD,MAAOhqD,UAAWJ,EAAOiqD,oBAAoB,UAItE,kBAACrC,EAAqBA,CACpBC,cAAetoD,EAAMsoD,cACrBE,aAAcxoD,EAAMwoD,aACpBp0B,OAAqC,QAA7Bp0B,EAAAA,EAAM8qD,+BAAN9qD,IAAAA,EAAAA,EAAiCA,EAAM+qD,gBAC/CxC,YAAcj5C,I,IAAUtP,EAAAA,E,OAAoC,QAApCA,EAA4B,QAA5BA,EAAAA,EAAM+qD,gBAAgBz7C,UAAtBtP,IAAAA,OAAAA,EAAAA,EAA8BmxB,cAA9BnxB,IAAAA,GAAAA,CAA6C,EACrEk4B,GAAI,oBAGN,kBAACt3B,MAAAA,CAAIC,UAAWJ,EAAOkqD,cAAc,UACrC,kBAACR,EAAwBA,CACvB3B,aAAcxoD,EAAMwoD,aACpBp0B,OAAqC,QAA7Bp0B,EAAAA,EAAM8qD,+BAAN9qD,IAAAA,EAAAA,EAAiCA,EAAM+qD,gBAC/CxC,YAAcj5C,I,IAAWtP,E,QAA4B,QAA5BA,EAAAA,EAAM+qD,gBAAgBz7C,UAAtBtP,IAAAA,OAAAA,EAAAA,EAA8BmxB,OAAM,K,04BCnEhE,SAAS65B,EAAiBvI,GAC/B,MAAO,CAAC1sB,EAA6Bk1B,EAAqBC,KACxD,GAAID,IAAgBC,EAClB,OAGF,MAAM1G,EAAoB,KAAKzuB,GACzB1f,EAAOqD,OAAOrD,KAAKmuC,GACtBh/C,QAAQK,GAAQ2+C,EAAkB3+C,GAAKsrB,SACvCxrB,KAAKE,I,IAEG2+C,E,MAFM,CACb/rB,UAAW5yB,EACXgrB,MAAmC,QAA5B2zB,EAAAA,EAAkB3+C,GAAKgrB,aAAvB2zB,IAAAA,EAAAA,EAAgC,EACxC,IACA1yC,MAAK,CAACzO,EAAG0O,IAAM1O,EAAEwtB,MAAQ9e,EAAE8e,SAEvBmN,GAAU3nB,EAAKkC,OAAO0yC,EAAa,GAC1C50C,EAAKkC,OAAO2yC,EAAkB,EAAGltB,GAEjC3nB,EACG7Q,QAAQK,QAAgBxD,IAARwD,IAChBwJ,SAAQ,CAACxJ,EAAKgrB,KACb2zB,EAAkB3+C,EAAI4yB,WAAW5H,MAAQA,CAAK,IAIlD4xB,EAAW+B,EAAkB,CAEjC,CAkBO,SAAS2G,IACd,MAAM,QAAEp1B,EAAO,WAAE0sB,EAAU,WAAEE,EAAU,gBAAEH,EAAe,mBAAEE,GAAuBgD,KAC1EkB,EAAaC,IAAkBzhD,EAAAA,EAAAA,UAAiB,IAkEjDkjD,EAAgB0C,EAAiBvI,GAgCvC,OACE,kBAAC9M,EAAAA,oBAAmBA,CAClBt0C,QAAS,KACPshD,GAAW,GACXD,EAAmB3sB,GACnB8wB,EAAe,GAAG,EAEpBjR,YAAY,GAEZ,kBAAC+Q,EAAgBA,CAACC,YAAaA,EAAaC,eAAgBA,IAC5D,kBAACyD,EAAoBA,CACnB9B,aA5GgB4C,IACpB,IAAKr1B,KAAaq1B,KAAcr1B,GAE9B,YAtBN,SAAkBq1B,EAAoBr1B,GACpC,IAAIs1B,EACJ,IACEA,EAAa,CACXt1B,QAAS7lB,KAAKC,UAAU4lB,GACxBq1B,WAAYA,EAEhB,CAAE,MAAO96C,GACP+6C,EAAa,CACXh7C,IAAK,4DACL+6C,WAAYA,EAEhB,CACA19C,EAAAA,EAAOC,KAAK,uBAAwB09C,EACtC,CAOMC,CAASF,EAAYr1B,GAIvB,MAAMxwB,EAASmU,OAAOrD,KAAK0f,GAASvwB,QAAQ+lD,GAAMx1B,EAAQw1B,GAAGp6B,SAAQ5rB,OAC/DoY,GAAYoY,EAAQq1B,GAAYj6B,aAAgB9uB,EAEtD,IAAImiD,EA4BJ,GA1BEA,EAAoB,OACfzuB,GAFHpY,EAEGoY,CACH,CAACq1B,GAAa,OACTr1B,EAAQq1B,IAAW,CACtBj6B,OAAQxT,EACRkT,MAAOtrB,KAKNwwB,CACH,CAACq1B,GAAa,OACTr1B,EAAQq1B,IAAW,CACtBj6B,QAAQ,EACRN,WAAOxuB,MA4Df,SAA2B+oD,GACzB,GAAIr1B,EAAS,C,IACOA,EACOrc,EADzB,MAAMgJ,IAA+B,QAAnBqT,EAAAA,EAAQq1B,UAARr1B,IAAAA,OAAAA,EAAAA,EAAqB5E,QACjCq6B,E,QAAmB9xC,EAAAA,OAAOrD,KAAK0f,GAASvwB,QAAQimD,I,IAAW11B,E,OAAe,QAAfA,EAAAA,EAAQ01B,UAAR11B,IAAAA,OAAAA,EAAAA,EAAiB5E,MAAM,WAA/DzX,IAAAA,OAAAA,EAAAA,EAAkEnU,OACrF6P,EAAQ,CACZs2C,aAAchpC,EAAW,MAAQ,SACjCipC,YAAajpC,EAAW8oC,EAAmB,EAAIA,EAAmB,IAEpEtE,EAAAA,EAAAA,mBAAkB,+CAAgD9xC,EACpE,CACF,CAhEEw2C,CAAkBR,GAGlB3I,EAAW+B,GAGPhC,EAAiB,C,IACHA,EAAhB,MAAMrxB,IAAqC,QAA3BqxB,EAAAA,EAAgB4I,UAAhB5I,IAAAA,OAAAA,EAAAA,EAA6BrxB,QAC7C,IAAI06B,EAEFA,EAA4B,OACvBrJ,GAFHrxB,EAEGqxB,CACH,CAAC4I,GAAa,OACT5I,EAAgB4I,IAAW,CAC9Bj6B,OAAQA,EACRN,MAAOtrB,KAKNi9C,CACH,CAAC4I,GAAa,OACT5I,EAAgB4I,IAAW,CAC9Bj6B,QAAQ,EACRN,WAAOxuB,MAKbqgD,EAAmBmJ,GACnBhF,EAAe,GACjB,GA+CIiE,wBAAyBtI,EACzBuI,gBAAiBh1B,EACjB80B,MA5CiB,KACrB,MAAMrG,EAAoB,KAAKzuB,GAC/B,IAAIlF,EAAQ,EACZnX,OAAOrD,KAAKmuC,GAAmBn1C,SAASxJ,IACtC,MAAMimD,EAC4B,eAAhCtH,EAAkB3+C,GAAKuC,MAAyD,eAAhCo8C,EAAkB3+C,GAAKuC,KAEzEo8C,EAAkB3+C,GAAKsrB,OAAS26B,EAEhCtH,EAAkB3+C,GAAKgrB,MAAQi7B,EAAiBj7B,SAAUxuB,CAAS,IAGrEogD,EAAW+B,GACX9B,EAAmB8B,GACnBqC,EAAe,GAAG,EA+BdyB,cAAeA,IAIvB,CC9JA,MAoBayD,EAA4B/rD,GAErC,kBAACgsD,GAAAA,CACCC,WAAYjsD,EAAMisD,WAClBC,UAAWlsD,EAAMksD,UACjB7qD,QAASrB,EAAMqB,QACfwR,MAAO7S,EAAM6S,MACbs5C,SAAUnsD,EAAMmsD,UAEfnsD,EAAM2C,UAKPqpD,GAA0BhsD,I,IAGaosD,EAF3C,MAAMrqD,GAAQwe,EAAAA,EAAAA,aACR6rC,EAAYhG,IACZ3lD,EArCU,EAACsB,EAAsBsqD,KAAkD,CACzFl7B,QAAQnvB,EAAAA,EAAAA,KAAI,CAEV+e,OAAQ,oBACRlW,OAAQ9I,EAAM8I,OAAOqjB,QACrBvjB,WAAY,gBAEd/H,MAAMZ,EAAAA,EAAAA,KAAI,CACRmC,SAAU,WACVmoD,UAAW,SACX/+B,WAAY,SACZliB,MAAO,OACP0V,OAAQ,OACRrW,KAAM,EACNtG,IAAK,EACLrB,OAAQ,OACR4H,WAAY0hD,QAAAA,EAAW,kBAqBV1rD,CAAUoB,OAAOM,EAA8B,QAAnB+pD,EAAAA,EAAUvG,iBAAVuG,IAAAA,GAAAA,EAAqBtG,mBAEhE,OACE,kBAACllD,MAAAA,CACCwF,aAAcpG,EAAMisD,WACpBM,aAAcvsD,EAAMksD,UACpB7qD,QAASrB,EAAMqB,QACfR,UACEurD,EAAUvG,UAAUh1B,QAAU7wB,EAAMmsD,UAAYC,EAAUvG,UAAUptB,YAAcz4B,EAAM6S,MAAM9O,MAC1F2H,EAAAA,EAAAA,IAAGjL,EAAOmC,KAAMnC,EAAO0wB,QACvB1wB,EAAOmC,MAGZ5C,EAAM2C,SAAQ,ECtDR6pD,GAAe,CAC1BvJ,UAAW,KACXwJ,UAAYjnD,IAAD,EACXiG,eAAWpJ,EACXqqD,kBAAcrqD,GAGHsqD,IAAetK,EAAAA,EAAAA,eAAgCmK,IAE/CI,GAAuB,EAClCjqD,WACAsgD,YACAwJ,YACAC,eACAjhD,eASE,kBAACkhD,GAAapH,SAAQ,CACpBj2C,MAAO,CACL2zC,YACAwJ,YACAC,eACAjhD,cAGD9I,GAKMkqD,GAAkB,KACtBlH,EAAAA,EAAAA,YAAWgH,I,eCjCpB,MA0BaG,GAAmB9sD,IAC9B,MACMS,EA5BU,EAACsB,EAAsBgrD,KAAoC,CAC3EnyB,MAAM54B,EAAAA,EAAAA,KAAI,CACRmC,SAAU,WACV6D,aAAc,MACd/F,QAAS,OACTwhC,SAAU,OACVvhC,eAAgB,eAElB8qD,eAAehrD,EAAAA,EAAAA,KAAI,CACjB+I,UAAWhJ,EAAMiJ,QAAQ4mB,GACzB3vB,QAAS,OACT0I,WAAY5I,EAAMwC,OAAOoG,WAAWlG,UACpCoD,QAAS,QACT7D,WAAyB,WAAb+oD,EAAwB,WAAQ1qD,IAE9C4qD,UAAUjrD,EAAAA,EAAAA,KAAI,CACZsF,SAAU,OACVQ,aAAc,WACdT,OAAQ,UACRU,YAAa,MACbC,aAAc,MACd/F,QAAS,OACTqH,WAAY,aAMC3I,EADD4f,EAAAA,EAAAA,aACkBvgB,EAAM+sD,WAChC,UAAEN,GAAcI,KAEtB,OACE,kBAACj/B,OAAAA,CAAK/sB,UAAWJ,EAAOm6B,MACtB,kBAAChN,OAAAA,CAAK/sB,UAAWJ,EAAOusD,eACD,YAApBhtD,EAAMqpC,WACL,oCACE,kBAACzoC,MAAAA,CACCC,UAAWJ,EAAOwsD,SAClB5rD,QAAS,KACPorD,EAAU,CACR5mD,IAAK7F,EAAMkK,MACXoF,MAAOtP,EAAMsP,MACbG,SAAU6B,GAAAA,GAASC,OACnB,GAGJ,kBAACzN,EAAAA,KAAIA,CAACpC,MAAO,gBAAiBR,KAAM,KAAM6C,KAAM,iBAElD,kBAACnD,MAAAA,CACCC,UAAWJ,EAAOwsD,SAClB5rD,QAAS,KACPorD,EAAU,CACR5mD,IAAK7F,EAAMkK,MACXoF,MAAOtP,EAAMsP,MACbG,SAAU6B,GAAAA,GAAS2tB,UACnB,GAGJ,kBAACn7B,EAAAA,KAAIA,CAACpC,MAAO,sBAAuBR,KAAM,KAAM6C,KAAM,mBAK3D/D,EAAMktD,YACL,kBAACtsD,MAAAA,CAAIc,MAAO,aAAcL,QAASrB,EAAMktD,WAAYrsD,UAAWJ,EAAOwsD,UACrE,kBAACpP,MAAAA,CAAIxyC,MAAM,KAAK0V,OAAO,KAAK+8B,QAAQ,YAAY78C,KAAK,OAAO88C,MAAM,8BAChE,kBAACoP,OAAAA,CACCC,SAAS,UACTC,SAAS,UACTC,EAAE,srBACFrsD,KAAK,UACLssD,YAAY,MAEd,kBAACJ,OAAAA,CACCG,EAAE,6xBACFrsD,KAAK,UACLssD,YAAY,QAMnBvtD,EAAM+4B,OACL/4B,EAAM+4B,MAAMpzB,KAAKd,I,IASEA,EARjB,OACE,kBAACjE,MAAAA,CACCC,UAAWJ,EAAOwsD,SAClB5rD,QAAS,KACP2F,OAAOwuB,KAAK3wB,EAAKtB,KAAM,SAAS,EAElCsC,IAAKhB,EAAKtB,MAEV,kBAACO,EAAAA,KAAIA,CAACpC,MAAiB,QAAVmD,EAAAA,EAAKnD,aAALmD,IAAAA,EAAAA,EAAc,OAAQgB,IAAKhB,EAAKtB,KAAMrC,KAAM,KAAM6C,KAAM,S,KAG3E,ECjHGypD,GAAa,iBC8DbC,GAAeztD,IAC1B,MAAM,MAAEkK,EAAK,MAAEoF,GAAUtP,EACnB+B,GAAQwe,EAAAA,EAAAA,cACR,UAAEslC,GAAcO,IACtB,IAAIjV,EAEJ,GAAIjnC,IAAUsjD,GAAY,CACxB,MAAME,EAAWC,KAAmBj/C,QACf,iBAAVY,GAAsBA,KAASo+C,IACxCvc,EAAauc,EAASp+C,GAAOhL,MAEjC,CAEA,MAAMspD,EAAe/H,EAAUh1B,QAAU7wB,EAAMmsD,UAAYnsD,EAAM6S,MAAM9O,OAAS8hD,EAAUptB,UAEpFh4B,EA1DU,EAACsB,EAAsBovC,KAAyB,CAChE0c,gBAAgB7rD,EAAAA,EAAAA,KAAI,CAAC,GACrB8rD,UAAU9rD,EAAAA,EAAAA,KAAI,CACZqJ,MAAO,SAET0iD,MAAM/rD,EAAAA,EAAAA,KAAI,CACR2F,OAAQ,aAAa5F,EAAMwC,OAAOoD,OAAOkqB,OACzC,UAAW,CACTlqB,OAAQ,aAAa5F,EAAMwC,OAAOoD,OAAOw/B,UAE3CrV,YAAa,MACbvmB,UAAW,MACXvH,WAAY,MACZ6D,QAAS,UACT1D,SAAU,WACVlC,QAAS,cACToI,cAAe,cACf5C,gBAAiB,cAEjBM,YAAaopC,EAAa,GAAGpvC,EAAMmC,QAAQ,OAAU,MAErD,WAAY,CACVwqC,QAAS,KACTvqC,SAAU,WACVuG,KAAM,EACNtG,IAAK,EACL2c,OAAQ,OACR1V,MAAO,GAAGtJ,EAAMmC,QAAQ,OACxBuD,gBAAiB0pC,KAGrBvW,MAAM54B,EAAAA,EAAAA,KAAI,CACRqJ,MAAO,SAET4hD,UAAUjrD,EAAAA,EAAAA,KAAI,CACZsF,SAAU,OACVQ,aAAc,aAEhBkmD,cAAchsD,EAAAA,EAAAA,KAAI,CAChBqJ,MAAO,OACPpJ,QAAS,mBAkBItB,CAAUoB,EAAOovC,GAChC,OACE,kBAACvwC,MAAAA,CAAIC,WAAW6K,EAAAA,EAAAA,IAAGjL,EAAOqtD,SAAUF,EAAentD,EAAOotD,oBAAiBxrD,MACtEiN,GACD,oCACE,kBAACse,OAAAA,CAAK/sB,UAAWJ,EAAOstD,MACtB,oCAAGz+C,IAEJs+C,GAAiC,iBAAVt+C,GAAsBtP,EAAM6S,MAAMzK,OAAS6lD,EAAAA,UAAUC,MAC3E,kBAACpB,GAAeA,CAAC5iD,MAAOlK,EAAMkK,MAAOoF,MAAOA,EAAOy9C,SAAU,Y,4BC7ClE,SAASoB,GAAgBnuD,G,IAIhBijD,EAHd,MACMxiD,EAnCiB,CAACsB,IAA4C,CACpEqsD,iBAAiBpsD,EAAAA,EAAAA,KAAI,CACnB6F,QAAS,EACTkZ,OAAQ,OACRstC,WAAY,IACZhjD,MAAO,SAETijD,eAAetsD,EAAAA,EAAAA,KAAI,CACjBC,QAAS,cACTssD,cAAe,SACfxrD,OAAQ,EACRuE,SAAU,SACVnF,aAAc,QAEhBqsD,aAAaxsD,EAAAA,EAAAA,KAAI,CACf+e,OAAQ,OACR5c,SAAU,SACVuG,KAAM,EACNzI,QAAS,OACT0I,WAAY5I,EAAMwC,OAAOoG,WAAWlG,UACpCoD,QAAS,KAAK9F,EAAMmC,QAAQ,MAC5B2G,OAAQ,EACRE,UAAWhJ,EAAMiJ,QAAQyjD,KAE3BC,SAAS1sD,EAAAA,EAAAA,KAAI,CACX6F,QAAS,UAET,UAAW,CACTvD,MAAOvC,EAAMwC,OAAOC,KAAKK,KACzBwC,OAAQ,eAMG1G,EADD4f,EAAAA,EAAAA,eAER,UAAE0iC,EAAS,UAAEx3C,GAAcohD,KAC3B8B,EAAQ1L,SAAkB,QAAlBA,EAAAA,EAAW2L,eAAX3L,IAAAA,OAAAA,EAAAA,EAAoBz0C,OAAOxO,EAAMmsD,UACzC0C,EAAY5L,aAAAA,EAAAA,EAAW4B,UAAUr2C,OAAOxO,EAAMmsD,WAC7C2C,EAAcC,IAAmB3pD,EAAAA,EAAAA,WAAS,GAC3C4pD,GAAU/P,EAAAA,EAAAA,cAAY,IACtBxzC,GACKwjD,EAAAA,GAAAA,IAAqB,eAAgB,CAAE/2B,GAAIy2B,EAAOO,IAAKlvD,EAAMmsD,UAAY1gD,GAE3E,IACN,CAACkjD,EAAO3uD,EAAMmsD,SAAU1gD,IAC3B,OACE,oCACE,kBAAC7K,MAAAA,CAAIC,UAAWJ,EAAO+tD,aACrB,kBAAC5tD,MAAAA,CAAIC,UAAWJ,EAAOiuD,SACrB,kBAAC5gC,EAAAA,WAAUA,CACTxsB,cAAaC,GAAAA,EAAQ4tD,MAAMC,YAC3BvuD,UAAWJ,EAAO6tD,cAClBpgC,QAAQ,gBACRltB,QAAQ,YACRwF,aAAW,gBACX6oD,iBAAiB,MACjBnuD,KAAK,KACL6C,KAAK,MACL1C,QAAS,IAAM0tD,GAAgB,GAC/BO,SAAU,KAGd,kBAAC1uD,MAAAA,CAAIC,UAAWJ,EAAOiuD,SACrB,kBAACa,EAAAA,gBAAeA,CACd1uD,UAAWJ,EAAO2tD,gBAClBp7B,KAAK,YACLhyB,QAAQ,YACRC,KAAK,OACLC,KAAK,KACLgtB,QAAQ,wBACRmhC,iBAAiB,MACjBC,SAAU,EACVN,QAASA,MAIf,oCACGF,GACC,kBAACU,EAAAA,MAAKA,CAACC,UAAW,IAAMV,GAAgB,GAAQ5kC,QAAQ,EAAMzoB,MAAM,iBAClE,kBAACguD,MAAAA,KAAKb,GACN,kBAACW,EAAAA,MAAMG,UAAS,KACd,kBAACJ,EAAAA,gBAAeA,CAACv8B,KAAK,OAAOg8B,QAAS,IAAMhvD,EAAMsP,OAAiB,wBASjF,CCtFA,MA0BasgD,GAAwB5vD,I,IAWV6vD,EAVzB,IAAIvgD,EAAQtP,EAAMsP,MAClB,MAAMuD,EAAQ7S,EAAM6S,MACdi9C,EAAej9C,EAAM5Q,QAASqN,GAE9B7O,EA/BU,EAACsB,EAAsBsnC,KAA2B,CAClE9/B,UAAUvH,EAAAA,EAAAA,KAAI,CACZC,QAAS,OACTqH,WAAY,aACZe,cAAeg/B,IAAc4kB,EAAAA,UAAU8B,OAAS,cAAgB,MAChE7uC,UAAWmoB,IAAc4kB,EAAAA,UAAU8B,OAAS,QAAU,SAExDrhB,SAAS1sC,EAAAA,EAAAA,KAAI,CACXmC,SAAU,WACVmD,SAAU,SACVrF,QAAS,OACT8e,OAAQ,SAEVivC,aAAahuD,EAAAA,EAAAA,KAAI,CACfsC,MAAOvC,EAAMwC,OAAOC,KAAKK,KACzB0G,UAAW,MACXvH,WAAY,MACZ,UAAW,CACT2qC,eAAgB,iBAaLhuC,EADD4f,EAAAA,EAAAA,aACkBvgB,EAAM6S,MAAMzK,OACtC,WAAEu6C,GAAe+C,KACjB,UAAEG,EAAS,mBAAEE,GAAuBK,IAGpC8I,EAAM,CAAEr+B,MAAO7wB,EAAMmsD,UACrB8D,EAAWp0C,QAAkCqzC,QAA1BW,GAAAA,EAAAA,EAAAA,cAAa7vD,EAAM6S,MAAOq8C,UAA1BW,IAAAA,OAAAA,EAAAA,EAAgCtqD,QAEzD,GAAc,OAAV+J,EACF,OAAO,qCAIPA,EADE4gD,IAAAA,eAAqBlwD,EAAMsP,OACrBtP,EAAMsP,MACY,iBAAVA,EACRY,KAAKC,UAAUnQ,EAAMsP,QAErB6gD,EAAAA,EAAAA,wBAAuBL,GAejC,OACE,kBAAC/D,EAAwBA,CACvB1qD,QAAS,IACHrB,EAAMmsD,WAAatG,EAAUh1B,OAAS7wB,EAAM6S,MAAM9O,OAAS8hD,EAAUptB,UAChEstB,EAAmB,CAAEl1B,MAAO,OAE9Bk1B,EAAmB,CAAEl1B,MAAO7wB,EAAMmsD,SAAU1zB,UAAWz4B,EAAM6S,MAAM9O,KAAM+hD,kBAAmB,IAErGjzC,MAAO7S,EAAM6S,MACbs5C,SAAUnsD,EAAMmsD,UAEhB,kBAACvrD,MAAAA,CAAIC,UAAWJ,EAAOiuC,SACC,IAArB1uC,EAAMowD,YAAoB,kBAACjC,GAAeA,CAAC7+C,MAAOA,EAAO68C,SAAUnsD,EAAMmsD,WAC1E,kBAACvrD,MAAAA,CAAIC,UAAWJ,EAAO8I,YAErB0mD,GA3BY,EAAC3gD,EAAwCpF,IAEzD,kBAACujD,GAAWA,CACV56C,MAAO7S,EAAM6S,MACbs5C,SAAUnsD,EAAMmsD,SAChBkE,YAAa,IAAM1N,GAAW,GAC9Bz4C,MAAOA,EACPoF,MAAOA,IAoBOghD,CAAYhhD,EAAOuD,EAAM9O,MAEtCksD,GAAYp9C,EAAM09C,UACjB,kBAACC,EAAAA,qBAAoBA,CAACz3B,MAAO,K,IAAM82B,E,OAAoBX,QAApBW,GAAAA,EAAAA,EAAAA,cAAah9C,EAAOq8C,UAApBW,IAAAA,EAAAA,EAA4B,EAAE,IAC7DY,GACIA,EAAIC,SAEJ,kBAAC9vD,MAAAA,CAAIC,UAAWJ,EAAOuvD,YAAa3uD,QAASovD,EAAIC,UAC/C,oCAAGphD,IAKL,kBAAC1O,MAAAA,CAAIC,UAAWJ,EAAOuvD,aACrB,oCAAG1gD,OAIX,E,44BC3CZ,SAASqhD,GAAiB3wD,GASxB,MAAM+B,GAAQwe,EAAAA,EAAAA,aAEd,IAAI4wB,EACJ,GAAInxC,EAAMkK,QAAUsjD,GAAY,CAC9B,MAAME,EAAWC,KAAmBj/C,QAChC1O,EAAMsP,SAASo+C,IACjBvc,EAAauc,EAAS1tD,EAAMsP,OAAOhL,MAEvC,CAEA,MAAM7D,EAzDU,EAACsB,EAAsBovC,KAAyB,CAChE4c,MAAM/rD,EAAAA,EAAAA,KAAI,CACR0B,KAAM,WACNM,WAAYjC,EAAMmC,QAAQ,IAC1B4tB,YAAa/vB,EAAMmC,QAAQ,IAC3B2D,QAAS,GAAG9F,EAAMmC,QAAQ,QAASnC,EAAMmC,QAAQ,OACjDC,SAAU,WACVlC,QAAS,cACToI,cAAe,SACfkB,UAAWxJ,EAAMmC,QAAQ,MAE3B0sD,YAAY5uD,EAAAA,EAAAA,KAAI,CAAC,GACjB6uD,WAAW7uD,EAAAA,EAAAA,KAAI,CACb2F,OAAQ,aAAa5F,EAAMwC,OAAOoG,WAAWlG,YAC7CsG,UAAW,oBAAoBhJ,EAAMwC,OAAOoG,WAAWlG,YACvDgD,gBAAiB,cACjBJ,OAAQ,UACRlD,SAAU,WAEV6D,aAAc,GAAGjG,EAAMmC,QAAQ,MAC/B6D,YAAaopC,EAAa,GAAGpvC,EAAMmC,QAAQ,OAAU,GAAGnC,EAAMmC,QAAQ,MAEtE,WAAY,CACVwqC,QAAS,KACTvqC,SAAU,WACVuG,KAAM,EACNtG,IAAK,EACL2c,OAAQ,OACR1V,MAAO,GAAGtJ,EAAMmC,QAAQ,OACxBuD,gBAAiB0pC,GAGnB,UAAW,CACTxpC,OAAQ,aAAa5F,EAAMwC,OAAOoD,OAAOw/B,cAwB9BxmC,CAAUoB,EAAOovC,GAEhC,OACE,kBAACvjB,OAAAA,CAAK/sB,WAAW6K,EAAAA,EAAAA,IAAGjL,EAAOstD,KAAM/tD,EAAM8wD,WAAarwD,EAAOmwD,gBAAavuD,GAAYhB,QAASrB,EAAMqB,SACjG,kBAACusB,OAAAA,CAAK/sB,UAAWJ,EAAOowD,WACrB7wD,EAAMkK,MAAM,IAAElK,EAAMsP,OAEtBtP,EAAM8wD,YACL,kBAAChE,GAAeA,CACdC,SAAU,UACV1jB,UAAWrpC,EAAMqpC,UACjBtQ,MAAO/4B,EAAM+4B,MACb7uB,MAAOlK,EAAMkK,MACboF,MAAOtP,EAAMsP,MACb49C,WAAYltD,EAAM+wD,aAK5B,CAEO,MAAMC,GAAehxD,IAC1B,MAAM,MAAEkK,GAAUlK,GACZ,UAAE6lD,EAAS,mBAAEE,GAAuBK,KACpC,QAAErwB,EAAO,WAAE0sB,GAAeiD,IAC1Bp2C,EAAQtP,EAAMsP,MACd2hD,GAAcC,EAAAA,EAAAA,kBACdhiD,GAAUiiD,EAAAA,EAAAA,UAAQ,IAAMF,EAAY/hD,QAAQ/B,KAAK8jD,IAAc,CAACA,IAGhEp+C,EAAQ7S,EAAM6S,MAEpB,IAAKA,IAASA,aAAAA,EAAAA,EAAOzK,QAAS6lD,EAAAA,UAAUmD,MACtC,OAAO,KAET,MAAMlC,EAAM,CAAEr+B,MAAO7wB,EAAMmsD,UAEvBnsD,EAAMqxD,eAAiBrxD,EAAMsxD,gBAAkBtxD,EAAMuxD,gBACvDvxD,EAAMqxD,cAAcd,UAAWiB,EAAAA,EAAAA,kBAAiBxxD,EAAMuxD,cAAevxD,EAAMqxD,cAAe,CAAC,EAAGniD,IAGhG,MAAM6pB,EAAQ/4B,EAAMqxD,gBAAiBxB,EAAAA,EAAAA,cAAa7vD,EAAMqxD,cAAenC,GA4BvE,OACE,kBAACyB,GAAAA,CACCtvD,QAAS,IAELrB,EAAMmsD,WAAatG,EAAUh1B,OAC7Bhe,EAAM9O,OAAS8hD,EAAUptB,WACzBvuB,IAAU27C,EAAU4L,aAEb1L,EAAmB,CAAEl1B,MAAO,OAG9Bk1B,EAAmB,CACxBl1B,MAAO7wB,EAAMmsD,SACb1zB,UAAW5lB,EAAM9O,KACjB0tD,aAAcvnD,EACd47C,kBAAmB9lD,EAAMsxD,eAAiB,EAAI,IAGlDR,WACEjL,EAAUh1B,QAAU7wB,EAAMmsD,UAAYtG,EAAUptB,YAAc5lB,EAAM9O,MAAQ8hD,EAAU4L,eAAiBvnD,EAEzGm/B,UAAWrpC,EAAMsxD,eAAiB,eAAYjvD,EAC9C6H,MAAOA,EACPoF,MAAOA,EACPyhD,WAAY,IA7CU,CAACt4B,IACzB,MAAMwsB,EAAiB,MAAKlvB,GAEtBxwB,EAASmU,OAAOrD,KAAK0f,GAASvwB,QAAQ+lD,GAAMx1B,EAAQw1B,GAAGp6B,SAAQ5rB,OACjE0/C,EAAexsB,GAAWtH,OAC5B8zB,EAAexsB,GAAa,SACvBwsB,EAAexsB,IAAU,CAC5BtH,QAAQ,EACRN,WAAOxuB,IAGT4iD,EAAexsB,GAAa,SACvBwsB,EAAexsB,IAAU,CAC5BtH,QAAQ,EACRN,MAAOtrB,IAIXk9C,EAAWwC,EAAe,EA2BNyM,CAAkBxnD,GACpC6uB,MAAOA,G,EC9IP44B,GAAcz5B,I,IAEVA,EADRA,EAAAA,SAAW,QAAXA,EAAAA,EAAI8iB,eAAJ9iB,IAAAA,GAAAA,EAAa05B,SAAS,CACpBlnD,KAAgB,QAAVwtB,EAAAA,EAAG8iB,eAAH9iB,IAAAA,OAAAA,EAAAA,EAAY25B,YAClB,EAmBG,SAASC,IAAWC,YAAazX,IACtC,MACM75C,EAxDU,CAACsB,IAA0B,CAC3CiwD,SAAUhwD,EAAAA,GAAG;;;;;;;;;;;;IAab6vD,WAAY7vD,EAAAA,GAAG;;kBAECD,EAAMwC,OAAOoG,WAAWgnB;;;oBAGtB5vB,EAAMwC,OAAOoG,WAAWlG;;IAG1CwtD,YAAajwD,EAAAA,GAAG;;kBAEAD,EAAMwC,OAAOoG,WAAWgnB;;;oBAGtB5vB,EAAMwC,OAAOoG,WAAWlG;;MA6B3B9D,EADD4f,EAAAA,EAAAA,cAEd,OACE,kBAAC3f,MAAAA,CAAIC,UAAWJ,EAAOuxD,UACrB,kBAACpkC,OAAAA,CAAKskC,cAAe,KArBZ,IAACh6B,EACdA,EAAAA,OADcA,EAqBwBoiB,IApB3B,QAAXpiB,EAAAA,EAAI8iB,eAAJ9iB,IAAAA,GAAAA,EAAa05B,SAAS,CACpBxtD,IAAK,EACLsG,KAAM,EACNynD,SAAU,UAiB8B,EAAEC,YAAa,IAAMT,GAAWrX,GAAMz5C,UAAWJ,EAAOoxD,YAC5F,kBAAC/tD,EAAAA,KAAIA,CAACC,KAAM,gBAEd,kBAAC6pB,OAAAA,CAAKskC,cAAe,KAhBX,IAACh6B,EACfA,EAAAA,OADeA,EAgBwBoiB,IAf5B,QAAXpiB,EAAAA,EAAI8iB,eAAJ9iB,IAAAA,GAAAA,EAAa05B,SAAS,CACpBxtD,IAAK,EACLsG,KAAMwtB,EAAG8iB,QAAQqX,YACjBF,SAAU,UAY+B,EAAEC,YAAa,IAAMT,GAAWrX,GAAMz5C,UAAWJ,EAAOwxD,aAC7F,kBAACnuD,EAAAA,KAAIA,CAACC,KAAM,iBAIpB,CClEO,SAASuuD,GAAetyD,GAC7B,MAAM+B,GAAQwe,EAAAA,EAAAA,aACR9f,EAASE,GAAUoB,GACzB,OACE,kBAACnB,MAAAA,CAAIU,cAAaC,GAAAA,EAAQ4tD,MAAMoD,WAAY1xD,UAAWJ,EAAO8xD,YAC5D,oCAAGvyD,EAAMsP,OAGf,CAEO,MAAM3O,GAAY,CAACoB,EAAsBsqD,KAAsB,CACpEkG,YAAYvwD,EAAAA,EAAAA,KAAI,CACdoF,WAAYrF,EAAM4C,WAAW6tD,oBAC7BzxC,OAAQ,OACRstC,WAAY,OACZrmD,aAAcjG,EAAMmC,QAAQ,KAC5B6D,YAAahG,EAAMmC,QAAQ,GAC3BQ,SAAU3C,EAAM4C,WAAWC,UAAUF,aCG5B+tD,GAAwBzyD,IACnC,IAAIsP,EAAQtP,EAAMsP,MAClB,MAAMuD,EAAQ7S,EAAM6S,MACdi9C,EAAej9C,EAAM5Q,QAASqN,GAC9BvN,GAAQwe,EAAAA,EAAAA,aACR9f,EAASE,GAAUoB,IACnB,QAAEg0B,EAAO,WAAE4sB,EAAU,UAAEC,GAAc8C,KACrC,UAAEzC,GAAc4J,MACf6F,EAASC,IAAcvtD,EAAAA,EAAAA,WAAS,GACjCk1C,GAAMf,EAAAA,EAAAA,QAA8B,MAGxCjqC,EADE4gD,IAAAA,eAAqBlwD,EAAMsP,OACrBtP,EAAMsP,MACY,iBAAVA,EACRY,KAAKC,UAAUnQ,EAAMsP,QAErB6gD,EAAAA,EAAAA,wBAAuBL,GAOjC,MAoFM17B,EApFe,CAACA,GACK1a,OAAOrD,KAAK0f,GAElCvwB,QAAQzB,GAASA,KAASshD,EAAAA,EAAAA,IAAYpC,KACtCnxC,MAAK,CAACzO,EAAG0O,IAEJ1O,IAAMmqD,IACA,EAENz7C,IAAMy7C,GACD,EAGe,eAApBz3B,EAAQ1yB,GAAG+E,MACL,EAEc,eAApB2tB,EAAQhkB,GAAG3J,KACN,EAIF2tB,EAAQ1yB,GAAG4mC,YAAclU,EAAQhkB,GAAGk4B,aAAe,EAAI,IAGhCzkC,QAC/B0E,IAEE6rB,EAAQ7rB,GAAOinB,QAEhB4E,EAAQ7rB,GAAO+/B,YAAc,IAI9BtkC,KAAKuE,I,IAEuB+4C,EAD3B,MAAMjuB,EAAaZ,EAAOlqB,GACpB0oD,EAAqB3P,SAAc,QAAdA,EAAAA,EAAWljC,WAAXkjC,IAAAA,OAAAA,EAAAA,EAAgBjvC,OAAOyc,MAAM5d,GAAUA,EAAM9O,OAASmG,IAC3E2oD,EAAWhgD,aAAAA,EAAAA,EAAOrE,OAAOxO,EAAMmsD,UAC/B2G,GAAa99B,KAAgB69B,EAGnC,GAAI79B,EACF,OACE,kBAACg8B,GAAWA,CACVO,mBAAelvD,EACfwQ,MAAOA,EACPkjB,QAASA,EACTo2B,SAAUnsD,EAAMmsD,SAChB30B,MAAOx3B,EAAMw3B,MACb64B,YAAa,IAAM1N,GAAW,GAC9B98C,IAAKqE,EACLA,MAAOA,EACPonD,gBAAgB,EAChBhiD,MAAO0lB,IAMb,GAAI89B,IAAaF,aAAAA,EAAAA,EAAoB7uD,MAAM,CACzC,MAAMgvD,EAAqBH,aAAAA,EAAAA,EAAoBpkD,OAAOxO,EAAMmsD,UAC5D,IAAIyG,aAAAA,EAAAA,EAAoBxqD,QAAS6lD,EAAAA,UAAU+E,QAAUD,EACnD,OACE,kBAAC/B,GAAWA,CACVO,cAAetO,aAAAA,EAAAA,EAAWljC,IAC1BsxC,cAAeuB,EACf//C,MAAOA,EACPvD,MAAOyjD,EACPh9B,QAASA,EACTo2B,SAAUnsD,EAAMmsD,SAChB30B,MAAOx3B,EAAMw3B,MACb64B,YAAa,IAAM1N,GAAW,GAC9B98C,IAAK+sD,EAAmB7uD,KACxBmG,MAAO0oD,EAAmB7uD,KAC1ButD,gBAAgB,GAIxB,CAEA,OAAO,IAAI,IAEZ9rD,QAAQmK,GAAMA,IAGJsjD,CAAajzD,EAAMo0B,QAC5B8+B,EAAStQ,IAAcT,EAAagR,KACpCC,EAAYh/B,EAAO7uB,OAAS,EAElC,OACE,kBAACwmD,EAAwBA,CACvBG,UAAW,KACTyG,GAAW,EAAK,EAElB1G,WAAY,KACV0G,GAAW,EAAM,EAEnBxG,SAAUnsD,EAAMmsD,SAChBt5C,MAAO7S,EAAM6S,OAEb,kBAACwgD,EAAAA,eAAcA,CAAChK,SAAU/O,EAAKrnC,MAAM,cACnC,kBAACrS,MAAAA,CAAIC,UAAWJ,EAAOiuC,SAEC,IAArB1uC,EAAMowD,YAAoB,kBAACjC,GAAeA,CAAChC,SAAUnsD,EAAMmsD,SAAU78C,MAAOA,IAE5E4jD,GAAUE,GAAa,oCAAGh/B,GAC1BwuB,IAAcT,EAAa/tB,QAAUg/B,GAAa,oCAAGh/B,GACrDwuB,IAAcT,EAAa/tB,SAAWg/B,GAAa,kBAACd,GAAcA,CAAChjD,MAAOA,IAG1E4jD,IAAWE,GAAa,kBAACd,GAAcA,CAAChjD,MAAOA,IAC/CszC,IAAcT,EAAa39C,MAAQ,kBAAC8tD,GAAcA,CAAChjD,MAAOA,IAE1DojD,GAAW,kBAACZ,GAAQA,CAACC,YAAazX,M,EAOhC35C,GAAaoB,IAA0B,CAClD2sC,QAAS1sC,EAAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;6EAsB+DD,EAAMwC,OAAOoG,WAAWgnB;;25BC3KrG,MAiDa2hC,GAAmBtzD,IAC9B,MAAM,oBAAEumD,EAAmB,mBAAED,GAAuBI,KAC9C,UAAEzD,GAAc4J,KAChBzR,GAAmB7B,EAAAA,EAAAA,QAAiC,MAEpD94C,EAtDU,EAACsB,EAAsBwxD,EAAwBC,KAAqB,CACpFC,eAAezxD,EAAAA,EAAAA,KAAI,CACjBgC,WAAY,QAEd0vD,iBAAiB1xD,EAAAA,EAAAA,KAAI,CACnBkI,MAAO,kBACPmB,MAAO,OACPo4B,SAAU,QACV1iB,OAAQ,OACR0xB,UAAW,QACXhrC,gBAAiB1F,EAAMwC,OAAOoG,WAAWgnB,QACzChqB,OAAQ,aAAa5F,EAAMwC,OAAOoD,OAAOkqB,OACzChqB,QAAS9F,EAAMmC,QAAQ,GACvBnB,OAAQhB,EAAMmC,QAAQ,EAAG,GACzB6G,UAAWhJ,EAAMiJ,QAAQ4mB,GACzBzvB,aAAcJ,EAAMO,MAAMC,OAAOC,UAEnCmxD,WAAW3xD,EAAAA,EAAAA,KAAI,CACbkI,MAAO,aACPjI,QAAS,OACToJ,MAAO,sBAETm4B,aAAaxhC,EAAAA,EAAAA,KAAI,CACfgC,WAAY,QAEd4vD,YAAY5xD,EAAAA,EAAAA,KAAI,CACdkI,MAAO,cACPjI,QAAS,OACT6vB,YAAa,QAEfluB,SAAS5B,EAAAA,EAAAA,KAAI,CACXkI,MAAO,UACPjI,QAAS,OACT+B,WAAYuvD,EAAgB,OAAS,MAErCloD,MAAOmoD,EAAS,mBAAqB,OAGrCpxD,YAAa,aAAaL,EAAMwC,OAAOoD,OAAOkqB,OAC9CC,YAAa,SAEf+hC,uBAAuB7xD,EAAAA,EAAAA,KAAI,CACzBS,WAAY8wD,EAAgB,aAAaxxD,EAAMwC,OAAOoD,OAAOkqB,OAAS,OACtE7tB,WAAYuvD,EAAgB,OAAS,EACrCxrD,YAAawrD,EAAgB,OAAS,EACtCtxD,QAAS,WASItB,EADD4f,EAAAA,EAAAA,aACuC,IAArBvgB,EAAMowD,WAAkBpwD,EAAM6S,MAAM9O,QAASshD,EAAAA,EAAAA,IAAYpC,KACnF,eAAEX,EAAc,kBAAEC,EAAiB,aAAEM,EAAY,UAAED,GAAc8C,IACjEoO,EAAc9zD,EAAM6S,MAAM9O,QAASshD,EAAAA,EAAAA,IAAYpC,GAE/C8Q,EAAkB,KACtBlR,EAAaD,IAAcT,EAAa39C,KAAO29C,EAAa/tB,OAAS+tB,EAAa39C,KAAK,EAGzF,OACE,kBAACopB,OAAAA,CAAK/sB,UAAWJ,EAAOmD,SACtB,kBAACgqB,OAAAA,CAAK/sB,UAAWJ,EAAOkzD,WACtB,kBAAC/lC,OAAAA,CAAK/sB,UAAWJ,EAAOozD,uBAAwB7zD,EAAMg0D,gBACrD1R,GAAkBC,QAA4DlgD,KAAvCigD,aAAAA,EAAAA,EAAiBtiD,EAAM6S,MAAM9O,QACnE,kBAAC+pB,EAAAA,WAAUA,CACTI,QAAS,qBACTmhC,iBAAkB,MAClBxuD,UAAWJ,EAAO+iC,YAClBh9B,aAAY,qBACZzC,KAAM,IACN1C,QAAS,KACP,MAA6C,E,uUAAA,IAAKihD,GAAzCtiD,EAAAA,EAAM6S,MAAM9O,MAAb,CAAC/D,GAAmBmoD,GAAiB,EAARxiD,EAAAA,GAAQ,GAApC3F,G,SACTuiD,SAAAA,EAAoB58C,EAAI,IAI7BmuD,GACC,oCACGlR,IAAcT,EAAa39C,KAC1B,kBAACspB,EAAAA,WAAUA,CACTuhC,iBAAkB,MAClBnhC,QAAS,kBACT1nB,aAAY,kBACZnF,QAAS0yD,EACTlzD,UAAWJ,EAAOgzD,cAClB1vD,KAAM,iBACN7C,KAAM,OAGR,kBAAC4sB,EAAAA,WAAUA,CACTuhC,iBAAkB,MAClBnhC,QAAS,gBACT1nB,aAAY,gBACZnF,QAAS0yD,EACTlzD,UAAWJ,EAAOgzD,cAClB1vD,KAAM,cACN7C,KAAM,SAMhB,kBAAC0sB,OAAAA,CAAK/sB,UAAWJ,EAAOmzD,YACtB,kBAAC9lC,EAAAA,WAAUA,CACTI,QAAS,QAAQluB,EAAM6S,MAAM9O,YAC7BsrD,iBAAkB,MAClB/U,IAAKc,EACL50C,aAAY,QAAQxG,EAAM6S,MAAM9O,YAChC1C,QAAUiP,IACRi2C,GAAqBD,EAAmB,EAE1CviD,KAAM,gBAITq3C,EAAiBJ,SAEhB,kBAACC,EAAAA,QAAOA,CACNC,KAAMoL,EACN5X,QACE,kBAACiH,EAAAA,oBAAmBA,CAACt0C,QAAS,IAAMklD,GAAoB,GAAQ3Q,YAAY,GAC1E,kBAACh1C,MAAAA,CAAIC,UAAWJ,EAAOizD,iBAAkB1zD,EAAM2C,WAGnDy4C,iBAAkBA,EAAiBJ,U,2HCxItC,SAASiZ,GAAoBj0D,GAUlC,MAAM,oBAAEumD,GAAwBG,KAC1B,QAAE3wB,EAAO,WAAE0sB,EAAU,UAAEG,EAAS,aAAEC,GAAiB6C,KACnD,UAAEzC,GAAc4J,KAChBpsD,EAASE,KAETuzD,GAAajV,EAAAA,EAAAA,cAChBpsC,IACC,MAAMshD,E,uUAAqB,IAAKp+B,GAEGrc,OAAOrD,KAAK89C,GAC5C3uD,QAAQw/C,IACP,MAAMoP,EAAcD,EAAmBnP,GAAKn0B,MACtCu/B,EAAa+D,EAAmBthD,EAAM9O,MAAM8sB,MAClD,OAAOsjC,EAAmBnP,GAAK7zB,QAAUi/B,GAAcgE,GAAeA,EAAchE,CAAU,IAE/FzqD,KAAK0uD,GAASF,EAAmBE,KAEThlD,SAAS21C,SAChB3iD,IAAd2iD,EAAIn0B,OACNm0B,EAAIn0B,OACN,IAGFsjC,EAAmBthD,EAAM9O,MAAMotB,QAAS,EACxCgjC,EAAmBthD,EAAM9O,MAAM8sB,WAAQxuB,EACvCogD,EAAW0R,EAAmB,GAEhC,CAACp+B,EAAS0sB,IAGNqR,EAAc9zD,EAAMs0D,YAAYzhD,MAAM9O,QAASshD,EAAAA,EAAAA,IAAYpC,GAEjE,OACE,kBAACqQ,GAAoBtzD,EAAMs0D,YACzB,kBAAC1zD,MAAAA,CAAIC,UAAWJ,EAAO8zD,UACrB,kBAAClxD,IAAAA,CACCxC,UAAWJ,EAAOoE,KAClBxD,QAAS,KACPrB,EAAMw0D,6BACNjO,GAAoB,EAAM,GAG5B,kBAACziD,EAAAA,KAAIA,CAACjD,UAAWJ,EAAOuyB,KAAMjvB,KAAM,UAAW7C,KAAM,OAAQ,mBAIjE,kBAACN,MAAAA,CAAIC,UAAWJ,EAAO8zD,UACrB,kBAAClxD,IAAAA,CAAExC,UAAWJ,EAAOoE,KAAMxD,QAAS,IAAM6yD,EAAWl0D,EAAMs0D,YAAYzhD,QACrE,kBAACgrC,MAAAA,CACCE,MAAM,6BACND,QAAQ,YACRzyC,MAAM,KACN0V,OAAO,KACPlgB,UAAU,mBAEV,kBAACssD,OAAAA,CACCC,SAAS,UACTC,SAAS,UACTC,EAAE,+sBACFrsD,KAAK,UACLssD,YAAY,MAEd,kBAACJ,OAAAA,CACCG,EAAE,iwCACFrsD,KAAK,UACLssD,YAAY,OAEV,kBAITvtD,EAAMy0D,WACL,kBAAC7zD,MAAAA,CAAIC,UAAWJ,EAAO8zD,UACrB,kBAAClxD,IAAAA,CAAExC,UAAWJ,EAAOoE,KAAMxD,QAAS,K,IAAMrB,E,OAAe,QAAfA,EAAAA,EAAMy0D,iBAANz0D,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAkB+1B,EAAQ,GAClE,kBAACjyB,EAAAA,KAAIA,CAACjD,WAAW6K,EAAAA,EAAAA,IAAGjL,EAAOuyB,KAAMvyB,EAAOi0D,SAAU3wD,KAAM,mBAAoB7C,KAAM,OAAQ,cAK/FlB,EAAM20D,YACL,kBAAC/zD,MAAAA,CAAIC,UAAWJ,EAAO8zD,UACrB,kBAAClxD,IAAAA,CAAExC,UAAWJ,EAAOoE,KAAMxD,QAAS,K,IAAMrB,E,OAAgB,QAAhBA,EAAAA,EAAM20D,kBAAN30D,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAmB+1B,EAAQ,GACnE,kBAACjyB,EAAAA,KAAIA,CAACjD,UAAWJ,EAAOuyB,KAAMjvB,KAAM,mBAAoB7C,KAAM,OAAQ,eAK3E4yD,GACC,kBAAClzD,MAAAA,CAAIC,UAAWJ,EAAO8zD,UACrB,kBAAClxD,IAAAA,CACCxC,UAAWJ,EAAOoE,KAClBxD,QAAS,KACHuhD,IAAcT,EAAa39C,KAC7Bq+C,EAAaV,EAAa/tB,QAE1ByuB,EAAaV,EAAa39C,KAC5B,GAGDo+C,IAAcT,EAAa39C,KAC1B,kBAACV,EAAAA,KAAIA,CAACjD,UAAWJ,EAAOuyB,KAAMjvB,KAAM,iBAAkB7C,KAAM,OAE5D,kBAAC4C,EAAAA,KAAIA,CAACjD,UAAWJ,EAAOuyB,KAAMjvB,KAAM,cAAe7C,KAAM,OAG1D0hD,IAAcT,EAAa39C,KAAO,cAAgB,kBAKxDxE,EAAM40D,kBACL,kBAACh0D,MAAAA,CAAIC,UAAWJ,EAAO8zD,UACrB,kBAAClxD,IAAAA,CAAExC,UAAWJ,EAAOoE,KAAMxD,QAAS,K,IAAMrB,E,OAAsB,QAAtBA,EAAAA,EAAM40D,wBAAN50D,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAAA,GACxC,kBAAC8D,EAAAA,KAAIA,CAACjD,UAAWJ,EAAOuyB,KAAMjvB,KAAM,WAAY7C,KAAM,OAAQ,wBAO1E,CAEA,MAAMP,GAAY,KACT,CACL+zD,SAAS1yD,EAAAA,EAAAA,KAAI,CACX6yD,UAAW,eAEbhwD,MAAM7C,EAAAA,EAAAA,KAAI,CACR4sC,WAAY,MACZ1c,cAAe,QAEjBc,MAAMhxB,EAAAA,EAAAA,KAAI,CACR8vB,YAAa,SAEfyiC,UAAUvyD,EAAAA,EAAAA,KAAI,CAAC,K,qhCC9FnB,SAAS8yD,GAAgB90D,GAQvB,OACE,kBAAC+0D,EAAAA,MAAYA,CACXC,eAAgBh1D,EAAMi1D,SACtBC,cAAe,CAAC,CAAE38B,aAAa2sB,EAAAA,EAAAA,IAAYllD,EAAMijD,WAAYkS,MAAM,IACnEC,gBAAiBp1D,EAAM0sD,aACvB2I,WAAYC,EAAAA,GAAgBC,GAC5Bp+B,KAAMn3B,EAAMm3B,KACZpW,OAAQ/gB,EAAM+gB,OACd1V,MAAOrL,EAAMqL,MACbmqD,cAAe,CAAEta,MAAM,EAAMua,QAAS,CAAC,SAAUC,WAAW,IAGlE,CAEO,MAAMC,GAAS31D,IACpB,MAAM,OAAE+gB,EAAM,SAAE60C,EAAQ,UAAE3S,EAAS,MAAE53C,EAAK,OAAE+oB,GAAWp0B,EACjD+B,GAAQwe,EAAAA,EAAAA,aACR9f,EArCiB,CACvBo1D,SAAS7zD,EAAAA,EAAAA,KAAI,CACXmC,SAAU,aAEZ2xD,WAAW9zD,EAAAA,EAAAA,KAAI,CACb,eAAgB,CAEdC,QAAS,uBAgCN8zD,EAAYC,IAAiB5wD,EAAAA,EAAAA,eAAgC/C,IAC9D,QACJ0zB,EAAO,QACPvK,EAAO,WACPm3B,EAAU,mBACVD,EAAkB,WAClBD,EAAU,kBACVK,EAAiB,eACjBR,EAAc,kBACdC,GACEmD,KAEE,aAAEgH,GAAiBG,MAGlBoJ,IAAqB7wD,EAAAA,EAAAA,UAASsnD,GAE/BpE,EAAgB0C,EAAiBvI,GAEjCwO,GAAcC,EAAAA,EAAAA,kBACdhiD,GAAUiiD,EAAAA,EAAAA,UAAQ,IAAMF,EAAY/hD,QAAQ/B,KAAK8jD,IAAc,CAACA,IAEhEiF,GAAoBjX,EAAAA,EAAAA,cACvBznB,IACC,IAAKA,EAAMjyB,OACT,OAAOiyB,EAGT,MAAO2+B,IAAsBC,EAAAA,EAAAA,qBAAoB,CAC/Cj/B,KAAM,CAACK,GACPo+B,SAAUA,EACV7zD,MAAOA,EACPs0D,iBAAkBnnD,EAClB8oB,YAAa,CACXs+B,SAAU,CACRC,OAAQ,CAAC,GAEXn+B,UAAW,MAKf,IAAK,MAAOvH,EAAOhe,KAAUsjD,EAAmBniD,OAAO2F,UAAW,C,IAG5B68C,EAgC9BlU,EAjCNzvC,EAAMzK,KACJyK,EAAMzK,OAAS6lD,EAAAA,UAAU+E,OAAoCngD,QAA3B2jD,EAAAA,GAA2B3jD,UAA3B2jD,IAAAA,EAAAA,EAAqCvI,EAAAA,UAAU+E,OAASngD,EAAMzK,KAElGyK,EAAMkX,OAAS,SACVlX,EAAMkX,QAAM,CAEfwsC,OAAQ,IACN7H,SAAS,EACT+H,YAAY,EACZC,gBAAkB12D,GAChB,kBAACwmD,EAA0BA,KACzB,kBAACyN,GAAmBA,CAClBK,YAAa,SAAKt0D,GAAAA,CAAOowD,WAAYv/B,IACrC2jC,2BAA4B,IAAM7R,GAAW,GAC7C8R,UACY,IAAV5jC,EAAewjC,GAA6B/L,EAAc+L,EAAMxjC,EAAOA,EAAQ,QAAKxuB,EAEtFsyD,WACE9jC,IAAU2G,EAAMxjB,OAAOzO,OAAS,EAC3B8uD,GAA6B/L,EAAc+L,EAAMxjC,EAAOA,EAAQ,QACjExuB,EAENuyD,iBACEl7C,OAAOrD,KAAKisC,GAAgB/8C,OAAS,EACjC,KACEg9C,EAAkB,CAAC,EAAE,OAEvBlgD,KAKZgJ,MAC4B,QAA1Bi3C,EAAAA,EAAezvC,EAAM9O,aAArBu+C,IAAAA,EAAAA,EACAqU,GAAqB9jD,EAAOge,EAAOkF,EAAS1qB,EAAO8qD,EAAmBniD,OAAOzO,OAAQ09C,GACvF2T,YAAaC,GAAoBhkD,EAAOge,EAAOuD,EAAQ6uB,IACpDpwC,EAAMkX,OAAOwsC,QAIlBE,YAAY,GAEhB,CAEA,OAAON,CAAkB,GAK3B,CAACP,EAAU7zD,EAAOqyB,EAAQ/oB,EAAO6D,EAASyzC,EAAYL,KAIxDjD,EAAAA,EAAAA,YAAU,KACR,MAAMyX,EAAAA,W,WAAU,YACd,MAAM70B,GA6N8B8K,EA5NlCkW,EAAUljC,KA6NC/L,OACdxO,QAAQqN,I,IAELA,EAEAk6B,EAE6DA,EAL/D,MAAMgqB,EACsB,qBAAZ,QAAdlkD,EAAAA,EAAMmkD,gBAANnkD,IAAAA,OAAAA,EAAAA,EAAgB2kB,QACD,WAAf3kB,EAAM9O,OACNgpC,SAAe,QAAfA,EAAAA,EAAWj9B,YAAXi9B,IAAAA,OAAAA,EAAAA,EAAiB3kC,QAAS6uD,EAAAA,cAAcC,SACpCC,EACW,WAAftkD,EAAM9O,MAAqB8O,EAAMzK,OAAS6lD,EAAAA,UAAUmD,QAASrkB,SAAe,QAAfA,EAAAA,EAAWj9B,YAAXi9B,IAAAA,OAAAA,EAAAA,EAAiB3kC,QAAS6uD,EAAAA,cAAcC,SACvG,OAAOH,GAAqBI,CAAsB,IAEnDC,SAASvkD,GACD,CACL,CACEqlB,GAAI,gBACJxpB,QAAS,CACP2oD,OAAQ,OACRC,UAAU,EACVpoD,SAAS,EACT8uB,OAAQnrB,EAAM9O,UAnBnB,IAAmCgpC,EAvNpC,MAAMwqB,EAoMZ,SAAoCC,GAClC,IAAIC,EAAkD,CAAC,EAEvD,IAAK,MAAM5xD,KAAO2xD,EAChBC,EAAoB5xD,IAAO,EAG7B,OAAI6T,OAAOrD,KAAKmhD,GAAcjyD,OAAS,EAC9B,CACL2yB,GAAI,WACJxpB,QAAS,CACPgpD,YAAaF,EACbG,cAAeF,IAId,IACT,CArNoCG,CAoLpC,SAA8B7M,GAE5B,IAAIyM,EAA0C,CAAC,EAW/C,OAVA99C,OAAOrD,KAAK00C,GACTvlD,QAAQK,GAAQklD,EAAgBllD,GAAKsrB,SACrC9hB,SAASxJ,IACR,MAAMgrB,EAAQk6B,EAAgBllD,GAAKgrB,WAErBxuB,IAAVwuB,IACF2mC,EAAa3xD,GAAOgrB,EACtB,IAGG2mC,CACT,CApMyBK,CAAqB9hC,IAGxC,GAAIwhC,EACFt1B,EAAgBryB,KAAK2nD,OAChB,CACL,MAAMO,EAAgB,CACpB5J,KAAMjL,EAAU2B,UAChBp3C,KAAMy1C,EAAU4B,UAChBkT,YAAa9U,EAAU8U,aAErBD,QAAwCz1D,IAAvBy1D,EAActqD,WAA6CnL,IAAvBy1D,EAAc5J,MACrEjsB,EAAgBryB,KAqF1B,SAAgDkoD,GAC9C,MAAO,CACL5/B,GAAI,WACJxpB,QAAS,CACPgpD,YAAa,CACX,CAACI,EAAc5J,KAAKnqD,MAAO,EAC3B,CAAC+zD,EAActqD,KAAKzJ,MAAO,GAE7B4zD,cAAe,CACb,CAACG,EAActqD,KAAKzJ,OAAO,EAC3B,CAAC+zD,EAAc5J,KAAKnqD,OAAO,IAInC,CAlGYi0D,CACEF,GAOR,CAEA,GAAI71B,EAAgB18B,OAAS,EAAG,CAC9B,MAAM0yD,QAA0CC,EAAAA,EAAAA,gBAE9CC,EAAAA,EAAAA,oBAAmBl2B,EAAiB,CAACghB,EAAUljC,OAE3Cg2C,EAAaG,EAAkB+B,EAAqB,IAC1DjC,EAAcD,EAChB,MACEC,EAAcE,EAAkBjT,EAAUljC,KAE9C,E,mOAtCM+2C,GAuCNA,GAAS,GACR,CAAC7T,EAAUljC,IAAKkjC,EAAU4B,UAAW5B,EAAU2B,UAAW3B,EAAU8U,YAAa7B,EAAmBngC,KAGvGspB,EAAAA,EAAAA,YAAU,KACJ4W,GAAqBvJ,GACvB5J,GAEF,GACC,CAACmT,EAAmBnT,EAAmB4J,IAE1C,MAAMkC,EAAU3L,EAAUljC,IAAI/L,OAAOyc,MAAM5d,GAAUA,EAAM9O,QAASq0D,EAAAA,EAAAA,IAAUnV,KACxEoV,EAAYzJ,aAAAA,EAAAA,EAASpgD,OAAO0jC,WAAWviC,GAAMA,KAAMsmD,aAAAA,EAAAA,EAAmB/9B,MACtEogC,EAAiBD,IAA4B,IAAfA,EAAmBA,OAAYh2D,EAEnE,IAAK0zD,EACH,OAAO,qCAeT,OACE,kBAACn1D,MAAAA,CAAIU,cAAaC,GAAAA,EAAQ4tD,MAAMvrD,QAAS/C,UAAWJ,EAAOo1D,SACxDrqC,GACC,kBAAC+sC,EAAAA,OAAMA,CACLr3D,KAAM,KACNs3D,QAAS,KACP7V,GAAW,GACXD,EAAmB3sB,EAAQ,GAG7B,kBAACo1B,EAAyBA,OAI9B,kBAACvqD,MAAAA,CAAIC,UAAWJ,EAAOq1D,WACrB,kBAAC9P,EAAwBA,KACvB,kBAACyS,EAAAA,WAAUA,CAACliB,YAAY,EAAMmiB,UAAU,EAAOC,cAAc,GAC3D,kBAAC7D,GAAAA,CACC7R,UAAWA,EACXyJ,aAAc4L,EACdnhC,KAAM4+B,EACNh1C,OAAQA,EACR1V,MAAOA,EACP4pD,UAAUjlC,EAAAA,GAAAA,WAnCL,CAAC4oC,EAA0BvtD,KAC1C,MAAMxF,EAAM6T,OAAOrD,KAAK0f,GACrBvwB,QAAQK,GAAQkwB,EAAQlwB,GAAKsrB,SAC7BV,MAAM5qB,GAAQA,IAAQ+yD,IAEzB,GAAI/yD,GAAOwF,EAAQ,EAAG,CACpB,MAAM1F,EAAM,MAAK28C,GACjB38C,EAAIE,GAAOwF,EACXk3C,EAAkB58C,EACpB,IA0BuC,U,EAyB3C,SAAS6wD,GAA2B3jD,GAElC,GAAIA,EAAM9O,KAAM,CACd,MAAMA,EAAO8O,EAAM9O,KAAK2R,cACxB,GAAa,SAAT3R,GAA4B,SAATA,EACrB,OAAOkqD,EAAAA,UAAUC,IAErB,CAGA,IAAK,IAAIh5C,EAAI,EAAGA,EAAIrC,EAAMrE,OAAOjJ,OAAQ2P,IAAK,CAC5C,MAAMvF,EAAIkD,EAAMrE,OAAO0G,GACvB,GAAS,MAALvF,EACF,OAAOkpD,GAA2BlpD,EAEtC,CAIF,CAEO,MAAMg+C,GAAmB,KACvB,CACLj/C,QAAS,CACPoqD,SAAU,CACRx0D,MAAO,UACPusB,MAAO,GAETkoC,KAAM,CACJz0D,MAAO,UACPusB,MAAO,GAETxiB,MAAO,CACL/J,MAAO,UACPusB,MAAO,GAEToW,IAAK,CACH3iC,MAAO,UACPusB,MAAO,GAETmoC,KAAM,CACJ10D,MAAO,UACPusB,MAAO,GAETyqB,QAAS,CACPh3C,MAAO,UACPusB,MAAO,GAETljB,KAAM,CACJrJ,MAAO,UACPusB,MAAO,GAET9V,KAAM,CACJzW,MAAO,UACPusB,MAAO,GAETooC,MAAO,CACL30D,MAAO,UACPusB,MAAO,GAETqoC,MAAO,CACL50D,MAAO,UACPusB,MAAO,IAGXzoB,KAAM+wD,EAAAA,YAAYC,cAiEtB,SAASvC,GACPhkD,EACAu9C,EACAh8B,EACA6uB,GAEA,OAAIpwC,EAAM9O,QAASshD,EAAAA,EAAAA,IAAYpC,GACtB,CACLoW,cAAgBr5D,GACd,kBAACyyD,GAAoBA,GAAAA,GAAAA,CAAAA,EAAKzyD,GAAAA,CAAOowD,WAAYA,EAAYh8B,OAAQA,EAAOp0B,EAAMmsD,aAEhF/jD,KAAMkxD,EAAAA,qBAAqB9lC,QAIxB,CACL6lC,cAAgBr5D,GAAU,kBAAC4vD,GAAoBA,GAAAA,GAAAA,CAAAA,EAAK5vD,GAAAA,CAAOowD,WAAYA,KACvEhoD,KAAMkxD,EAAAA,qBAAqB9lC,OAE/B,CAEA,SAASmjC,GACP9jD,EACAu9C,EACAr6B,EACAwjC,EACAC,EACAvW,G,IAmCYpwC,EAAAA,EAjCZ,MAGMtF,EAAWisD,GAAkB,EAAID,EAAazyD,KAAKg1C,IAAIyd,EAAa,GAGpEE,EAA8B,IAAfrJ,EAAmB,GAAK,EAG7C,GAAIv9C,EAAMzK,OAAS6lD,EAAAA,UAAUC,KAC3B,OAAO,IAAMuL,EAGf,MAAMC,EAAa3jC,EAAQljB,EAAM9O,MAEjC,QAAmB1B,IAAfq3D,EACF,O,IAGyBA,EAA3B,MAAMC,EAAY7yD,KAAKuS,IAAwB,QAApBqgD,EAAAA,EAAWC,iBAAXD,IAAAA,EAAAA,EAAwB,EAAG7mD,EAAM9O,KAAKwB,QAEjE,OAAIm0D,EAAWC,UAGN7yD,KAAKg1C,IAAIh1C,KAAKuS,IAAgB,IAAZsgD,EAAkB,GAAKF,EAxBjC,GAwB0DA,GAAelsD,GAGtFsF,EAAM9O,QAASshD,EAAAA,EAAAA,IAAYpC,GAKxBn8C,KAAKg1C,IACVh1C,KAAKuS,IAAwC,KAAV,QAAzBxG,EAAY,QAAZA,EAAAA,EAAMrE,cAANqE,IAAAA,GAAiB,QAAjBA,EAAAA,EAAe,UAAfA,IAAAA,OAAAA,EAAAA,EAAmBtN,cAAnBsN,IAAAA,EAAAA,EAA6B,IAAY,GAAK4mD,EAjCzC,GAiCkEA,GACjFlsD,QAPF,E,IAMYsF,CAGd,C,eCjeA,MAAM+mD,GAAe,2EAmBRC,GAAa75D,IACxB,MAAM,UAAEijD,GAAc4J,MAEfiN,EAAeC,IAAoB30D,EAAAA,EAAAA,UAAS,CAAEiG,MAAO,EAAG0V,OAAQ,KAGvEi5C,EAAAA,GAAAA,GAAkB,CAChB1f,IAAKt6C,EAAMi6D,UACXhF,SAAU,KACR,MAAMz+C,EAAUxW,EAAMi6D,UAAUjf,QAC5BxkC,IACEsjD,EAAczuD,QAAUmL,EAAQ0jD,aAAeJ,EAAc/4C,SAAWvK,EAAQ2jD,cAClFJ,EAAiB,CACf1uD,MAAOmL,EAAQ0jD,YACfn5C,OAAQvK,EAAQ2jD,eAGtB,IAIJ,MAAM15D,EA3BiB,CACvBo1D,SAAS7zD,EAAAA,EAAAA,KAAI,CACXmC,SAAU,cA0BNyxD,GAAWwE,EAAAA,EAAAA,eAIXC,GAAsBpb,EAAAA,EAAAA,cACzBqb,IACC,MAAMC,EAAqBv6D,EAAMg2B,WAUjC,OATIukC,aAAAA,EAAAA,EAAoBh1D,SACtBmU,OAAOlL,OAAO+rD,GAAoBlrD,SAAQ,CAACxJ,EAAKgrB,KAC1CypC,EAAWz0D,KACby0D,EAAWz0D,GAAKsrB,QAAS,EACzBmpC,EAAWz0D,GAAKgrB,MAAQA,EAC1B,IAIGypC,CAAU,GAEnB,CAACt6D,EAAMg2B,aAIT,IAAKitB,IAAcA,EAAUljC,IAAIxa,OAC/B,OAAO,K,IAGM09C,EAAf,MAAM7uB,EAA4C,QAAnC6uB,EAAAA,EAAUuX,mCAAVvX,IAAAA,EAAAA,EAAyC,GAClDwX,EAAmBxX,EAAYA,EAAUljC,IAAIxa,OAAS,EAG5D,IAAIi/C,EAgGN,SAAiCzX,EAAsB3Y,GACrD,IAAIowB,EAAwC,CAAC,EAG7C,MAAMkW,EAAW,IAAI1wB,IACfC,EA9CD,SAAqC7V,GAC1C,MAAM6U,EAAiB,IAAIe,IAwB3B,OAvBA5V,EAAO/kB,SAASsrD,IACKjhD,OAAOrD,KAAKskD,GACpBtrD,SAAS0lB,IAClB,GAAIkU,EAAej3B,IAAI+iB,GAAY,CACjC,MAAM6lC,EAAS3xB,EAAe/6B,IAAI6mB,GAC5BvmB,EAASosD,aAAAA,EAAAA,EAAQC,SACjBlB,EAAYiB,aAAAA,EAAAA,EAAQjB,UAEtBnrD,KAAWA,aAAAA,EAAAA,EAAQwD,IAAI2oD,EAAY5lC,OACrCvmB,SAAAA,EAAQgU,IAAIm4C,EAAY5lC,IACpB4kC,GAAagB,EAAY5lC,GAAWxvB,OAASo0D,GAC/C1wB,EAAeiB,IAAInV,EAAW,CAAE4kC,UAAWgB,EAAY5lC,GAAWxvB,OAAQs1D,SAAUrsD,IAG1F,MACEy6B,EAAeiB,IAAInV,EAAW,CAC5B4kC,UAAWgB,EAAY5lC,GAAWxvB,OAClCs1D,SAAU,IAAIhpD,IAAI,CAAC8oD,EAAY5lC,MAEnC,GACA,IAGGkU,CACT,CAoBsB6xB,CAA4B1mC,GAC1CqmC,EAAmB1tB,EAAYA,EAAUxnC,OAAS,GAEpD6uB,aAAAA,EAAAA,EAAQ7uB,SAAUk1D,IAEpBrmC,EAAO/kB,SAAS+kB,IACM1a,OAAOrD,KAAK+d,GAEpB/kB,SAASnF,I,IAEM++B,EADzB,MAAMA,EAAiBgB,EAAY/7B,IAAIhE,G,IACd++B,EAAzB,MAAM8xB,EAAiD,QAA9B9xB,EAAAA,SAAwB,QAAxBA,EAAAA,EAAgB4xB,gBAAhB5xB,IAAAA,OAAAA,EAAAA,EAA0B/nC,YAA1B+nC,IAAAA,EAAAA,EAAkC,EAE3D,GAAIyxB,EAAS1oD,IAAI9H,GAAQ,CACvB,MAAMoF,EAAQorD,EAASxsD,IAAIhE,GAEvBoF,KACEA,aAAAA,EAAAA,EAAO6hB,QACTupC,EAASxwB,IAAIhgC,EAAO,CAClBi7C,wBAAyB71C,EAAM61C,wBAA0B,EACzDh0B,QAAQ,EACRN,MAAOvhB,EAAMuhB,MACboZ,YAAa8wB,EACbpB,UAAW1wB,aAAAA,EAAAA,EAAgB0wB,YAG7Be,EAASxwB,IAAIhgC,EAAO,CAClBi7C,wBAAyB71C,EAAM61C,wBAA0B,EACzDh0B,QAAQ,EACRN,WAAOxuB,EACP4nC,YAAa8wB,EACbpB,UAAW1wB,aAAAA,EAAAA,EAAgB0wB,YAKnC,MACEe,EAASxwB,IAAIhgC,EAAO,CAClBi7C,wBAAyB,EACzBh0B,QAAQ,EACRN,WAAOxuB,EACP4nC,YAAa8wB,EACbpB,UAAW1wB,aAAAA,EAAAA,EAAgB0wB,WAE/B,GACA,IAIJnV,EAAoB9qC,OAAOshD,YAAYN,GAGvChhD,OAAOrD,KAAKmuC,GAAmBn1C,SAASxJ,IACtC2+C,EAAkB3+C,GAAKs/C,wBAA0B8V,GAC/CzW,EAAkB3+C,GAAKs/C,wBACvBsV,EAAAA,KAIN,OAAOjW,CACT,CAhK0B0W,CAAwBjY,EAAUljC,IAAKqU,GAC/D,MAAM0jC,EAAgB,CACpB5J,KAAMjL,EAAU2B,UAChBp3C,KAAMy1C,EAAU4B,UAChBkT,YAAa9U,EAAU8U,aAIzB,GAAID,EAAe,EAgKrB,SACEqD,EACA3W,EACAiW,GAEAU,EAAkB9rD,SAASwD,I,IAIR2xC,EACHA,EAJd,IAAK3xC,EACH,OAEF,MAAM8K,EAAwC,QAA7B6mC,EAAAA,EAAkB3xC,EAAM9O,aAAxBygD,IAAAA,OAAAA,EAAAA,EAA+BrzB,OAC1CN,EAAqC,QAA7B2zB,EAAAA,EAAkB3xC,EAAM9O,aAAxBygD,IAAAA,OAAAA,EAAAA,EAA+B3zB,MAE3C2zB,EAAkB3xC,EAAM9O,MADtB4Z,QAAsBtb,IAAVwuB,EACkB,CAC9Bs0B,wBAAyB8V,GACvBpoD,EAAMrE,OAAOhJ,QAAQ8J,GAAUA,UAAuC/J,OACtEk1D,GAEFtpC,QAAQ,EACRN,MAAOA,EACPoZ,YAAawwB,GAGiB,CAC9BtV,wBAAyB8V,GACvBpoD,EAAMrE,OAAOhJ,QAAQ8J,GAAUA,UAAuC/J,OACtEk1D,GAEFtpC,QAAQ,EACRN,WAAOxuB,EACP4nC,YAAawwB,EAEjB,GAIJ,CAlMIW,CACE,CAACtD,EAAc5J,KAAM4J,EAActqD,QAASsqD,EAAcC,aAC1DvT,EACAiW,GAGFjW,EAAoB6V,EAAoB7V,IA8L5C,SACErzB,EACA2mC,EACAtT,G,IAcIsT,EAA4BA,EAXhC,GAAsB,IAAlB3mC,EAAO5rB,OAAc,C,IACnBuyD,EAIAA,EAHgBA,EACAA,EAGAA,EACAA,EANpB,GAAsB,QAAlBA,EAAAA,EAActqD,YAAdsqD,IAAAA,OAAAA,EAAAA,EAAoB/zD,KACtBygD,EAAoC,QAAlBsT,EAAAA,EAActqD,YAAdsqD,IAAAA,OAAAA,EAAAA,EAAoB/zD,MAAMotB,QAAS,EACrDqzB,EAAoC,QAAlBsT,EAAAA,EAActqD,YAAdsqD,IAAAA,OAAAA,EAAAA,EAAoB/zD,MAAM8sB,MAAQ,EAEtD,GAAsB,QAAlBinC,EAAAA,EAAc5J,YAAd4J,IAAAA,OAAAA,EAAAA,EAAoB/zD,KACtBygD,EAAoC,QAAlBsT,EAAAA,EAAc5J,YAAd4J,IAAAA,OAAAA,EAAAA,EAAoB/zD,MAAMotB,QAAS,EACrDqzB,EAAoC,QAAlBsT,EAAAA,EAAc5J,YAAd4J,IAAAA,OAAAA,EAAAA,EAAoB/zD,MAAM8sB,MAAQ,CAExD,CAEA,IAAsB,QAAlBinC,EAAAA,EAAc5J,YAAd4J,IAAAA,OAAAA,EAAAA,EAAoB/zD,QAA0B,QAAlB+zD,EAAAA,EAActqD,YAAdsqD,IAAAA,OAAAA,EAAAA,EAAoB/zD,MAAM,C,IACtC+zD,EACAA,EADlBtT,EAAoC,QAAlBsT,EAAAA,EAActqD,YAAdsqD,IAAAA,OAAAA,EAAAA,EAAoB/zD,MAAMqE,KAAO,aACnDo8C,EAAoC,QAAlBsT,EAAAA,EAAc5J,YAAd4J,IAAAA,OAAAA,EAAAA,EAAoB/zD,MAAMqE,KAAO,YACrD,CAEI0vD,EAAcC,YAAYxyD,QAC5BuyD,EAAcC,YAAY1oD,SAASwD,I,IAChBA,GAAkB,QAAlBA,EAAAA,EAAMkX,OAAOgP,aAAblmB,IAAAA,OAAAA,EAAAA,EAAoBtN,UAEnCi/C,EAAkB3xC,EAAM9O,MAAMqE,KAAO,aACvC,GAGN,CAtNIizD,CAHe3hD,OAAOrD,KAAKmuC,GAAmBh/C,QAAQK,GAAQ2+C,EAAkB3+C,GAAKsrB,SAGzD2mC,EAAetT,EAC7C,CAEA,OACE,kBAACqR,UAAAA,CAAQh1D,UAAWJ,EAAOo1D,SACzB,kBAAC9S,EAA0BA,CACzBI,qBAAsBnjD,EAAMmjD,qBAC5BF,UAAWA,EACXD,eAAgBwB,EAChBtB,cAAeljD,EAAMkjD,cACrBJ,kBAAmB9iD,EAAM8iD,kBACzBM,kBAAmBpjD,EAAMojD,kBACzBC,2BAA4BrjD,EAAMqjD,2BAClCC,yBAA0BtjD,EAAMsjD,0BAEhC,kBAACqS,GAAKA,CACJ1S,UAAWA,EACX2S,SAAUA,EACV70C,OAAQ+4C,EAAc/4C,OAAS,GAC/B1V,MAAOyuD,EAAczuD,MAAQ,GAC7B+oB,OAAQA,K,EAOZ6mC,GAAY,CAAC3rD,EAAegsD,IACzBx0D,KAAKy0D,KAAK,IAAOjsD,EAASgsD,GAsC5B,SAASzC,GAA2BvpD,GACzC,IAAI+5B,GAAYmyB,EAAAA,EAAAA,yBAAwBlsD,GAKxC,MAJgC,WAAd+5B,GAA0BuwB,GAAa9kD,KAAKxF,KAE5D+5B,EAAY4kB,EAAAA,UAAUC,MAEjB7kB,CACT,CC/JO,MAAMoyB,GAAgB,EAC3B1uB,YACAmW,gBACAltB,aACAy2B,YACAC,eACAjhD,YACAwuD,YACAnX,oBACAK,uBACAC,oBACAC,6BACAC,+BAEA,IAAKvW,EACH,OAAO,KAGT,MAAMkW,GAAYyY,EAAAA,EAAAA,IAAe3uB,GACjC,OAAKkW,EAKH,kBAAC2J,GAAoBA,CAACH,UAAWA,EAAWC,aAAcA,EAAcjhD,UAAWA,EAAWw3C,UAAWA,GACvG,kBAAC4W,GAASA,CACRzW,kBAAmBA,EACnBF,cAAeA,EACfC,qBAAsBA,EACtBntB,WAAYA,EACZikC,UAAWA,EACXnX,kBAAmBA,EACnBO,2BAA4BA,EAC5BC,yBAA0BA,KAbvB,I,opBCzBX,IAAIqY,GblB+B,CAAC,YAAa,OAAQ,OAAQ,QawB1D,MAAMC,WAAuB72D,EAAAA,GAa3BmH,UAAAA,GACLG,KAAKN,SAAS,CACZ6uB,KAAM,IAAIjB,GAAAA,GAAU,CAAEI,uBAAuB,MAE/C1tB,KAAKwvD,6CACP,CAEQC,cAAAA,GACN,OAAO52D,EAAAA,GAAWwE,YAAY2C,KAAM00C,GACtC,CArBAh0C,WAAAA,CAAYzH,GACV0H,MAAM,G,uUAAA,IAAK1H,GAAAA,CAAOg+C,0BAA0B,KAK9C,QAAOD,8BAA8B1lC,IACnCtR,KAAKN,SAAS,CACZu3C,yBAA0B3lC,GAC1B,IAeJk+C,GAAAA,KAAAA,+CAA8C,KAC5C,MACME,EADe,IAAIx1C,gBAAgBrI,EAAAA,gBAAgBoI,cAAcE,QAClCtY,IAAI,cACnC8tD,GAAgBC,EAAAA,EAAAA,IAAmBF,GACnCG,EAAc7vD,KAAKyvD,iBAEzBH,GAAoBK,GAChB3vD,KAAK8vD,wBAAwBH,GAC3B3vD,KAAK+vD,wBAAwBJ,GAE/BL,GACgBA,GAAkBp2D,OACtC22D,EAAYnwD,SAAS,CACnBiqB,WAAY3jB,MAAMkS,KAAK,IAAI1S,IAAI,IAAI8pD,MAAsBO,EAAY52D,MAAMqwB,oBAC3E,IAIJ0mC,GAAAA,KAAAA,yBAAyBrmC,IACvB,MAAMkmC,EAAc7vD,KAAKyvD,iBAEzBH,GAAoBtvD,KAAK+vD,wBAAwBpmC,GAGjD,MAAMsmC,EAAqBjqD,MAAMkS,KAAK,IAAI1S,IAAI,IAAKmkB,GAAc,MAAOxwB,QACrEqN,IAAW8oD,GAAkBj2D,SAASmN,KAGzCqpD,EAAYnwD,SAAS,CACnB4pB,gBAAiB2mC,KAGnBC,EAAAA,GAAAA,IAAmBlwD,KAAM6vD,EAAY52D,MAAMqwB,gBAAgB,IAI7DwmC,GAAAA,KAAAA,2BAA2BnmC,GAClB2lC,GAAkB3qD,MAAMg0C,GAAQhvB,EAAWtwB,SAASs/C,OAI7DoX,GAAAA,KAAAA,2BAA2BpmC,IACzB2lC,GAAoBA,GAAkB9iB,QAAiB,CAACC,EAAKkM,KAE3D,GAAIhvB,EAAWtwB,SAASs/C,GAAM,CAE5BlM,EADiB9iB,EAAWta,QAAQspC,IACpBA,CAClB,CACA,OAAOlM,CAAG,GACT,IAEI6iB,MAxEPtvD,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA0EA,GA/EWuvD,GA+EG71D,aAAY,EAAGf,YAC3B,MAAMvE,GAASC,EAAAA,EAAAA,YAAWC,IAEpBu7D,EAAch3D,EAAAA,GAAWwE,YAAY1E,EAAO+7C,KAC5C,KAAE5pB,GAASjyB,EAAAA,GAAWkyB,QAAQpyB,GAAOI,YACrC,aAAEsnD,EAAY,WAAE12B,EAAU,kBAAE2rB,EAAiB,kBAAE6a,GAAsBN,EAAY92D,YACjF,KAAEw1B,EAAI,yBAAE0oB,GAA6Bt+C,EAAMI,WAG3CqG,EAAYvG,EAAAA,GAAWqZ,aAAavZ,IAClCsK,MAAOmtD,GAAmBhxD,EAAUrG,WAEtC2nC,GAAY0L,EAAAA,GAAAA,IAAkBthB,GAS9B8iC,GAAY1gB,EAAAA,EAAAA,QAAuB,MAqBzC,OACE,kBAAC34C,MAAAA,CAAIC,UAAWJ,EAAOq9B,aAAcwc,IAAK2f,GAExC,kBAACyC,EAAAA,YAAWA,CACVC,aAAcxlC,aAAAA,EAAAA,EAAM7xB,MACpB5D,MAAO,OACPk5B,KAAMA,EAAO,kBAACA,EAAK70B,UAAS,CAACf,MAAO41B,SAAWv4B,EAC/Cu6D,gBAAgB,EAChBC,QACE,oCACE,kBAAC97D,EAAAA,OAAMA,CAACM,QAAS,IAAM2D,EAAMq+C,4BAA2B,GAAOriD,QAAS,YAAaE,KAAM,MAAM,kBAGjG,kBAAC8gD,GAAAA,EAAsBA,CAACC,QAASN,EAAmB/0B,SAAUsvC,EAAYY,yBAI7E/vB,GACC,kBAAC0uB,GAAaA,CACZxB,UAAWA,EACXxN,UA/CSjnD,IACjB,MAAMuI,GAAegvD,EAAAA,GAAAA,IAAoBhwB,EAAWvnC,EAAOK,IAAKb,IAChEk5B,EAAAA,GAAAA,IAAe14B,EAAQ02D,EAAanuD,EAAa,EA8CzCtC,UAAWgxD,EACX/P,aAAcA,EACd12B,WAAYA,QAAAA,EAAc,GAC1BktB,cA1CaltB,KAChBgnC,EAAAA,GAAAA,GAAuBhnC,EAAYkmC,EAAY52D,MAAM0wB,cACxDkmC,EAAYnwD,SAAS,CAAEiqB,eAEvBhxB,EAAMq3D,sBAAsBrmC,GAC9B,EAsCQ+W,UAAWA,EACX+V,kBAhCgB,KACpBoZ,EAAY52D,MAAMonD,cACpBwP,EAAYpZ,mBACd,EA8BQK,qBArCoBkB,IAC5B6X,EAAYnwD,SAAS,CAAEywD,kBAAmBnY,GAAe,EAqCjDjB,kBAAmBoZ,EACnBnZ,2BAA4Br+C,EAAMq+C,2BAClCC,yBAA0BA,K,IASxC,MAAM3iD,GAAaoB,IAA0B,CAC3C+7B,cAAc97B,EAAAA,EAAAA,KAAI,CAChBqJ,MAAO,OACP0V,OAAQ,OACR7W,MAAO,0B,wMCjKJ,MAAM+yD,WAAwBl4D,EAAAA,GA2CnC,iBACmBm4D,EAAAA,GAAAA,IAAsB7wD,MAC9B8W,cAAc,GAAI,CACzBwI,aAAa,IAEftf,KAAKN,SAAS,CACZ+iB,WAAY,IAEhB,CAIA,cACE,GAAIziB,KAAK/G,MAAM4pB,OAAS7iB,KAAK/G,MAAM8qB,UACjC,OAAOhC,GAAAA,GAAaE,cAEtB,GAAIjiB,KAAK/G,MAAM4pB,QAAU7iB,KAAK/G,MAAM8qB,UAClC,OAAOhC,GAAAA,GAAac,MAEtB,IAAK7iB,KAAK/G,MAAM4pB,OAAS7iB,KAAK/G,MAAM8qB,UAClC,OAAOhC,GAAAA,GAAaC,cAEtB,IAAKhiB,KAAK/G,MAAM4pB,QAAU7iB,KAAK/G,MAAM8qB,UACnC,OAAOhC,GAAAA,GAAaa,MAGtB,MAAM,IAAI3gB,MAAM,6CAClB,CAQA,eACE,OAAOjC,KAAK/G,MAAM+pB,cAAgBC,GAAAA,GAAwBD,cAAgBC,GAAAA,GAAwBC,eACpG,CAKA,YAEE,OAD2B2tC,EAAAA,GAAAA,IAAsB7wD,MACvB/G,MAAM6F,QAAQ,EAC1C,CAeAojB,YAAAA,CAAaO,EAAoBJ,GAAY,GAC3CriB,KAAK8wD,iBAAiBruC,GAClBJ,EACFriB,KAAKuiB,wBAAwBE,GAE7BziB,KAAK+wD,eAAetuC,EAExB,CAEAquC,gBAAAA,CAAiBruC,GACfziB,KAAKN,SAAS,CACZ+iB,cAEJ,CA9GA/hB,WAAAA,CAAYzH,G,IAEIA,EACGA,EACRA,EACIA,EAJb0H,M,uUAAM,EACJ8hB,WAA6B,QAAjBxpB,EAAAA,aAAAA,EAAAA,EAAOwpB,kBAAPxpB,IAAAA,EAAAA,EAAqB,GACjC+pB,cAAmC,QAApB/pB,EAAAA,aAAAA,EAAAA,EAAO+pB,qBAAP/pB,IAAAA,EAAAA,GAAwB+3D,EAAAA,GAAAA,KAAkB,GACzDnuC,MAAmB,QAAZ5pB,EAAAA,aAAAA,EAAAA,EAAO4pB,aAAP5pB,IAAAA,EAAAA,GAAgBg4D,EAAAA,GAAAA,KAAmB,GAC1CltC,UAA2B,QAAhB9qB,EAAAA,aAAAA,EAAAA,EAAO8qB,iBAAP9qB,IAAAA,EAAAA,GAAoBi4D,EAAAA,GAAAA,KAAuB,IACnDj4D,IAQP,QAAQ4G,cAAa,KACnB,MAAM1G,EAAS6G,KAAKorB,YAEpB,GAAKjyB,EAWL,OAPA6G,KAAKN,SAAS,CACZ+iB,WAAYtpB,EAAO8J,MACnB4f,MAAO1pB,EAAOiK,WAAa2e,GAAAA,GAAac,OAAS1pB,EAAOiK,WAAa2e,GAAAA,GAAaE,cAClFe,cAAe7pB,EAAOK,MAAQypB,GAAAA,GAAwBD,cACtDe,UAAW5qB,EAAOiK,WAAa2e,GAAAA,GAAaC,eAAiB7oB,EAAOiK,WAAa2e,GAAAA,GAAaE,gBAGzF,KAELjiB,KAAK02B,aAAa,CACnB,IAwDHA,GAAAA,KAAAA,eAAc,KACZ12B,KAAKuiB,wBAAwB4uC,SAC7BnxD,KAAKkiB,aAAa,IAAI,EAAM,IA0B9BY,GAAAA,KAAAA,qBAAqBiB,KACnBqtC,EAAAA,GAAAA,IAAuBrtC,GACvB/jB,KAAKN,SAAS,CACZqkB,cAGF/jB,KAAKkiB,aAAaliB,KAAK/G,MAAMwpB,YAAY,EAAM,IAOjD4wB,GAAAA,KAAAA,sBAAqB,MACnBn3C,EAAAA,GAAAA,MACA8D,KAAKkiB,aAAaliB,KAAK/G,MAAMwpB,YAAY,GAEzCziB,KAAKuiB,wBAAwB8uC,QAE7B,MAAMj1C,GAAsBiH,EAAAA,GAAAA,IAAuBrjB,MAC7CuE,EAAkB6X,EAAoBnjB,MAAM6F,QAC5CwyD,EAAatxD,KAAKorB,YAExBhP,EAAoBtF,cAAc,IAAIvS,EAAiB+sD,IACvDtxD,KAAKuxD,eAAe,IAMtBC,GAAAA,KAAAA,gBAAgBvtD,IACdjE,KAAK8wD,iBAAiB7sD,EAAEhN,OAAOgM,MAAM,IAMvCuf,GAAAA,KAAAA,eAAeve,IACC,UAAVA,EAAEzK,KAAmBwG,KAAK/G,MAAMwpB,YAClCziB,KAAKqzC,oBACP,IAMFtwB,GAAAA,KAAAA,yBAAyB1M,IACvB,MAAM2M,EAAgB3M,IAAa4M,GAAAA,GAAwBD,cAG3DhjB,KAAKN,SAAS,CACZsjB,mBAIFyuC,EAAAA,GAAAA,IAAkBzuC,GAElBhjB,KAAKkiB,aAAaliB,KAAK/G,MAAMwpB,YAAY,EAAM,IAMjDC,GAAAA,KAAAA,iBAAiBrM,IACf,MAAMwM,EAAqB,UAAbxM,EAGdrW,KAAKN,SAAS,CACZmjB,WAIF6uC,EAAAA,GAAAA,IAAmB7uC,GAEnB7iB,KAAKkiB,aAAaliB,KAAK/G,MAAMwpB,YAAY,EAAM,IAMjDF,GAAAA,KAAAA,0BAA0BoB,MAAUxJ,IAClCna,KAAK+wD,eAAe52C,EAAO,GAC1B,MAMH42C,GAAAA,KAAAA,kBAAkB52C,IAChBna,KAAKuiB,wBAAwB8uC,QAC7B,MAAMj4D,GAAWy3D,EAAAA,GAAAA,IAAsB7wD,MACjChH,GAAYqqB,EAAAA,GAAAA,IAAuBrjB,MACnC7G,EAAS,CACbK,IAAKwG,KAAK2xD,eAEVpuC,SAAUvqB,EAAUC,MAAM6F,QAAQ5F,OAAOoM,WACzClC,SAAUpD,KAAK4xD,cACf3uD,MAAOkX,GAGT/gB,EAAS0d,cAAc,CAAC3d,KAExBiD,EAAAA,GAAAA,IACEC,GAAAA,GAAkBC,gBAClBC,GAAAA,GAAoBD,gBAAgBu1D,8BACpC,CACEpuC,kBAAmBtJ,EAAOjhB,OAC1BwqB,cAAevJ,EAAO9Q,cAAchQ,SAAS,SAC7C+J,SAAUjK,EAAOiK,SACjB4f,cAAe7pB,EAAOK,KACxB,IAzNFwG,KAAKa,qBAAqBb,KAAKH,WACjC,E,kkBAdA,GADW+wD,GACJl3D,aA2OT,UAA6B,MAAEf,IAC7B,MAAM,WAAE8pB,EAAU,cAAEO,EAAa,MAAEH,EAAK,UAAEkB,GAAcprB,EAAMI,YACvDqoB,EAAOC,IAAYtoB,EAAAA,EAAAA,WAAS,GACnC,OAAO4oB,EAAAA,GAAAA,GAAiB,CACtBoC,YACAtB,aACAO,gBACAH,QACAwwB,mBAAoB16C,EAAM06C,mBAC1B7wB,YAAa7pB,EAAM6pB,YACnBW,cAAexqB,EAAM64D,aACrBtvC,aAAcvpB,EAAMupB,aACpBa,sBAAuBpqB,EAAMoqB,sBAC7BL,cAAe/pB,EAAM+pB,cACrBsB,aAAcrrB,EAAMmqB,kBACpBwwB,kBAAmB36C,EAAM+9B,YACzBtV,QACAC,WACAtlB,KAAM,UAEV,ICjPO,MAAM24C,WAAsBh8C,EAAAA,GAejC8hB,WAAAA,G,IACqB,EAAnB,MAAMmP,EAAkC,QAArB,EAAA3pB,KAAK/G,MAAM0wB,kBAAX,QAAyB,GACtC02B,EAAergD,KAAK/G,MAAMonD,aAC1B/K,EAAoBt1C,KAAK/G,MAAMq8C,kB,IACb,IAAxB,MAAMhsB,EAAuE,QAArD,EAA0B,QAA1B,EAAAtpB,KAAK/G,MAAMqwB,uBAAX,SAA8BC,EAAAA,GAAAA,IAAmBvpB,aAAjD,QAA0D,GAClF,MAAO,CACL2pB,WAAY9lB,KAAKC,UAAU6lB,GAC3B02B,aAAcx8C,KAAKC,UAAUu8C,GAC7B/K,kBAAmBzxC,KAAKC,UAAUwxC,GAClChsB,gBAAiBzlB,KAAKC,UAAUwlB,GAChC6mC,kBAAmBtsD,KAAKC,UAAU9D,KAAK/G,MAAMk3D,mBAEjD,CAEA11C,aAAAA,CAActY,GACZ,MAAM4S,EAA2C,CAAC,EAClD,IACE,GAAiC,iBAAtB5S,EAAOwnB,WAAyB,CACzC,MAAMmoC,GAA8BloC,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAM3R,EAAOwnB,aACnEmoC,IAAsB9xD,KAAK/G,MAAM0wB,aACnC5U,EAAY4U,WAAamoC,EAE7B,CACA,GAAmC,iBAAxB3vD,EAAOk+C,aAA2B,CAC3C,MAAM0R,GAAkBC,EAAAA,EAAAA,IAAuBnuD,KAAKiQ,MAAM3R,EAAOk+C,eACjE,GAAI0R,EAAiB,CACnB,MAAME,EAA4CF,EAC9CE,IAA4BjyD,KAAK/G,MAAMonD,eACzCtrC,EAAYsrC,aAAe4R,EAE/B,CACF,CACA,GAAwC,iBAA7B9vD,EAAOmzC,kBAAgC,CAChD,MAAM4c,GAA2BC,EAAAA,EAAAA,IAA4BtuD,KAAKiQ,MAAM3R,EAAOmzC,oBAC3E4c,GAA4BA,IAA6BlyD,KAAK/G,MAAMq8C,oBACtEvgC,EAAYugC,kBAAoB4c,EAEpC,CACA,GAAsC,iBAA3B/vD,EAAOmnB,gBAA8B,CAC9C,MAAMA,GAAkBM,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAM3R,EAAOmnB,kBACvDA,GAAmBA,EAAgBpwB,SACrC6b,EAAYuU,gBAAkBA,EAElC,CACA,GAAwC,iBAA7BnnB,EAAOguD,kBAAgC,CAChD,MAAMA,EAAoBtsD,KAAKiQ,MAAM3R,EAAOguD,mBACxCA,IAAsBra,EAAa/tB,QAAUooC,IAAsBra,EAAa39C,OAClF4c,EAAYo7C,kBAAoBA,EAEpC,CACF,CAAE,MAAOlsD,GAEP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,iDACzB,CAEIqJ,OAAOrD,KAAK+K,GAAa7b,QAC3B8G,KAAKN,SAASqV,EAElB,CAEA0hC,iBAAAA,GACEz2C,KAAKN,SAAS,CACZ2gD,kBAAcrqD,GAElB,CASO6J,UAAAA,GACL,MAAMuyD,EAAe,IAAIl4C,gBAAgBrI,EAAAA,gBAAgBoI,cAAcE,QACvEna,KAAKqyD,gBAAgBD,GAEhBpyD,KAAK/G,MAAMuyB,OACdxrB,KAAKsyD,kBAGPtyD,KAAKkW,MAAMC,IACTnW,KAAKoW,kBAAiB,CAACC,EAAUmB,KAC3BnB,EAASi/B,oBAAsB99B,EAAU89B,mBAC3Ct1C,KAAKsyD,iBACP,IAGN,CAEQD,eAAAA,CAAgBD,GACtB,MAAMG,EAAkBH,EAAavwD,IAAI,gBACnC8tD,EAAgByC,EAAavwD,IAAI,cACjC2wD,EAAaJ,EAAavwD,IAAI,qB,IACTuwD,EAA3B,MAAMK,EAAsC,QAAjBL,EAAAA,EAAavwD,IAAI,0BAAjBuwD,IAAAA,EAAAA,EAAuCvuD,KAAKC,WAAUylB,EAAAA,GAAAA,IAAmBvpB,OAC9FmwD,EAAoBiC,EAAavwD,IAAI,qBAE3C7B,KAAKya,cAAc,CACjB4lC,aAAckS,EACd5oC,WAAYgmC,EACZ/Z,QAAS4c,EACTlpC,gBAAiBmpC,EACjBtC,qBAEJ,CA8CQuC,WAAAA,GAGN,OAFA1yD,KAAK2yD,eAAiB,IAAIhe,GAAAA,EAAe,CAAC,GAEnC,IAAIp1C,EAAAA,GAAgB,CACzByT,UAAW,SACX1c,SACmC,SAAjC0J,KAAK/G,MAAMq8C,kBACP,CACE,IAAI/1C,EAAAA,GAAgB,CAClBjJ,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAIyvD,GAAgB,CAAEnuC,WAAYziB,KAAK/G,MAAMwpB,aACnDmwC,QAAS,YAIf,IAAIt1C,EAAAA,GAAc,CAChB5I,OAAQ,sBACRvT,KAAMnB,KAAK2yD,kBAGf,CACE,IAAIr1C,EAAAA,GAAc,CAChBnc,KAAM,IAAIyvD,GAAgB,CAAEnuC,WAAYziB,KAAK/G,MAAMwpB,aACnDmwC,QAAS,SAEX,IAAIt1C,EAAAA,GAAc,CAChB5I,OAAQ,sBACRvT,KAAM,IAAIouD,GAAe,CAAC,OAIxC,CAhMA7uD,WAAAA,CAAYzH,GACV0H,MAAM,G,uUAAA,IACD1H,GAAAA,CACHq8C,mBAAmB7rB,EAAAA,GAAAA,MACnBH,gBAAiB,MARrB,QAAUrL,WAAW,IAAIC,EAAAA,GAAyBle,KAAM,CACtDgK,KAAM,CAAC,aAAc,eAAgB,oBAAqB,kBAAmB,wBAE/E,QAAQ2oD,sBAAkC38D,GA6E1C4+C,GAAAA,KAAAA,wBAAuB,KACrB50C,KAAKN,SAAS,CAAE4pB,gBAAiB,KAC7BtpB,KAAK2yD,gBACP3yD,KAAK2yD,eAAe/d,sBACtB,IAoCF,QAAON,oBAAmB,CAACjyC,EAA4B,CAAC,KAClDrC,KAAK2yD,gBACP3yD,KAAK2yD,eAAere,iBAAiBjyC,EACvC,IAGF,QAAOiwD,mBAAkB,KAMvB,GALAtyD,KAAKN,SAAS,CACZ8rB,MAAOxrB,KAAK0yD,gBAIV1yD,KAAK/G,MAAMuyB,MAAO,CACpB,MAAMqnC,EAAmBh6D,EAAAA,GAAWy7B,gBAAgBt0B,KAAK/G,MAAMuyB,MAAOolC,IACtE,GAAIiC,EAAiB35D,OAAQ,CAC3B,MAAM45D,EAAkBD,EAAiB,GACzC7yD,KAAKkW,MAAMC,IACT28C,EAAgB18C,kBAAiB,CAACC,EAAUmB,KACtCnB,EAASoM,aAAejL,EAAUiL,YACpCziB,KAAKN,SAAS,CACZ+iB,WAAYpM,EAASoM,YAEzB,IAGN,CACF,KAGF,QAAOguC,wBAAwB10D,IAC7BiE,KAAKN,SAAS,CACZ41C,kBAAmBv5C,KAGrBK,EAAAA,GAAAA,IACEC,GAAAA,GAAkBC,gBAClBC,GAAAA,GAAoBD,gBAAgBy2D,0BACpC,CACEvpC,kBAAmBztB,KAGvBi3D,EAAAA,GAAAA,IAAyBj3D,EAAK,IAtJ9BiE,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA0LA,GAvMW00C,GAuMGh7C,aAAY,EAAGf,YAC3B,MAAM,MAAE6yB,GAAU7yB,EAAMI,WAExB,GAAKyyB,EAIL,OACE,kBAACj3B,MAAAA,CAAIC,UAAWJ,GAAOq9B,cACrB,kBAACjG,EAAM9xB,UAAS,CAACf,MAAO6yB,I,IAMhC,MAAMp3B,GAAS,CACbq9B,cAAc97B,EAAAA,EAAAA,KAAI,CAEhB,yCAAyCA,EAAAA,EAAAA,KAAI,CAE3Cs9D,QAAS,OAETh4D,SAAU,W,oKChQT,MAAMi4D,EAAiB,EAAGl+D,cAC/B,MAAOm+D,EAAQC,IAAar6D,EAAAA,EAAAA,WAAS,IAErCi6C,EAAAA,EAAAA,YAAU,KACR,IAAIqgB,EAQJ,OANIF,IACFE,EAAYllD,YAAW,KACrBilD,GAAU,EAAM,GACf,MAGE,KACLllD,aAAamlD,EAAU,CACxB,GACA,CAACF,IAEJ,MAAMG,GAAc1gB,EAAAA,EAAAA,cAClB,CAAC7pC,EAAgC85C,KAC/B7tD,EAAQ+T,EAAO85C,GACfuQ,GAAU,EAAK,GAEjB,CAACp+D,IAGH,OACE,kBAACysB,EAAAA,WAAUA,CACTtnB,aAAYg5D,EAAS,SAAW,wBAChCtxC,QAASsxC,EAAS,SAAW,wBAC7BnQ,iBAAiB,MACjBruD,QAASw+D,EAAS,UAAY,YAC9Bt+D,KAAK,KACL6C,KAAMy7D,EAAS,QAAU,YACzBn+D,QAASs+D,G,wGChCR,MAAMC,EAAiB,EAAGxhC,eAAc/vB,WAE3C,kBAAC3L,EAAAA,EAASA,KACR,kBAAC9B,MAAAA,KACC,kBAACwI,IAAAA,KAAGiF,GACJ,kBAACtN,EAAAA,OAAMA,CAACC,QAAQ,YAAYK,QAAS+8B,GAAc,mB,g6BCqCpD,MAAM4iB,UAAuBj8C,EAAAA,GAgB1B25D,eAAAA,GACN,MAAMD,EAAe,IAAIl4C,gBAAgBrI,EAAAA,gBAAgBoI,cAAcE,QAEvEna,KAAKya,cAAc,CACjBg6B,UAAW2d,EAAavwD,IAAI,aAC5BsyC,eAAgBie,EAAavwD,IAAI,mBAErC,CAEA2Y,WAAAA,GACE,MAAO,CACLi6B,UAAW5wC,KAAKC,UAAU9D,KAAK/G,MAAMw7C,WACrCN,eAAgBtwC,KAAKC,UAAU9D,KAAK/G,MAAMk7C,gBAE9C,CAEA15B,aAAAA,CAActY,GACZ,MAAM4S,EAA4C,CAAC,EACnD,IACE,GAAgC,iBAArB5S,EAAOsyC,WAA0BtyC,EAAOsyC,UAAW,CAC5D,MAAMU,GAAmBC,EAAAA,EAAAA,IAAoBvxC,KAAKiQ,MAAM3R,EAAOsyC,YAC3DU,IACFpgC,EAAY0/B,UAAYU,EACxBn1C,KAAKs0C,iBAAiB,CAAEG,UAAWU,IAEvC,CAEA,GAAqC,iBAA1BhzC,EAAOgyC,gBAA+BhyC,EAAOgyC,eAAgB,CACtE,MAAMqf,EAAwB3vD,KAAKiQ,MAAM3R,EAAOgyC,gBACX,kBAA1Bqf,IACTz+C,EAAYo/B,eAAiBqf,EAC7BxzD,KAAKs0C,iBAAiB,CAAEH,eAAgBqf,IACxCxzD,KAAKs0C,iBAAiB,CAAEC,mBAAoBif,IAEhD,CACF,CAAE,MAAOvvD,GAEP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,mDACzB,CAEIqJ,OAAOrD,KAAK+K,GAAa7b,QAC3B8G,KAAKN,SAAS,KAAKqV,GAEvB,CAEOlV,UAAAA,GAELG,KAAKqyD,kBAEAryD,KAAK/G,MAAMkI,MACdnB,KAAKN,SAAS,CACZyB,KAAMnB,KAAKyzD,aAAa,CACtBtf,eAAgBn0C,KAAK/G,MAAMk7C,eAC3BI,mBAAoBv0C,KAAK/G,MAAMk7C,eAC/BM,UAAWz0C,KAAK/G,MAAMw7C,cAK5B,MAAM3W,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAClDtV,KAAKkW,MAAMC,IACT2nB,EAAa1nB,kBAAiB,CAACC,EAAUmB,K,IACnCnB,EAAAA,EAGFA,EAAAA,EACkBA,EAHGA,GADL,QAAdA,EAAAA,EAAS4Y,aAAT5Y,IAAAA,GAA0B,QAA1BA,EAAAA,EAAgBpd,MAAM6xB,YAAtBzU,IAAAA,OAAAA,EAAAA,EAA4Bpd,SAAU29B,EAAAA,aAAa30B,MACrDjC,KAAK0zD,gBAA8B,QAAdr9C,EAAAA,EAAS4Y,aAAT5Y,IAAAA,OAAAA,EAAAA,EAAgBpd,MAAM6xB,OAE7B,QAAdzU,EAAAA,EAAS4Y,aAAT5Y,IAAAA,GAA0B,QAA1BA,EAAAA,EAAgBpd,MAAM6xB,YAAtBzU,IAAAA,OAAAA,EAAAA,EAA4Bpd,SAAU29B,EAAAA,aAAaC,OACnD88B,EAAAA,EAAAA,IAAgC,QAAdt9C,EAAAA,EAAS4Y,aAAT5Y,IAAAA,OAAAA,EAAAA,EAAgBpd,MAAM6xB,KAAKY,QAE7C1rB,KAAK4zD,eACI5zD,KAAK/G,MAAM+I,OACpBhC,KAAK6zD,iBAEHx9C,EAASy9C,YAAct8C,EAAUs8C,YAC9B9zD,KAAK/G,MAAMkI,KASdnB,KAAK/G,MAAMkI,KAAKzB,SAAS,CACvBrK,MAAO2K,KAAK+zD,SAAS19C,EAASy9C,aAThC9zD,KAAKN,SAAS,CACZyB,KAAMnB,KAAKyzD,aAAa,CACtBtf,eAAgBn0C,KAAK/G,MAAMk7C,eAC3BI,mBAAoBv0C,KAAK/G,MAAMk7C,eAC/BM,UAAWz0C,KAAK/G,MAAMw7C,cAQ9B,IAGN,CAEAif,eAAAA,CAAgB5oC,G,IACAA,EAAd,MAAM9oB,GAAmB,QAAX8oB,EAAAA,EAAK6P,cAAL7P,IAAAA,OAAAA,EAAAA,EAAa5xB,QAAS4xB,EAAK6P,OAAO,GAAK7P,EAAK9oB,MACpDgyD,EAAgBhyD,aAAAA,EAAAA,EAAOvL,Q,IAIjBuL,EACFA,EAJNgyD,GACF3yD,EAAAA,EAAOW,MAAM,IAAIC,MAAM,oBAAqB,CAC1C+B,IAAKgwD,EACLn5B,OAAwB,QAAhB74B,EAAAA,EAAMiyD,kBAANjyD,IAAAA,EAAAA,EAAoB,MAC5BjG,KAAgB,QAAViG,EAAAA,EAAMjG,YAANiG,IAAAA,EAAAA,EAAc,QAIxB,IAAIywC,EAAe,wFACfuhB,aAAAA,EAAAA,EAAe36D,SAAS,gBAC1Bo5C,EACE,2GACOuhB,aAAAA,EAAAA,EAAe36D,SAAS,gDACjCo5C,EACE,6GAGJzyC,KAAKk0D,cAAczhB,EACrB,CAEAmhB,YAAAA,GACE5zD,KAAKk0D,cAAc,uFACrB,CAEAA,aAAAA,CAAclyD,G,IACuB,EAAnC,MAAMmyD,EAAkE,QAArC,EAAAn0D,KAAK/G,MAAMk7D,kCAAX,UAA0CC,EAAAA,EAAAA,IAAoB,aAIjG,GAFAp0D,KAAKN,SAAS,CAAEsC,QAAOmyD,+BAEnBA,EAA4B,C,IAE9BE,EAAsB,QAAtBA,EADmBx7D,EAAAA,GAAWoc,iBAAiBjV,KAAMs0D,EAAAA,EAAoBC,EAAAA,GAC9Dt7D,MAAMuyB,aAAjB6oC,IAAAA,GAAAA,EAAwB30D,SAAS,CAAE8uB,WAAW,GAChD,CACF,CAEAqlC,cAAAA,GACE,GAAI7zD,KAAK/G,MAAMk7D,2BAA4B,C,IAEzCE,EAAsB,QAAtBA,EADmBx7D,EAAAA,GAAWoc,iBAAiBjV,KAAMs0D,EAAAA,EAAoBC,EAAAA,GAC9Dt7D,MAAMuyB,aAAjB6oC,IAAAA,GAAAA,EAAwB30D,SAAS,CAAE8uB,WAAW,GAChD,CAEAxuB,KAAKN,SAAS,CAAEsC,WAAOhM,EAAWm+D,gCAA4Bn+D,GAChE,CAwCAs+C,gBAAAA,CAAiBjyC,EAA4B,CAAC,GAC5C,GAAKrC,KAAK/G,MAAMkI,KAAhB,CAGA,GAAI,cAAekB,GAAWA,EAAQoyC,YAAcz0C,KAAK/G,MAAMkI,KAAKlI,MAAMoJ,QAAQoyC,UAAW,CAC3F,MAAMxlB,EAAQp2B,EAAAA,GAAWkyB,QAAQ/qB,MAC3BgrB,EACJiE,aAAiB/D,EAAAA,GAAmB+D,EAAQp2B,EAAAA,GAAWy7B,gBAAgBrF,EAAO/D,EAAAA,IAAkB,GAC9FF,GACFA,EAAYsP,YAEhB,CACAt6B,KAAK/G,MAAMkI,KAAKmS,gBAAgBjR,EAThC,CAUF,CAYQotD,cAAAA,GACN,OAAO52D,EAAAA,GAAWwE,YAAY2C,KAAM00C,EAAAA,EACtC,CAEQqf,QAAAA,CAASD,G,IAGsDU,EAFrE,MAAMC,GAAiBC,EAAAA,EAAAA,gBAAe,SAChCF,OAA+Bx+D,IAAd89D,EAA0BW,EAAeX,EAAW,QAAK99D,EAChF,YAA0BA,IAAnBw+D,EAA+B,SAASA,EAAer8D,OAA4B,QAArBq8D,EAAAA,EAAeptB,cAAfotB,IAAAA,OAAAA,EAAAA,EAAuBG,UAAY,MAC1G,CAEQlB,YAAAA,CAAapxD,GACnB,MAAMwtD,EAAc7vD,KAAKyvD,iBACnBna,EAAoBua,EAAY52D,MAAMq8C,kBACtCxX,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,I,IAYxBjT,EACKA,EAG3BA,EAfJ,OAAO8sB,EAAAA,GAAczH,OAClB+H,SAASzvB,KAAK+zD,SAASj2B,EAAa7kC,MAAM66D,YAC1Cc,UAAU,YAAY,GACtBA,UAAU,qBAAsB50D,KAAK60D,wBACrCD,UAAU,wBAAyB50D,KAAK80D,2BACxCF,UAAU,sBAAuB50D,KAAK+0D,2BACtCH,UAAU,sBAAuB50D,KAAKg1D,yBACtCJ,UAAU,yBAA0B50D,KAAKi1D,4BACzCL,UAAU,mBAAoB50D,KAAKk1D,kBACnCN,UAAU,mBAAoB50D,KAAKm1D,kBACnCP,UAAU,kBAAmB/E,EAAY52D,MAAMqwB,iBAC/CsrC,UAAU,YAA8B,QAAjBvyD,EAAAA,EAAQoyC,iBAARpyC,IAAAA,EAAAA,GAAqByyC,EAAAA,EAAAA,OAC5C8f,UAAU,iBAAwC,QAAtBvyD,EAAAA,EAAQ8xC,sBAAR9xC,IAAAA,EAAAA,EAA0BmN,SAAQulC,EAAAA,EAAAA,IAAsB,kBAAkB,KACtG6f,UACC,qBAC0B,QAA1BvyD,EAAAA,EAAQkyC,0BAARlyC,IAAAA,EAAAA,EAA8BmN,SAAQulC,EAAAA,EAAAA,IAAsB,kBAAkB,KAE/EvlB,QACC,IAAIlC,EAAAA,GAAU,CACZW,qBAAsB,CAAElyB,KAAM,OAAQmyB,aAAc,IAAM,UAASknC,EAAAA,EAAAA,IAAmBt3B,SAGzF82B,UAAU,wBAAwB,GAClCt5B,mBAAkB,GAClBs5B,UAAU,2BAA2B,GACrCA,UAAU,oBAAqB50D,KAAKq1D,oBACpCT,UAAU,uBAAwB,CAAC,kBAAC1B,EAAcA,CAACl+D,QAASgL,KAAKs1D,wBAAyB97D,IAAK,MAC/Fk2B,iBACC,IAAIskB,EAAAA,GAAgB,CAAEsB,oBAAmBD,0BAA2Bwa,EAAYY,wBAEjF7gC,OACL,CAoIQ2lC,iBAAAA,CAAkB/7D,EAAayJ,EAAekoB,EAA8B/nB,GAClF,MAAM1B,GAAegvD,EAAAA,EAAAA,IAAoBvlC,EAAO3xB,EAAKwG,OACrD8xB,EAAAA,EAAAA,IAAat4B,EAAKyJ,EAAOG,EAAUpD,KAAM0B,IAEzCtF,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBk5D,2BACpC,CACE7hC,WAAYjyB,EACZlI,MACAiQ,OAAQrG,GAGd,CAlZA1C,WAAAA,CAAYzH,GACV0H,MAAM,GACJ8zC,WAAWK,EAAAA,EAAAA,MACXX,eAAgB3kC,SAAQulC,EAAAA,EAAAA,IAAsB,kBAAkB,IAChE/yC,WAAOhM,GACJiD,IATP,OAAUglB,WAAW,IAAIC,EAAAA,GAAyBle,KAAM,CACtDgK,KAAM,CAAC,YAAa,qBAwJtBkrD,EAAAA,KAAAA,oBAAoB1uD,IAClB,MAAMohB,EAAS5nB,KAAKyvD,iBAGpB,IAAe,IAFD7nC,EAAO3uB,MAAMqwB,gBAAgBja,QAAQ7I,IAE/BxG,KAAK/G,MAAMkI,KAAM,CACnC,MAAMmoB,EAAkB,IAAI1B,EAAO3uB,MAAMqwB,gBAAiB9iB,GAC1DxG,KAAKs0C,iBAAiB,CACpBhrB,oBAEF1B,EAAOloB,SAAS,CAAE4pB,qBAClB4mC,EAAAA,EAAAA,IAAmBlwD,KAAM4nB,EAAO3uB,MAAMqwB,kBAEtCltB,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBm5D,4BAExC,KAGFN,EAAAA,KAAAA,oBAAoB3uD,IAClB,MAAMohB,EAAS5nB,KAAKyvD,iBAGpB,GAFc7nC,EAAO3uB,MAAMqwB,gBAAgBja,QAAQ7I,IAEtC,GAAKxG,KAAK/G,MAAMkI,KAAM,CACjC,MAAMmoB,EAAkB1B,EAAO3uB,MAAMqwB,gBAAgBnwB,QAAQu8D,GAAmBlvD,IAAUkvD,IAC1F11D,KAAKs0C,iBAAiB,CACpBhrB,oBAEF1B,EAAOloB,SAAS,CAAE4pB,qBAClB4mC,EAAAA,EAAAA,IAAmBlwD,KAAM4nB,EAAO3uB,MAAMqwB,kBAEtCltB,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgBm5D,4BAExC,KAkBF7gB,EAAAA,KAAAA,wBAAuB,KAChB50C,KAAK/G,MAAMkI,OAGhBnB,KAAKs0C,iBAAiB,CACpBhrB,gBAAiB,MAEnB4mC,EAAAA,EAAAA,IAAmBlwD,KAAM,IAAG,IAkD9B,OAAQq1D,sBAAsBM,I,IAOxB73B,EAAAA,EALJ,MAAMA,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAClDwoB,EAAap+B,SAAS,CACpBo0D,UAAW6B,EAAQ,GAAGz8D,UAGI,QAAxB4kC,EAAAA,EAAa7kC,MAAMg2B,aAAnB6O,IAAAA,GAAoC,QAApCA,EAAAA,EAA0B7kC,MAAM6xB,YAAhCgT,IAAAA,OAAAA,EAAAA,EAAsCpS,SAExCoS,EAAa7kC,MAAMg2B,MAAMvvB,SAAS,OAC7Bo+B,EAAa7kC,MAAMg2B,MAAMh2B,OAAK,CACjC6xB,KAAM,OACDgT,EAAa7kC,MAAMg2B,MAAMh2B,MAAM6xB,MAAI,CACtCY,OAAQiqC,OAKU98D,EAAAA,GAAWoc,iBAAiBjV,KAAMs0D,EAAAA,EAAoBC,EAAAA,GAC9Dc,mBAAmBM,EAAQ,IAG7C,OAAQL,2BAA0B,CAACvsD,EAAgC85C,KACjE,IAAIA,aAAAA,EAAAA,EAAK+S,QAAS51D,KAAK/G,MAAMkI,KAAM,CACjC,MAAMymB,EAAS5nB,KAAKyvD,iBACdrwD,GAAYy2D,EAAAA,EAAAA,IAA8BhT,IAChDiT,EAAAA,EAAAA,KACElT,EAAAA,EAAAA,IACE,aACA,CACEl7B,KAAM,CAAEmE,GAAIg3B,EAAIx2B,IAAK/C,gBAAiB1B,EAAO3uB,MAAMqwB,kBAErDlqB,GAGN,KAGF,OAAQy1D,0BAAyB,CAACr7D,EAAayJ,EAAekoB,KAC5DnrB,KAAKu1D,kBAAkB/7D,EAAKyJ,EAAOkoB,EAAO,SAAS,IAGrD,OAAQ2pC,6BAA4B,CAACt7D,EAAayJ,EAAekoB,KAC/DnrB,KAAKu1D,kBAAkB/7D,EAAKyJ,EAAOkoB,EAAO,UAAU,IAGtD,OAAQ4pC,6BAA4B,CAACv7D,EAAayJ,KAChD,MAAM8kB,GAAS8L,EAAAA,EAAAA,IAAwB5Y,EAAAA,GAAYjb,MAC7C2H,GAASksB,EAAAA,EAAAA,IAAwB7d,EAAAA,GAAYhW,MAC7CigB,GAAS4T,EAAAA,EAAAA,IAAwBjxB,EAAAA,GAAY5C,MAC7C+1D,GAAWliC,EAAAA,EAAAA,IAAwBra,EAAAA,GAAcxZ,MAEjDg2D,EAAqB78D,GAEvBA,GACAA,EAAOF,MAAM6F,QAAQ+mC,WAClB1sC,GAA+B,MAApBA,EAAOiK,UAAoBjK,EAAOK,MAAQA,GAAOL,EAAO8J,QAAUA,KAC3E,EAiBT,OACE+yD,EAAkBjuC,IAbW,CAAC5uB,IAC9B,GAAIA,EAAQ,CACV,MAAM88D,EAAc98D,EAAOF,MAAM6F,QAAQslB,MAAMjrB,GAA+B,MAApBA,EAAOiK,UAAoBjK,EAAOK,MAAQA,IAEpG,GAAIy8D,EAAa,CAEf,OADmBryD,EAAAA,EAAAA,IAAyBqyD,EAAaz8D,GACvCyJ,QAAUA,CAC9B,CACF,CACA,OAAO,CAAK,EAKZizD,CAAuBvuD,IACvBquD,EAAkB/1C,IAClB+1C,EAAkBD,EAAS,IAI/B,OAAQd,8BAA8BhyD,IACpC,MAAMkzD,GAAiB9yC,EAAAA,EAAAA,IAAuBrjB,MAC1Cm2D,IACFA,EAAez2D,SAAS,CACtBZ,QAAS,IACJq3D,EAAel9D,MAAM6F,QACxB,CACEsE,SAAU2e,EAAAA,GAAaC,cACvB/e,QACAzJ,IAAKypB,EAAAA,GAAwBD,cAC7BO,SAAU4yC,EAAel9D,MAAM6F,QAAQ5F,OAAOoM,gBAIpDlJ,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgB85D,yBACpC,CACEC,gBAAiBpzD,EAAM/J,SAG7B,IAGF,OAAQ87D,2BAA2B/xD,IACjC,MAAMkzD,GAAiB9yC,EAAAA,EAAAA,IAAuBrjB,MAC1Cm2D,IACFA,EAAez2D,SAAS,CACtBZ,QAAS,IACJq3D,EAAel9D,MAAM6F,QACxB,CACEsE,SAAU2e,EAAAA,GAAaa,MACvB3f,QACAzJ,IAAKypB,EAAAA,GAAwBD,cAC7BO,SAAU4yC,EAAel9D,MAAM6F,QAAQ5F,OAAOoM,gBAIpDlJ,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgB85D,yBACpC,CACEC,gBAAiBpzD,EAAM/J,SAG7B,IA1XA8G,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA2YA,EAzZW20C,EAyZGj7C,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,EAAI,MAAEa,GAAUrJ,EAAMI,WACxB3E,GAASC,EAAAA,EAAAA,YAAWm9B,EAAAA,IAC1B,OAAIrwB,EAEA,kBAACogB,OAAAA,CAAK/sB,UAAWJ,EAAOq9B,eACpBzvB,GAAS,kBAACb,EAAKzH,UAAS,CAACf,MAAOwI,IACjCa,GAAS,kBAACuxD,EAAcA,CAACvxD,MAAOA,EAAO+vB,aAAc,KAAM+O,EAAAA,EAAAA,IAAe3/B,MAI1E,kBAACyd,EAAAA,mBAAkBA,CAACzmB,KAAM,c,0PC5c9B,MAAMm+D,UAA0B59D,EAAAA,I,EAevC,UAAmB,MAAEC,IACnB,MAAQ+0C,UAAW6oB,EAAyB,UAAEr3C,IAAcs3C,EAAAA,EAAAA,oBAC1D,oDAGIt/C,GAAY2c,EAAAA,EAAAA,IAAwB5Y,EAAAA,GAAYtiB,IAChD,QAAEmG,GAAYoY,EAAUne,WACxB09D,EAAiB33D,EAAQxF,KAAI,EAAGE,MAAK4J,WAAUH,YAAkC,CAAEzJ,MAAK4J,WAAUH,YAElGyzD,GAAgB50D,EAAAA,EAAAA,IAAcnJ,GAEpC,OAAIumB,IAAcq3C,EACT,KAIP,kBAACA,EAAAA,CACCG,cAAeA,EACfD,eAAgBA,EAChBE,aAAc,CAAC,cAAe,iBAAkB,iBAGtD,G,EApCSj9D,e,EADI48D,G,s/BCuBN,MAAMhC,EAAqB,oBAC3B,MAAMC,UAAwB77D,EAAAA,GAW3BmH,UAAAA,GACN,IAAKG,KAAK/G,MAAMuyB,MAAO,CACrB,MAAMA,EAAQxrB,KAAK0yD,cACnB1yD,KAAKN,SAAS,CACZ8rB,UAEFxrB,KAAK42D,sBAAsBprC,EAC7B,CAEA,MAAMzD,GAAS5Q,EAAAA,EAAAA,IAAkBnX,MAC3B2H,GAASmO,EAAAA,EAAAA,IAAkB9V,MAGjCA,KAAKkW,MAAMC,IACT4R,EAAO3R,kBAAiB,CAACC,EAAUmB,MAC5B2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKN,SAAS,CACZ8rB,MAAOxrB,KAAK0yD,eAEhB,KAKJ1yD,KAAKkW,MAAMC,IACTxO,EAAOyO,kBAAiB,CAACC,EAAUmB,MAC5B2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKN,SAAS,CACZ8rB,MAAOxrB,KAAK0yD,eAEhB,KAKJ1yD,KAAKkW,MAAMC,IACTnW,KAAKuW,iBAAiBmb,EAAAA,IAAiB3oB,IACrC,GAAIA,EAAMvP,MAAQiN,EAAAA,GAAsB,CACtC,MAAMsZ,EAAsBlnB,EAAAA,GAAWuY,WAAWpR,MAAOggB,GAAQA,aAAe9f,EAAAA,KAChF,GAAI6f,aAA+B7f,EAAAA,GAAqB,CACtD,MAAM8e,GAAY/I,EAAAA,EAAAA,IAAkBjW,MACpCgf,EAAUtf,SAAS,CAAEZ,QAASkgB,EAAU/lB,MAAM6F,SAChD,CACF,KAGN,CAEQi1D,QAAAA,CAAS8C,EAAoC/C,G,IAElC12D,EAW6B05D,E,IAX7B15D,EAAjB,MAAM25D,EAAwC,QAA7B35D,EAAmB,QAAnBA,EADEvE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,GACpBrE,MAAM0lB,UAAjBvhB,IAAAA,OAAAA,EAAAA,EAAqB25D,gBAArB35D,IAAAA,EAAAA,EAAiC45D,EAAAA,GAC5CvC,GAAiBC,EAAAA,EAAAA,gBAAe,SAChCoC,OAAyC9gE,IAAnB6gE,EAA+BpC,EAAeoC,EAAgB,QAAK7gE,EAE/F,QAAuBA,IAAnB6gE,QAA8C7gE,IAAd89D,GAA2BA,EAAYiD,EAAU,C,IAG1CvC,EAFzC,MAAMA,EAAiBC,EAAeX,EAAW,GACjD,YAA0B99D,IAAnBw+D,EACH,eAAeA,EAAer8D,OAA4B,QAArBq8D,EAAAA,EAAeptB,cAAfotB,IAAAA,OAAAA,EAAAA,EAAuBG,UAC5D,YACN,CACA,YAA+B3+D,IAAxB8gE,EACH,eAAeA,EAAoB3+D,OAAiC,QAA1B2+D,EAAAA,EAAoB1vB,cAApB0vB,IAAAA,OAAAA,EAAAA,EAA4BnC,UACtE,YACN,CAEQjC,WAAAA,G,IAoCJlnC,EAcAsS,EAjDF,MAAMA,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,EAAAA,IAC5CwY,EAAMqB,EAAAA,GAAcC,aACvBK,SAASzvB,KAAK+zD,SAASj2B,EAAa7kC,MAAM49D,eAAgB/4B,EAAa7kC,MAAM66D,YAC7Ec,UAAU,SAAU,CAAEvhD,YAAY,EAAM4jD,MAAO,CAAC,OAAQC,YAAaC,EAAAA,kBAAkBC,OACvFC,QAAQ,SACR7nC,QAAQ,IAAIlC,EAAAA,GAAU,CAAEW,qBAAsB,CAAEvF,UAAW,YAC3Dod,gBAAe,GACfC,cAAaquB,EAAAA,EAAAA,IAAoB,cACjC1kC,iBAAiB,IAAI4mC,EAAkB,CAAC,IACxCh7B,mBAAkB,GAClB3L,SACC2J,EAAAA,EAAAA,IAAe,EACbU,EAAAA,EAAAA,IAAes9B,EAAAA,EAAAA,GAAkBt3D,KAAMyG,EAAAA,IAAsB,GAAQ,CACnE6kB,aAAc,KAAK7kB,EAAAA,aAK3B8wD,EAAAA,EAAAA,IAA0BzpC,GAE1B,MAAMtC,EAAQsC,EAAI8B,QAoDlB,OAnDApE,EAAM9rB,SAAS,CACbwmC,mBAAoB,CAACj+B,EAAG2iB,IAAY5qB,KAAKmmC,0BAA0Bvb,KAGrE5qB,KAAKkW,MAAMC,IACTqV,EAAMpV,kBAAiB,CAACC,EAAUmB,KAC5BnB,EAASmY,YAAchX,EAAUgX,YACnCxuB,KAAK42D,sBAAsBprC,IAC3BgsC,EAAAA,EAAAA,IAAoB,YAAanhD,EAASmY,UAAY,YAASx4B,GACjE,KAIJgK,KAAKkW,MAAMC,IACQ,QAAjBqV,EAAAA,EAAMvyB,MAAMg2B,aAAZzD,IAAAA,OAAAA,EAAAA,EAAmBpV,kBAAkBC,I,IAC/BA,EAGAynB,EAAAA,EAAsEznB,EAH1E,IAAiB,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KAA1C,C,IAI0BiH,EAAAA,EAD1B,IAA4B,QAAxBA,EAAAA,EAAa7kC,MAAMg2B,aAAnB6O,IAAAA,GAAoC,QAApCA,EAAAA,EAA0B7kC,MAAM6xB,YAAhCgT,IAAAA,OAAAA,EAAAA,EAAsC7kC,SAAU29B,EAAAA,aAAaC,OAAkC,QAAzBxgB,EAAAA,EAASyU,KAAK2sC,mBAAdphD,IAAAA,OAAAA,EAAAA,EAA2Bnd,QAGnG8G,KAAK03D,2BAFL13D,KAAKq1D,mBAA2C,QAAxBv3B,EAAAA,EAAa7kC,MAAMg2B,aAAnB6O,IAAAA,GAAoC,QAApCA,EAAAA,EAA0B7kC,MAAM6xB,YAAhCgT,IAAAA,OAAAA,EAAAA,EAAsCpS,SAIhE2a,EAAAA,EAAAA,IAAwB7a,EAAOnV,EAASyU,KAAKY,OAAQ1rB,KANrD,CAM0D,KAI9DA,KAAKkW,MAAMC,IACe,QAAxB2nB,EAAAA,EAAa7kC,MAAMg2B,aAAnB6O,IAAAA,OAAAA,EAAAA,EAA0B1nB,kBAAkBC,I,IACtCA,GAAa,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,MACxC72B,KAAKq1D,mBAAmBh/C,EAASyU,KAAKY,OACxC,KAIJ1rB,KAAKkW,MAAMC,IACT2nB,EAAa1nB,kBAAiB,CAACC,EAAUmB,KACnCnB,EAASwgD,iBAAmBr/C,EAAUq/C,qBAAyC7gE,IAAvBqgB,EAASy9C,YAC9D9zD,KAAK/G,MAAMuyB,MAKdxrB,KAAK/G,MAAMuyB,MAAM9rB,SAAS,CACxBrK,MAAO2K,KAAK+zD,SAAS19C,EAASwgD,eAAgBxgD,EAASy9C,aALzD9zD,KAAKN,SAAS,CACZ8rB,MAAOxrB,KAAK0yD,gBAOlB,KAIGlnC,CACT,CAEOorC,qBAAAA,CAAsBprC,GAC3B,MAAMmsC,EAAkB9+D,EAAAA,GAAWwE,YAAYmuB,EAAOjsB,EAAAA,IAChDmV,EAAS8W,EAAMvyB,MAAMu1B,UAAY,GAAK/zB,KAAKuS,IAAIvS,KAAKC,MAA2B,GAArBC,OAAOi9D,aAAoB,KAC3FD,EAAgBj4D,SAAS,CACvBuB,UAAWyT,EACXA,OAAQA,EACR0xB,UAAW1xB,GAEf,CAEO2gD,kBAAAA,CAAmBvqC,EAAoB,IAC5C9qB,KAAK63D,iBAAmB/sC,EACxB9qB,KAAK03D,qBACP,CAEQA,mBAAAA,G,IAIHlsC,EACDA,EAJF,MAAMA,EAAQxrB,KAAK/G,MAAMuyB,MACzB,IACGA,KACiB,QAAjBA,EAAAA,EAAMvyB,MAAMg2B,aAAZzD,IAAAA,OAAAA,EAAAA,EAAmBvyB,MAAM6xB,QACT,QAAjBU,EAAAA,EAAMvyB,MAAMg2B,aAAZzD,IAAAA,OAAAA,EAAAA,EAAmBvyB,MAAM6xB,KAAK7xB,SAAU29B,EAAAA,aAAaC,OACpD72B,KAAK63D,iBAEN,OAEF,MAAMC,GAAeC,EAAAA,EAAAA,IAAsB/3D,KAAK63D,kBAChD73D,KAAK63D,iBAAmB,KACxBrsC,EAAMvyB,MAAMg2B,MAAMvvB,SAAS,CACzBorB,KAAM,OACDU,EAAMvyB,MAAMg2B,MAAMh2B,MAAM6xB,MAAI,CAC/B2sC,YAAa,EAACO,EAAAA,EAAAA,IAAqBF,EAAa3wD,MAAO2wD,EAAa1wD,SAG1E,CAvLA1G,WAAAA,CAAYzH,GACV0H,MAAM,OACD1H,GAAAA,CACHO,IAAK86D,KAJT,OAAQuD,mBAAuC,MA0L/C,OAAQ1xB,6BAA6Bvb,IACnC,MAAMqtC,GAAchiD,EAAAA,EAAAA,IAAkBjW,MACtCA,KAAKkW,MAAMC,IACT8hD,aAAAA,EAAAA,EAAa7hD,kBAAiB,K,IAEvBoV,EAAAA,EAI0BA,EAAAA,EAL/B,MAAMA,EAAQxrB,KAAK/G,MAAMuyB,OACpBA,SAAkB,QAAlBA,EAAAA,EAAOvyB,MAAMg2B,aAAbzD,IAAAA,GAA8B,QAA9BA,EAAAA,EAAoBvyB,MAAM6xB,YAA1BU,IAAAA,OAAAA,EAAAA,EAAgCE,UAIrC2a,EAAAA,EAAAA,IAAwB7a,EAAOA,SAAkB,QAAlBA,EAAAA,EAAOvyB,MAAMg2B,aAAbzD,IAAAA,GAA8B,QAA9BA,EAAAA,EAAoBvyB,MAAM6xB,YAA1BU,IAAAA,OAAAA,EAAAA,EAAgCE,OAAQ1rB,KAAK,KAIhF4qB,EAAQkc,yBAA2B,CAACjpC,EAAeyhC,KACjD,MAAM71B,GAASs9B,EAAAA,EAAAA,IAAsBlpC,EAAOmC,MAC5CA,KAAKuS,aAAa,IAAImf,EAAAA,GAAe,SAAU,UAAWjrB,EAAAA,GAAsB5I,IAAQ,IAExFzB,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgB47D,6BACpC,CACE5sD,MAAOzN,EACP4L,UACF,CAEH,IA5MDzJ,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA8MA,EAvNWu0D,EAuNG76D,aAAY,EAAGf,YAC3B,MAAM,MAAE6yB,GAAU7yB,EAAMI,WACxB,IAAKyyB,EACH,OAEF,MAAMp3B,GAASC,EAAAA,EAAAA,YAAWm9B,EAAAA,IAE1B,OACE,kBAACjQ,OAAAA,CAAK/sB,UAAWJ,EAAOq9B,cACtB,kBAACjG,EAAM9xB,UAAS,CAACf,MAAO6yB,I,stBC1NzB,MAAM2sC,UAAyBz/D,EAAAA,GAK7B0/D,SAAAA,CAAUt6C,GACf9d,KAAKN,SAAS,CAAEoe,UAClB,CAEOu6C,UAAAA,CAAWC,EAAkBC,EAAkB5mD,GAChD2mD,GACFE,EAAuB7mD,GAAO8mD,EAAAA,EAAOz+C,SAAS9iB,OAC9C2jD,EAAAA,EAAAA,mBAAkB,yCAA0C,CAAE6d,eAAgBH,OAE9EzC,EAAAA,EAAAA,SACU9/D,IAAR2b,EACI,GAAGhX,OAAOqf,SAAS2+C,aAAah+D,OAAOqf,SAAS4+C,OAAOl7C,EAAAA,OAAO6M,YAAY5Y,IAC1E8mD,EAAAA,EAAOz+C,SAAS9iB,MAGlB8I,KAAK/G,MAAMo/D,YACbr4D,KAAK/G,MAAMo/D,WAAWC,EAASC,EAAS5mD,GAG9C,CAvBAjR,WAAAA,CAAYzH,GACV0H,M,sUAAM,EAAEmd,QAAQ,EAAO+6C,aAAcC,GAAgB7/D,GACvD,EAuBA,EA1BWk/D,EA0BJY,eAAc,EAAGpgE,YACtB,MAAMqgE,EAAoC,CACxC,CACEx/D,IAAK,SACLqE,MAAO,mBACP4vB,MAAO,CACL,CACEj0B,IAAK,sBACLmtB,KAAM,OACN9oB,MAAO,qBACPo7D,OAAQ,KAAe,EACvBX,SAAS,EACTC,SAAS,GAEX,CACE/+D,IAAK,YACLmtB,KAAM,OACN9oB,MAAO,WACPo7D,OAAQ,KAAe,EACvBX,SAAS,EACTC,SAAS,KAIf,CACE/+D,IAAK,WACLqE,MAAO,qDACP4vB,MAAO,CACL,CACEj0B,IAAK,2BACLmtB,KAAM,aACN9oB,MAAO,8BACPy6D,SAAS,EACTW,OAAQ,IACCC,OAC6BljE,IAAlC2C,EAAMM,MAAMkgE,kBACRxgE,EAAMM,MAAMkgE,oBACZtgE,EAAAA,GAAWqZ,aAAavZ,IAGhC4/D,SAAS,GAEX,CACE/+D,IAAK,qBACLmtB,KAAM,aACN9oB,MAAO,oBACPy6D,SAAS,EACTW,OAAQ,IACCC,OAC6BljE,IAAlC2C,EAAMM,MAAMkgE,kBACRxgE,EAAMM,MAAMkgE,oBACZtgE,EAAAA,GAAWqZ,aAAavZ,IAGhC4/D,SAAS,MAMjB,OACE,kBAACa,EAAAA,KAAIA,KACFJ,EAAY1/D,KAAK+/D,GAEd,kBAACC,EAAAA,UAASA,CAAC9/D,IAAK6/D,EAAY7/D,IAAKqE,MAAOw7D,EAAYx7D,OACjDw7D,EAAY5rC,MAAMn0B,KAAK6O,GAEpB,kBAACixD,EAAAA,KAAKG,KAAI,CACR//D,IAAK2O,EAAO3O,IACZqE,MAAOsK,EAAOtK,MACd8oB,KAAMxe,EAAOwe,KACb3xB,QAAS,KACP,MAAM2c,EAAMxJ,EAAO8wD,SACnBtgE,EAAM0/D,WAAWlwD,EAAOmwD,QAASnwD,EAAOowD,QAAS5mD,GACjDhZ,EAAM+G,SAAS,CACbm5D,aAAc1wD,GACd,SAOhB,IAKN,EAlHWgwD,EAkHJz+D,aAAY,EAAGf,YACpB,MAAM,aAAEkgE,EAAY,OAAE/6C,GAAWnlB,EAAMI,WAEvC,OACE,kBAAC+0C,EAAAA,YAAWA,KACV,kBAACpnB,EAAAA,cAAaA,CACZ7E,QAASg3C,EAAah7D,MACtB8oB,KAAMkyC,EAAalyC,KACnBhyB,QAAS,SACT6kE,QAAQ,EACRxkE,QAAS,KACP,MAAM2c,EAAMknD,EAAaI,SACzBtgE,EAAM0/D,WAAWQ,EAAaP,QAASO,EAAaN,QAAS5mD,EAAI,EAEnExX,aAAY,sBAEZ,kBAAConB,OAAAA,KAAK,UAER,kBAAC+E,EAAAA,SAAQA,CACPC,QAAS,kBAAC4xC,EAAiBY,YAAW,CAACpgE,MAAOA,IAC9C6tB,UAAU,aACVC,gBAAiB9tB,EAAMy/D,UAAUt3D,KAAKnI,IAEtC,kBAAC+tB,EAAAA,cAAaA,CAAC8yC,QAAQ,EAAM7kE,QAAS,SAAUmpB,OAAQA,EAAQ3jB,aAAY,4B,IAOtF,MAAM2+D,EAAqC,CACzCt/D,IAAK,YACLqE,MAAO,qBACP8oB,KAAM,YACNsyC,OAAQ,KAAe,EACvBX,SAAS,EACTC,SAAS,GAQX,SAASkB,EAAmB9nD,GAC1B,IAAImvC,EAAOnvC,EAAI9O,QAJR,GAAGlI,OAAOqf,SAAS2+C,aAAah+D,OAAOqf,SAAS4+C,OAAOl7C,EAAAA,OAAO6M,YAI9B,IACvC,OAAOu2B,EAAKvzC,WAAW,KAAOuzC,EAAKhmD,UAAU,EAAGgmD,EAAK5nD,QAAU4nD,CACjE,CAEO,MAAM4Y,EAAAA,W,MAAkB,aAAgB5Y,GAC7C,MAAMxwC,GAAYC,EAAAA,EAAAA,gBAClB,IAIE,aAHwBopD,EAAAA,EAAAA,iBAAgBC,KAAK,kBAAmB,CAC9D9Y,KAAM2Y,EAAmB3Y,MAEVnvC,GACnB,CAAE,MAAOipB,GACPhzB,QAAQ5F,MAAM,uCAAwC44B,GAEtDtqB,EAAU6B,QAAQ,CAChBpW,KAAMuc,EAAAA,UAAU4sB,WAAWxtC,KAC3BqZ,QAAS,CAAC,oCAEd,CACF,I,gBAf+C+vC,G,gCAAlC4Y,GAiBAlB,EAAAA,W,MAAyB,aAAO1X,GAC3C,MAAMxwC,GAAYC,EAAAA,EAAAA,gBACZspD,QAAkBH,EAAgB5Y,GACpC+Y,IACF/D,EAAAA,EAAAA,IAAS+D,GACTvpD,EAAU6B,QAAQ,CAChBpW,KAAMuc,EAAAA,UAAUwhD,aAAapiE,KAC7BqZ,QAAS,CAAC,yCAGZT,EAAU6B,QAAQ,CAChBpW,KAAMuc,EAAAA,UAAU4sB,WAAWxtC,KAC3BqZ,QAAS,CAAC,oCAGhB,I,gBAf6C+vC,G,gCAAhC0X,GAqBPU,EAAwB95D,IAC5B,MAAM8Y,GAAO6hD,EAAAA,EAAAA,OAAM36D,EAAUnG,MAAMgK,MAAMiV,MACnCF,GAAK+hD,EAAAA,EAAAA,OAAM36D,EAAUnG,MAAMgK,MAAM+U,IACjCgC,EAAWnI,EAAAA,gBAAgBoI,cAC3Bm4C,EAAehqC,EAAAA,QAAQ4xC,qBAG7B,OAFA5H,EAAmB,KAAIl6C,EAAK+hD,cAC5B7H,EAAiB,GAAIp6C,EAAGiiD,cACjB7xC,EAAAA,QAAQC,UAAUrO,EAASkgD,SAAU9H,EAAa,E,wLC1OpD,SAAS+H,EAAexmE,G,IAgBCymE,EACAA,EAhB9B,MAAQh9D,WAAYi9D,EAAU,QAAEzgE,EAAO,KAAEmC,G,sUAAS,IAAKpI,GAEjDyJ,EAAavE,EAAAA,GAAWwE,YAAYg9D,EAAY/8D,EAAAA,GAEtD,IAAKF,EAEH,YADAiE,EAAAA,EAAOC,KAAK,qCAIdpF,EAAAA,EAAAA,MACA,MAAM,SAAEL,EAAW,IAAOuB,EAAWnE,MAG/BmhE,EAAmBv+D,EAAS1C,QAAQgD,GAAQA,EAAIvC,UAAYA,I,IAEpCwgE,EAA9B,MAAM39D,EAAoF,QAA5D29D,EAA0C,QAA1CA,EAAAA,EAAiBjhE,QAAQ4D,GAAiB,YAAXA,EAAEhB,cAAjCq+D,IAAAA,OAAAA,EAAAA,EAAsDlhE,cAAtDkhE,IAAAA,EAAAA,EAAgE,E,IAChEA,EAA9B,MAAM19D,EAAoF,QAA5D09D,EAA0C,QAA1CA,EAAAA,EAAiBjhE,QAAQ4D,GAAiB,YAAXA,EAAEhB,cAAjCq+D,IAAAA,OAAAA,EAAAA,EAAsDlhE,cAAtDkhE,IAAAA,EAAAA,EAAgE,GAC9Fh+D,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkBC,gBAAiBC,EAAAA,GAAoBD,gBAAgBg+D,iBAAkB,CAC5Gv+D,KAAMA,EACNU,sBAAuBA,GAAkC,YAATV,EAAqB,EAAI,GACzEW,sBAAuBA,GAAkC,YAATX,EAAqB,EAAI,KAI9D,SAATA,EACFqB,EAAWsC,SAAS,CAClB7D,SAAUu+D,IAIZh9D,EAAWsC,SAAS,CAClB7D,SAAU,IAAIu+D,EAAkB,CAAExgE,QAASA,EAASmC,KAAMA,KAGhE,C,wBC5CA,MAAMzH,EAAaoB,IAA0B,CAC3C6kE,cAAc5kE,EAAAA,EAAAA,KAAI,CAChBe,OAAQ,GAAGhB,EAAMmC,QAAQ,cAE3B2iE,oBAAoB7kE,EAAAA,EAAAA,KAAI,CACtBsC,MAAOvC,EAAMwC,OAAOotB,QAAQntB,KAC5BL,SAAU,aAEZ2iE,mBAAmB9kE,EAAAA,EAAAA,KAAI,CACrBC,QAAS,OACTgf,aAAc,QAEhB8lD,mBAAmB/kE,EAAAA,EAAAA,KAAI,CACrB0B,KAAM,EACNoE,aAAc,WACdR,SAAU,WAEZ0/D,mBAAmBhlE,EAAAA,EAAAA,KAAI,CACrBkf,UAAW,QACXld,WAAYjC,EAAMmC,QAAQ,OAE5B+iE,qBAAqBjlE,EAAAA,EAAAA,KAAI,CACvBkf,UAAW,QACXld,WAAYjC,EAAMmC,QAAQ,KAC1BmH,MAAOtJ,EAAMmC,QAAQ,OAEvBgjE,iBAAiBllE,EAAAA,EAAAA,KAAI,CACnB+e,OAAQhf,EAAMmC,QAAQ,IACtBoD,SAAU,SACVqD,WAAY5I,EAAMwC,OAAOC,KAAKolB,WAEhCu9C,sBAAsBnlE,EAAAA,EAAAA,KAAI,CACxB+e,OAAQhf,EAAMmC,QAAQ,IACtBoD,SAAU,SACVqD,WAAY5I,EAAMwC,OAAOotB,QAAQjqB,SAWxB0/D,EAA4B,EAAGj2C,SAAQk2C,QAAOC,aAAYh4D,YACrE,MAAMi4D,GAAQ7mE,EAAAA,EAAAA,YAAWC,GACnB6mE,EAAU,GAAG1gE,KAAKC,MAAmB,IAAbugE,MACxBG,EAAW,CAAEp8D,MAAOm8D,GAE1B,OACE,kBAAC5mE,MAAAA,CAAIC,UAAWswB,EAAS,GAAGo2C,EAAMX,gBAAgBW,EAAMV,qBAAuBU,EAAMX,cACnF,kBAAChmE,MAAAA,CAAIC,UAAW0mE,EAAMT,mBACpB,kBAAClmE,MAAAA,CAAIC,UAAW0mE,EAAMR,kBAAmBrlE,MAAO4N,GAC7CA,GAEH,kBAAC1O,MAAAA,CAAIC,UAAW0mE,EAAMP,mBAAoBK,GAC1C,kBAACzmE,MAAAA,CAAIC,UAAW0mE,EAAMN,qBAAsBO,IAE9C,kBAAC5mE,MAAAA,CAAIC,UAAW0mE,EAAML,iBACpB,kBAACtmE,MAAAA,CAAIC,UAAW0mE,EAAMJ,qBAAsBI,MAAOE,K,kkBCzD3D,MAEM9mE,EAAaoB,IAA0B,CAC3C2lE,WAAW1lE,EAAAA,EAAAA,KAAI,CACb2I,WAAY,UACZrG,MAAOvC,EAAMwC,OAAOC,KAAKmtB,QACzBg2C,UAAW,YACXt8D,MAAO,cACPonC,UAAW,OACX+X,UAAW,OACXj/C,UAAWxJ,EAAMmC,QAAQ,KAE3B0jE,iBAAiB5lE,EAAAA,EAAAA,KAAI,CACnBooD,aAAc,aAAaroD,EAAMwC,OAAOoD,OAAOkgE,SAC/C5lE,QAAS,SAEX6lE,gBAAgB9lE,EAAAA,EAAAA,KAAI,CAClBgwB,WAAYjwB,EAAM4C,WAAWstB,iBAC7BjqB,aAAcjG,EAAMmC,QAAQ,GAC5BjC,QAAS,eACTsrB,WAAY,SACZzlB,aAAc,WACduF,SAAU,IAEZ06D,gBAAgB/lE,EAAAA,EAAAA,KAAI,CAClBqF,OAAQ,YAEV2gE,eAAehmE,EAAAA,EAAAA,KAAI,CACjB6F,QAAS,cASAogE,EAA0BjoE,IACrC,MAAMunE,GAAQ7mE,EAAAA,EAAAA,YAAWC,IAEnB,MAAEunE,EAAK,MAAE54D,GAAUtP,EAEnBmoE,EAAUD,EAAMzuD,MAAM,EA1CN,IA2CtB,IAAI2uD,EAAYD,EAAQ13C,MAAMy+B,GAAQA,EAAI5/C,QAAUA,IAChD+4D,EAAYH,EAAMzuD,MA5CA,KA6CG2uD,IAIvBA,EAAYC,EAAU53C,MAAMy+B,GAAQA,EAAI5/C,QAAUA,IAClD+4D,EAAYA,EAAU7iE,QAAQ0pD,GAAQA,EAAI5/C,QAAUA,KAGtD,MAAMg5D,EAAaD,EAAUxvB,QAAO,CAACgD,EAAKqT,IAAQrT,EAAMqT,EAAImY,OAAO,GAE7D/L,EADW6M,EAAQtvB,QAAO,CAACgD,EAAKqT,IAAQrT,EAAMqT,EAAImY,OAAO,GACtCiB,EAGzB,IAAIC,EAAe,IAAIJ,GAUvB,OAPIG,EAAa,GACfC,EAAa34D,KAAK,CAAEN,MAAO,QAAS+3D,MAAOiB,EAAYhB,WAAYgB,EAAahN,IAIlFiN,EAAaz2D,MAAK,CAACzO,EAAG0O,IAAMA,EAAEs1D,MAAQhkE,EAAEgkE,QAGtC,kBAACzmE,MAAAA,CAAIC,UAAW0mE,EAAMG,WACpB,kBAAC9mE,MAAAA,CAAIC,UAAW0mE,EAAMK,iBACpB,kBAAChnE,MAAAA,CAAIC,UAAW0mE,EAAMO,gBAAgB,oBAAkBxM,EAAM,gBAEhE,kBAAC16D,MAAAA,CAAIC,UAAW0mE,EAAMS,eACnBO,EAAa5iE,KAAK6iE,GACjB,kBAACpB,EAAyBA,E,sUAAAA,CAAAA,CAACvhE,IAAK2iE,EAAKl5D,OAAWk5D,GAAAA,CAAMr3C,OAAQq3C,EAAKl5D,QAAUA,Q,yIClEhF,MAAMm5D,EAAmB,EAAGC,cAAaziE,UAASm9D,eACvD,MAAMuF,EA6HR,SAA+B1iE,GAC7B,MAAM2iE,EAAoB,GAC1B,IAAIC,EAAe5iE,EAAQyV,QAAQ,OAEnC,MAAyB,IAAlBmtD,GACLD,EAAQh5D,KAAKi5D,GACbA,EAAe5iE,EAAQyV,QAAQ,MAAOmtD,EAAe,GAEvD,OAAOD,CACT,CAtIyBE,CAAsB7iE,IACtCiiE,EAAOa,IAAY3jE,EAAAA,EAAAA,eAA6C/C,IAChE2mE,EAAYC,IAAiB7jE,EAAAA,EAAAA,WAAS,GACvC3E,GAASC,EAAAA,EAAAA,YAAWC,GAGpBuoE,GAAmB3vB,EAAAA,EAAAA,QAAsB,MACzC4vB,GAAuB5vB,EAAAA,EAAAA,QAAyB,MAEhD6vB,EAAAA,W,WAAqB,aACzB3gE,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkBC,gBAAiBC,EAAAA,GAAoBD,gBAAgB0gE,uBAC5F,MAAM11D,EA8HV,SAAwB1N,EAAiB0iE,EAA0Bx9D,GACjE,IAAIilD,EAAa,EACjB,MAAMkZ,EAAmBrjE,EAAQiJ,QAAQ,QAAQ,IAAM,UAAUkhD,SAC3DlqB,EAAmB/6B,EAAQ7F,MAAM4gC,iBACjClyB,EAAS20D,EAAehjE,KAAI,CAAC4jE,EAAQ14C,IAAU,SAASA,EAAQ,MAAK1Y,KAAK,MAChF,MAAO,IAAI+tB,WAA0BjgC,mBAAyBqjE,cAA6Bt1D,oBAC7F,CApIkBw1D,CAAevjE,EAAS0iE,GAAgBnlD,EAAAA,EAAAA,IAAkBklD,IAClEj4D,QAAmBqa,EAAAA,EAAAA,IAAkB49C,GACrCe,EAAmBvkE,EAAAA,GAAWqZ,aAAamqD,GAAapjE,MAAMgK,MAGhE44D,GAASv0D,IAAUu1D,EAAiBluB,SAAWyuB,IAAqBN,EAAqBnuB,UAK7FkuB,EAAiBluB,QAAUrnC,EAC3Bw1D,EAAqBnuB,QAAUyuB,EAE/Bh5D,SAAAA,EACIkD,MAAM,CACN+1D,UAAW,IACX1lD,SAAU,GACV2lD,WAAY,EACZn3D,WAAY,CAAC,EACbY,MAAOq2D,EACPG,QAAS,EAACvjC,EAAAA,EAAAA,GAAe1yB,EAAO,CAAEyvD,cAClCyG,SAAU,GACVC,IAAK,GACLC,UAAW,IAEZ16D,SAASgC,I,IACmCA,EAGOA,EAH9CA,EAAO/L,QAAU29B,EAAAA,aAAaC,OAAsB,QAAb7xB,EAAAA,EAAO21B,cAAP31B,IAAAA,OAAAA,EAAAA,EAAe9L,SAG/C8L,EAAO/L,QAAU29B,EAAAA,aAAa30B,QAAsB,QAAb+C,EAAAA,EAAO21B,cAAP31B,IAAAA,OAAAA,EAAAA,EAAe9L,WAC/DwjE,OAAS1mE,GACT4mE,GAAc,KAJdF,EA0DV,SAA8B13D,EAAa24D,EAAoB5G,GAC7D,MAAM6G,EAAgB,IAAIjgC,IAG1B34B,EAAO8lB,KAAK,GAAGnjB,OAAO,GAAGxF,OAAO07D,UAAU76D,SAASC,IACjDoK,OAAOrD,KAAK/G,GAAOD,SAASxJ,I,IAIeokE,EAAzCA,EAHKA,EAAcj4D,IAAInM,IACrBokE,EAAc//B,IAAIrkC,EAAK,IAAImkC,KAEXnkC,QAAlBokE,EAAAA,EAAc/7D,IAAIrI,UAAlBokE,IAAAA,GAAAA,EAAwB//B,IAAI56B,EAAMzJ,KAAyBA,QAAlBokE,EAAAA,EAAc/7D,IAAIrI,UAAlBokE,IAAAA,OAAAA,EAAAA,EAAwB/7D,IAAIoB,EAAMzJ,MAAS,GAAK,EAAE,GAC3F,IAGJ,MAAMqiE,EAAgC,GAGtC,IAAK,IAAIhzD,EAAI,EAAGA,GAAK80D,EAAY90D,IAAK,C,IAEpC+0D,EADA,MAAME,EAAmC,GACP,QAAlCF,EAAAA,EAAc/7D,IAAI,SAASgH,EAAI,YAA/B+0D,IAAAA,GAAAA,EAAqC56D,SAAQ,CAACg4D,EAAOxhE,KACnDskE,EAAWv6D,KAAK,CAAEN,MAAOzJ,EAAKwhE,QAAOC,WAAYD,EAAQjE,GAAW,IAEtE+G,EAAWr4D,MAAK,CAACzO,EAAG0O,IAAMA,EAAEs1D,MAAQhkE,EAAEgkE,QACtCa,EAAMt4D,KAAKu6D,EACb,CAEA,OAAOjC,CACT,CApFmBkC,CAAqB/4D,EAAQs3D,EAAepjE,OAAQ69D,IAC7D6F,GAAc,GAIhB,IAEN,E,iOApCMG,GAsCAiB,GAAQlZ,EAAAA,EAAAA,UAAQ,IAAMlrD,EAAQyJ,MAAM,QAAQ,CAACzJ,IAEnD,OACE,kBAACrF,MAAAA,KACEypE,EAAM1kE,KAAI,CAAC2kE,EAAMz5C,IAChB,kBAACjD,OAAAA,CAAK/nB,IAAKgrB,GACRy5C,EACAz5C,IAAU83C,EAAepjE,QACxB,kBAACglE,EAAAA,UAASA,CACRC,OAAQpB,EACR16B,QACE,oCACGw5B,GAASA,EAAMr3C,GAAOtrB,OAAS,GAAK,kBAAC0iE,EAAsBA,CAACC,MAAOA,EAAMr3C,GAAQvhB,MAAM,KACvF44D,GAAiC,IAAxBA,EAAMr3C,GAAOtrB,QACrB,kBAAC3E,MAAAA,KAAI,gEAELsnE,GAASc,GAAc,kBAACpoE,MAAAA,KAAI,2CAC5BsnE,IAAUc,GACV,kBAACpoE,MAAAA,CAAI2mE,MAAO,CAAE1/D,QAAS,SACrB,kBAAC4iE,EAAAA,QAAOA,CAACvpE,KAAK,UAMtB,kBAAC0sB,OAAAA,CAAK/sB,UAAWJ,EAAOwF,SAAS,aAS/C,SAAStF,EAAUoB,GACjB,MAAO,CACLkE,SAASjE,EAAAA,EAAAA,KAAI,CACXqF,OAAQ,UACRI,gBAAiB1F,EAAMwC,OAAOmmE,UAAU3oE,EAAMwC,OAAOoG,WAAWgnB,QAAS,IACzE5uB,OAAQ,QAER,UAAW,CACT0E,gBAAiB1F,EAAMwC,OAAOmmE,UAAU3oE,EAAMwC,OAAOoG,WAAWgnB,QAAS,OAIjF,C,sIC7EO,MAAMg5C,UAAgC5lE,EAAAA,GAOnCmH,UAAAA,GACN,GAAIG,KAAK/G,MAAMkI,KACb,OAIF,MAAMo9D,GAAmBvkC,EAAAA,EAAAA,GAAewkC,EAAAA,IACxCx+D,KAAKy+D,uBAAuBF,GAG5B,MAAMG,GAAyBplC,EAAAA,EAAAA,IAAe,CAACilC,IAC/CG,EAAuBjgC,mBAAmB5tB,WAAW5N,IACnDjD,KAAK2+D,yBAAyB17D,EAAM,IAGtCjD,KAAKN,SAAS,CACZyB,KAAM,IAAI5B,EAAAA,GAAgB,CACxByT,UAAW,SACX1c,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,UAAMnL,EACNgJ,MAAO,OACP0V,OAAQ,IAEV,IAAI4I,EAAAA,GAAc,CAChB5I,OAAQ,IACR1V,MAAO,OACPmC,KAAMguB,EAAAA,GAAczH,OACjB4b,gBAAe,GACfsxB,UAAU,wBAAwB,GAClCA,UAAU,YAAY,GACtBjlC,QAAQ+uC,GACR9uC,cAKb,CAEQ6uC,sBAAAA,CAAuBF,GAC7B,MAAMK,EAAiC,CACrChlE,QAASoG,KAAK/G,MAAMW,QACpBmC,KAAM,WAEFse,GAAeC,EAAAA,EAAAA,GAAqB,CAACskD,IAC3CL,EAAiB/8D,KAAO+8D,EAAiB/8D,KAAKqB,QAAQg8D,EAAAA,GAAmBxkD,EAC3E,CA4BQykD,gCAAAA,GACN,MAAMC,EAAyBlmE,EAAAA,GAAWwE,YAAY2C,KAAMg/D,I,IACzBD,EAAnC,MAAME,EAAoF,QAAvDF,EAAAA,EAAuB9lE,MAAMgmE,kCAA7BF,IAAAA,EAAAA,EAA2D,GAExFv6C,EAAQy6C,EAA2Bp5B,WAAWjsC,GAAYA,IAAYoG,KAAK/G,MAAMW,WAExE,IAAX4qB,IACFy6C,EAA2B/yD,OAAOsY,EAAO,GAEzCu6C,EAAuBr/D,SAAS,CAC9Bu/D,2BAA4BA,IAGlC,CAgDQC,iBAAAA,CAAkBloC,GACxB,MAAMmoC,EAAiBn/D,KAAKo/D,oBACtBC,EAAcr/D,KAAKs/D,iBAWzB,OATIH,aAA0B7hD,EAAAA,IAC5B6hD,EAAez/D,SAAS,CACtBg/B,UAAU,EACVhqB,OAAQ,OACRvT,KAAM,IAAI41B,EAAAA,GAAiB,CACzBC,UAAWA,MAIVqoC,CACT,CAEQD,iBAAAA,GACN,MAAM9oE,EAAW0J,KAAKu/D,sBACtB,OAAOjpE,aAAAA,EAAAA,EAAW,EACpB,CACQgpE,cAAAA,GACN,MAAMhpE,EAAW0J,KAAKu/D,sBACtB,OAAOjpE,aAAAA,EAAAA,EAAW,EACpB,CAEQipE,mBAAAA,G,IACC,EAAP,OAAsB,QAAf,EAAAv/D,KAAK/G,MAAMkI,YAAX,eAAiBlI,MAAM3C,QAChC,CA2DQkpE,+BAAAA,GACN,MAAMT,EAAyBlmE,EAAAA,GAAWwE,YAAY2C,KAAMg/D,I,IAChBD,EAA5C,MAAMU,EAA6F,QAAvDV,EAAAA,EAAuB9lE,MAAMgmE,kCAA7BF,IAAAA,EAAAA,EAA2D,GAGvGA,EAAuBr/D,SAAS,CAC9Bu/D,2BAA4B,IAAIQ,EAAqCz/D,KAAK/G,MAAMW,UAEpF,CAEA,gBAAcF,EAAU,MAAEf,IACxB,MAAM,KAAEwI,GAASxI,EAAMI,WACvB,OAAIoI,EACK,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,IAEzB,IACT,CAnPAT,WAAAA,CAAYzH,GACV0H,MAAM1H,GAqDR,OAAQ84B,gBAAe,KACrB,MAAM2tC,GAAiB5pD,EAAAA,EAAAA,IAAkB9V,MACnCoc,GAAsBiH,EAAAA,EAAAA,IAAuBrjB,MAC7C0Y,GAAiBzC,EAAAA,EAAAA,IAAkBjW,MAOzC,GANA0/D,EAAehgE,SAAS,CACtBZ,QAAS,KAEX4Z,EAAehZ,SAAS,CACtBZ,QAAS,KAEPsd,EAAoBnjB,MAAM6F,QAAQ5F,OAAQ,CAC5CkjB,EAAoB1c,SAAS,CAC3BZ,QAAS,KAGX,MAAMqgE,EAAiBn/D,KAAKo/D,oBAG5BD,SAAAA,EAAgBz/D,SAAS,CACvBg/B,UAAU,IAGZ1+B,KAAK8+D,kCACP,KAsBF,OAAQa,gBAAgB18D,IACtB,GACE,EAAO6nB,KAAK7xB,QAAU29B,EAAAA,aAAaC,OACH,IAA7B5zB,EAAM6nB,KAAKY,OAAOxyB,QAAgB+J,EAAM6nB,KAAKY,OAAO2Z,OAAOla,GAA2B,IAAjBA,EAAMjyB,WAC9E+J,EAAM6nB,KAAK7xB,QAAU29B,EAAAA,aAAa30B,MAClC,CAEA,IAAI+8C,EACJ,IACEA,EAAa,CACXplD,QAASoG,KAAK/G,MAAMW,QACpBgmE,SAAU/7D,KAAKC,UAAUb,EAAM6nB,KAAK80C,UACpCC,QAASh8D,KAAKC,UAAUb,EAAM6nB,KAAK+0C,SACnC77D,IAAK,eAET,CAAE,MAAOC,GACP+6C,EAAa,CACXplD,QAASoG,KAAK/G,MAAMW,QACpBoK,IAAK,2BAET,CAGA3C,EAAAA,EAAOW,MAAM,IAAIC,MAAM,2CAA4C+8C,GAEnEh/C,KAAKk/D,kBACH,kBAACtoE,EAAAA,MAAKA,CAACE,SAAU,QAASzB,MAAO,IAAI,kCAKvC,MAAMyqE,EAAgB9/D,KAAKs/D,iBAGvBQ,aAAyBxiD,EAAAA,IAC3BwiD,EAAcpgE,SAAS,CACrBg/B,UAAU,GAGhB,KAsCF,OAAQigC,4BAA4B17D,IAClC,MAAM88D,GAAsB/lC,EAAAA,EAAAA,GAAegmC,EAAAA,IAC3ChgE,KAAKy+D,uBAAuBsB,GAE5B,MAAME,GAA4B3mC,EAAAA,EAAAA,IAAe,CAACymC,IAKlD,GAFAE,EAA0BxhC,mBAAmB5tB,UAAU7Q,KAAK2/D,cAG1D18D,EAAM6nB,KAAK7xB,QAAU29B,EAAAA,aAAaC,OACJ,IAA7B5zB,EAAM6nB,KAAKY,OAAOxyB,QAAgB+J,EAAM6nB,KAAKY,OAAO2Z,OAAOla,GAA2B,IAAjBA,EAAMjyB,UAC5E,CACA,MAAMimE,EAAiBn/D,KAAKo/D,oBACtBU,EAAgB9/D,KAAKs/D,iBAqB3B,GAlBIH,aAA0B7hD,EAAAA,IAC5B6hD,EAAez/D,SAAS,CACtBg/B,UAAU,EACVhqB,OAAQ,OACRvT,KAAM,IAAI41B,EAAAA,GAAiB,CACzBC,UACE,kBAACpgC,EAAAA,MAAKA,CAACE,SAAU,UAAWzB,MAAO,IAAI,4EAErC,kBAACX,EAAAA,OAAMA,CAACF,UAAW8iC,EAAAA,GAAiBhT,OAAQtvB,QAAS,IAAMgL,KAAK+xB,gBAAgB,sBAUtF+tC,aAAyBxiD,EAAAA,GAAe,CAC1C,MAAMkO,EAAQs0C,EAAc7mE,MAAMkI,KAC9BqqB,aAAiBja,EAAAA,KACnBia,SAAAA,EAAO9rB,SAAS,CACduvB,MAAOgxC,IAGb,CACAjgE,KAAKw/D,iCACP,CAEIv8D,EAAM6nB,KAAK7xB,QAAU29B,EAAAA,aAAa30B,OACpCjC,KAAK2/D,aAAa18D,EACpB,IA7NAjD,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EC/BK,SAASkgE,GAAyB,SAAEC,EAAQ,IAAEtd,IACnD,MAAM,aAAEud,GAAiBD,EAASpnE,WAE5BsnE,EAAWD,aAAAA,EAAAA,EAAch8C,MAAM3T,GAAUA,EAAMxX,MAAMO,MAAQqpD,EAAIjpD,UASvE,OAPAo5C,EAAAA,EAAAA,YAAU,KACR,IAAKqtB,EAAU,CACb,MAAMC,GAQmB1mE,EARiBipD,EAAIjpD,QAS3C,IAAI0kE,EAAwB,CACjC1kE,QAASA,EACTJ,IAAKI,K,IAVoCumE,EAAvCA,EAASzgE,SAAS,CAAE0gE,aAAc,IAAgC,QAA3BD,EAAAA,EAASlnE,MAAMmnE,oBAAfD,IAAAA,EAAAA,EAA+B,GAAKG,IAC7E,CAMJ,IAA+B1mE,CAN3B,GACC,CAACipD,EAAKsd,EAAUE,IAEZA,EAAW,kBAACA,EAAS3mE,UAAS,CAACf,MAAO0nE,IAAe,IAC9D,CCOA,MAAME,EAAe,CAAC,GAAI,KAAM,OAAQ,OAAQ,OAAQ,SAAU,SAAU,QAAS,SAoB9E,MAAMvB,WAA+BtmE,EAAAA,GAM1CmH,UAAAA,G,IAEmBzC,EADjB,MACM25D,EAA8B,QAAnB35D,EADEvE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,GACpBrE,MAAM0lB,UAAjBvhB,IAAAA,OAAAA,EAAAA,EAAqB25D,SACtC/2D,KAAKN,SAAS,CAAEq3D,YAClB,CAYA,aACE9H,EACAuR,EACA9qE,EACAqhE,EACAkI,GAEA,MAAM7qE,EAASqsE,GAAgB/qE,GACzB0J,EAAYvG,EAAAA,GAAWqZ,aAAalS,MAAM/G,MAAMgK,MA2GtD,MA1GsD,CACpD,CACE4oB,GAAI,iBACJpH,OAAQ,GACRi8C,KAAO/sE,IACL,MAAMgtE,EAAuB,CAC3BvhE,UAAWA,EACXssB,OAAQ,CAAC/3B,EAAM+sE,KAAK7d,IAAI+d,SAASlgC,WACjCznC,MAAO29B,EAAAA,aAAaC,MAEhBgqC,EAAW,IAAIC,EAAAA,GAAc,CACjCh2C,KAAM61C,IAGFI,EAAa5xC,EAAAA,GAAcC,aAC9BO,QAAQkxC,GACRv9B,gBAAe,GACfsxB,UAAU,UAAW,CACpBt1B,KAAM0hC,EAAAA,mBAAmBC,OAE1B5hC,qBAAqB,WAAY,CAChCjsB,QAAQ,EACRyO,SAAS,IAEVwd,qBAAqB,gBAAiB6hC,EAAAA,cAAcC,QACpDC,eAAe,eACfxxC,QAEH,OACE,kBAACr7B,MAAAA,CAAIC,UAAWJ,EAAOitE,qBACrB,kBAAC9sE,MAAAA,CAAIC,UAAWJ,EAAOktE,iBACrB,kBAACP,EAAWrnE,UAAS,CAACf,MAAOooE,K,GAMvC,CACEl1C,GAAI,QACJpH,OAAQ,QACR88C,SAAU,SACVb,KAAO/sE,IACL,MAAMsP,GAAQu+D,EAAAA,EAAAA,aAAY,IAAMjB,EAAlBiB,CAAgC7tE,EAAM+sE,KAAK7d,IAAI+d,SAASpxB,K,IAI/DvsC,EAEAA,EALP,OACE,kBAAC1O,MAAAA,CAAIC,UAAWJ,EAAOqtE,eACrB,kBAACltE,MAAAA,KACc,QAAZ0O,EAAAA,EAAMod,cAANpd,IAAAA,EAAAA,EAAgB,GAChBA,EAAM9K,KACM,QAAZ8K,EAAAA,EAAMmkC,cAANnkC,IAAAA,EAAAA,EAAgB,OAM3B,CACE4oB,GAAI,UACJpH,OAAQ,IACR88C,SAAU,SACVb,KAAO/sE,GACL,kBAACY,MAAAA,CAAIC,UAAWJ,EAAOqtE,eACrB,kBAACltE,MAAAA,MAAM,IAAOZ,EAAM+sE,KAAK7d,IAAI+d,SAASpxB,IAAOyf,GAAOyS,QAAQ,GAAG,OAIrE,CACE71C,GAAI,UACJpH,OAAQ,UACRi8C,KAAO/sE,GAEH,kBAACY,MAAAA,CAAIC,WAAW6K,EAAAA,EAAAA,IAAGsiE,KAA6BvtE,EAAOwtE,0BACrD,kBAACxF,EAAgBA,CACfC,aAAawF,EAAAA,EAAAA,IAAkB7hE,MAC/BpG,QAASjG,EAAM+sE,KAAK7d,IAAI+d,SAAShnE,QACjCm9D,SAAUA,MAMpB,CACElrC,GAAI,UACJpH,YAAQzuB,EACR8rE,aAAa,EACbpB,KAAO/sE,IACL,GAAIsrE,aAAAA,EAAAA,EAA4B5lE,SAAS1F,EAAM+sE,KAAK7d,IAAI+d,SAAShnE,SAC/D,OAGF,MAAMmoE,EAAkBvB,aAAAA,EAAAA,EAAiBp8C,MACtC49C,GAAmBA,EAAepoE,UAAYjG,EAAM+sE,KAAK7d,IAAI+d,SAAShnE,UAEnE/F,EAAuC,aAA1BkuE,aAAAA,EAAAA,EAAiBhmE,MAC9BnI,EAAuC,aAA1BmuE,aAAAA,EAAAA,EAAiBhmE,MACpC,OACE,kBAACrI,EAAAA,EAAYA,CACXE,WAAYA,EACZC,WAAYA,EACZC,UAAW,IAAMH,EAAM+sE,KAAK7d,IAAI+d,SAASqB,cACzCluE,UAAW,IAAMJ,EAAM+sE,KAAK7d,IAAI+d,SAASsB,cACzCluE,QAAS,IAAML,EAAM+sE,KAAK7d,IAAI+d,SAASuB,WACvCjuE,WAAY,W,GAOxB,CAQA,eAAsBkuE,EAA+BC,GACnD,MAAMC,EAAiBzpE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,GACpD,OAAO8kE,EACJjpE,QAAQopE,IACAF,EAAmBxtE,MAAOwtE,EAAmB18D,IAAI48D,EAAa3oE,WAEtEN,KAAKM,IACG,CACL8mC,UAAW9mC,EAAQ8mC,UACnB9mC,QAASA,EAAQA,QACjB41C,IAAK51C,EAAQ41C,IACbyyB,YAAa,IACX9H,EAAe,CACbvgE,QAASA,EAAQA,QACjBmC,KAAM,UACNqB,WAAYklE,IAEhBJ,YAAa,IACX/H,EAAe,CACbvgE,QAASA,EAAQA,QACjBmC,KAAM,UACNqB,WAAYklE,IAEhBH,SAAU,IACRhI,EAAe,CACbvgE,QAASA,EAAQA,QACjBmC,KAAM,OACNqB,WAAYklE,OAIxB,CAhLA5hE,WAAAA,CAAYzH,GACV0H,MAAM1H,GAEN+G,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,E,gBA0OK,UAAwC,MAAErH,IAC/C,MAAMyE,EAAavE,EAAAA,GAAWwE,YAAY1E,EAAO2E,EAAAA,IACzCzB,SAAU2kE,GAAoBpjE,EAAWrE,WAC3CrD,GAAQwe,EAAAA,EAAAA,aACR9f,EAASouE,GAAe9sE,GAGxB+sE,EAAqB5pE,EAAAA,GAAWwE,YAAY1E,EAAO+pE,KACnD,mBAAEL,GAAuBI,EAAmB1pE,YAG1CqpE,cAAeO,EAAgB,2BAAE1D,GAA+BtmE,EAAMI,WACxEqpE,EAAgBO,QAAAA,EAAoB,GAGpCC,EAAyB/pE,EAAAA,GAAWwE,YAAY1E,EAAOkqE,I,IAClCD,EAA3B,MAGM3T,GAH+D,QAA1C2T,EAAAA,EAAuB3pE,MAAMmpE,qBAA7BQ,IAAAA,EAAAA,EAA8C,IAGxCp2B,QAAO,CAACs2B,EAAe33C,IAC/C23C,EAAgB33C,EAAMqkB,KAC5B,GAEGuzB,EAAYpqE,EAAMqqE,eAAeZ,EAAeC,G,IAKpD1pE,EAJF,MAAM+wB,EAAU/wB,EAAMsqE,aACpBhU,EACAuR,EACA9qE,EACoB,QAApBiD,EAAAA,EAAMM,MAAM89D,gBAAZp+D,IAAAA,EAAAA,EAAwBq+D,EAAAA,GACxBiI,GAGF,OACE,kBAAC1qE,MAAAA,CAAIU,cAAaC,EAAAA,EAAQ2G,SAASqnE,aAAc1uE,UAAWJ,EAAOq1D,WACjE,kBAAC0Z,EAAAA,iBAAgBA,CACfz5C,QAASA,EACToB,KAAMi4C,EACNK,SAAWr/D,GAA6BA,EAAEnK,QAC1CypE,kBAAoBxgB,GAAQ,kBAACqd,EAAwBA,CAACC,SAAUxnE,EAAOkqD,IAAKA,MAIpF,G,GA7QgBnpD,e,GAZHslE,I,4FAoLb,MAAMtpE,GAAQgoB,EAAAA,OAAO4lD,OAEf3B,GAA4B,KACzBhsE,EAAAA,EAAAA,KAAI,CACTyhC,SAAU,QACVr8B,WAAYrF,GAAM4C,WAAW6tD,oBAC7BlrD,SAAU,SACVsoE,aAAc,eAIZf,GAAkB9sE,IACf,CACL8C,MAAM7C,EAAAA,EAAAA,KAAI,CACR2sC,eAAgB,cAElBmnB,WAAW9zD,EAAAA,EAAAA,KAAI,CAEb,QAAS,CAEP+e,OAAQ,sBACRzT,UAAW,SAGbuiE,GAAI,CACFzrE,IAAK,EACLD,SAAU,SACVsD,gBAAiB1F,EAAMwC,OAAOoG,WAAWC,OACzCC,OAAQ9I,EAAM8I,OAAOC,iBAKvBgiE,GAAmB/qE,IAChB,CACLksE,yBAAyBjsE,EAAAA,EAAAA,KAAI,CAC3BoF,WAAYrF,EAAM4C,WAAW6tD,oBAC7B/uB,SAAU,QACVl2B,SAAU,OACVjG,SAAU,SACVsoE,aAAc,aACdlrE,SAAU3C,EAAM4C,WAAWC,UAAUF,SACrCijE,UAAW,eAEbmG,eAAe9rE,EAAAA,EAAAA,KAAI,CACjBkf,UAAW,QACXxc,SAAU3C,EAAM4C,WAAWC,UAAUF,WAEvCgpE,qBAAqB1rE,EAAAA,EAAAA,KAAI,CACvBqJ,MAAO,QACPykE,cAAe,SAEjBnC,iBAAiB3rE,EAAAA,EAAAA,KAAI,CACnB+e,OAAQ,OACRzZ,SAAU,a,k4BCnQhB,MAAMyoE,GAAUhmD,EAAAA,OAAO4lD,OAAOK,cAAcD,QAQrC,MAAMhB,WAA2BhqE,EAAAA,GAyB9BmH,UAAAA,GACNG,KAAKghC,aAGLhhC,KAAKkW,MAAMC,IACTtd,EAAAA,GAAWwE,YAAY2C,KAAMsV,IAAcc,kBAAiB,CAACC,EAAUmB,K,IACpDnB,EAAAA,EAAAA,EACCmB,EAAAA,EAAAA,EADlB,MAAMosD,EAAWvtD,SAAuB,QAAvBA,EAAAA,EAAUwtD,qBAAVxtD,IAAAA,GAA8B,QAA9BA,EAAAA,EAAyBpd,aAAzBod,IAAAA,GAAoC,QAApCA,EAAAA,EAAgCyU,YAAhCzU,IAAAA,OAAAA,EAAAA,EAAsCqV,OACjDo4C,EAAYtsD,SAAwB,QAAxBA,EAAAA,EAAWqsD,qBAAXrsD,IAAAA,GAA+B,QAA/BA,EAAAA,EAA0Bve,aAA1Bue,IAAAA,GAAqC,QAArCA,EAAAA,EAAiCsT,YAAjCtT,IAAAA,OAAAA,EAAAA,EAAuCkU,OAEzD,KAAKvN,EAAAA,EAAAA,GAAeylD,EAAUE,GAAY,CACxC,MAAMlB,EAAyB/pE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IAC5D7iE,KAAK2V,eAAeitD,EAAuB3pE,MAAMmpE,eAGjDQ,EAAuBljE,SAAS,CAC9B06D,sBAAkBpkE,GAEtB,MAKJgK,KAAKkW,MAAMC,IACTtd,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IAAwBzsD,kBAAiB,CAACC,EAAUmB,KAC/E,MAAMorD,EAAyB/pE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IACxDxsD,EAAS+jD,oBAAqBj8C,EAAAA,EAAAA,GAAe9H,EAAS+jD,iBAAkB5iD,EAAU4iD,kBACpFp6D,KAAK2V,eAAeitD,EAAuB3pE,MAAMmhE,kBAG5CwI,EAAuB3pE,MAAM8qE,eAChC/jE,KAAK2V,eAAeitD,EAAuB3pE,MAAMmpE,cAErD,IAGN,CAEczsD,cAAAA,CAAeysD,EAAgC,I,kBAA7D,gB,IAEE,EAAe,QAAf,IAAKnpE,MAAMkI,YAAX,SAAiB6iE,cAAcxvC,IACzBA,aAAiBjjB,EAAAA,IACnBijB,EAAM90B,SAAS,CACbuvB,MAAO,EAAKg1C,sBAAsB7B,KAGlC5tC,aAAiBwqC,IACnBxqC,EAAM90B,SAAS,CACb0iE,iBAEJ,GAEJ,GAdA,E,CAgBcphC,UAAAA,G,kBAAd,gB,IAMuBlD,EAAAA,EALrB,MACMskC,EADyBvpE,EAAAA,GAAWwE,YAAY,EAAMwlE,IACf5pE,MAAMmpE,eAIE,QAAhCtkC,EAFAjlC,EAAAA,GAAWwE,YAAY,EAAMiY,IAEhBrc,MAAM4qE,qBAAnB/lC,IAAAA,GAA4C,QAA5CA,EAAAA,EAAkC7kC,MAAM6xB,YAAxCgT,IAAAA,OAAAA,EAAAA,EAA8CpS,SAC7C02C,EAKtB,EAAK1iE,SAAS,CACZyB,KAAM,EAAK+iE,sBACX7B,mBAAoB,IAAI78D,IACxBu6B,SAAS,IAPT1+B,EAAAA,EAAOC,KAAK,2CAShB,GAjBA,E,CAmBQ6kC,yBAAAA,CAA0Bh1B,EAAoByZ,GACpD,MAAMu5C,EAAmCv5C,EAAQkc,yBAEjDlc,EAAQkc,yBAA2B,CAACjpC,EAAeyhC,K,IAGAnuB,EAFjDgzD,SAAAA,EAAmCtmE,EAAOyhC,GAE1C,MAAM8kC,EAA+E,QAApCjzD,EAAAA,EAASlY,MAAM0yB,YAAYI,iBAA3B5a,IAAAA,OAAAA,EAAAA,EAAuC,GAClFkzD,EAA2BD,aAAAA,EAAAA,EAAUp4C,QAAQ3pB,QAAQiiE,MACrDjC,EAAqB,IAAI78D,IAE3B6+D,GACFA,EAAerhE,QAAQq/D,EAAmBlsD,IAAKksD,GAGjDriE,KAAKN,SAAS,CACZ2iE,sBACA,CAEN,CAEQ6B,mBAAAA,GACN,MACM9B,EADyBvpE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IACf5pE,MAAMmpE,cAEnD,IAAKA,EAEH,YADA/gE,EAAAA,EAAOC,KAAK,qCAId,MAAMy/D,EAAa/gE,KAAKukE,cAAcnC,GAEtC,OAAO,IAAI3mC,EAAAA,GAAmB,CAC5BC,gBAAiB,OACjBE,SAAU,QACVC,QAAQ,EAERvlC,SAAU,CACRyqE,EACA,IAAI/B,GAAuB,CACzBoD,oBAIR,CAEQmC,aAAAA,CAAcnC,GACpB,MAAME,EAAiBzpE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,GAE9CyjE,EAAa5xC,EAAAA,GAAcC,aAC9BO,QAAQ3vB,KAAKikE,sBAAsB7B,IACnCxN,UAAU,SAAU,CACnB4P,SAAS,EACTnxD,YAAY,EACZ6jD,YAAaC,EAAAA,kBAAkB7N,MAC/B9iC,UAAW,QACXxnB,MAAO,MAERskC,gBAAe,GACf+zB,QAAQ,SACRoN,SAAS,CACR,CACE9yD,IAAK,IACL+yD,aAAa,EACb1vE,QAAU+T,IACRoxD,EAAe,CACbvgE,QAASmP,EAAMwjB,OAAOxE,OAAOrwB,KAC7BqE,KAAM,UACNqB,WAAYklE,GACZ,EAEJjtE,MAAO,WAET,CACEsc,IAAK,IACL+yD,aAAa,EACb1vE,QAAU+T,IACRoxD,EAAe,CACbvgE,QAASmP,EAAMwjB,OAAOxE,OAAOrwB,KAC7BqE,KAAM,UACNqB,WAAYklE,GACZ,EAEJjtE,MAAO,aAGVu6B,QAMH,OAJAmxC,EAAWrhE,SAAS,CAClBwmC,mBAAoB,CAAC/0B,EAAUyZ,IAAY5qB,KAAKmmC,0BAA0Bh1B,EAAUyZ,KAG/Em2C,CACT,CAEQkD,qBAAAA,CAAsB7B,GAC5B,MAAMhjE,EAAYvG,EAAAA,GAAWqZ,aAAalS,MAAM/G,MAAMgK,MAEtD,OAAO,IAAI69D,EAAAA,GAAc,CACvBh2C,KAAM,CACJY,OAAQ02C,EAAc9oE,KAAI,CAACipE,EAAcptC,KAEvC,MAAMuL,EAAY6hC,EAAa7hC,UAG/B,OAFAA,EAAU/4B,OAAO,GAAG+V,OAAOzlB,MAW9B,SAA8BuB,GACnC,MAAO,CACL8lC,KAAM,QACNqlC,WAAYjB,GAAQlqE,GAExB,CAhB6CorE,CAAqBzvC,GACxDuL,EAAU/4B,OAAO,GAAGjQ,KAAO,GACpBgpC,CAAS,IAElBznC,MAAO29B,EAAAA,aAAaC,KACpBz3B,UAAWA,IAGjB,CA9MAsB,WAAAA,CAAYzH,GACV0H,MAAM,G,uUAAA,EACJo/B,SAAS,GACN9mC,GAAAA,CACHopE,mBAAoB,IAAI78D,OAG1BxF,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAGA,GAZW0iE,GAYGhpE,aAAY,EAAGf,Y,IAIVkrE,EAHjB,MAAM,KAAE1iE,EAAI,QAAE4+B,GAAYpnC,EAAMI,WAC1B8rE,EAAqBhsE,EAAAA,GAAWwE,YAAY1E,EAAO2c,KACnD,cAAEuuD,GAAkBgB,EAAmB9rE,WACvC8C,EAAWgoE,SAAyB,QAAzBA,EAAAA,EAAe5qE,MAAM6xB,YAArB+4C,IAAAA,OAAAA,EAAAA,EAA2Bn4C,OAE5C,OACE,kBAACn3B,MAAAA,CAAIC,UAAWJ,GAAOK,YACnBsrC,GAAWlkC,GAAYA,EAAS3C,OAAS,GAAK,oCAAGiI,GAAQ,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,K,IAqM1F,MAAM/M,GAAS,CACbK,WAAWkB,EAAAA,EAAAA,KAAI,CACbqJ,MAAO,OAEP,iBAAkB,CAChBpJ,QAAS,W,mJCnPR,MAAMkvE,WAA+BpsE,EAAAA,GAoC1C,aACE,MAAMkqE,EAAyB/pE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IAC5D7iE,KAAKkW,MAAMC,IACTysD,EAAuBxsD,kBAAiB,CAACC,EAAUmB,KACjD,GAAInB,EAAS0tD,gBAAkBvsD,EAAUusD,cAAe,CACtD,MAAMnB,EAAyB/pE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IACxDD,EAAuB3pE,MAAMmpE,gBAC/BnnB,EAAAA,GAAAA,GACE2nB,EAAuB3pE,MAAMmpE,cAAc9oE,KAAK6xB,GAAUA,EAAMvxB,UAChEgpE,EAAuB3pE,MAAM8qE,cAC7B/jE,KAAK+kE,eAGX,MAIJ/kE,KAAKkW,MAAMC,IACTysD,EAAuBxsD,kBAAiB,CAACC,EAAUmB,KAG/CnB,EAAS0tD,gBACR1tD,EAAS+jD,kBACV/jD,EAAS+rD,iBACRjkD,EAAAA,EAAAA,GAAe9H,EAAS+jD,iBAAkB5iD,EAAU4iD,oBAErD/jC,EAAAA,GAAAA,GACEhgB,EAAS+rD,cAAc9oE,KAAK6xB,GAAUA,EAAMvxB,UAC5Cyc,EAAS0tD,cACT/jE,KAAK+kE,eAET,IAGN,CAOAC,mBAAAA,CAAoBnpE,EAAoBopE,GACtC,MAAMrC,EAAyB/pE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IACtDT,EAAgB6C,QAAAA,EAAyBrC,EAAuB3pE,MAAMmpE,cAE5E,GAAIA,EAAe,CACjB,MAAM8C,EAAwB9C,EAAcjpE,QAAQopE,MAC9CK,EAAuB3pE,MAAM8qE,iBAAiB3B,aAAAA,EAAAA,EAAelpE,UACxD2C,EAASuoB,MAAMxqB,GAAYA,IAAY2oE,EAAa3oE,YAK/DgpE,EAAuBljE,SAAS,CAC9B06D,iBAAkB8K,GAEtB,CACF,CAoBA,iBACiCrsE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IACrCnjE,SAAS,CAC9B06D,sBAAkBpkE,GAEtB,CAnHA0K,WAAAA,CAAYzH,GACV0H,M,uUAAM,IACD1H,IASP,QAAOksE,eAAc,KACYtsE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IACrCnjE,SAAS,CAC9BqkE,cAAe,IACf,IAOJ,QAAOqB,sBAAsBnhE,IACIpL,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IACrCnjE,SAAS,CAC9BqkE,cAAe9/D,EAAEhN,OAAOgM,OACxB,IAsEJ8hE,GAAAA,KAAAA,kBAAkBj6C,IAChB,MAAM83C,EAAyB/pE,EAAAA,GAAWwE,YAAY2C,KAAM6iE,IAExDD,EAAuB3pE,MAAM8qE,cAC/B/jE,KAAKglE,oBAAoBl6C,EAAK,IACrB83C,EAAuB3pE,MAAMmhE,mBAAqBwI,EAAuB3pE,MAAM8qE,eAExF/jE,KAAKqlE,gBACP,IAnGArlE,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EARA,GADW8kE,GACGprE,aAkIT,UAAoC,MAAEf,IAC3C,MAAMiqE,EAAyB/pE,EAAAA,GAAWwE,YAAY1E,EAAOkqE,KACvD,cAAEkB,GAAkBnB,EAAuB7pE,WACjD,OACE,kBAAC4sC,EAAAA,MAAKA,CAACnxC,UAAWJ,GAAOoS,OACvB,kBAACquB,GAAAA,EAAWA,CACVtU,SAAU5nB,EAAMysE,mBAChBpxE,QAAS2E,EAAMwsE,YACfliE,MAAO8gE,EACPzjD,YAAY,oBAIpB,IAvBA,MAAMlsB,GAAS,CACboS,OAAO7Q,EAAAA,EAAAA,KAAI,CACTkI,MAAO,QACP+W,aAAc,IAEhB+R,MAAMhxB,EAAAA,EAAAA,KAAI,CACRqF,OAAQ,a,eCrIL,SAASsqE,KACd,OACE,kBAACjvE,GAAAA,EAASA,KACR,kBAAC9B,MAAAA,KACC,kBAACwI,IAAAA,KACC,kBAAC+9B,SAAAA,KAAO,6CAEV,kBAAC/9B,IAAAA,KAAE,mDACgD,IACjD,kBAACwoE,EAAAA,SAAQA,CAACruE,KAAK,6BAA6BsuE,UAAAA,GAAS,yCAIvD,kBAACzoE,IAAAA,KAAE,sFAIX,CAEO,SAAS0oE,KACd,OACE,kBAACpvE,GAAAA,EAASA,KACR,kBAAC9B,MAAAA,KACC,kBAACwI,IAAAA,KACC,kBAAC+9B,SAAAA,KAAO,mDAAiD4qC,GAAuB,oBAElF,kBAAC3oE,IAAAA,KAAE,UACO,IACR,kBAACwoE,EAAAA,SAAQA,CACPruE,KAAK,wFACLsuE,UAAAA,GACD,iBAEW,IAAI,mBAM1B,C,yHCEO,MAAME,GAAyB,EAE/B,MAAM7C,WAA+BnqE,EAAAA,GAkDlCmH,UAAAA,G,IAKFi+B,EAKWA,EATf,MAAMA,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,I,IAK9BwoB,GAJpB99B,KAAK2lE,UAG+B,QAAhC7nC,EAAAA,EAAa7kC,MAAM4qE,qBAAnB/lC,IAAAA,OAAAA,EAAAA,EAAkC7kC,QACpC+G,KAAK4lE,aAA6C,QAAhC9nC,EAAAA,EAAa7kC,MAAM4qE,qBAAnB/lC,IAAAA,OAAAA,EAAAA,EAAkC7kC,OAItD+G,KAAKkW,MAAMC,IAAoC,QAAhC2nB,EAAAA,EAAa7kC,MAAM4qE,qBAAnB/lC,IAAAA,OAAAA,EAAAA,EAAkC1nB,iBAAiBpW,KAAK4lE,cACzE,CA4BQD,OAAAA,GACN3lE,KAAKN,SAAS,CACZyB,KAAM,IAAI5B,EAAAA,GAAgB,CACxByT,UAAW,SACX1c,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBuoD,QAAS,UACT1kE,KAAM,IAAI2jE,KAEZ,IAAIxnD,EAAAA,GAAc,CAChBnc,KAAM,IAAIuhE,SAKpB,CAEQoD,mBAAAA,CAAoBC,GAC1B,IAAKA,EACH,OAGF,MAAM3D,EAAgBpiE,KAAKgmE,wBAAwBD,GAEnD/lE,KAAKN,SAAS,CACZ0iE,iBAEJ,CAEQ4D,uBAAAA,CAAwBtlC,GAC9B,MAAM5C,EAAejlC,EAAAA,GAAWwE,YAAY2C,KAAMsV,IAC5CkrD,EAAkB3nE,EAAAA,GAAWwE,YAAYygC,EAAcxgC,EAAAA,GAAYrE,MAAM4C,SAE/E,OAAO6kC,EAAUpnC,KAAKonC,I,IAGAA,EAAAA,EAFpB,MAAMqhC,EAAkBvB,aAAAA,EAAAA,EAAiBp8C,MAAM49C,GAAmBA,EAAepoE,UAAY8mC,EAAUhpC,OAEjG83C,EAA4B,QAAd9O,EAAAA,EAAUj9B,YAAVi9B,IAAAA,GAAsB,QAAtBA,EAAAA,EAAgBwpB,cAAhBxpB,IAAAA,OAAAA,EAAAA,EAAwB8O,I,IAGjC9O,EAKX,MAPmC,CACjCA,YACA9mC,QAAuB,QAAd8mC,EAAAA,EAAUhpC,YAAVgpC,IAAAA,EAAAA,EAAkB,GAC3B8O,MACA3U,OAAQknC,aAAAA,EAAAA,EAAiBhmE,KAGR,GAEvB,CAtIA2E,WAAAA,CAAYzH,G,IAGNA,EAFJ0H,M,uUAAM,EACJqd,WACkB,QAAhB/kB,EAAAA,EAAM+kB,kBAAN/kB,IAAAA,EAAAA,EACA,IAAI6jB,EAAAA,GAAiB,CACnB9jB,UAAW,CAAC,IAAI+jB,EAAAA,GAAe,CAAErlB,KAAMssC,EAAAA,GAAoB9C,cAAc,EAAMC,YAAY,OAE/FpB,SAAS,EACTgkC,cAAe,IACZ9qE,IAqDP,QAAQ2sE,gBAAe,CAACvvD,EAA0BmB,K,IAC9BnB,EACCmB,EAEfnB,EASOA,EAKAA,EAjBX,MAAM0f,EAAyB,QAAb1f,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAeqV,OAC3Bu6C,EAAazuD,SAAe,QAAfA,EAAAA,EAAWsT,YAAXtT,IAAAA,OAAAA,EAAAA,EAAiBkU,QAEnB,QAAbrV,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,MACxC72B,KAAKN,SAAS,CACZqgC,SAAS,EACT/9B,OAAO,KAGJmc,EAAAA,EAAAA,GAAe4X,EAAWkwC,IAC7BjmE,KAAK8lE,oBAAoB/vC,KAEL,QAAb1f,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAasvC,QAC/ClmE,KAAKN,SAAS,CACZqgC,SAAS,EACT/9B,OAAO,KAEa,QAAbqU,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAa30B,OAC/CjC,KAAKN,SAAS,CACZqgC,SAAS,EACT/9B,OAAO,GAEX,IAzEAhC,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA4HF,SAAS1L,GAAUoB,GACjB,MAAO,CACLjB,WAAWkB,EAAAA,EAAAA,KAAI,CACbqL,SAAU,EACVpL,QAAS,OACTqL,UAAW,OACXjD,cAAe,WAEjBqkC,SAAS1sC,EAAAA,EAAAA,KAAI,CACXqL,SAAU,EACVpL,QAAS,OACT2sC,WAAY7sC,EAAMmC,QAAQ,KAE5B0F,UAAU5H,EAAAA,EAAAA,KAAI,CACZqL,SAAU,EACVpL,QAAS,OACTqH,WAAY,MACZrF,IAAKlC,EAAMmC,QAAQ,KAErBsuE,eAAexwE,EAAAA,EAAAA,KAAI,CACjBqL,SAAU,EACVpL,QAAS,OACTC,eAAgB,aAElBuwE,cAAczwE,EAAAA,EAAAA,KAAI,CAChBC,QAAS,OACTC,eAAgB,YAChBwwE,aAAc,OACdrnE,MAAO,OACPhB,cAAe,WAEjBsoE,oBAAoB3wE,EAAAA,EAAAA,KAAI,CACtB6F,QAAS9F,EAAMmC,QAAQ,KAG7B,CA5JE,GAjBWgrE,GAiBGnpE,aAAY,EAAGf,YAC3B,MAAM,KAAEwI,EAAI,QAAE4+B,EAAO,gBAAEoC,EAAe,cAAEigC,EAAa,MAAEpgE,GAAUrJ,EAAMI,YAC/DkK,MAAO7D,GAAcvG,EAAAA,GAAWqZ,aAAavZ,GAAOI,WACtD3E,GAASC,EAAAA,EAAAA,YAAWC,IACpBiyE,GAAkBC,EAAAA,EAAAA,YAAWvuD,KAAK7Y,EAAU4Y,GAAI,UAAY0tD,GAElE,OACE,kBAACnxE,MAAAA,CAAIC,UAAWJ,EAAOK,WACrB,kBAAC2tC,EAAAA,EAAkB,CAAEljB,UAAW6gB,EAASoC,oBACrCpC,GAAW/9B,GACX,kBAACzN,MAAAA,CAAIC,UAAWJ,EAAOkyE,oBACrB,kBAAC1pE,EAAAA,KAAIA,CAAC6pE,cAAc,SAASxuE,MAAM,WACjC,kBAAC8E,IAAAA,KAAE,iCACH,kBAACA,IAAAA,KAAE,6CACH,kBAACA,IAAAA,KAAE,uFACH,kBAACA,IAAAA,KAAE,uEACH,kBAACA,IAAAA,KACC,kBAAC2pE,OAAAA,KAAK,uCAMZ1kE,IAAU+9B,GAAqC,KAA1BqiC,aAAAA,EAAAA,EAAelpE,SAAgBqtE,GAAmB,kBAACd,GAAcA,OACtFzjE,IAAU+9B,GAAqC,KAA1BqiC,aAAAA,EAAAA,EAAelpE,UAAiBqtE,GAAmB,kBAACjB,GAAmBA,OAC5FtjE,IAAU+9B,GAAWqiC,GAAiBA,EAAclpE,OAAS,GAC7D,kBAAC3E,MAAAA,CAAIC,UAAWJ,EAAOiuC,SAAUlhC,GAAQ,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,M,4BC1ErE,YAAKwlE,G,+EAAAA,C,CAAL,C,IAaA,MAAMC,GAAuD,CAClE,CACE16C,YAAa,OACbjpB,MAAO7C,EAAAA,GAAUsnB,KACjBH,SAAU,IAiFL,IAAIhoB,EAAAA,GAAgB,CACzByT,UAAW,SACX1c,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAIozD,GAAAA,EAAgB,CAAC,KAE7B,IAAIj3C,EAAAA,GAAc,CAChBrc,UAAW,QACXyT,OAAQ,sBACRvT,KAAM,IAAIuzC,EAAAA,EAAc,CAAC,QAzF7BmyB,OAAQ3xE,EAAAA,EAAQC,sBAAsB2xE,SAExC,CACE56C,YAAa,SACbjpB,MAAO7C,EAAAA,GAAU2nB,OACjBR,SAAU,IA2FL,IAAIhoB,EAAAA,GAAgB,CACzBipB,WAAY,CAAC,IAAIu+C,EAAAA,GAAAA,GAAqB,CAAEvtE,IAAK,OAAQwtE,KAAMC,GAAAA,GAAoBC,aAC/E5wE,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI+yB,EAAAA,EAAoB,CAAC,QA9FnC2yC,OAAQ3xE,EAAAA,EAAQC,sBAAsBgyE,WAExC,CACEj7C,YAAa,SACbjpB,MAAO7C,EAAAA,GAAUuH,OACjB4f,SAAW9iB,IAAM2iE,OAmCoBC,EAnCY5iE,EAoC5C,IAAIlF,EAAAA,GAAgB,CACzBipB,WAAY,CAAC,IAAIu+C,EAAAA,GAAAA,GAAqB,CAAEvtE,IAAK,OAAQwtE,KAAMC,GAAAA,GAAoBC,aAC/E5wE,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAIgzB,EAAAA,GAAqB,CAAE2L,iBAAkBunC,SAL3D,IAAyCA,CAnCc,EACnDR,OAAQ3xE,EAAAA,EAAQC,sBAAsBmyE,WAExC,CACEp7C,YAAa,WACbjpB,MAAO7C,EAAAA,GAAUvE,SACjB0rB,SAAU,IAoBL,IAAIhoB,EAAAA,GAAgB,CACzBjJ,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI0hE,GAAuB,CAAC,QAtBtCgE,OAAQ3xE,EAAAA,EAAQC,sBAAsBoyE,cAG7BC,GAAsD,CACjE,CACEt7C,YAAa,QACbjpB,MAAOilB,EAAAA,GAAWrqB,MAClB0pB,SAAWtkB,GA2Cf,SAA8CA,GAC5C,OAAO,IAAI1D,EAAAA,GAAgB,CACzBipB,WAAY,CAAC,IAAIu+C,EAAAA,GAAAA,GAAqB,CAAEvtE,IAAK,OAAQwtE,KAAMC,GAAAA,GAAoBC,aAC/E5wE,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAI+yB,EAAAA,EAAoB,CAAEjxB,cAIxC,CApDiCwkE,CAAqCxkE,GAClE4jE,OAAQ3xE,EAAAA,EAAQC,sBAAsBgyE,WAExC,CACEj7C,YAAa,QACbjpB,MAAOilB,EAAAA,GAAW1hB,MAClB+gB,SAAWtkB,GA0Bf,SAA8CA,GAC5C,OAAO,IAAI1D,EAAAA,GAAgB,CACzBipB,WAAY,CAAC,IAAIu+C,EAAAA,GAAAA,GAAqB,CAAEvtE,IAAK,OAAQwtE,KAAMC,GAAAA,GAAoBC,aAC/E5wE,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBnc,KAAM,IAAIgzB,EAAAA,GAAqB,CAAElxB,cAIzC,CAnCiCykE,CAAqCzkE,GAClE4jE,OAAQ3xE,EAAAA,EAAQC,sBAAsBmyE,Y,qXChDnC,MAAMK,WAAuBjvE,EAAAA,GAOlCmH,UAAAA,GACE,MACM+nE,EADa/uE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,GAClBrE,MAAM0lB,QACP3oB,KAAzB4xE,aAAAA,EAAAA,EAAY7Q,WACd/2D,KAAKN,SAAS,CACZq3D,SAAU6Q,EAAW7Q,WAIpB/2D,KAAK/G,MAAM4uE,kBACd7nE,KAAKN,SAAS,CACZmoE,iBAAkB,IAAI1P,EAAiB,CAAC,IAG9C,CApBAz3D,WAAAA,CAAYzH,GACV0H,MAAM1H,GAEN+G,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,G,6GAiBA,CAtBW2nE,GAsBGjuE,aAAY,EAAGf,YAC3B,MAAMvE,GAASC,EAAAA,EAAAA,YAAWC,IAC1B,IAAIwzE,GAA2B/nE,EAAAA,EAAAA,MAC3BgoE,GAAmB,EAEvB,IAAK16D,OAAOlL,OAAO/B,EAAAA,IAAW/G,SAASyuE,GAA2B,CAChE,MAAME,GAAqBC,EAAAA,EAAAA,MAC3BF,GAAmB,EACfC,IAAuB9/C,EAAAA,GAAW1hB,QACpCshE,EAA2B1nE,EAAAA,GAAUuH,QAEnCqgE,IAAuB9/C,EAAAA,GAAWrqB,QACpCiqE,EAA2B1nE,EAAAA,GAAU2nB,OAEzC,CAEA,MAAM+V,EAAejlC,EAAAA,GAAWwE,YAAY1E,EAAO2c,IACawoB,EAAAA,EAAa/kC,YAAvE,QAAEgnC,EAAO,MAAE9Q,EAAK,UAAE6kC,EAAS,eAAE+C,GAA6B/4B,EAAV7kC,EAAAA,GAAU6kC,EAAAA,CAAxDiC,UAAS9Q,QAAO6kC,YAAW+C,oBAC7B,SAAEE,GAAap+D,EAAMI,WAErBmvE,EAAgBjvE,EAAMivE,cAE5B,OACE,kBAACC,EAAAA,IAAGA,CAACC,SAAU,GACb,kBAAC7zE,MAAAA,CAAIC,UAAWJ,EAAOo8D,SACrB,kBAAChnB,EAAAA,MAAKA,CAAC5xC,IAAK,GACTe,EAAMM,MAAM4uE,kBACX,kBAAClvE,EAAMM,MAAM4uE,iBAAiBnuE,UAAS,CAACf,MAAOA,EAAMM,MAAM4uE,qBAKjE,kBAACQ,EAAAA,QAAOA,KACLzB,GAA0BttE,KAAI,CAACgvE,EAAK9jD,IAEjC,kBAAC+jD,EAAAA,IAAGA,CACFtzE,cAAaqzE,EAAIzB,OACjBrtE,IAAKgrB,EACL3mB,MAAOyqE,EAAIp8C,YACXpH,OAAQgjD,IAA6BQ,EAAIrlE,MACzCulE,QAASN,EAAcI,EAAIp8C,kBAAel2B,EAAYyyE,GAAWH,EAAKrvE,GACtEmuC,OACEkhC,EAAIp8C,cAAgBy6C,GAASj/C,KACzB,EAAGlzB,eAqDzB,SACEA,EACAk0E,EACA5U,EACAiD,GAEA,MAAM3iE,GAASC,EAAAA,EAAAA,YAAWs0E,IACpBlU,GAAiBC,EAAAA,EAAAA,gBAAe,SAGtC,QAAmB1+D,IAAf0yE,QAA0C1yE,IAAd89D,GAA2BA,EAAYiD,EAAU,C,IAK1EvC,EAJL,MAAMA,EAAiBC,EAAeX,EAAW,GACjD,OACE,kBAACvyC,OAAAA,CAAK/sB,WAAW6K,EAAAA,EAAAA,IAAG7K,EAAWJ,EAAOw0E,kBACnCpU,EAAer8D,KACM,QAArBq8D,EAAAA,EAAeptB,cAAfotB,IAAAA,OAAAA,EAAAA,EAAuBG,OAG9B,CAAO,QAAmB3+D,IAAf0yE,EAA0B,C,IAK9B5R,EAJL,MAAMA,EAAsBrC,EAAeiU,EAAY,GACvD,OACE,kBAACnnD,OAAAA,CAAK/sB,WAAW6K,EAAAA,EAAAA,IAAG7K,EAAWJ,EAAOw0E,kBACnC9R,EAAoB3+D,KACM,QAA1B2+D,EAAAA,EAAoB1vB,cAApB0vB,IAAAA,OAAAA,EAAAA,EAA4BnC,OAGnC,CAEA,OAAO,kBAACpzC,OAAAA,CAAK/sB,WAAW6K,EAAAA,EAAAA,IAAG7K,EAAWJ,EAAOy0E,mBAC/C,CAlFyCC,CAAUt0E,EAAWqiE,EAAgB/C,EAAWiD,QAAAA,EAAYC,EAAAA,SAC/EhhE,EAEN2wB,KAAMuhD,EAAcI,EAAIp8C,aAAe,eAAYl2B,EACnDkB,MAAM6xE,EAAAA,EAAAA,IAAoBT,EAAIrlE,MAAO66B,GACrCkrC,YAAa,MACP,EAAK/lE,OAASqlE,EAAIrlE,QAAU6kE,GAA6BC,KAC3D3rE,EAAAA,EAAAA,IACEC,EAAAA,GAAkBC,gBAClBC,EAAAA,GAAoBD,gBAAgB2sE,oBACpC,CACEC,cAAeZ,EAAIrlE,MACnBkmE,mBAAoBrB,GAG1B,OAIR,IAMV,MAAMW,GAAa,CAACH,EAA8BrvE,KAChD,OAAQqvE,EAAIrlE,OACV,IAAK,SACH,OAAOhK,EAAM8kC,YACf,IAAK,WACH,OAAO9kC,EAAMmwE,cACf,IAAK,SACH,OAAOnwE,EAAMowE,YACf,QACE,OACJ,EAGF,SAAS/0E,GAAUoB,GACjB,MAAO,CACL86D,SAAS76D,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACTC,eAAgB,WAEhB,CAACH,EAAMoI,YAAY6W,GAAGjf,EAAMoI,YAAYqE,OAAOmnE,KAAM,CACnDxxE,SAAU,WACVyxE,MAAO,EACP/qE,OAAQ,KAIhB,CAiCA,SAASmqE,GAAmBjzE,GAC1B,MAAO,CACLmzE,kBAAkBlzE,EAAAA,EAAAA,KAAI,CACpBC,QAAS,eACTyC,SAAU3C,EAAM4C,WAAWC,UAAUF,SACrC++B,SAAU,MACVz/B,WAAYjC,EAAMmC,QAAQ,GAC1B2D,QAAS9F,EAAMmC,QAAQ,IAAM,KAE/B+wE,iBAAiBjzE,EAAAA,EAAAA,KAAI,CACnB0C,SAAU3C,EAAM4C,WAAWC,UAAUF,SACrCwF,MAAO,UACPlG,WAAYjC,EAAMmC,QAAQ,GAC1B/B,aAAcJ,EAAMmC,QAAQ,GAC5BuD,gBAAiB1F,EAAMwC,OAAOuR,OAAOwoC,MACrCz2C,QAAS9F,EAAMmC,QAAQ,IAAM,GAC7BI,MAAOvC,EAAMwC,OAAOC,KAAKC,UACzButB,WAAYjwB,EAAM4C,WAAWstB,mBAGnC,C,qCCpLA,SAAS4jD,GAAiBvmE,EAAe+f,GACvC,MAAMymD,EAA6B,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAIhG,OAHKzmD,GACHymD,EAA2BlmE,KAAK,MAE3BN,EACJI,MAAM,IACNlK,QAAO,CAACuwE,EAAMllD,EAAOmlD,KAGpB,MAAMC,EAAWD,EAAYnlD,EAAQ,GAC/BqlD,EAAkBJ,EAA2BpwE,SAASuwE,GAC5D,QAAkB,OAATF,GAAiBG,EAAc,IAEzC/9D,KAAK,GACV,C,g7BC4CO,MAAMg+D,GAAyB,iBACzBC,GAAyB,iBA+B/B,SAAS39B,GAAkBthB,GAChC,OAAOA,aAAAA,EAAAA,EAAMY,OAAOtH,MAAMsH,GAAWA,EAAOxB,QAAU4/C,IACxD,CAEO,SAASz2C,GAAuB5xB,G,IAE9Bq8B,EAAAA,EAAAA,EAAP,OAA6C,QAAtCA,EADcjlC,EAAAA,GAAWwE,YAAYoE,EAAU6T,IAClCrc,MAAM+mC,2BAAnBlC,IAAAA,GAAkD,QAAlDA,EAAAA,EAAwC7kC,MAAM6xB,YAA9CgT,IAAAA,GAA0D,QAA1DA,EAAAA,EAAoDpS,cAApDoS,IAAAA,OAAAA,EAAAA,EAA6D,EACtE,CAEO,SAASpE,GAAuBj4B,G,IAEaq8B,EADlD,MAAMA,EAAejlC,EAAAA,GAAWwE,YAAYoE,EAAU6T,IACtD,OAAOinB,GAAiF,QAAtCuB,EAAAA,EAAa7kC,MAAMglC,2BAAnBH,IAAAA,OAAAA,EAAAA,EAAwC7kC,MAC5F,CAEO,MAAMsjC,GAA8CtjC,I,IAElDA,EAAAA,EAAP,OAAOA,SAAW,QAAXA,EAAAA,EAAO6xB,YAAP7xB,IAAAA,GAAmB,QAAnBA,EAAAA,EAAayyB,cAAbzyB,IAAAA,OAAAA,EAAAA,EAAsB,EAAE,EAGpBwjC,GAA8CxjC,I,IAElDA,EAAAA,EAAAA,EAAAA,EAAP,OAAiB,QAAVA,EAAAA,EAAM6xB,YAAN7xB,IAAAA,GAAkB,QAAlBA,EAAAA,EAAYyyB,cAAZzyB,IAAAA,GAAuB,QAAvBA,EAAAA,EAAqB,UAArBA,IAAAA,GAA+B,QAA/BA,EAAAA,EAAyB0O,cAAzB1O,IAAAA,OAAAA,EAAAA,EAAkC,EAAE,EAGhC0jC,GAAgD1jC,I,IAEpDA,EAAAA,EAAAA,EAAAA,EAAP,OAAiB,QAAVA,EAAAA,EAAM6xB,YAAN7xB,IAAAA,GAAkB,QAAlBA,EAAAA,EAAYyyB,cAAZzyB,IAAAA,GAAuB,QAAvBA,EAAAA,EAAqB,UAArBA,IAAAA,GAA+B,QAA/BA,EAAAA,EAAyB0O,cAAzB1O,IAAAA,OAAAA,EAAAA,EAAkC,EAAE,EAGtC,MAAMqc,WAAqB5c,EAAAA,GAqCxBsxE,4BAAAA,GACN,MAAM5wE,GAAW+d,EAAAA,EAAAA,IAAkBnX,MACG,IAAlC5G,EAASH,MAAM6F,QAAQ5F,OAI3B8G,KAAKkW,MAAMC,IACT/c,EAASgd,kBAAiB,CAACC,EAAUmB,KACH,IAA5BnB,EAASvX,QAAQ5F,QACnB8G,KAAKiqE,kBAIP,IAAI,UAAEvhD,EAAS,WAAEC,EAAU,eAAElT,IAAmB2qB,EAAAA,EAAAA,MAG5C1X,IAAcgb,EAAAA,KAChBhb,EAAYib,EAAAA,IAEd,MAAMvmC,EAAavE,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,GAC1C4sE,EAAiB9sE,EAAWnE,MAAMuc,WAGxC,GACGa,EAASvX,QAAQ6F,MACfF,GAAMA,EAAEjL,MAAQkvB,IAAahkB,EAAAA,GAAAA,IAAoBD,EAAErB,YAAa+mE,EAAAA,GAAAA,IAAa1lE,EAAExB,SAAW0lB,KAmCxF,KAAKxK,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,SAAU,C,IAC/D,EACA,EACA,EACA,EAHwB,QAAxB,EAAAkB,KAAK/G,MAAM4qE,qBAAX,SAA0BvpC,aACI,QAA9B,EAAAt6B,KAAK/G,MAAM+mC,2BAAX,SAAgC1F,aACF,QAA9B,EAAAt6B,KAAK/G,MAAMglC,2BAAX,SAAgC3D,aACX,QAArB,EAAAt6B,KAAK/G,MAAMmxE,kBAAX,SAAuB9vC,YACzB,MAtCE,CACA,MAAMsJ,EAAkBvtB,EAASvX,QAAQslB,MACtC3f,IAAMC,EAAAA,GAAAA,IAAoBD,EAAErB,WAAaqB,EAAExB,QAAU0oC,EAAAA,KAExD,GAAI/H,EAAiB,CACnB,MAAMymC,GAAuBC,EAAAA,EAAAA,IAA4B1mC,EAAgB3gC,QACrEknE,EAAAA,GAAAA,KAAaI,EAAAA,EAAAA,IAAgC3mC,EAAgB3gC,SAC7DknE,EAAAA,GAAAA,IAAavmC,EAAgB3gC,O,IAUxBinE,EACCA,EACGA,EAXb9sE,EAAWsC,SAAS,CAClB8V,WAAY,SACP00D,GAAAA,CACH7iE,OAAQ,SACH6iE,aAAAA,EAAAA,EAAgB7iE,QAAM,CACzBqhB,UAAWkb,EAAgBpqC,MAAQmqC,EAAAA,GAAeD,EAAAA,GAAmBE,EAAgBpqC,IAErFmvB,WAAY0hD,EAAqBhnE,MAAM,KAAK,KAE9CsO,IAAwB,QAAnBu4D,EAAAA,aAAAA,EAAAA,EAAgBv4D,WAAhBu4D,IAAAA,EAAAA,EAAuB,GAC5BppB,KAA0B,QAApBopB,EAAAA,aAAAA,EAAAA,EAAgBppB,YAAhBopB,IAAAA,EAAAA,EAAwB,GAC9BM,QAAgC,QAAvBN,EAAAA,aAAAA,EAAAA,EAAgBM,eAAhBN,IAAAA,GAAAA,MAIblqE,KAAKyqE,gBAEAh1D,GAGHusB,EAAAA,EAAAA,KAAyBimC,EAAAA,EAAAA,MAAyBxyD,EAAgBzV,OAFlE0qE,EAAAA,EAAAA,KAAwB3qE,EAAAA,EAAAA,MAAoBC,KAIhD,MACEA,KAAKiqE,iBAET,CAKA,KA9DFjqE,KAAKiqE,iBAiET,CAEQA,eAAAA,GAENjqE,KAAKN,SAAS,CACZuvB,WAAOj5B,EACPo0E,gBAAYp0E,EACZmL,UAAMnL,EACN6tE,mBAAe7tE,EACfgqC,yBAAqBhqC,EACrBioC,yBAAqBjoC,EACrBozE,mBAAepzE,EACfqzE,iBAAarzE,EACb+nC,iBAAa/nC,EACb89D,eAAW99D,EACX6gE,oBAAgB7gE,KAElB20E,EAAAA,EAAAA,MAAqBC,qBAAqB5qE,KAAK/G,OAC/C+G,KAAKkW,MAAMpD,eAGX2V,EAAAA,EAAAA,KACF,CAEQoiD,aAAAA,GACYhyE,EAAAA,GAAWoc,iBAAiBjV,KAAM6e,GAAAA,GAA2B3e,GAAAA,IACrER,SAAS,CAAEyf,SAAS,KAC9BtI,EAAAA,EAAAA,IAA6B7W,MAAMN,SAAS,CAAE4b,KAAMC,GAAAA,GAAaC,UACnE,CAOA,cACE,MACMviB,GADkB0xE,EAAAA,EAAAA,MACMG,uBAE1B7xE,GACF+G,KAAKN,SAAS,MACTzG,GAGT,CAEQ4G,UAAAA,GAEiBhH,EAAAA,GAAWoc,iBAAiBjV,KAAM8U,EAAAA,EAAwBI,GAAAA,GAClExV,SAAS,CAAEyV,QAAQ,IAClCnV,KAAK6qE,gBACL7qE,KAAK+qE,cACL/qE,KAAKgrE,mBAELhrE,KAAKirE,mBAGLjrE,KAAKs6B,aAGLt6B,KAAKkW,MAAMC,IAAInW,KAAKkrE,4BACpBlrE,KAAKkW,MAAMC,IAAInW,KAAKmrE,kCAGpBnrE,KAAKkW,MAAMC,IAAInW,KAAKorE,gCAA+BrrE,EAAAA,EAAAA,QAAuBK,EAAAA,GAAUuH,SACpF3H,KAAKkW,MAAMC,IAAInW,KAAKqrE,wBACpBrrE,KAAKkW,MAAMC,IAAInW,KAAKsrE,6BAGpBtrE,KAAKgqE,+BACLhqE,KAAKkW,MAAMC,IAAInW,KAAKurE,6BACpBvrE,KAAKkW,MAAMC,IAAInW,KAAKwrE,+BACpBxrE,KAAKkW,MAAMC,IAAInW,KAAKyrE,yCACpBzrE,KAAKkW,MAAMC,IAAInW,KAAK0rE,yCACpB1rE,KAAKkW,MAAMC,IAAInW,KAAK2rE,iCACpB3rE,KAAKkW,MAAMC,IAAInW,KAAK4rE,+BACpB5rE,KAAKkW,MAAMC,IAAInW,KAAK6rE,kCAGpB7rE,KAAKkW,MAAMC,IAAInW,KAAK8rE,wBD5RjB,SAA6BhuC,GAClC,MAAM3jB,EAASiO,EAAAA,QAAQ4xC,qBAEjB+R,EAA4B5xD,EAAO,kBACzC,IAAKnU,MAAMrD,QAAQopE,KAA+BA,EAA0B7yE,OAC1E,OAEF,MAAM8yE,EAAuBD,EAA0B,GACvD,GAAoC,iBAAzBC,IAAsCA,EAC/C,OAGF,MAAM5uE,EAAavE,EAAAA,GAAWwE,YAAYygC,EAAcxgC,EAAAA,GAClD2uE,GAAuB5oD,EAAAA,EAAAA,IAAuBya,GAC9CouC,EAAuBF,aAAAA,EAAAA,EAAsBppD,MAAM,e,IAGvDxlB,EAAAA,EADE8uE,GAAwD,IAAhCA,EAAqBhzE,SAC1B,QAArBkE,EAAAA,EAAWnE,MAAMkI,YAAjB/D,IAAAA,GAA+C,QAA/CA,EAAAA,EAAuBnE,MAAMyE,0BAA7BN,IAAAA,GAAAA,EAAiDyD,sBAAqB,KACpEorE,EAAqBvsE,SAAS,CAC5BZ,QAAS,CACP,CACEtF,IAAKypB,GAAAA,GAAwBD,cAC7B5f,SAAU2e,GAAAA,GAAaa,MACvB3f,MAAOumE,GAAiB0C,EAAqB,IAAI,GACjD3oD,SAAU,OAGd,KAIN,MAAM4oD,EAAyBH,aAAAA,EAAAA,EAAsBppD,MAAM,iB,IAEzDxlB,EAAAA,EADE+uE,GAA4D,IAAlCA,EAAuBjzE,SAC9B,QAArBkE,EAAAA,EAAWnE,MAAMkI,YAAjB/D,IAAAA,GAA+C,QAA/CA,EAAAA,EAAuBnE,MAAMyE,0BAA7BN,IAAAA,GAAAA,EAAiDyD,sBAAqB,KACpEorE,EAAqBn1D,cAAc,CACjC,CACEtd,IAAKypB,GAAAA,GAAwBC,gBAC7B9f,SAAU2e,GAAAA,GAAaa,MACvB3f,MAAOumE,GAAiB2C,EAAuB,IAAI,GACnD5oD,SAAU,MAEZ,KAGN,MAAMvJ,EAAWnI,EAAAA,gBAAgBoI,qBAG1BE,EAAO,kBACdtI,EAAAA,gBAAgBhP,QAAQulB,EAAAA,QAAQC,UAAUrO,EAASkgD,SAAU//C,GAC/D,CC8OIiyD,CAAoBpsE,KACtB,CAEQ4rE,2BAAAA,GACN,OAAOh2D,EAAAA,EAAAA,IAAoB5V,MAAMoW,kBAAiB,CAACC,EAAUmB,K,IAEzD,EACA,EAFEnB,EAASpT,QAAUuU,EAAUvU,QACD,QAA9B,EAAAjD,KAAK/G,MAAMglC,2BAAX,SAAgC3D,aACX,QAArB,EAAAt6B,KAAK/G,MAAMmxE,kBAAX,SAAuB9vC,aACzB,GAEJ,CAEQuxC,8BAAAA,GACN,OAAOxoD,EAAAA,EAAAA,IAAuBrjB,MAAMuW,iBAAiBwI,EAAAA,IAAgC,K,IACnF,EACA,EADqB,QAArB,EAAA/e,KAAK/G,MAAMmxE,kBAAX,SAAuB9vC,aACO,QAA9B,EAAAt6B,KAAK/G,MAAMglC,2BAAX,SAAgC3D,YAAY,GAEhD,CAEQqxC,6BAAAA,GACN,OAAO5mE,EAAAA,EAAAA,IAAsB/E,MAAMoW,kBAAiB,KAClDpW,KAAKiqE,iBAAiB,GAE1B,CAEQQ,aAAAA,GACNzqE,KAAKN,SAAS,CACZq+B,iBAAa/nC,EACbqzE,iBAAarzE,EACbozE,mBAAepzE,KAGjB20E,EAAAA,EAAAA,MAAqBC,qBAAqB5qE,KAAK/G,MACjD,CAEQsyE,yBAAAA,GAEN,OADkBz1D,EAAAA,EAAAA,IAAkB9V,MACnBoW,kBAAiB,CAACC,EAAUmB,K,IAEzC,EACA,GAFG2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,WAChB,QAA9B,EAAAkB,KAAK/G,MAAMglC,2BAAX,SAAgC3D,aACX,QAArB,EAAAt6B,KAAK/G,MAAMmxE,kBAAX,SAAuB9vC,aACzB,GAEJ,CAEQkxC,2BAAAA,GAEN,OADoB70D,EAAAA,EAAAA,IAAoB3W,MACrBoW,kBAAiB,CAACC,EAAUmB,K,IAE3C,EACA,GAFG2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,WAChB,QAA9B,EAAAkB,KAAK/G,MAAMglC,2BAAX,SAAgC3D,aACX,QAArB,EAAAt6B,KAAK/G,MAAMmxE,kBAAX,SAAuB9vC,aACzB,GAEJ,CAMA,wCACE,OAAOrkB,EAAAA,EAAAA,IAAkBjW,MAAMuW,iBAAiBwI,EAAAA,IAAgC,K,IAC9E,EAA8B,QAA9B,EAAA/e,KAAK/G,MAAMglC,2BAAX,SAAgC3D,YAAY,GAEhD,CAMA,wCAEE,OADuBrkB,EAAAA,EAAAA,IAAkBjW,MACnBoW,kBAAiB,CAACC,EAAUmB,K,IAE9C,GADG2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,WACzB,QAArB,EAAAkB,KAAK/G,MAAMmxE,kBAAX,SAAuB9vC,aACzB,GAEJ,CAEQA,UAAAA,GACN,MAAMx6B,GAAOC,EAAAA,EAAAA,MACPssE,GAAapE,EAAAA,EAAAA,M,IAIjB,EAKA,EAKA,EAGA,EAdEnoE,IAASM,EAAAA,GAAUvE,eAAyC7F,IAA7BgK,KAAK/G,MAAMmwE,gBACpB,QAAxB,EAAAppE,KAAK/G,MAAM4qE,qBAAX,SAA0BvpC,cAIxBx6B,IAASM,EAAAA,GAAU2nB,QAAUskD,IAAenkD,EAAAA,GAAWrqB,YAAoC7H,IAA3BgK,KAAK/G,MAAMowE,cAC/C,QAA9B,EAAArpE,KAAK/G,MAAM+mC,2BAAX,SAAgC1F,cAI9Bx6B,IAASM,EAAAA,GAAUuH,QAAU0kE,IAAenkD,EAAAA,GAAW1hB,YAAoCxQ,IAA3BgK,KAAK/G,MAAM8kC,cAC/C,QAA9B,EAAA/9B,KAAK/G,MAAMglC,2BAAX,SAAgC3D,mBAELtkC,IAAzBgK,KAAK/G,MAAM66D,YACQ,QAArB,EAAA9zD,KAAK/G,MAAMmxE,kBAAX,SAAuB9vC,aAE3B,CAEQ4wC,wBAAAA,G,IACC,EAAP,OAA+B,QAAxB,EAAAlrE,KAAK/G,MAAM4qE,qBAAX,eAA0BztD,kBAAkBC,I,IAE7CA,EAAJ,GADArW,KAAKssE,mBAAmBj2D,EAAUswD,GAAS9qE,WAC1B,QAAbwa,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KAAM,CAC9C,MAAM01C,EAAmBl2D,EAASyU,KAAKY,YACN11B,KAA7Bu2E,aAAAA,EAAAA,EAAkBrzE,UAEpB8G,KAAKN,SAAS,CACZ0pE,cAAemD,EAAiBrzE,UAElCyxE,EAAAA,EAAAA,MAAqB6B,iBAAiBD,EAAiBrzE,QAE3D,IAEJ,CAEQiyE,8BAAAA,G,IACC,EAAP,OAAqC,QAA9B,EAAAnrE,KAAK/G,MAAM+mC,2BAAX,eAAgC5pB,kBAAkBC,I,IAEnDA,EAAJ,GADArW,KAAKssE,mBAAmBj2D,EAAUswD,GAAS5+C,SAC1B,QAAb1R,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KAAM,CAC9C,MAAM41C,EAAyBp2D,EAASyU,KAElC4hD,EAAuBD,EAAuB/gD,OAAO,GAAG/jB,OAC9D,QAA6C3R,IAAzCy2E,EAAuB/gD,OAAOxyB,aAAwDlD,IAAhC02E,EAAqBxzE,OAAsB,CACnG,MAAMyzE,EAAsBF,EAAuB/gD,OAAO,GAAG/jB,OAAOxO,QACjEsL,GAAMgC,EAAAA,KAAyBhC,EAAE/M,OAGpCsI,KAAKN,SAAS,CACZ2pE,YAAasD,EAAoBzzE,OAAS,KAE5CyxE,EAAAA,EAAAA,MAAqBiC,eAAeF,EAAqBxzE,OAC3D,CACF,IAEJ,CAEQozE,kBAAAA,CAAmBj2D,EAA0B7c,G,IAE9B6c,EADrB,MAAM6xD,EAAgBloE,KAAK/G,MAAMivE,cACjCA,EAAc1uE,IAAoB,QAAb6c,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAasvC,QAE3D,MAAMnmC,EAAU1yB,OAAOlL,OAAO+lE,GAAevjE,MAAMrB,GAAMA,IACzDtD,KAAKN,SAAS,CAAEqgC,UAASmoC,iBAC3B,CAEQmD,oBAAAA,G,IACC,EAAP,OAAuB,QAAhB,EAAArrE,KAAK/G,MAAMg2B,aAAX,eAAkB7Y,kBAAiB,CAACC,EAAUmB,K,IAE/CnB,EAA8CA,EAAlD,GADArW,KAAKssE,mBAAmBj2D,EAAUswD,GAASj/C,OAC1B,QAAbrR,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,OAAqB,QAAbxgB,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaE,UAAW,C,IAC7EzgB,EAAAA,EAApB,MAAMykC,EAA6C,QAA/BzkC,EAAuB,QAAvBA,EAAAA,EAASyU,KAAKY,OAAO,UAArBrV,IAAAA,OAAAA,EAAAA,EAAyBnd,cAAzBmd,IAAAA,EAAAA,EAAmC,EACnDykC,IAAgB96C,KAAK/G,MAAM66D,WAC7B9zD,KAAKN,SAAS,CACZo0D,UAAWhZ,GAGjB,IAEJ,CAEQwwB,yBAAAA,G,IACC,EAAP,OAA4B,QAArB,EAAAtrE,KAAK/G,MAAMmxE,kBAAX,eAAuBh0D,kBAAkBC,I,IAC1CA,EAAJ,IAAiB,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KAAM,C,IACZxgB,EAAAA,EAAAA,EAAAA,EAAlC,MAAMpT,EAAmD,QAAvBoT,EAAAA,EAASyU,KAAKY,OAAO,UAArBrV,IAAAA,GAA+B,QAA/BA,EAAAA,EAAyB1O,cAAzB0O,IAAAA,GAAoC,QAApCA,EAAAA,EAAkC,UAAlCA,IAAAA,GAA4C,QAA5CA,EAAAA,EAAsClU,cAAtCkU,IAAAA,OAAAA,EAAAA,EAA+C,GACjFrW,KAAKN,SAAS,CACZm3D,eAAgB5zD,GAEpB,IAEJ,CAEQmoE,8BAAAA,CAA+ByB,G,IAC9B,EAAP,OAAqC,QAA9B,EAAA7sE,KAAK/G,MAAMglC,2BAAX,eAAgC7nB,kBAAkBC,I,IAE9BA,EAAzB,GADArW,KAAKssE,mBAAmBj2D,EAAUswD,GAASh/D,QACvCklE,IAAkC,QAAbx2D,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KAAM,CACnE,MACMi2C,EADyBz2D,EAASyU,KACYY,OAAO,QAE9B11B,IAAzB82E,GAAsCA,EAAqB5zE,SAAW8G,KAAK/G,MAAM8kC,cACnF/9B,KAAKN,SAAS,CACZq+B,YAAa+uC,EAAqB5zE,UAEpCyxE,EAAAA,EAAAA,MAAqBoC,eAAeD,EAAqB5zE,QAE7D,IAEJ,CAEQ4yE,oBAAAA,GACN,OAAOjzE,EAAAA,GAAWqZ,aAAalS,MAAMoW,kBAAiB,K,IACpD,EACA,EACA,EACA,EAHwB,QAAxB,EAAApW,KAAK/G,MAAM4qE,qBAAX,SAA0BvpC,aACI,QAA9B,EAAAt6B,KAAK/G,MAAM+mC,2BAAX,SAAgC1F,aACF,QAA9B,EAAAt6B,KAAK/G,MAAMglC,2BAAX,SAAgC3D,aACX,QAArB,EAAAt6B,KAAK/G,MAAMmxE,kBAAX,SAAuB9vC,YAAY,GAEvC,CAEQ0wC,gBAAAA,GACN,IAAIj2D,EAA0C,CAAC,EAE1C/U,KAAK/G,MAAMg2B,QACdla,EAAYka,MAAQ+9C,MAGjBhtE,KAAK/G,MAAM4qE,gBACd9uD,EAAY8uD,cAAgBoJ,MAGzBjtE,KAAK/G,MAAM+mC,sBACdjrB,EAAYirB,oBAAsBktC,MAG/BltE,KAAK/G,MAAMglC,sBACdlpB,EAAYkpB,oBAAsBkvC,MAG/BntE,KAAK/G,MAAMmxE,aACdr1D,EAAYq1D,WAAagD,MAGtBptE,KAAK/G,MAAMkI,OACd4T,EAAY5T,KAAOksE,MAGjBhgE,OAAOrD,KAAK+K,GAAa7b,QAC3B8G,KAAKN,SAASqV,EAElB,CAEOk2D,gBAAAA,GACL,MAAM,KAAE9pE,GAASnB,KAAK/G,MAChBq0E,GAAgBvtE,EAAAA,EAAAA,MAChBwtE,EAAmB3G,GAA0BxiD,MAAM9gB,GAAMA,EAAEL,QAAUqqE,IAE3E,IAAKnsE,EAAM,CACT,MAAMy5B,EAAM,IAAI34B,MAAM,4CAEtB,MADAZ,EAAAA,EAAOW,MAAM44B,EAAK,CAAE52B,IAAK,wCACnB42B,CACR,CAEA,GAAI2yC,EACFpsE,EAAKzB,SAAS,CACZpJ,SAAU,IACL6K,EAAKlI,MAAM3C,SAAS8W,MAAM,EAAG,GAChCmgE,EAAiBhmD,UAAUruB,IACM,WAA3Bq0E,EAAiBtqE,OACnBjD,KAAKN,SAAS,CAAEq+B,YAAa7kC,GAC/B,WAID,CACL,MAAMs0E,GAAqBvF,EAAAA,EAAAA,MACrBwF,EAAwBjG,GAAoBpjD,MAAM9gB,GAAMA,EAAEL,QAAUuqE,IAEtEC,GAAyBztE,KAAK/G,MAAMmc,eACtCjU,EAAKzB,SAAS,CACZpJ,SAAU,IAAI6K,EAAKlI,MAAM3C,SAAS8W,MAAM,EAAG,GAAIqgE,EAAsBlmD,SAASvnB,KAAK/G,MAAMmc,mBAG3F/T,EAAAA,EAAOW,MAAM,IAAIC,MAAM,8BAA+B,CAAE+B,IAAK,0BAEjE,CACF,CA7bA,YACE/K,G,IAmBQA,EARR0H,MAAM,IACJunE,cAAe,CACb,CAACvB,GAAS9qE,WAAW,EACrB,CAAC8qE,GAAS5+C,SAAS,EACnB,CAAC4+C,GAASh/D,SAAS,EACnB,CAACg/D,GAASj/C,OAAO,GAEnBqY,SAAS,EACT5+B,KAAgB,QAAVlI,EAAAA,EAAMkI,YAANlI,IAAAA,EAAAA,EAAco0E,KACpBp+C,MAAO+9C,KACPnJ,cAAeoJ,KACfjtC,oBAAqBktC,KACrBjvC,oBAAqBkvC,KACrB/C,WAAYgD,MACTn0E,IA9BP,QAAUooC,sBAAsB,IAAIC,EAAAA,GAAyBthC,KAAM,CACjEuhC,cAAe,CAAC7kB,EAAAA,GAAgBzB,EAAAA,GAAYjF,EAAAA,GAAYgH,EAAAA,GAAcpa,EAAAA,OAgCtE5C,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA2aF,SAASqtE,KACP,OAAO,IAAI9tE,EAAAA,GAAgB,CACzByT,UAAW,SACX1c,SAAU,CACR,IAAIgnB,EAAAA,GAAc,CAChBuoD,QAAS,UACT1kE,KAAM,IAAIwmE,GAAe,CAAC,OAIlC,CAEA,SAASsF,KACP,OAAOS,EAAAA,EAAAA,IAAuB,EAC5BC,EAAAA,EAAAA,IAAmB,IAAIC,EAAAA,MAAoB,WAAY,CAAE1jD,MAvhBhC,cAyhB7B,CAEA,SAASgjD,KACP,OAAOQ,EAAAA,EAAAA,IAAuB,EAC5BC,EAAAA,EAAAA,IAAmB,IAAIC,EAAAA,MAAoB,kBAAmB,CAAE1jD,MA5hBhC,oBA8hBpC,CAEA,SAASijD,KACP,OAAOO,EAAAA,EAAAA,IAAuB,EAC5BC,EAAAA,EAAAA,IAAmBnP,EAAAA,GAA0B,kBAAmB,CAAEt0C,MAjiBlC,oBAmiBpC,CAEA,SAAS8iD,KACP,OAAO1zC,EAAAA,EAAAA,IAAe,EAACU,EAAAA,EAAAA,GAAewkC,EAAAA,GAA0B,CAAEt0C,MAAO4/C,MAC3E,CAEA,SAASsD,KACP,MAAMpiD,GAAcsO,EAAAA,EAAAA,IAClB,EACEU,EAAAA,EAAAA,GAAe,uBAAuBwkC,EAAAA,gBAAuC,CAC3Et0C,MAAO6/C,GACP8D,UAAW,aAGf,CAAEt0C,eAAgB,WAGpB,GAAIvO,aAAuBE,EAAAA,GACzB,OAAOF,EAET,MAAMhpB,EAAQ,IAAIC,MAAM,iDAExB,MADAZ,EAAAA,EAAOW,MAAMA,EAAO,CAAEgC,IAAK,gDACrBhC,CACR,CA7DE,GApcWsT,GAocJ5b,aAAY,EAAGf,YACpB,MAAM,KAAEwI,GAASxI,EAAMI,WACvB,OAAIoI,EACK,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,IAGzB,kBAACyd,EAAAA,mBAAkBA,CAACzmB,KAAM,c,kHC3jB9B,MAAM21E,UAAyCp1E,EAAAA,GA2B7Cq1E,QAAAA,CAAS97B,GACdjyC,KAAKN,SAAS,CACZuyC,SAEJ,CAEOj9C,OAAAA,CAAQg5E,GACTA,GACFC,EAAAA,EAAAA,IAAoBjuE,KAAK/G,MAAMyvB,UAAW1oB,KAAK/G,MAAM0vB,WAAY3oB,OAEjEgzB,EAAAA,EAAAA,IAAehzB,KAAK/G,MAAMyvB,UAAW1oB,KAAK/G,MAAM0vB,WAAY3oB,KAEhE,E,EAtC0B,EAAGrH,YAC3B,MAAM,GAAEgmB,EAAE,WAAEgK,EAAU,UAAED,EAAS,MAAEupB,GAAUt5C,EAAMI,WAC7Ci1E,GAAa5oE,EAAAA,EAAAA,IAAkCuZ,EAAI+J,GAAWrvB,SAASsvB,GACvEv0B,GAASC,EAAAA,EAAAA,aAAYqB,IAuCtB,CACL6B,SAAS5B,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACToI,cAAe,SACfnI,eAAgB,SAChBmC,UAAW,eA3CPk2E,EAAcF,EAAa,WAAWrlD,mBAA8B,OAAOA,iBAEjF,OACE,kBAACpH,OAAAA,CAAK/sB,UAAWJ,EAAOmD,SACtB,kBAACmvB,EAAAA,cAAaA,CACZynD,YAAa,KACXx1E,EAAMo1E,UAAS,EAAK,EAEtBnuB,WAAY,KACVjnD,EAAMo1E,UAAS,EAAM,EAEvBpnD,KAAM,kBAAClvB,EAAAA,KAAIA,CAACC,KAAMs2E,EAAa,WAAa,OAAQn5E,KAAK,KAAKkH,KAAMiyE,EAAa,OAAS,YAC1F/1E,MAAO+1E,EAAa,oBAAsB,OAC1Ch5E,QAAS,IAAM2D,EAAM3D,QAAQg5E,GAC7Bt2E,KAAM,OACNyC,aAAY+zE,EACZrsD,QAASqsD,I,KApBHx0E,e,EADHo0E,G,8YCKN,MAAMM,UAA4B11E,EAAAA,GAMvCmH,UAAAA,GACE,MAAMqX,GAAYC,EAAAA,EAAAA,IAAkBnX,MACpCA,KAAKN,SAAS,CAAEyV,OAAQ+B,EAAUje,MAAM6F,QAAQ5F,OAAS,IACzDge,EAAUd,kBAAkBC,IAC1BrW,KAAKN,SAAS,CAAEyV,OAAQkB,EAASvX,QAAQ5F,OAAS,GAAI,GAE1D,CAXAwH,WAAAA,CAAYzH,GACV0H,MAAM1H,GAYR,OAAOirB,WAAU,KACf,GAAKlkB,KAAK/G,MAAM0vB,WAIhB,OAAO0lD,EAAsBruE,KAAK/G,MAAMyvB,UAAW1oB,KAAK/G,MAAM0vB,WAAY3oB,KAAK,IAGjF,OAAOhL,WAAU,KACfs5E,EAAYtuE,KAAK/G,MAAMyvB,UAAW1oB,KAAK/G,MAAM0vB,WAAY3oB,KAAK,IAnB9DA,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAoDF,SAASsuE,EAAYC,EAA0BC,EAA2B/sE,IACxErF,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkB4oB,kBAAmB1oB,EAAAA,GAAoB0oB,kBAAkBwpD,iBAAkB,CAChHxrE,MAAOurE,EACP3wE,MAAO0wE,KAGTv7C,EAAAA,EAAAA,IAAeu7C,EAAkBC,EAAmB/sE,EACtD,CAKO,SAAS4sE,EAAsBE,EAA0BC,EAA2B/sE,G,IAuBvBitE,EAtBlE,MAAMt1E,GAAW+d,EAAAA,EAAAA,IAAkB1V,GAM7B3C,EAAU,IAJQ1F,EAASH,MAAM6F,QAAQ3F,QAC5CsL,KAAQA,EAAEjL,MAAQ+0E,GAAoB9pE,EAAExB,QAAUurE,KAKnD,CACEh1E,IAAK+0E,EACLnrE,SAAU6B,EAAAA,GAASC,MACnBjC,MAAOurE,IAIPD,IAAqB5qC,EAAAA,KACvB4qC,EAAmB7qC,EAAAA,IAGrB,MAAMgrC,EAAYt1E,EAAS41B,MAAM,CAAElwB,YAGnC,OAAOulB,EAAAA,EAAAA,IAAsBkqD,EAAkBC,EAAoC,QAAjBE,EAAAA,EAAUC,eAAVD,IAAAA,OAAAA,EAAAA,EAAmBl0D,cACvF,CAWA,SAASlmB,EAAUoB,GACjB,MAAO,CACL4uB,QAAQ3uB,EAAAA,EAAAA,KAAI,CACVqC,UAAW,WAGjB,CApFE,EA1BWo2E,EA0BG10E,aAAY,EAAGf,YAC3B,MAAMvE,GAASC,EAAAA,EAAAA,YAAWC,IACX6iB,EAAAA,EAAAA,IAAkBxe,GAE1BI,WACP,MAAM,OAAEoc,GAAWxc,EAAMI,WACzB,GAAIoc,EACF,OAAO,KAET,MAAM3c,EAAOG,EAAMurB,UACnB,OACE,kBAACK,EAAAA,WAAUA,CACTtvB,cAAaC,EAAAA,EAAQsvB,MAAMoqD,oBAC3B/sD,QAAS,iBAAiBlpB,EAAMM,MAAM0vB,aACtCn0B,UAAWJ,EAAOkwB,OAClB3vB,QAAS,UACTC,KAAM,UACNC,KAAK,KACL0oB,UAAW/kB,EACXtB,KAAMyB,EAAMurB,UACZlvB,QAAS2D,EAAM3D,SAChB,gB,kCC/DA,MAAM65E,EAAuB,IAEhC,kBAACx4E,EAAAA,EAASA,KACR,kBAAC0G,IAAAA,KAAE,uCACH,kBAACA,IAAAA,KACC,kBAACwoE,EAAAA,SAAQA,CAACruE,KAAK,uEAAuEsuE,UAAAA,GAAS,sDAIjG,kBAAC5oE,EAAAA,KAAIA,CAAC6pE,cAAc,QAClB,kBAACpjB,MAAAA,KACC,kBAACqjB,OAAAA,KAAK,iBAEJ,kBAACtvE,KAAAA,MAAK,6BCdL03E,EAAyB,IAElC,kBAACz4E,EAAAA,EAASA,KACR,kBAAC0G,IAAAA,KAAE,oC,8pBCIF,MAAMgyE,UAAwBr2E,EAAAA,IACnC,EADWq2E,EACGr1E,aAAY,EAAGf,YAC3B,MAAMq2E,EAAwBn2E,EAAAA,GAAWwE,YAAY1E,EAAO0c,IACtD45D,EAA4Bp2E,EAAAA,GAAWwE,YAAY1E,EAAOu2E,IAC1D,WAAEC,EAAU,YAAEjjC,GAAgB+iC,EAA0Bl2E,WACxDmwC,GAAgB70C,EAAAA,EAAAA,YAAW80C,GAE3BimC,EAAkCD,EAAW71E,KAAKmmB,GAC/C,E,sUAAA,IACFA,GAAAA,CACHkH,KAAMlH,EAAI4vD,MAAQ,YAASr5E,EAC3B6H,MAAO,GAAG4hB,EAAI5hB,YAIlB,OACE,kBAAC2rC,EAAAA,MAAKA,CAACx2B,UAAU,SAASpb,IAAK,EAAG6xC,KAAK,WACrC,kBAACl1C,MAAAA,CAAIC,UAAW00C,EAAcQ,KAAKvoC,MACjC,kBAACy2B,EAAAA,OAAMA,CACLlX,kBAAkB,EAClB1hB,MAAO,GACP0vC,OAAQ,KACNugC,EAA0BK,mBAAmB,EAE/C/kC,WAAW,EACXzsB,OAAQouB,EACR5rB,YAAa,gBACbje,QAAS+sE,EACTj/B,cAAc,EACdrvB,iBAAiB,EACjBP,SAAWpY,IAELA,EAAOlF,QAETgsE,EAA0BK,oBAE1BN,EAAsBO,eAAepnE,EAAOlF,OAC9C,K,IASd,MAAMkmC,EAAoBzzC,IAA0B,CAClDg0C,KAAM,CACJvoC,MAAMxL,EAAAA,EAAAA,KAAI,CACR6F,QAAS9F,EAAMmC,QAAQ,KAEzBkF,GAAGpH,EAAAA,EAAAA,KAAI,CACLuL,SAAU,S,w4BC3BT,MAAMguE,UAAkCx2E,EAAAA,GA+J7C82E,6BAAAA,CAA8Bv2E,EAAQ,M,IAAA,E,OAAsB,QAAtB,EAAA+G,KAAK/G,MAAMw2E,mBAAX,eAAwBx2E,K,EAAxB,I,IAC7BA,EAAP,OAAiB,QAAVA,EAAAA,EAAM6xB,YAAN7xB,IAAAA,OAAAA,EAAAA,EAAYyyB,OAAO,GAAG/jB,OAAOrO,KAAKmL,IAChC,CACL5G,MAAO4G,EAAE/M,KACTkmC,YAAan5B,EAAEtC,OAAO,MAG5B,CAEOutE,oCAAAA,CAAqC3nD,GAC1C,MACM4nD,EADwB92E,EAAAA,GAAWwE,YAAY2C,KAAMqV,IACjBu6D,iBACpCC,GAAYC,EAAAA,EAAAA,KAA2B/qE,EAAAA,EAAAA,IAAsB/E,MAAMqF,WAAWC,YAE9E6pE,EAA0BpnD,EAC7BzuB,KAAKqmC,IACJ,MAAMowC,EAAaF,EAAUxgE,QAAQswB,EAAE9hC,OAQvC,MAP0B,CACxBA,MAAO8hC,EAAE9hC,QAAU8lC,EAAAA,GAAeD,EAAAA,GAAmB/D,EAAE9hC,MACvDoF,MAAO08B,EAAE9hC,MACTinB,OAAQ6qD,IAAgBhwC,EAAE9hC,MAC1BwxE,OAAuB,IAAhBU,EACPA,aAEW,IAEdtqE,MAAK,CAACzO,EAAG0O,IAEJ1O,EAAEiM,QAAU0gC,EAAAA,IAAgBj+B,EAAEzC,QAAU0gC,EAAAA,GACnC3sC,EAAEiM,QAAU0gC,EAAAA,IAAgB,EAAI,EAIlC3sC,EAAE6G,MAAQ6H,EAAE7H,OAAS,EAAI7G,EAAE6G,MAAQ6H,EAAE7H,MAAQ,EAAI,IAE5DmC,KAAKN,SAAS,CACZyvE,cAEJ,CAEQa,iBAAAA,GACNhwE,KAAK/G,MAAMw2E,YAAYn1C,YACzB,CAEQ21C,qBAAAA,GAENjwE,KAAKkW,MAAMC,IACTtd,EAAAA,GAAWqZ,aAAalS,MAAMoW,kBAAiB,KAC7CpW,KAAKgwE,mBAAmB,KAK5BhwE,KAAKkW,MAAMC,KACTpR,EAAAA,EAAAA,IAAsB/E,MAAMoW,kBAAiB,KAC3CpW,KAAKgwE,mBAAmB,IAG9B,CAEQnwE,UAAAA,GAENG,KAAKgwE,oBAELhwE,KAAKN,SAAS,CACZ2lB,QAAS,IAAI0pD,EAAgB,CAAC,KAGhC/uE,KAAKiwE,wBAGLjwE,KAAKkW,MAAMC,KACTpR,EAAAA,EAAAA,IAAsB/E,MAAMoW,kBAAiB,KAC3CpW,KAAK/G,MAAMw2E,YAAYn1C,YAAY,KAIvCt6B,KAAKkW,MAAMC,KACT+5D,EAAAA,EAAAA,IAAgClwE,MAAMoW,kBAAiB,K,IACH,EAAlD,MAAM2R,EAAS/nB,KAAKwvE,8BAAoD,QAAtB,EAAAxvE,KAAK/G,MAAMw2E,mBAAX,eAAwBx2E,OACtE8uB,GACF/nB,KAAK0vE,qCAAqC3nD,EAC5C,KAIJ/nB,KAAKkW,MAAMC,IACTnW,KAAK/G,MAAMw2E,YAAYr5D,kBAAkBC,I,IACnCA,EAAJ,IAAiB,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,KAAM,CAC9C,MAAM9O,EAAS/nB,KAAKwvE,8BAA8Bn5D,GAC5C24D,EAAwBn2E,EAAAA,GAAWwE,YAAY2C,KAAMqV,IAEvD0S,GACF/nB,KAAK0vE,qCAAqC3nD,GAG5C,MAAM4nD,EAAcX,EAAsBY,kBAErC7nD,aAAAA,EAAAA,EAAQpjB,MAAM9G,GAAUA,EAAMA,QAAU8xE,MAC3CX,EAAsBmB,uBAE1B,KAGN,CAtQAzvE,WAAAA,CAAYzH,GACV0H,MAAM,GACJurC,aAAa,EACbujC,aAAar1C,EAAAA,EAAAA,IAAoB,CAC/BnQ,QAAS,EAAC0jD,EAAAA,EAAAA,IAAmB,GAAI,oBACjCp0C,eAAgB,WAElB41C,WAAY,CACV,CACEtxE,MAAO6lC,EAAAA,GACPzgC,MAAO0gC,EAAAA,GACP0rC,OAAO,KAGRp2E,IA2HPm3E,EAAAA,KAAAA,kBAAkB1nD,KAChB2nD,EAAAA,EAAAA,KAA0BtrE,EAAAA,EAAAA,IAAsB/E,MAAMqF,WAAWC,WAAYojB,GAE7E,MAAMX,EAAS/nB,KAAKwvE,gCAChBznD,GACF/nB,KAAK0vE,qCAAqC3nD,GAI5C,MAAMinD,EAAwBn2E,EAAAA,GAAWwE,YAAY2C,KAAMqV,IACvD25D,EAAsBY,mBAAqBlnD,GAC7CsmD,EAAsBmB,uBACxB,IAGFb,EAAAA,KAAAA,qBAAoB,KAClBtvE,KAAKN,SAAS,CACZwsC,aAAclsC,KAAK/G,MAAMizC,aACzB,IA1IFlsC,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAEA,EArBWkvE,EAqBGx1E,aAAY,EAAGf,YAE3B,MAAM,WAAEw2E,EAAU,YAAEjjC,EAAW,QAAE7mB,EAAO,YAAEoqD,GAAgB92E,EAAMI,YAC1D,KAAE+xB,GAAS2kD,EAAY12E,WACvBi2E,EAAwBn2E,EAAAA,GAAWwE,YAAY1E,EAAO0c,KACvC66D,EAAAA,EAAAA,IAAgCv3E,GAExCI,WAGb,MAAM3E,GAASC,EAAAA,EAAAA,YAAWi8E,GACpBrjC,GAAaC,EAAAA,EAAAA,QAAoB,MAGvC,OACE,kBAACm7B,EAAAA,QAAOA,CAAC7zE,UAAWJ,EAAOm8E,MACxBpB,EACEh2E,QAAQq3E,GAAaA,EAASnB,OAASmB,EAAS1rD,QAAU0rD,EAASvtE,QAAU0gC,EAAAA,KAC7El+B,MAAK,CAACzO,EAAG0O,KAER,OAAI1O,EAAEiM,QAAU0gC,EAAAA,IAAgBj+B,EAAEzC,QAAU0gC,EAAAA,GACnC3sC,EAAEiM,QAAU0gC,EAAAA,IAAgB,EAAI,GAIrB,QAAZ3sC,EAAAA,EAAE+4E,kBAAF/4E,IAAAA,EAAAA,EAAgB,IAAkB,QAAZ0O,EAAAA,EAAEqqE,kBAAFrqE,IAAAA,EAAAA,EAAgB,G,IAAtC1O,EAAsB0O,CAAkB,IAEjDpM,KAAKk3E,IACJ,MAAMlI,EACJ,kBAACC,EAAAA,IAAGA,CACF/uE,IAAKg3E,EAASvtE,MACd+lE,YAAa,KAEXgG,EAAsBO,eAAeiB,EAASvtE,MAAM,EAEtDpF,OAAO4yE,EAAAA,EAAAA,IAAaD,EAAS3yE,MAvBlB,IAuByC,GACpDinB,OAAQ0rD,EAAS1rD,OACjBsiB,OACEopC,EAASvtE,QAAU0gC,EAAAA,GACdhwC,GAEG,oCACE,kBAAC49C,EAAAA,QAAOA,CAAClP,QAAS,cAChB,kBAAC5qC,EAAAA,KAAIA,CACH6yC,iBAAmBrmC,IACH,UAAVA,EAAEzK,KACJb,EAAMy3E,eAAeI,EAASvtE,MAChC,EAEFjO,QAAUiP,IAERA,EAAEyI,kBACF/T,EAAMy3E,eAAeI,EAASvtE,MAAM,EAEtCvL,KAAM,QACNlD,WAAW6K,EAAAA,EAAAA,IAAG1L,EAAMa,oBAM9BwB,IAKV,OAAIw6E,EAAS3yE,MAAM3E,OAtDJ,GAwDX,kBAACq4C,EAAAA,QAAOA,CAAC/3C,IAAKg3E,EAASvtE,MAAOo/B,QAASmuC,EAAS3yE,OAC7CyqE,GAIEA,CACT,KAEHx9C,aAAAA,EAAAA,EAAM7xB,SAAU29B,EAAAA,aAAasvC,SAAW,kBAACqC,EAAAA,IAAGA,CAAC1qE,MAAO,eAAgB8oB,KAAM,aAG1EmE,aAAAA,EAAAA,EAAM7xB,SAAU29B,EAAAA,aAAaC,MAC5B,kBAACtV,OAAAA,CAAK/sB,UAAWJ,EAAOs8E,QACtB,kBAACnI,EAAAA,IAAGA,CAACS,YAAarwE,EAAM22E,kBAAmBzxE,MAAO,YAAaowC,IAAKhB,EAAYtmB,KAAM,iBAIzFtB,GACC,kBAACgpB,EAAAA,kBAAiBA,CAAChM,QAAS,kBAAChd,EAAQ3rB,UAAS,CAACf,MAAO0sB,MACnD,CAACipB,EAAYC,EAAYC,KACxB,MAAMC,EAAiB,CACrBC,OAAQH,EACR9tB,QAAS6tB,GAGX,OACE,oCACGrB,EAAW0B,SACV,oCACE,kBAACC,EAAAA,QAAOA,EAAAA,EAAAA,EAAAA,CAAAA,EACFJ,EACAnH,EAAAA,MAAIA,CACRwH,KAAM3C,EACN4C,iBAAkB16C,EAAOixB,QACzB0pB,iBAAkB9B,EAAW0B,QAC7BK,aAAa,IACTP,KAAAA,IAMhB,IAuIZ,MAAM6hC,EAAiB56E,IAA0B,CAC/C66E,MAAM56E,EAAAA,EAAAA,KAAI,CACRwoD,UAAW,WAEbuyB,QAAQ/6E,EAAAA,EAAAA,KAAI,CACVkI,MAAO,gBACP5F,MAAOvC,EAAMwC,OAAOotB,QAAQntB,KAC5B,WAAY,CACVF,MAAOvC,EAAMwC,OAAOotB,QAAQntB,QAGhCktB,SAAS1vB,EAAAA,EAAAA,KAAI,CACXG,aAAcJ,EAAMO,MAAMC,OAAOC,QACjCuI,UAAWhJ,EAAMiJ,QAAQ4mB,GACzBjnB,WAAY5I,EAAMwC,OAAOoG,WAAWgnB,QACpChqB,OAAQ,aAAa5F,EAAMwC,OAAOoD,OAAOkqB,W,aCzTtC,MAAMmrD,EAAmBh9E,GAE5B,kBAAC0C,EAAAA,EAASA,KACR,kBAAC0G,IAAAA,KAAE,oBACgB,kBAAC+9B,SAAAA,KAAQnnC,EAAM+0B,WAAmB,IAAC,kBAACtxB,KAAAA,MAAK,sD,g6BCU3D,MAAMw5E,UAA2Cl4E,EAAAA,GAUtDmH,UAAAA,GACEG,KAAKN,SAAS,KAAKM,KAAK6wE,eACxB7wE,KAAKkW,MAAMC,KACTgB,EAAAA,EAAAA,IAAkBnX,MAAMoW,kBAAiB,KACvC,MAAM6I,EAAWjf,KAAK6wE,aAClB7wE,KAAK/G,MAAM63E,WAAa7xD,EAAS6xD,UACnC9wE,KAAKN,SAAS,KAAKuf,GACrB,IAGN,CA2COmM,SAAAA,GACL,MAAO,CAAE1zB,KAAMsI,KAAK/G,MAAMvB,KAAMuL,MAAOjD,KAAK/G,MAAMgK,MACpD,CAhEAvC,WAAAA,CAAYzH,GACV0H,MAAM,OACD1H,GAAAA,CACH63E,SAAU,QAkBdD,EAAAA,KAAAA,cAAa,KACX,MAGMr9C,GAHWrc,EAAAA,EAAAA,IAAkBnX,MAGM/G,MAAM6F,QAAQslB,MAAM3f,IAC3D,MAAMxB,GAAQivB,EAAAA,EAAAA,IAAgCjX,EAAAA,GAAYxW,GAC1D,OAAOA,EAAEjL,MAAQwG,KAAK/G,MAAMvB,MAAQuL,EAAMA,QAAUjD,KAAK/G,MAAMgK,KAAK,IAGtE,OAAKuwB,EAKE,CACLs9C,SAAUt9C,EAAwBpwB,WAAa6B,EAAAA,GAASC,OALjD,CAAE4rE,UAAU,EAMpB,IA6BH,OAAO97E,WAAW+G,IAChB,MAAM5C,EAAS6G,KAAKorB,aAEpB0G,EAAAA,EAAAA,IAAa34B,EAAOzB,KAAMyB,EAAO8J,MAAOlH,EAAMiE,KAAMib,EAAAA,IAEpD,MAAM7hB,GAAW+d,EAAAA,EAAAA,IAAkBnX,OACnC5D,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkB4oB,kBAAmB1oB,EAAAA,GAAoB0oB,kBAAkB8rD,eAAgB,CAC9Gp9C,WAAY,gBACZn6B,IAAKL,EAAOzB,KACZ+R,OAAQ1N,EACR63B,eAAex6B,aAAAA,EAAAA,EAAUH,MAAM6F,QAAQ5F,SAAU,IAGnD8G,KAAKN,SAAS,KAAKM,KAAK6wE,cAAU,IAzElC7wE,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EAiCA,EAzCW4wE,EAyCGl3E,aAAY,EAAGf,YAC3B,MAAM,MAAEsK,EAAK,SAAE6tE,GAAan4E,EAAMI,WAE5B3E,GAASC,EAAAA,EAAAA,YAAWC,IAC1B,OACE,kBAACitB,OAAAA,CAAK/sB,UAAWJ,EAAOmD,SACtB,kBAAC7C,EAAAA,OAAMA,CACLmtB,SAAsB,IAAbivD,EAAoB,UAAU7tE,iBAAuB,OAAOA,eACrEtO,QAAS,YACTC,KAAM,UACNC,KAAK,KACLC,iBAA4B,IAAbg8E,EACft8E,UAAWJ,EAAOW,cAClBC,QAAS,KAAoB,IAAb87E,EAAoBn4E,EAAM3D,QAAQ,SAAW2D,EAAM3D,QAAQ,WAC3EC,cAAaC,EAAAA,EAAQC,sBAAsBC,qBAE1C07E,EAAW,SAAW,eA2BjC,MAAMx8E,GAAY,KACT,CACLG,WAAWkB,EAAAA,EAAAA,KAAI,CACbC,QAAS,OACTC,eAAgB,WAElBd,eAAeY,EAAAA,EAAAA,KAAI,CACjBG,aAAc,IAEhByB,SAAS5B,EAAAA,EAAAA,KAAI,CACXC,QAAS,OACToI,cAAe,SACfnI,eAAgB,SAChBmC,UAAW,a,wICxGV,MAAMg5E,WAAwCt4E,EAAAA,IA+GrD,SAASu4E,GAAmBv7E,GAC1B,MAAO,CACLixB,MAAMhxB,EAAAA,EAAAA,KAAI,CACRsC,MAAOvC,EAAMwC,OAAOC,KAAKolB,SACzB5lB,WAAYjC,EAAMmC,QAAQ+gC,KAE5Bs4C,qBAAqBv7E,EAAAA,EAAAA,KAAI,CACvBC,QAAS,OACTqH,WAAY,WAEd46B,QAAQliC,EAAAA,EAAAA,KAAI,CACVuL,SAAU,OACVvJ,WAAYjC,EAAMmC,QAAQ,GAC1B4tB,YAAa/vB,EAAMmC,QAAQ,KAE7Bs5E,4BAA4Bx7E,EAAAA,EAAAA,KAAI,CAC9B0C,SAAU3C,EAAM4C,WAAWC,UAAUF,SACrCJ,MAAOvC,EAAMwC,OAAOC,KAAKolB,SACzBtgB,WAAY,SACZrH,QAAS,OACTyB,KAAM,WACN+5E,aAAc,WAGpB,C,44BAtIE,GADWJ,GACGK,aAAY,EACxB14E,QACA+vE,iBAEA,MAAMt0E,GAASC,EAAAA,EAAAA,YAAW48E,IACpBjC,EAAwBn2E,EAAAA,GAAWwE,YAAY1E,EAAO0c,KACtD,aAAEi8D,GAAiBtC,EAAsBj2E,WACzCsJ,EAiIH,SAAkCqmE,GACvC,MAAM6I,EAAQ,GACRnqE,EAAM,GACNoqE,EAAoB/2E,KAAKy0D,KAAKwZ,EAAa6I,GAASA,EAEpDlvE,EAA0C,GAChD,IAAK,IAAI24D,EAAQuW,EAAOvW,GAAS5zD,GAAO4zD,GAASwW,EAAmBxW,GAASuW,EAAO,CAClF,IAAI1zE,EAAQm9D,EAAM11D,WACd01D,EAAQuW,EACV1zE,EAAQm9D,EAAM11D,WACL01D,EAAQ0N,IACjB7qE,EAAQ6qE,EAAWpjE,YAErBjD,EAAQkB,KAAK,CACXN,MAAO+3D,EAAM11D,WACbzH,SAEJ,CAEA,OAAOwE,CACT,CArJoBovE,CAAyB/I,GAOzC,OANA11B,EAAAA,EAAAA,YAAU,K,IACgB3wC,EAAAA,EAAxB,MAAMqvE,EAAoD,QAAlCrvE,EAA2B,QAA3BA,EAAAA,EAAQA,EAAQnJ,OAAS,UAAzBmJ,IAAAA,OAAAA,EAAAA,EAA6BY,aAA7BZ,IAAAA,EAAAA,EAAsCivE,EAAahsE,WACvEgsE,EAAahsE,WAAaosE,GAC5B1C,EAAsBtvE,SAAS,CAAE4xE,aAAc3nE,SAAS+nE,EAAiB,KAC3E,GACC,CAACJ,EAAcjvE,EAAS2sE,IAEzB,kBAACztD,OAAAA,CAAK/sB,UAAWJ,EAAO88E,qBACtB,kBAAC3vD,OAAAA,CAAK/sB,UAAWJ,EAAO+8E,4BAA4B,UAC1C,IACR,kBAACv5C,EAAAA,OAAMA,CACLpjC,UAAWJ,EAAOyjC,OAClBtX,SAAWtd,IACT,GAAIA,EAAMA,MAAO,CACf,MAAMquE,EAAe3nE,SAAS1G,EAAMA,MAAO,IAC3C+rE,EAAsBtvE,SAAS,CAAE4xE,eAAcK,YAAa,IAC5D3C,EAAsBhuC,cACtB4wC,EAAAA,EAAAA,IAA6BN,EAC/B,GAEFjvE,QAASA,EACTY,MAAOquE,EAAahsE,aACnB,IAAI,MACHojE,EAAY,IAChB,kBAACjnD,EAAAA,WAAUA,CACTjtB,UAAWJ,EAAOuyB,KAClBxsB,aAAW,aACXzC,KAAM,cACNmqB,QAAS,GAAG6mD,oF,IAMtB,GA3CWsI,GA2CGt3E,aAAY,EACxBf,QACA+vE,iBAEA,MAAMsG,EAAwBn2E,EAAAA,GAAWwE,YAAY1E,EAAO0c,KACtD,aAAEi8D,EAAY,YAAEK,GAAgB3C,EAAsBj2E,WA2BtD3E,GAASC,EAAAA,EAAAA,aA1BIqB,IAA0B,CAC3Cm8E,YAAYl8E,EAAAA,EAAAA,KAAI,CACdm8E,MAAO,SAETC,gBAAgBp8E,EAAAA,EAAAA,KAAI,CAClB,CAACD,EAAMoI,YAAY6W,GAAG,OAAQ,CAC5B/e,QAAS,QAEX,CAACF,EAAMoI,YAAYC,KAAK,OAAQ,CAC9BnI,QAAS,OACTC,eAAgB,WAChBwB,KAAM,cAGV26E,kBAAkBr8E,EAAAA,EAAAA,KAAI,CACpB,CAACD,EAAMoI,YAAYC,KAAK,OAAQ,CAC9BnI,QAAS,QAEX,CAACF,EAAMoI,YAAY6W,GAAG,OAAQ,CAC5B/e,QAAS,OACTC,eAAgB,WAChBwB,KAAM,kBAOZ,OAAIqxE,EAAa4I,EAEb,oCACE,kBAAC/vD,OAAAA,CAAK/sB,UAAWJ,EAAO49E,kBACtB,kBAACC,EAAAA,WAAUA,CACTz9E,UAAWJ,EAAOy9E,WAClBF,YAAaA,EACbO,cAAez3E,KAAKy0D,KAAKwZ,EAAa4I,GACtCa,WAAaC,IACXpD,EAAsBtvE,SAAS,CAAEiyE,YAAaS,IAC9CpD,EAAsBhuC,YAAY,KAIxC,kBAACzf,OAAAA,CAAK/sB,UAAWJ,EAAO29E,gBACtB,kBAACE,EAAAA,WAAUA,CACTI,kBAAkB,EAClB79E,UAAWJ,EAAOy9E,WAClBF,YAAaA,EACbO,cAAez3E,KAAKy0D,KAAKwZ,EAAa4I,GACtCa,WAAaC,IACXpD,EAAsBtvE,SAAS,CAAEiyE,YAAaS,IAC9CpD,EAAsBhuC,YAAY,MAQvC,IAAI,IC3Bf,MAAMsxC,GAAgD50D,EAAAA,OAAOC,eAAeC,6BAEtE20D,GAA0B,wBAGnBrsD,IAA+BsgD,EAAAA,EAAAA,UAAS,aAAc,cA+BnE,MAAMgM,GAAqB,oBACrBC,GAAmB,SAElB,MAAMp9D,WAA8B3c,EAAAA,GA+NzC8hB,WAAAA,GACE,MAAM,IAAEhhB,GAAQk5E,KAEVv5E,GADkB+2E,EAAAA,EAAAA,IAAgClwE,MACzB/G,MAAM6F,QAAQ,GAa7C,OAXI3F,EAAOK,KAAOL,EAAOK,MAAQA,IAC/B02E,EAAAA,EAAAA,IAAgClwE,MAAMN,SAAS,CAC7CZ,QAAS,CACP,SACK3F,GAAAA,CACHK,IAAKA,QAAAA,EAAOL,EAAOK,SAMpB,CAAC,CACV,CAMAihB,aAAAA,CAActY,GAA+B,CAE7CwwE,mCAAAA,CAAoCC,GAClC,MAAM54D,EAAWnI,EAAAA,gBAAgBoI,cAC3BE,EAAS,IAAID,gBAAgBF,EAASG,QACtC04D,EAAQ14D,EAAOtY,IAAI4wE,IACzB,GAAII,GAASD,IAAUC,EAAO,CAC5B,MAAMC,EAAa94D,EAASkgD,SAAWlgD,EAASG,OAChDA,EAAO0jB,IAAI40C,GAAkBG,GAC7B,MAAMG,EAAS/4D,EAASkgD,SAAW,IAAM//C,EAAO7U,WAC5CwtE,IAAeC,IACjBC,EAAAA,EAAAA,IAAeD,EAEnB,CACF,CAOAE,8BAAAA,CAA+BC,EAAgBrwE,GAAU,GACvD,MAAQrJ,IAAK25E,EAAe,OAAEh5D,EAAM,SAAEH,GAAa04D,KACnD,GAAIS,EAAiB,CACnB,MAAMC,EAAoBD,aAAAA,EAAAA,EAAiB9vE,MAAM,KAGjD,IAFiB+vE,aAAAA,EAAAA,EAAoB,MAEpBF,EAAQ,CACvBE,EAAkB,GAAKF,EACvB/4D,EAAO0jB,IAAI20C,GAAoBY,EAAkBtnE,KAAK,MACtD,MAAMgnE,EAAa94D,EAASkgD,SAAWlgD,EAASG,OAC1C44D,EAAS/4D,EAASkgD,SAAW,IAAM//C,EAAO7U,WAC5CwtE,IAAeC,IACblwE,EACFgP,EAAAA,gBAAgBhP,QAAQkwE,IAExBC,EAAAA,EAAAA,IAAeD,GAGrB,CACF,CACF,CAEAnD,cAAAA,G,IACSM,EAAP,OAA6D,QAAtDA,GAAAA,EAAAA,EAAAA,IAAgClwE,MAAM/G,MAAM6F,QAAQ,UAApDoxE,IAAAA,OAAAA,EAAAA,EAAwD12E,GACjE,CAEA22E,qBAAAA,GAEEnwE,KAAKizE,+BAA+BtvC,EAAAA,IAAc,GAClD3jC,KAAKuvE,eAAe5rC,EAAAA,GACtB,CAEA4rC,cAAAA,CAAe7mD,IACb2qD,EAAAA,EAAAA,KAAqBtuE,EAAAA,EAAAA,IAAsB/E,MAAMqF,WAAWC,WAAYojB,IAGxE4qD,EAAAA,EAAAA,GAAoCtzE,OAGpCuzE,EAAAA,EAAAA,IAAmC7qD,EAAW1oB,KAChD,CAGAwzE,kBAAAA,CACEjF,EACAC,EACApvE,EACAq0E,EACAC,EACAC,G,IAkDUA,EAhDV,IAAIC,EACAx0E,EAAU4Y,GAAGC,KAAK7Y,EAAU8Y,KAAM,UAAY,GAAK9Y,EAAU4Y,GAAGC,KAAK7Y,EAAU8Y,KAAM,UAAY,KACnG07D,EAAgB,MAElB,MAAM1kD,EAAgB,G,IA4CZykD,EA1CN3zE,KAAK6zE,6BAGP3kD,EAAc3rB,KACZ,IAAIqtE,EAAmC,CACrCl5E,KAAM62E,EACNtrE,MAAOurE,KALXt/C,EAAc3rB,KAAK,IAAI6qE,EAAoB,CAAEzlD,WAAY6lD,EAAmB9lD,UAAW6lD,KAUzF,MAAM/iD,EAAQ2D,EAAAA,GAAcC,aAEzBK,SAAS++C,GACT7+C,SACC2J,EAAAA,EAAAA,IACE,EACEU,EAAAA,EAAAA,GAAeh6B,KAAK8zE,oBAAoBtF,EAAmBiF,EAAiBC,GAAkB,CAC5FpoD,aAAc,KAAK7kB,EAAAA,OACnBmtE,gBACA1pD,MAAO,MAAMskD,IACbuF,KAAMN,EAAgBx6E,MAAMgK,QAAUsvE,GAA0B,WAAQv8E,KAG5E,CAAEujC,eAAgB,YAGrB8F,qBAAqB,WAAY,CAAEC,KAAMC,EAAAA,aAAaC,SACtDH,qBAAqB,cAAe,KACpCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAatD,EAAAA,UAAUC,MAC5Cq7B,QAAQ,SACRhoC,aAAaC,EAAAA,IACbslC,UAAU,SAAU,CACnBvhD,YAAY,EACZ4jD,MAAO,CAAC,OACRzwC,UAAW,QACX0wC,YAAaC,EAAAA,kBAAkB7N,QAEhC55B,iBAAiB,CAChB,IAAIo+C,EAAAA,EAAiC,CACnCnvD,GAAsC,QAAlCg1D,EAAsB,QAAtBA,EAAAA,EAActuE,kBAAdsuE,IAAAA,OAAAA,EAAAA,EAA0BruE,kBAA1BquE,IAAAA,EAAAA,EAAwC,GAC5CjrD,UAAW6lD,EACX5lD,WAAY6lD,OAEXt/C,IAEJU,QAEHpE,EAAM9rB,SAAS,CACbwmC,mBAAoB,CAACj+B,EAAG2iB,IACtB5qB,KAAKmmC,0BAA0BooC,EAAkBC,EAAmB5jD,EAASY,KAGjF,MAAMwoD,EAAc,IAAIjlD,EAAAA,GAAiB,CACvCvG,WAAY,CAAC,IAAIu+C,EAAAA,GAAAA,GAAqB,CAAEvtE,IAAK,uBAAwBwtE,KAAMC,EAAAA,oBAAoBC,aAC/F/lE,KAAMqqB,IAWR,OARAwoD,EAAYnzE,sBAAqB,K,IAG3BozE,GAAiB,QAAjBA,GAFW5jD,EAAAA,EAAAA,IAA2B2jD,GAAa,GAE5C/6E,MAAM6xB,YAAbmpD,IAAAA,OAAAA,EAAAA,EAAmBh7E,SAAU29B,EAAAA,aAAaC,MAC5C72B,KAAKk0E,cAAcF,EACrB,IAGKA,CACT,CAEAH,yBAAAA,GACE,MAAMM,EAAUn0E,KAAKo0E,yBACrB,QAAQD,aAAAA,EAAAA,EAASl7E,MAAMoJ,QAAQ0iB,kBAAkBxH,YAAY42D,aAAAA,EAAAA,EAASl7E,MAAMoJ,QAAQ0iB,kBAAkBD,OACxG,CAsDAuvD,uBAAAA,GACE,MAAM1E,EAAc3vE,KAAK4vE,iBACzB,OAAOD,IAAgBhsC,EAAAA,GAAeD,EAAAA,GAAmBisC,CAC3D,CAEQ2E,oBAAAA,GACNt0E,KAAKN,SAAS,CACZuvB,OAAOmL,EAAAA,EAAAA,IAAoB,CACzBnQ,QAAS,EACPsqD,EAAAA,EAAAA,IAAiB,IAAIC,EAAAA,OAA2BC,EAAAA,MAA4B,SAAUz0E,KAAK4vE,mBAE7Fr2C,eAAgB,aAKpBv5B,KAAK00E,mBACP,CAEQC,mBAAAA,GACN,MAAMC,GAAmBz9D,EAAAA,EAAAA,IAAkBnX,MACrC60E,GAAmBC,EAAAA,EAAAA,IAAyB90E,MAE5C+0E,EAAY/0E,KAAK4vE,iBACjBoF,EAAkBJ,EAAiB37E,MAAM6F,QAAQ3F,QAAQsL,GAAMA,EAAEjL,MAAQu7E,IAE/E,MAAO,CAAEj2E,QAASk2E,EAAiBC,YAAY92D,EAAAA,EAAAA,GAAe62D,EAAiBH,EAAiB57E,MAAM6F,SACxG,CAEQo2E,aAAAA,GACN,MAAML,GAAmBC,EAAAA,EAAAA,IAAyB90E,OAE5C,QAAElB,EAAO,UAAEm2E,GAAcj1E,KAAK20E,sBAChCM,GACFJ,EAAiBn1E,SAAS,CAAEZ,WAEhC,CAEQe,UAAAA,G,IAkBF,EAjBJG,KAAKm1E,uBAGLn1E,KAAKk1E,gBAGLl1E,KAAKs0E,uBAGLt0E,KAAKo1E,mCAGLp1E,KAAKq1E,gCAGLr1E,KAAKs1E,8BAA6BpF,EAAAA,EAAAA,IAAgClwE,QAEnC,QAA3B,EAAAA,KAAK/G,MAAMg2B,MAAMh2B,MAAM6xB,YAAvB,eAA6B7xB,SAAU29B,EAAAA,aAAaC,MACtD72B,KAAKu1E,sBAIPv1E,KAAK8rE,uBAGL9rE,KAAKw1E,wBAELx1E,KAAKy1E,oCAELz1E,KAAK01E,qCACP,CAEQH,mBAAAA,G,IAGA,EAKA,EAPFv1E,KAAK21E,oCACP31E,KAAK41E,0CAC0B,QAA3B,EAAA51E,KAAK/G,MAAMg2B,MAAMh2B,MAAM6xB,YAAvB,eAA6B7xB,SAAU29B,EAAAA,aAAaC,MACtD72B,KAAK61E,mBAGP71E,KAAK81E,wCAC0B,QAA3B,EAAA91E,KAAK/G,MAAMg2B,MAAMh2B,MAAM6xB,YAAvB,eAA6B7xB,SAAU29B,EAAAA,aAAaC,MACtD72B,KAAK61E,iBAGX,CAEQJ,iCAAAA,G,IAEJ,EADFz1E,KAAKkW,MAAMC,IACkB,QAA3B,EAAAnW,KAAKo0E,gCAAL,eAA+Bh+D,kBAAiB,CAACC,EAAUmB,KACrDnB,EAAShU,QAAQ0iB,kBAAkBF,eAAiBrN,EAAUnV,QAAQ0iB,kBAAkBF,cAC1F7kB,KAAK61E,gBAAe,EACtB,IAGN,CAEQL,qBAAAA,GACNx1E,KAAKkW,MAAMC,KACTpR,EAAAA,EAAAA,IAAsB/E,MAAMoW,kBAAkBC,IAC5CrW,KAAK2yE,oCAAoCt8D,EAASpT,MAAMqC,YACxDtF,KAAK61E,gBAAgB,IAG3B,CAEQP,4BAAAA,CAA6B5B,GACnC1zE,KAAKkW,MAAMC,IACTu9D,EAAgBt9D,kBAAiB,CAACC,EAAUmB,KAC1C,GAAInB,EAASwjB,mBAAqBriB,EAAUqiB,iBAAkB,CAC5D,MAAMq5C,EAAS78D,EAASvX,QAAQ,GAAGtF,IACnCwG,KAAKizE,+BAA+BC,GAEpC,MAAM,UAAE+B,GAAcj1E,KAAK20E,sBAEvBM,EACFj1E,KAAKk1E,gBAELl1E,KAAK61E,gBAAe,EAExB,KAGN,CAMA,sCACE71E,KAAKkW,MAAMC,KACT4/D,EAAAA,EAAAA,IAA6B/1E,MAAMoW,kBAAiB,CAACC,EAAUmB,KACzDnB,EAASpT,QAAUuU,EAAUvU,QAE/BjD,KAAKN,SAAS,CACZyB,KAAM,IAAIs6B,EAAAA,GAAmB,CAAEnlC,SAAU,OAG3C0J,KAAKghC,YAAW,GAClB,IAGN,CAEQo0C,gCAAAA,GACN,MAAMR,GAAmBz9D,EAAAA,EAAAA,IAAkBnX,MAC3CA,KAAKkW,MAAMC,IACTy+D,EAAiBx+D,kBAAiB,CAACC,EAAUmB,MACtC2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAKk1E,eACP,IAGN,CAEQG,6BAAAA,GACN,MAAMn+D,GAAY49D,EAAAA,EAAAA,IAAyB90E,MAC3CA,KAAKkW,MAAMC,IACTe,EAAUd,kBAAiB,CAACC,EAAUmB,MAC/B2G,EAAAA,EAAAA,GAAe9H,EAASvX,QAAS0Y,EAAU1Y,UAC9CkB,KAAK61E,gBAAe,EACtB,IAGN,CAEQnB,iBAAAA,GACN10E,KAAKkW,MAAMC,IACTnW,KAAK/G,MAAMg2B,MAAM7Y,kBAAiB,CAACC,EAAUmB,K,IAGzCnB,EACgBmB,EAAyBnB,GAD5B,QAAbA,EAAAA,EAASyU,YAATzU,IAAAA,OAAAA,EAAAA,EAAepd,SAAU29B,EAAAA,aAAaC,OACrC1Y,EAAAA,EAAAA,GAAe3G,SAAe,QAAfA,EAAAA,EAAWsT,YAAXtT,IAAAA,OAAAA,EAAAA,EAAiBkU,OAAQrV,SAAc,QAAdA,EAAAA,EAAUyU,YAAVzU,IAAAA,OAAAA,EAAAA,EAAgBqV,SAEzD1rB,KAAKghC,YAAW,EAClB,IAGN,CAEQ8qC,oBAAAA,GACN9rE,KAAKkW,MAAMC,IACTtd,EAAAA,GAAWqZ,aAAalS,MAAMoW,kBAAiB,KACzCpW,KAAK21E,mCACP31E,KAAK41E,yCAEL51E,KAAK81E,uCAEP91E,KAAK61E,gBAAgB,IAG3B,CAMA,uBAEE,MAAM,IAAEr8E,GAAQk5E,KACXl5E,GACHwG,KAAKmwE,uBAET,CAEQwF,gCAAAA,GAEN,OADkB98E,EAAAA,GAAWqZ,aAAalS,MACzB/G,MAAMgK,MAAMiV,KAAK89D,UAASxP,EAAAA,EAAAA,UAAStgD,IACtD,CAEQ0vD,sCAAAA,GACN,MAAMzB,EAAUn0E,KAAKo0E,yBACrBD,SAAAA,EAASz0E,SAAS,CAChB2C,QAAS,CACP0iB,kBAAmB,SACdovD,aAAAA,EAAAA,EAASl7E,MAAMoJ,QAAQ0iB,mBAAiB,CAC3CxH,UAAU,MAIlB,CAEQ62D,sBAAAA,GAEN,OADmBv7E,EAAAA,GAAWwE,YAAY2C,KAAM1C,EAAAA,GAC9BrE,MAAMsE,SAAS6mB,MAAM9kB,GAAYA,aAAmBue,EAAAA,GACxE,CAEQi4D,oCAAAA,GACN,MAAM3B,EAAUn0E,KAAKo0E,yBACrBD,SAAAA,EAASz0E,SAAS,CAChB2C,QAAS,CACP0iB,kBAAmB,SACdovD,aAAAA,EAAAA,EAASl7E,MAAMoJ,QAAQ0iB,mBAAiB,CAC3CxH,UAAU,MAIlB,CAOA,eAAuB04D,GAAmB,GACpCA,GACFj2E,KAAKs0E,uBAGPt0E,KAAKk2E,iCACLl2E,KAAK/G,MAAMg2B,MAAMqL,YACnB,CAEQ47C,8BAAAA,GACN,MAAMzC,GAAkBsC,EAAAA,EAAAA,IAA6B/1E,MAC/CkX,GAAYC,EAAAA,EAAAA,IAAkBnX,MACpC,GAAMA,KAAK21E,oCAAuCrD,KAA6BtyE,KAAK6zE,4BAY7E,CACLJ,EAAgBl5D,cAAcopB,EAAAA,IAE9BzsB,EAAUxX,SAAS,CACjB4b,KAAMC,EAAAA,GAAaC,WAErBi4D,EAAgBl5D,cAAcopB,EAAAA,IAGP9qC,EAAAA,GAAWoc,iBAAiBjV,KAAM8U,EAAAA,EAAwBI,GAAAA,GAClExV,SAAS,CAAEyV,QAAQ,GACpC,KAvBiH,CAC/Gs+D,EAAgBl5D,cAAcg4D,IAG9Br7D,EAAUxX,SAAS,CACjB4b,KAAMC,EAAAA,GAAaO,aACnBhd,QAAS,KAIYjG,EAAAA,GAAWoc,iBAAiBjV,KAAM8U,EAAAA,EAAwBI,GAAAA,GAClExV,SAAS,CAAEyV,QAAQ,GACpC,CAYF,CAEQghE,UAAAA,GACN,IAAKn2E,KAAK/G,MAAMs3E,KAAM,CACpB,MAAMA,EAAO,IAAIrB,EAA0B,CAAC,GAC5ClvE,KAAKN,SAAS,CACZ6wE,QAEJ,CACF,CAEQ6F,YAAAA,GACN,OAAOp2E,KAAK/G,MAAMkI,KAAKlI,MAAM3C,QAC/B,CAEQo8D,WAAAA,CAAYl+B,GAClB,OAAOA,EAAMv7B,MAAMkI,gBAAgBoQ,EAAAA,GAAWijB,EAAMv7B,MAAMkI,UAAOnL,CACnE,CAOA,cAAsBw+B,GACpB,GAAIA,EAAMljB,SAAU,CAClB,MAAMipB,GAAelK,EAAAA,EAAAA,IAA2BmE,GAChD,GAA4B,IAAxB+F,EAAarhC,OAAc,C,IAKJ8xB,EAJzB,MAAMA,EAAcuP,EAAa,GAC3BjzB,EAAQ0jB,EAAY/xB,MAAMgxB,QAAQ,GAGlCosD,EAAyC,QAAtBrrD,EAAAA,EAAY/xB,MAAM6xB,YAAlBE,IAAAA,OAAAA,EAAAA,EAAwB5rB,UAC3Cof,EAAiB3lB,EAAAA,GAAWqZ,aAAalS,MACzCs2E,EAAWD,EACb57E,KAAK87E,IAAI/3D,EAAevlB,MAAMgK,MAAMiV,KAAKD,KAAKo+D,aAAAA,EAAAA,EAAkBn+D,KAAM,MACtE6gC,IACEy9B,EAASH,EACX57E,KAAK87E,IAAI/3D,EAAevlB,MAAMgK,MAAM+U,GAAGC,KAAKo+D,aAAAA,EAAAA,EAAkBr+D,GAAI,MAClE+gC,IAEEn/B,EAAe/gB,EAAAA,GAAW8gB,YAAY3Z,KAAMsH,EAAM9F,OAEpDwpB,EAAY/xB,MAAMO,MAAQogB,GAAgB08D,EAAW,GAAKE,EAAS,KACrExrD,EAAYtrB,SAAS,CACnBlG,IAAKogB,IAEPoR,EAAYsP,aAEhB,CACF,CACF,CAEO0G,UAAAA,CAAW1G,GAAa,G,IACY,EAAzC,MAAM,cAAEm8C,GAAkBz2E,KAAK02E,UAAqC,QAA3B,EAAA12E,KAAK/G,MAAMg2B,MAAMh2B,MAAM6xB,YAAvB,eAA6BY,QAChEikD,EAAc3vE,KAAK4vE,iBAUzB,GATA5vE,KAAKm2E,aAEAn2E,KAAK/G,MAAM09E,iBACd32E,KAAKN,SAAS,CACZi3E,gBAAiB,IAAI3F,GAAgC,CAAC,KAKrDyF,GAA0C,IAAzBA,EAAcv9E,OAE7B,CAEL,MAAM67B,EAAkC,GAClC6hD,EAAmB52E,KAAKo2E,eACxBh3E,EAAYvG,EAAAA,GAAWqZ,aAAalS,MAAM/G,MAAMgK,MAChD4zE,GAA4Bd,EAAAA,EAAAA,IAA6B/1E,MACzD0zE,GAAkBxD,EAAAA,EAAAA,IAAgClwE,MAClD82E,GAAqB/xE,EAAAA,EAAAA,IAAsB/E,MAE3CmH,GAASnH,KAAK/G,MAAM04E,YAAc,GAAK3xE,KAAK/G,MAAMq4E,aAClDlqE,EAAMD,EAAQnH,KAAK/G,MAAMq4E,aAE/B,IAAK,MAAM9C,KAAqBiI,EAAcrpE,MAAMjG,EAAOC,GAAM,CAC/D,MAAM2vE,EAAWH,EAAiBz9E,QAAQq7B,IACxC,MAAMrjB,EAAWnR,KAAK0yD,YAAYl+B,GAClC,OAAOrjB,aAAAA,EAAAA,EAAUlY,MAAM5D,SAAUm5E,CAAiB,IAGpD,GAAwB,IAApBuI,EAAS79E,OAEX67B,EAAYxxB,KAAKwzE,EAAS,GAAIA,EAAS,IAEnCA,EAAS,GAAGzlE,UAAYgpB,GAC1Bt6B,KAAKk0E,cAAc6C,EAAS,IAG1BA,EAAS,GAAGzlE,UAAYgpB,GAC1Bt6B,KAAKk0E,cAAc6C,EAAS,QAEzB,CACL,MAAMC,EAAah3E,KAAKwzE,mBACtB7D,EACAnB,EACApvE,EACAy3E,EACAnD,EACAoD,GAEIG,EAAej3E,KAAKk3E,uBAAuBvH,EAAanB,GAE9Dz5C,EAAYxxB,KAAKyzE,EAAYC,EAC/B,CACF,CAEAj3E,KAAK/G,MAAMkI,KAAKzB,SAAS,CACvBpJ,SAAUy+B,EACV8G,QAAQ,EACRH,gBAAiB,yEACjBE,SAAU,QACV0tC,GAAI,CACF5tC,gBAAiB,MACjB3V,OAAQ,EACRC,UAAW,IAGjB,MAxDEhmB,KAAK/G,MAAMkI,KAAKzB,SAAS,CAAEpJ,SAAU,IAyDzC,CAKA,kBAA0BoyB,EAAmBC,G,IAKF,EAJzC,IAAK3oB,KAAK/G,MAAMkI,KAEd,YADAnB,KAAKghC,aAGP,MAAM,cAAEy1C,GAAkBz2E,KAAK02E,UAAqC,QAA3B,EAAA12E,KAAK/G,MAAMg2B,MAAMh2B,MAAM6xB,YAAvB,eAA6BY,QAChEyrD,EAAeV,aAAAA,EAAAA,EAAepnE,QAAQsZ,GAC5C,QAAqB3yB,IAAjBmhF,GAA8BA,EAAe,EAC/C,OAEF,IAAIpiD,EAAc,IAAI/0B,KAAKo2E,gBAC3BrhD,EAAY7oB,OAAsB,EAAfirE,EAAmB,EAAG,EAAGn3E,KAAKk3E,uBAAuBxuD,EAAWC,IACnF3oB,KAAK/G,MAAMkI,KAAKzB,SAAS,CAAEpJ,SAAUy+B,GACvC,CAEQqiD,gBAAAA,CAAiB1uD,EAAmBC,EAAoBsvC,GAC9D,MAAO,IAAIvvC,OAAeC,SAAkB8rD,EAAAA,OAA4Bxc,GAC1E,CAEQ6b,mBAAAA,CACNnrD,EACA8qD,EACAC,GAEA,MAAMv6E,EAASu6E,EAAgBz6E,MAAM6F,QAAQ,GAC7C,OAAI20E,EAAgBx6E,MAAMgK,QAAUsvE,GAC9Bp5E,EAAOK,MAAQmqC,EAAAA,GACV,WAAWl9B,EAAAA,uBAAyC8rE,QAA6B5pD,4CAEjF,WAAWliB,EAAAA,uBAAyC8rE,2BAAgDp5E,EAAOK,SAASmvB,iCAGxH,WAAWliB,EAAAA,0BAA4CtN,EAAOK,SAASmvB,QAAiB8rD,EAAAA,kBACjG,CAqBQiC,SAAAA,CAAUhrD,G,IACiBA,EAChB3mB,EADgB2mB,EAAjC,MAAM2rD,EAAwD,QAA7B3rD,EAAAA,SAAW,QAAXA,EAAAA,EAAS,UAATA,IAAAA,OAAAA,EAAAA,EAAa/jB,OAAO,GAAGxF,cAAvBupB,IAAAA,EAAAA,EAAiC,GAC5D4rD,EAA+C,QAApCvyE,GAAAA,EAAAA,EAAAA,IAAsB/E,MAAMqF,kBAA5BN,IAAAA,OAAAA,EAAAA,EAAwCO,WACnDiyE,GAAeC,EAAAA,EAAAA,IAAkCx3E,MAAMqF,WACvDsqE,EAAc3vE,KAAK4vE,iBACnB6G,EASV,SAAmCgB,EAAoB94D,EAAY44D,EAAsB7uD,GACvF,KAAK+uD,aAAAA,EAAAA,EAAUv+E,QACb,MAAO,GAGY,OAAjBq+E,IACFA,EAAe,IAGjB,MAAMG,GAA0BtyE,EAAAA,EAAAA,IAAkCuZ,EAAI+J,GAAWvvB,QAC9Ew+E,GAAYA,EAAQtuE,cAAchQ,SAASk+E,EAAaluE,gBAAkBouE,EAASp+E,SAASs+E,KAI/F,OAAO3xE,MAAMkS,KAAK,IAAI1S,IAAI,IAAIkyE,KAA4BD,IAC5D,CAxB0BG,CAA0BP,EAAgBC,EAAUruE,OAAOsuE,GAAe5H,GAChG,MAAO,CAAE0H,iBAAgBZ,cAAeA,EAC1C,CAl5BA/1E,WAAAA,CAAYzH,G,IAwCOy5E,EAwBDmF,EA/DhBl3E,MAAM,IACJQ,KAAM,IAAIs6B,EAAAA,GAAmB,CAAEnlC,SAAU,KACzC0nB,WAAY,IAAIlB,EAAAA,GAAiB,CAC/B9jB,UAAW,CAET,IAAIkkB,EAAAA,EAAuB,CACzBxlB,KAAMogF,EAAAA,GACNj6E,MAAO,UACPyd,KAAMC,EAAAA,GAAaO,aACnBG,aAAa,EACbhZ,MAAO,OAGT,IAAIia,EAAAA,EAAuB,CACzBxlB,KAAMqgF,EAAAA,GACNl6E,MAAO,GACPyd,KAAMC,EAAAA,GAAay8D,UACnB/0E,MAAO0gC,EAAAA,GACP1nB,aAAa,EACb5Z,QAAS,CACP,CACEY,MAAO0gC,EAAAA,GACP9lC,MAAO8lC,EAAAA,IAET,CACE1gC,MAAOsvE,GACP10E,MAAO00E,OAKb,IAAIv3D,EAAAA,GAAqB,CACvBtjB,KAAMugF,EAAAA,GACN38D,KAAMC,EAAAA,GAAay8D,UACnB58D,kBAAoBtc,GApDhC,SAAmCA,GACjC,GAAIA,EAAQ5F,OAAQ,CAClB,MAAMC,EAAS2F,EAAQ,GACvB,MAAO,GAAG3F,EAAOK,MAAML,EAAOiK,aAAajK,EAAO8J,SACpD,CAEA,MAAO,EACT,CA8CqBi1E,CAA0Bp5E,GAEnCA,QAAS,CACP,CACEtF,IAAgC,QAA3Bk5E,EAAAA,KAAwBl5E,WAAxBk5E,IAAAA,EAAAA,EAA+B/uC,EAAAA,GACpC1gC,MAAO,KACPG,SAAU,SAIhB,IAAI4X,EAAAA,GAAqB,CACvBtjB,KAAMygF,EAAAA,GACN/zE,WAAY8W,EAAAA,GACZzhB,OAAQ,WACRqF,QAAS,GACTsc,kBAAmBC,EAAAA,GACnBC,KAAMC,EAAAA,GAAaO,aACnBtiB,IAAK,+BACLyiB,aAAa,OAInBgT,OAAOmL,EAAAA,EAAAA,IAAoB,CACzBnQ,QAAS,GACTsP,eAAgB,WAElB6+C,aAAc,IAAIz6C,IAElB2zC,aAA0CuG,QAA5BA,GAAAA,EAAAA,EAAAA,aAAAA,IAAAA,EAAAA,EAAkC,GAChDlG,YAAa,EAEbzlC,aAAa,EACbijC,WAAY,CACV,CACEtxE,MAAO6lC,EAAAA,GACPzgC,MAAO0gC,EAAAA,MAGR1qC,IA9EP,QAAUglB,WAAW,IAAIC,EAAAA,GAAyBle,KAAM,CACtDgK,KAAM,CAACwoE,OAkLT6F,GAAAA,KAAAA,0BAAyB10D,EAAAA,EAAAA,WAAU20D,IAEjC,MAAMC,GAAYf,EAAAA,EAAAA,IAAkCx3E,OAE5Bs4E,GAAqB5/C,EAAAA,EAAAA,IAAmB4/C,GAAsB,QAC9DC,EAAUt/E,MAAMgK,OACtCs1E,EAAU74E,SAAS,CACjBuD,MAAOq1E,GAAqB5/C,EAAAA,EAAAA,IAAmB4/C,GAAsB,KACrEz6E,MAAOy6E,QAAAA,EAAsB,KAIjC,MAAM5E,GAAkBxD,EAAAA,EAAAA,IAAgClwE,MAClD7G,EAASu6E,EAAgBz6E,MAAM6F,QAAQ,IAGzC45B,EAAAA,EAAAA,IAAmB6/C,EAAUt/E,MAAMgK,MAAMqC,cAAgBnM,EAAO8J,OAClEywE,EAAgBh0E,SAAS,CACvBZ,QAAS,CACP,SACK3F,GAAAA,CACH8J,OAAOy1B,EAAAA,EAAAA,IAAmB6/C,EAAUt/E,MAAMgK,MAAMqC,iBAMxDtF,KAAKN,SAAS,CACZiyE,YAAa,KAGfv1E,EAAAA,EAAAA,IACEC,EAAAA,GAAkB4oB,kBAClB1oB,EAAAA,GAAoB0oB,kBAAkBuzD,wBACtC,CACEC,YAAaH,GACf,GAED,MAsLHI,GAAAA,KAAAA,4BAA4Bf,IAC1B,IAAIgB,EAAgB34E,KAAK/G,MAAMm/E,aAAav2E,IAAI81E,IAAY,GAC5D,GAA6B,IAAzBgB,EAAcz/E,OAChB,MAAO,GAQT,MAAO,MANSy/E,EAAcr/E,KAAKgS,IACnB,SAAVA,IACFA,EAAQ,IAEH,GAAG7E,EAAAA,QAA0B6E,SAEjBQ,KAAK,UAAU,IAItCorE,GAAAA,KAAAA,0BAAyB,CAACxuD,EAAmBC,KAC3C,MAAMsvC,EAAcj4D,KAAK04E,yBAAyB/vD,GAC5CqrD,EAAc,IAAIjlD,EAAAA,GAAiB,CACvCvG,WAAY,CAAC,IAAIu+C,EAAAA,GAAAA,GAAqB,CAAEC,KAAMC,EAAAA,oBAAoB2R,OAClEz3E,KAAMguB,EAAAA,GAAczH,OAEjB4b,gBAAe,GACf3T,SACC2J,EAAAA,EAAAA,IACE,EACEU,EAAAA,EAAAA,GAAeh6B,KAAKo3E,iBAAiB1uD,EAAWC,EAAYsvC,GAAc,CACxElB,SAAU,IACV7sC,MAAO,QAAQvB,OAGnB,CACE4Q,eAAgB,YAIrB9J,SAAS9G,GACTisC,UAAU,YAAY,GACtBA,UAAU,oBAAoB,GAC9BhlC,UAWL,OARAokD,EAAYnzE,sBAAqB,K,IAG3BozE,GAAiB,QAAjBA,GAFW5jD,EAAAA,EAAAA,IAA2B2jD,GAAa,GAE5C/6E,MAAM6xB,YAAbmpD,IAAAA,OAAAA,EAAAA,EAAmBh7E,SAAU29B,EAAAA,aAAaC,MAC5C72B,KAAKk0E,cAAcF,EACrB,IAGKA,CAAW,IA4bpB,QAAQ7tC,6BAA4B,CAClCzd,EACAC,EACAiC,EACAY,KAEA,MAAM24C,EAAmCv5C,EAAQkc,yBAEjDlc,EAAQkc,yBAA2B,CAACx7B,EAAeg0B,K,IAGN9T,EAAAA,EAAAA,EAF3C24C,SAAAA,EAAmC74D,EAAOg0B,GAE1C,MAAMu5C,GAAYC,EAAAA,EAAAA,IAA8D,QAArCttD,EAAiB,QAAjBA,EAAAA,EAAMvyB,MAAMg2B,aAAZzD,IAAAA,GAA6B,QAA7BA,EAAAA,EAAmBvyB,MAAM6xB,YAAzBU,IAAAA,OAAAA,EAAAA,EAA+BE,cAA/BF,IAAAA,EAAAA,EAAyC,IAC9EvL,GAAS84D,EAAAA,EAAAA,IAAsBztE,EAAOtL,KAAK/G,MAAMm/E,aAAav2E,IAAI8mB,GAAa2W,EAAMu5C,GAC3F74E,KAAK/G,MAAMm/E,aAAav6C,IAAIlV,EAAY1I,GAExCjgB,KAAKg5E,kBAAkBtwD,EAAWC,EAAW,CAC9C,IA3zBD3oB,KAAKa,qBAAqBb,KAAKH,WAAWiB,KAAKd,MACjD,EA41BF,SAAS0yE,KACP,MAAM14D,EAAWnI,EAAAA,gBAAgBoI,cAC3BE,EAAS,IAAID,gBAAgBF,EAASG,QACtCg5D,EAAkBh5D,EAAOtY,IAAI2wE,IAC7BY,EAAoBD,aAAAA,EAAAA,EAAiB9vE,MAAM,KAEjD,MAAO,CAAE7J,IADG45E,aAAAA,EAAAA,EAAoB,GAClBj5D,SAAQH,WACxB,CAEA,SAAS1lB,GAAUoB,GACjB,MAAO,CACLjB,WAAWkB,EAAAA,EAAAA,KAAI,CACbC,QAAS,OACToI,cAAe,SACfgD,SAAU,EACVlJ,SAAU,aAEZmhF,gBAAgBtjF,EAAAA,EAAAA,KAAI,CAClBuJ,UAAWxJ,EAAMmC,QAAQ,KAE3BqhF,aAAavjF,EAAAA,EAAAA,KAAI,CACfe,OAAQ,IAEV+tB,QAAQ9uB,EAAAA,EAAAA,KAAI,CACVmC,SAAU,WACVyxE,MAAO,EACPxxE,IAAK,MACLyG,OAAQ,IAEV26E,aAAaxjF,EAAAA,EAAAA,KAAI,CACfqL,SAAU,EACVpL,QAAS,OACToI,cAAe,WAEjBmD,MAAMxL,EAAAA,EAAAA,KAAI,CACRqL,SAAU,EACVpL,QAAS,OACToI,cAAe,WAEjBo7E,sBAAsBzjF,EAAAA,EAAAA,KAAI,CACxBkI,MAAO,yBACPjI,QAAS,OACTqH,WAAY,SACZC,SAAU,OACV7F,KAAM,WACN,CAAC3B,EAAMoI,YAAYC,KAAK,OAAQ,CAC9BmB,UAAWxJ,EAAMmC,QAAQ,GACzBmH,MAAO,UAGXq6E,eAAe1jF,EAAAA,EAAAA,KAAI,CACjBkI,MAAO,iBACPjI,QAAS,OACTqH,WAAY,SACZC,SAAU,OACV,CAACxH,EAAMoI,YAAYC,KAAK,OAAQ,CAC9BC,cAAe,SACff,WAAY,gBAGhBq8E,aAAa3jF,EAAAA,EAAAA,KAAI,CACfuJ,UAAWxJ,EAAMmC,QAAQ,GACzBC,SAAU,aAGhB,CA35BE,GArFWud,GAqFG3b,aAAY,EAAGf,Y,IAaJs2B,EAZvB,MAAM76B,GAASC,EAAAA,EAAAA,YAAWC,KACpB,KAAE6M,EAAI,MAAE8tB,EAAK,KAAEshD,EAAI,gBAAEoG,GAAoBh+E,EAAMI,YAC/C,KAAE+xB,GAASmE,EAAMl2B,WACjB42E,EAAch3E,EAAMi3E,iBAEpB2J,GAAwB/B,EAAAA,EAAAA,IAAkC7+E,IAC1D,MAAEkF,EAAOoF,MAAOs3C,GAAgBg/B,EAAsBxgF,WACtDygF,EAAYj/B,GAA+B,OAAhBA,GAE3B,eAAE88B,EAAc,cAAEZ,GAAkB99E,EAAM+9E,UAAU5rD,aAAAA,EAAAA,EAAMY,QAC1D+tD,GACJ3uD,aAAAA,EAAAA,EAAM7xB,SAAU29B,EAAAA,aAAasvC,UAAWp7C,aAAAA,EAAAA,EAAM7xB,SAAU29B,EAAAA,aAAaE,gBAAsB9gC,IAAT80B,EAC9E4uD,GAAiC,QAAhBzqD,EAAAA,EAAMh2B,MAAM6xB,YAAZmE,IAAAA,OAAAA,EAAAA,EAAkBh2B,SAAU29B,EAAAA,aAAa30B,MAM1D03E,EAAchhF,EAAM07E,0BAC1B,IAAIuF,EAAcL,EAAsBl0E,WAAWC,WAC/B,OAAhBs0E,IACFA,EAAc,IAEhB,MAAMC,GAAcC,EAAAA,EAAAA,IAAqBF,G,IAsB3BnD,EApBd,OACE,kBAACliF,MAAAA,CAAIC,UAAWJ,EAAOK,WACrB,kBAACF,MAAAA,CAAIC,UAAWJ,EAAO+kF,aACpB5I,GAAQ,kBAACA,EAAK72E,UAAS,CAACf,MAAO43E,IAChC,kBAAC5qC,EAAAA,MAAKA,CAACnxC,UAAWJ,EAAOklF,aACvB,kBAAC/kF,MAAAA,CAAIC,UAAWJ,EAAOilF,eACrB,kBAACvhD,EAAAA,EAAoBA,CACnBE,cAAe,CACbn6B,MAAOg8E,EACP52E,MAAO22E,EACPjzD,KAAM,UAERzH,UAAWu6D,EACXx2E,MAAO22E,GAA4B/7E,EACnC0iB,SAAWw5D,GAzBA,CAACA,IACtBphF,EAAM0/E,uBAAuB0B,EAAY,EAwBJC,CAAeD,GAC1ChiD,aAAe90B,KRzIxB,SAAgCsrE,EAA0BC,EAA2B/sE,GAC1F,MAAMjJ,EAAO61E,EAAsBE,EAAkBC,EAAmB/sE,GACxE6sE,EAAYC,EAAkBC,EAAmB/sE,IACjDuxE,EAAAA,EAAAA,IAAex6E,EACjB,CQsIkByhF,CAAuBtK,EAAa1sE,EAAOtK,EAAM,EAEnDkF,MAAO87E,EACPt3E,QAIE,QAHAo0E,EAAAA,aAAAA,EAAAA,EAAen9E,KAAKygF,IAAiB,CACnC92E,MAAO82E,EACPl8E,MAAOk8E,aAFTtD,IAAAA,EAAAA,EAGO,MAGTgD,GACA,kBAACl4D,OAAAA,CAAK/sB,UAAWJ,EAAOglF,sBACrBzC,GACC,kBAAC3F,GAAgCK,UAAS,CACxC14E,MAAOg+E,EACPjO,WAAY+N,EAAcv9E,SAG7By9E,GACC,kBAAC3F,GAAgCt3E,UAAS,CACxCf,MAAOg+E,EACPjO,WAAY+N,EAAcv9E,aAQpCugF,GAAsBC,GAAkB,kBAAC7K,EAAoBA,OAC7D4K,IAAuBC,GAAkBF,KAAcnC,aAAAA,EAAAA,EAAgBn+E,SAAU,kBAAC41E,EAAsBA,OACxG2K,IAAuBC,IAAmBF,KAAcnC,aAAAA,EAAAA,EAAgBn+E,SACxE,kBAACy3E,EAAeA,CAACjoD,UAAWinD,OAE1B8J,GAAsBC,IACxB,kBAACnlF,MAAAA,CAAIC,UAAWJ,EAAO+M,MACrB,kBAACA,EAAKzH,UAAS,CAACf,MAAOwI,IACvB,kBAAC5M,MAAAA,CAAIC,UAAWJ,EAAO6kF,gBACpBtC,GACC,kBAAC3F,GAAgCt3E,UAAS,CACxCgvE,WAAY+N,EAAcv9E,OAC1BP,MAAOg+E,O,sEChSpB,SAAShhC,EAAuBhiD,GAIrC,OACE,kBAACiyC,EAAAA,iBAAgBA,CACfvjC,QAAS,CACP,CACExE,MAAO,OACPoF,MAAO,OACP8pB,YAAa,sCAEf,CACElvB,MAAO,QACPoF,MAAO,QACP8pB,YAAa,wCAGjBl4B,KAAK,KACLoO,MAAOtP,EAAMiiD,QACbr1B,SAAU5sB,EAAM4sB,UAGtB,C,kLChBO,MAAMrD,UAA+Bg9D,EAAAA,GAYnCC,eAAAA,CAAgBxqE,GACrB,OAAOyqE,EAAAA,EAAAA,IAAGp6E,KAAK/G,MAAMoJ,QACvB,CAbA,YAAmB89C,GACjBx/C,M,sUAAM,EACJ5E,KAAM,SACNkH,MAAO,GACP9K,KAAM,GACNkK,QAAS,GACT3K,KAAM,IACHyoD,GAEP,EAKA,EAfWjjC,EAeGxjB,aAAY,EAAGf,YACpB0hF,EAAAA,EAAAA,IAAyB,CAAE1hF,W,mjBCoB/B,MAAMkM,EAqBX,yBACE,IAAI,cAAEy1E,EAAa,iBAAEC,EAAgB,kBAAEC,EAAiB,qBAAEC,GAAyBz6E,KAAK06E,0BACxF,MAAMC,EAAwC,GAc9C,MAbgB,CAACL,EAAeC,EAAkBC,EAAmBC,GAAsBthF,QACxFA,GAAWA,IAEN6J,SAAS43E,IACf,MAAMC,EAAe76E,KAAK86E,0BAA0BF,EAAiB,KAErE,IAAK,MAAMphF,KAAOohF,EAAiB,CACjC,MACMx3E,EADSw3E,EAAgBphF,GACP4J,SACxBu3E,EAAap3E,KAAK,CAAE/J,MAAK4J,WAAUH,MAAO43E,EAAarhF,IACzD,KAGKmhF,CACT,CAMA,UACE,IAAI,cACFL,EAAa,iBACbC,EAAgB,kBAChBC,EAAiB,qBACjBC,EAAoB,UACpBM,EAAS,WACTC,EAAU,UACVC,EAAS,WACTC,GACEl7E,KAAK06E,0BAEL16E,KAAKqC,QAAQuqD,MAajB,MAAMuuB,EAAgBn7E,KAAKo7E,4BAA4B,CACrDd,gBACAC,mBACAC,oBACAC,uBACAM,YACAC,aACAC,YACAC,e,IAKQ,EAFV,OAAIC,GAEyB,QAAnB,EAAAn7E,KAAKqC,QAAQge,cAAb,QAAuB,IAAM86D,EAGhC,EACT,CAEOE,aAAAA,CAAch5E,GAGnB,OADArC,KAAKqC,QAAU,KADiB,CAAEi5E,kBAAkB,EAAMC,eAAe,EAAO5nD,WAAY,WACrDtxB,GAChCrC,KAAKw7E,SACd,CAKA,gBAAuBn5E,GASrB,OADArC,KAAKqC,QAAU,KAPiB,CAC9Bo5E,gBAAiB,KACjBp7D,OAAQ,KACRi7D,kBAAkB,EAClBC,eAAe,EACf5nD,WAAY,SAEyBtxB,GAChCrC,KAAKw7E,SACd,CAKA,cAAqBn5E,GAUnB,OADArC,KAAKqC,QAAU,KARiB,CAC9Bo5E,gBAAiB,KACjBp7D,OAAQ,KACRi7D,kBAAkB,EAClBC,eAAe,EACf5nD,WAAY,SAGyBtxB,GAChCrC,KAAKw7E,SACd,CAMA,cAAqBn5E,GASnB,OADArC,KAAKqC,QAAU,KAPiB,CAC9Bo5E,gBAAiB,KACjBp7D,OAAQ,KACRi7D,kBAAkB,EAClBC,eAAe,EACf5nD,WAAY,SAEyBtxB,GAChCrC,KAAKw7E,SACd,CAKA,6BAAoC,cAClClB,EAAa,iBACbC,EAAgB,kBAChBC,EAAiB,qBACjBC,EAAoB,UACpBM,EAAS,WACTC,EAAU,UACVC,EAAS,WACTC,IAWA,IAAIQ,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGJ,MAAMC,EAAuB,G,IAoDmC,EAlD5Dl8E,KAAKqC,QAAQi5E,kBAEfI,EAAsB17E,KAAK86E,0BAA0BR,EAAe,KACpEqB,EAA0B37E,KAAK86E,0BAA0BP,EAAkB,KAC3EqB,EAA2B57E,KAAK86E,0BAA0BN,EAAmB,KAC7EqB,EAA8B77E,KAAK86E,0BAA0BL,EAAsB,KAEnFyB,EAAW34E,QAAQvD,KAAKm8E,mBAAmBT,EAAqBU,EAAAA,GAAcl3E,QAC9Eg3E,EAAW34E,QAAQvD,KAAKm8E,mBAAmBR,EAAyBS,EAAAA,GAAcxpD,WAClFspD,EAAW34E,QAAQvD,KAAKm8E,mBAAmBP,EAA0BQ,EAAAA,GAAcC,aACnFH,EAAW34E,QAAQvD,KAAKm8E,mBAAmBN,EAA6BO,EAAAA,GAAcE,kBAGtFZ,EAAsB17E,KAAKu8E,gBAAgBjC,GAC3CqB,EAA0B37E,KAAKu8E,gBAAgBhC,GAC/CqB,EAA2B57E,KAAKu8E,gBAAgB/B,GAChDqB,EAA8B77E,KAAKu8E,gBAAgB9B,GAEnDyB,EAAW34E,QAAQvD,KAAKw8E,YAAYd,EAAqBU,EAAAA,GAAcl3E,QACvEg3E,EAAW34E,QAAQvD,KAAKw8E,YAAYb,EAAyBS,EAAAA,GAAcxpD,WAC3EspD,EAAW34E,QAAQvD,KAAKw8E,YAAYZ,EAA0BQ,EAAAA,GAAcC,aAC5EH,EAAW34E,QAAQvD,KAAKw8E,YAAYX,EAA6BO,EAAAA,GAAcE,iBAIjFR,EAAmB97E,KAAKu8E,gBAAgBxB,GACxCgB,EAAoB/7E,KAAKu8E,gBAAgBvB,GACzCgB,EAAmBh8E,KAAKu8E,gBAAgBtB,GACxCgB,EAAoBj8E,KAAKu8E,gBAAgBrB,GAEzCgB,EAAW34E,QAAQvD,KAAKw8E,YAAYV,EAAkBW,EAAAA,GAAgBlqD,KACtE2pD,EAAW34E,QAAQvD,KAAKw8E,YAAYT,EAAmBU,EAAAA,GAAgBjqD,MACvE0pD,EAAW34E,QAAQvD,KAAKw8E,YAAYR,EAAkBS,EAAAA,GAAgBpqD,KACtE6pD,EAAW34E,QAAQvD,KAAKw8E,YAAYP,EAAmBQ,EAAAA,GAAgBnqD,MAEnEtyB,KAAKqC,QAAQuqD,MAejB,MAAM8vB,GAAmB/nB,EAAAA,EAAAA,MAAK30D,KAAK28E,cAAcT,EAAY,GAA+B,QAA5B,EAAAl8E,KAAKqC,QAAQo5E,uBAAb,QAAgC,SAMhG,OAJIz7E,KAAKqC,QAAQuqD,MAIV8vB,CACT,CAKA,0BAEE,MACE,CAACN,EAAAA,GAAcl3E,OAAQ03E,EACvB,CAACR,EAAAA,GAAcxpD,UAAWiqD,EAC1B,CAACT,EAAAA,GAAcC,YAAaS,EAC5B,CAACV,EAAAA,GAAcE,eAAgBS,EAC/B,CAACN,EAAAA,GAAgBlqD,IAAKA,EACtB,CAACkqD,EAAAA,GAAgBjqD,KAAMA,EACvB,CAACiqD,EAAAA,GAAgBpqD,IAAKA,EACtB,CAACoqD,EAAAA,GAAgBnqD,KAAMA,GACrBtyB,KAAKg9E,kBAAkBh9E,KAAKlB,SAEhC,IAAIw7E,EACAC,EACAC,EACAC,EAEAM,EACAC,EACAC,EACAC,EA0CJ,OAvCIl7E,KAAKqC,QAAQi5E,kBACfhB,EAAgBt6E,KAAKi9E,qBAAqBL,EAAOR,EAAAA,GAAcC,YAC/D9B,EAAmBv6E,KAAKi9E,qBAAqBJ,EAAUT,EAAAA,GAAcE,eACrE9B,EAAoBx6E,KAAKi9E,qBAAqBH,GAC9CrC,EAAuBz6E,KAAKi9E,qBAAqBF,KAEjDzC,EAAgBt6E,KAAKi9E,qBAAqBL,GAC1CrC,EAAmBv6E,KAAKi9E,qBAAqBJ,GAC7CrC,EAAoBx6E,KAAKi9E,qBAAqBH,GAC9CrC,EAAuBz6E,KAAKi9E,qBAAqBF,IAInDhC,EAAY/6E,KAAKi9E,qBAAqB1qD,GACtCyoD,EAAah7E,KAAKi9E,qBAAqBzqD,GACvCyoD,EAAYj7E,KAAKi9E,qBAAqB5qD,GACtC6oD,EAAal7E,KAAKi9E,qBAAqB3qD,GAEnCtyB,KAAKqC,QAAQuqD,MASb5sD,KAAKqC,QAAQi5E,mBAEXhB,IACFE,EAAoBx6E,KAAKk9E,aAAad,EAAAA,GAAcC,WAAY/B,EAAeE,GAC/EF,EAAgBt6E,KAAKm9E,qBAAqB7C,EAAe8B,EAAAA,GAAcl3E,QAErEq1E,IACFE,EAAuBz6E,KAAKk9E,aAAad,EAAAA,GAAcE,cAAe/B,EAAkBE,GACxFF,EAAmBv6E,KAAKm9E,qBAAqB5C,EAAkB6B,EAAAA,GAAcxpD,YAI1E,CACL0nD,gBACAC,mBACAC,oBACAC,uBACAM,YACAC,aACAC,YACAC,aAEJ,CAKA,YAAoBp8E,EAA0BsE,GAC5C,MAAMg6E,EAA0B,GAEhC,IAAK,MAAM5jF,KAAOsF,EAAS,CACzB,MAAMu+E,EAA4C,GAC5Cl7E,EAASrD,EAAQtF,IACnB8jF,EAAAA,EAAAA,IAAkBl6E,GACpBjB,EAAOa,SAASC,GACdo6E,EAAgC95E,KAAKvD,KAAKu9E,kBAAkB/jF,EAAK4J,EAAUH,EAAO,OAGpFd,EAAOa,SAASC,GAAUo6E,EAAgC95E,KAAKvD,KAAKu9E,kBAAkB/jF,EAAK4J,EAAUH,OAGnGyB,EAAAA,EAAAA,IAAoBtB,GACtBg6E,EAAc75E,KAAK85E,EAAgCvxE,KAAK,IAAI9L,KAAKw9E,kCAEjEJ,EAAc75E,KAAK85E,EAAgCvxE,KAAK,IAAI9L,KAAKy9E,iCAErE,CAEA,OAAOL,CACT,CAKA,mBAA2B1B,EAA8Ct4E,GACvE,MAAMg6E,EAAgB,GACtB,IAAK,MAAM5jF,KAAOkiF,EAChB0B,EAAc75E,KAAKvD,KAAKu9E,kBAAkB/jF,EAAK4J,EAAUs4E,EAAoBliF,KAE/E,OAAO4jF,CACT,CAKA,qBAA6Bt+E,EAAqC4+E,GAChE,MAAM14E,EAAqC,CAAC,EAM5C,OALAqI,OAAOrD,KAAKlL,GAASkE,SAASxJ,IACxBsF,EAAQtF,GAAK4J,WAAas6E,IAC5B14E,EAAOxL,GAAOsF,EAAQtF,GACxB,IAEKwL,CACT,CAKA,aACE24E,EACAC,EACAC,GAiBA,OAf+BxwE,OAAOrD,KAAK4zE,GACxCzkF,QAAQK,GAAQokF,EAAYpkF,GAAK4J,WAAau6E,IAC9CrkF,KAAKE,IAAS,CAAE2I,OAAQy7E,EAAYpkF,GAAK2I,OAAQ3I,UAE7BwJ,SAAS86E,SACZ9nF,IAAd6nF,IACFA,EAAY,CAAE,CAACC,EAAatkF,KAAM,CAAE2I,OAAQ,GAAIiB,SAAUu6E,UAExB3nF,IAAhC6nF,EAAUC,EAAatkF,OACzBqkF,EAAUC,EAAatkF,KAAO,CAAE2I,OAAQ,GAAIiB,SAAUu6E,IAExDE,EAAUC,EAAatkF,KAAK2I,OAAOoB,QAC9BvD,KAAK+9E,2BAA2BH,EAAYE,EAAatkF,KAAMmkF,GAAAA,IAG/DE,CACT,CAKA,2BAAmCD,EAAoCD,G,IAE1BC,EAD3C,MAAMz7E,EAAmB,GAIzB,OAHIy7E,EAAYx6E,WAAau6E,IAAgC,QAAlBC,EAAAA,EAAYz7E,cAAZy7E,IAAAA,OAAAA,EAAAA,EAAoB1kF,SAC7DiJ,EAAOoB,QAAQq6E,EAAYz7E,QAEtBA,CACT,CAKA,0BACErD,EACAk/E,GAEA,MAAMC,EAAgD,CAAC,EACvD,IAAK,MAAMzkF,KAAOsF,EACXA,EAAQtF,GAAK2I,OAAOjJ,SAIzB+kF,EAAqBzkF,GAAOwG,KAAK28E,cAAc79E,EAAQtF,GAAK2I,OAAQ67E,IAGtE,OAAOC,CACT,CAKA,gBAAwBn/E,GACtB,MAAMm1B,EAAgC,CAAC,EACvC,IAAK,MAAMz6B,KAAOsF,EACXA,EAAQtF,GAAK2I,OAAOjJ,SAIzB+6B,EAAaz6B,GAAOsF,EAAQtF,GAAK2I,QAGnC,OAAO8xB,CACT,CAMA,cAAsB9xB,EAAkB67E,GACtC,OAAO77E,EAAO2J,KAAK,GAAGkyE,IACxB,CASA,qBACEE,EACAC,GAEA,IAAIC,EAA8D,CAAC,EAEnE,IAAK,MAAM5kF,KAAO0kF,EAAc,CAC9B,IAAKA,EAAa1kF,GAAKN,OACrB,SAGF,MAAMmlF,GAAkBC,EAAAA,EAAAA,IAAqBJ,EAAa1kF,GAAK,GAAG4J,UAC5Dm7E,EAAkBJ,QAAAA,EAA0BE,EAC5CG,EAAcN,EAAa1kF,GAAK,GAKtC,GAHA4kF,EAAgC5kF,GAAO,CAAE2I,OAAQ,GAAIiB,SAAUm7E,GAG9B,IAA7BL,EAAa1kF,GAAKN,OAAc,C,IAIhCslF,EAHF,MAAMC,EAAez+E,KAAK0+E,iBACxBF,EAAYp7E,SACZo7E,EAAYv7E,MACW,QAAvBu7E,EAAAA,EAAYt7E,mBAAZs7E,IAAAA,EAAAA,EAA2B,IAE7BJ,EAAgC5kF,GAAO,CAAE4J,SAAUi7E,EAAiBl8E,OAAQ,CAACs8E,IAEzEz+E,KAAKqC,QAAQuqD,KAGnB,KAAO,CACL,MAAMzqD,EAASnC,KAAK2+E,kBAAkBnlF,EAAK0kF,EAAcK,G,IAIvDH,EAHF,QAAsDpoF,IAAlDooF,EAAgC5kF,GAAK4J,SACvCg7E,EAAgC5kF,GAAO,CAAE4J,SAAUm7E,EAAiBp8E,eAEzB,QAA3Ci8E,EAAAA,EAAgC5kF,GAAK2I,cAArCi8E,IAAAA,GAAAA,EAA6C76E,QAAQpB,EAEzD,CACF,CAEA,OAAOi8E,CACT,CAKA,kBACE5kF,EACA0kF,EACAK,GAGA,OAAOL,EAAa1kF,GAAKF,KAAKH,I,IACyBA,E,OAArD6G,KAAK0+E,iBAAiBH,EAAiBplF,EAAO8J,MAAyB,QAAlB9J,EAAAA,EAAO+J,mBAAP/J,IAAAA,EAAAA,EAAsB,GAAG,GAElF,CAQA,iBAAyBiK,EAAkCH,EAAeC,GACxE,MAAM07E,GAActU,EAAAA,EAAAA,IAA4BrnE,GAGhD,GAAIjD,KAAKqC,QAAQk5E,cAAe,CAE9Bt4E,GADoBW,EAAAA,EAAAA,IAAyB,CAAEX,QAAOC,gBAClCD,KACtB,CAEA,OAAIA,IAAU0oC,EAAAA,IACR3rC,KAAKqC,QAAQuqD,MAIV3pD,GAGL27E,GACE5+E,KAAKqC,QAAQuqD,MAOViyB,EAAAA,GAAWC,iCAAgCvU,EAAAA,EAAAA,IAAgCtnE,MAEhFE,EAAAA,EAAAA,IAAgBC,IACdpD,KAAKqC,QAAQuqD,MAGViyB,EAAAA,GAAWE,gCAAgC97E,KAGhDjD,KAAKqC,QAAQuqD,MAIViyB,EAAAA,GAAWC,gCAAgC77E,GACpD,CAOA,kBAA0BzJ,EAAa4J,EAAkCojD,EAAkBw4B,EAAY,KACrG,GAAIx4B,IAAa7a,EAAAA,GACf,MAAO,GAAGnyC,IAAM4J,IAAWojD,IAG7B,MAAMi4B,EAAe,GAAGjlF,IAAM4J,IAAW47E,IAAYx4B,IAAWw4B,IAKhE,OAJIh/E,KAAKqC,QAAQuqD,MAIV6xB,CACT,CAKA,kBAA0B3/E,GACxB,IAAIk2E,EAAyCl2E,EAAQ3F,QAClDsL,I,IAAO,E,QAAuB,QAAvB,EAAAzE,KAAKqC,QAAQ48E,kBAAb,eAAyB5lF,SAASoL,EAAEjL,QAAQ2J,EAAAA,EAAAA,IAAgBsB,EAAErB,SAAS,IAIjD,YAA5BpD,KAAKqC,QAAQsxB,YACXqhD,EAAgB97E,OAAS,IAC3B87E,EAAkBl2E,GAItB,MAAMogF,EAAgBlK,EAAgB77E,QACnCA,IAAWuL,EAAAA,EAAAA,IAAoBvL,EAAOiK,aAAcD,EAAAA,EAAAA,IAAgBhK,EAAOiK,YAExE+7E,EAAgBnK,EAAgB77E,QACnCA,IAAWuL,EAAAA,EAAAA,IAAoBvL,EAAOiK,YAAaD,EAAAA,EAAAA,IAAgBhK,EAAOiK,YAEvE4e,EAAgBgzD,EAAgB77E,QACnCA,IAAWimF,EAAAA,EAAAA,IAAoBjmF,EAAOiK,aAAcD,EAAAA,EAAAA,IAAgBhK,EAAOiK,YAExE6e,EAAgB+yD,EAAgB77E,QACnCA,IAAWimF,EAAAA,EAAAA,IAAoBjmF,EAAOiK,YAAaD,EAAAA,EAAAA,IAAgBhK,EAAOiK,YAEvEivB,EAAK2iD,EAAgB77E,QAAQA,GAAWA,EAAOiK,WAAa6B,EAAAA,GAASotB,KACrEC,EAAM0iD,EAAgB77E,QAAQA,GAAWA,EAAOiK,WAAa6B,EAAAA,GAASqtB,MACtEC,EAAKyiD,EAAgB77E,QAAQA,GAAWA,EAAOiK,WAAa6B,EAAAA,GAASstB,KACrEC,EAAMwiD,EAAgB77E,QAAQA,GAAWA,EAAOiK,WAAa6B,EAAAA,GAASutB,MAGtE6sD,GAAqBC,EAAAA,EAAAA,SAAQJ,GAAgB/lF,GAAWA,EAAOK,MAC/D+lF,GAAqBD,EAAAA,EAAAA,SAAQH,GAAgBhmF,GAAWA,EAAOK,MAC/DgmF,GAAqBF,EAAAA,EAAAA,SAAQt9D,GAAgB7oB,GAAWA,EAAOK,MAC/DimF,GAAqBH,EAAAA,EAAAA,SAAQr9D,GAAgB9oB,GAAWA,EAAOK,MAG/DkmF,GAAUJ,EAAAA,EAAAA,SAAQjtD,GAAKl5B,GAAWA,EAAOK,MACzCmmF,GAAWL,EAAAA,EAAAA,SAAQhtD,GAAMn5B,GAAWA,EAAOK,MAC3ComF,GAAUN,EAAAA,EAAAA,SAAQ/sD,GAAKp5B,GAAWA,EAAOK,MACzCqmF,GAAWP,EAAAA,EAAAA,SAAQ9sD,GAAMr5B,GAAWA,EAAOK,MAEjD,MAAO,CACL,CAACyL,EAAAA,GAASC,OAAQm6E,EAClB,CAACp6E,EAAAA,GAASo3E,YAAakD,EACvB,CAACt6E,EAAAA,GAAS2tB,UAAW4sD,EACrB,CAACv6E,EAAAA,GAASq3E,eAAgBmD,EAC1B,CAACx6E,EAAAA,GAASotB,IAAKqtD,EACf,CAACz6E,EAAAA,GAASqtB,KAAMqtD,EAChB,CAAC16E,EAAAA,GAASstB,IAAKqtD,EACf,CAAC36E,EAAAA,GAASutB,KAAMqtD,EAEpB,CA3mBAn/E,WAAAA,CACE5B,EACAuD,EAAmB,CAAEi5E,kBAAkB,EAAMC,eAAe,EAAO5nD,WAAY,UAPjF,OAAQ70B,eAAR,GACA,OAAQuD,eAAR,GACA,OAAQm7E,+BAA+B,MACvC,OAAQC,+BAA+B,KAMrCz9E,KAAKlB,QAAUA,EACfkB,KAAKqC,QAAUA,EACVrC,KAAKqC,QAAQuqD,QAChB5sD,KAAKqC,QAAQuqD,OAAQkzB,EAAAA,EAAAA,MAEzB,E,6EC/DF,MAKa1jF,EAAuB,CAClC2jF,EACAt2E,EACAmiB,MAEAivB,EAAAA,EAAAA,mBAV4B,EAACklC,EAA0Bt2E,IAChD,GAAGmb,EAAAA,GAAc/hB,QAAQ,KAAM,QAAQk9E,KAAQt2E,IASpCu2E,CAAsBD,EAAMt2E,GAASmiB,EAAW,EAGvDvvB,EAAoB,CAC/B4oB,kBAAmB,oBACnB3oB,gBAAiB,kBACjBq0B,IAAK,OASMp0B,EAAsB,CACjC,CAACF,EAAkB4oB,mBAAoB,CAErCuzD,wBAAyB,0BAEzB/J,iBAAkB,mBAElBvpD,2BAA4B,6BAC5B6rD,eAAgB,kBAElB,CAAC10E,EAAkBC,iBAAkB,CACnC2jF,wBAAyB,0BAEzBhX,oBAAqB,sBAErBv1C,oCAAqC,sCAErCiO,kCAAmC,oCAEnCu2B,6BAA8B,+BAC9BhxB,+BAAgC,iCAEhCzB,oBAAqB,sBAErBosB,8BAA+B,gCAC/BruC,mCAAoC,qCAEpChnB,gBAAiB,kBAEjB89D,iBAAkB,mBAElB0C,sBAAuB,wBAEvBjK,0BAA2B,4BAE3ByC,2BAA4B,6BAE5BY,yBAA0B,2BAE1BX,4BAA6B,8BAE7B5gB,4BAA6B,8BAE7BrT,4BAA6B,8BAE7B0+C,mBAAoB,qBACpBpvD,gBAAiB,mBAEnB,CAACz0B,EAAkBs0B,KAAM,CACvBwvD,kBAAmB,oBACnBvvD,6BAA8B,gC,iECvE3B,MAAMzS,EAAiB,CAACiiE,EAAyBC,KAEtD,UAAWD,UAAgBC,EACzB,OAAO,EAET,MAAMC,EAAO,IAAI96E,IAAI46E,GACfG,EAAO,IAAI/6E,IAAI66E,GAGrB,OAAIC,EAAKzrF,OAAS0rF,EAAK1rF,MAIhBoT,IAAAA,QAAUq4E,EAAMC,EAAK,EAGjB5vB,EAAyB,CAACyvB,EAAyBC,WAEnDD,UAAgBC,GAGpBp4E,IAAAA,QAAUm4E,EAAMC,E,uuCCVlB,SAASG,EAAYl5E,GAE1B,OAAOA,EAAMqtD,OAAOz7D,OAAS,IAhBxB,SAAyBoO,EAAem5E,GAC7C,IAAIC,GAAkB,EAUtB,OATah9E,EAAAA,GAAOoQ,MAAMxM,GACrBq5E,QAAQ,CACXC,MAAO,EAAG7kF,WACR,GAAIA,EAAK8vB,KAAO40D,EAEd,OADAC,GAAkB,GACX,CACT,IAGGA,CACT,CAIqCA,CAAgBp5E,EAAOu5E,EAAAA,GAC5D,CAUO,SAASC,EAAwBjhB,GACtC,GATK,SAAuBA,GAC5B,YAAoE7pE,IAA7D6pE,EAAQtC,QAAQn5C,MAAM9c,GAAUk5E,EAAYl5E,EAAM9F,OAC3D,CAOMu/E,CAAclhB,GAChB,OAAO,EAET,GARK,SAAwBA,GAC7B,OAAOA,EAAQtC,QAAQn5C,MAAM9c,GAA8B,YAApBA,EAAMumE,WAC/C,CAMMmT,CAAenhB,GACjB,OAAO,EAET,IAAK,IAAIh3D,EAAI,EAAGA,EAAIg3D,EAAQtC,QAAQrkE,OAAQ2P,IAAK,C,IAC3Cg3D,EAAJ,GAA2B,QAAvBA,EAAAA,EAAQtC,QAAQ10D,GAAGrH,YAAnBq+D,IAAAA,OAAAA,EAAAA,EAAyBxmE,SAAS,iBACpC,OAAO,CAEX,CACA,OAAO,CACT,CAEA,MAAM4nF,EAAuB,0BAChBC,EAAkC55E,GACtCA,EAAMzE,QAAQ,IAAK,wBAAwBo+E,OAGvCE,EAA8B,CAACl3D,EAAsBm3D,KAChE,QAAeprF,IAAXorF,GAA0C,IAAlBA,EAAOloF,OACjC,OAAO+wB,EAAQ3wB,KAAKgO,GAAW,OAC1BA,GAAAA,CACH9F,KAAM8F,EAAM9F,KAAKqB,QAAQ,wBAAwBo+E,MAA0B,SAI/E,IAAII,EAAaD,EAAOt1E,KAAK,KAG7B,MAAmB,OAAfu1E,GAAyC,IAAlBD,EAAOloF,QAChCmoF,EAA4B,OAAfA,EAAsB,GAAKA,EACjCp3D,EAAQ3wB,KAAKgO,GAAW,OAC1BA,GAAAA,CACH9F,KAAM8F,EAAM9F,KAAKqB,QAAQ,wBAAwBo+E,MAA0B,uBAAuBI,YAI/Fp3D,EAAQ3wB,KAAKgO,GAAW,OAC1BA,GAAAA,CACH9F,KAAM8F,EAAM9F,KAAKqB,QAAQ,IAAIy+E,OAAO,GAAGL,IAAwB,KAAMI,M,w5BC7DlE,SAASE,EAAiBC,EAAyCC,GACxE,IAAKD,EACH,OAqMkB,OADaniE,EApMLoiE,GAsMvBpiE,CACHyL,KAAMzL,EAASyL,KAAKxxB,IAAIooF,KAHrB,IAA4BriE,EAxLPmiE,EAAiCC,EAT3DA,EAAU32D,KAAK9nB,SAAS4gE,IACtB,MAAM+d,EAAeH,EAAc12D,KAAK1G,MAAM+G,GAkNlD,SAAuBy2D,EAAmBC,G,IAQrBD,EACAC,EAeCD,EAAAA,EACAC,EAAAA,EAxBpB,GAAID,EAAO13D,QAAU23D,EAAO33D,MAC1B,OAAO,EAET,GAAmB,MAAf03D,EAAOlqF,MAA+B,MAAfmqF,EAAOnqF,MAAgBkqF,EAAOlqF,OAASmqF,EAAOnqF,KACvE,OAAO,EAGT,MAAMoqF,EAAwB,QAAXF,EAAAA,EAAOn+E,YAAPm+E,IAAAA,OAAAA,EAAAA,EAAa7lF,KAC1BgmF,EAAwB,QAAXF,EAAAA,EAAOp+E,YAAPo+E,IAAAA,OAAAA,EAAAA,EAAa9lF,KAEhC,GAAI+lF,IAAeC,EAEjB,OAAO,EAIT,GAAID,IAAel3B,EAAAA,cAAco3B,gBAC/B,OAoBJ,SAAuBJ,EAAmBC,GACxC,MAAMI,EAASL,EAAOj6E,OAAOyc,MAAM3f,GAAMA,EAAE1I,OAAS6lD,EAAAA,UAAU8B,SACxDw+B,EAASL,EAAOl6E,OAAOyc,MAAM3f,GAAMA,EAAE1I,OAAS6lD,EAAAA,UAAU8B,SAC9D,QAAe1tD,IAAXisF,QAAmCjsF,IAAXksF,EAE1B,OAAO,EAGU,MAAfN,EAAOlqF,OACTkqF,EAAOlqF,KAAOmM,KAAKC,UAAUm+E,EAAOl6D,SAEnB,MAAf85D,EAAOnqF,OACTmqF,EAAOnqF,KAAOmM,KAAKC,UAAUo+E,EAAOn6D,SAEtC,OAAO65D,EAAOlqF,OAASmqF,EAAOnqF,IAChC,CAnCWyqF,CAAcP,EAAQC,GAM/B,MAAMO,EAAyB,QAAXR,EAAAA,EAAOn+E,YAAPm+E,IAAAA,GAAmB,QAAnBA,EAAAA,EAAa13B,cAAb03B,IAAAA,OAAAA,EAAAA,EAAqBS,UACnCC,EAAyB,QAAXT,EAAAA,EAAOp+E,YAAPo+E,IAAAA,GAAmB,QAAnBA,EAAAA,EAAa33B,cAAb23B,IAAAA,OAAAA,EAAAA,EAAqBQ,UAEzC,GAAoB,sBAAhBD,GAAuD,sBAAhBE,EACzC,OAAO,EACF,GAAIF,IAAgBE,EAEzB,OAAO,EAIT,OAAO,CACT,CAtP4DC,CAAcp3D,EAAOy4C,KACxE+d,EAqCF,SAAqBa,EAAiB7wD,G,IAmET6wD,EAAwB7wD,EAlE1D,MAAM8wD,EAAgBD,EAAK76E,OAAOyc,MAAM5d,GAAUA,EAAMzK,OAAS6lD,EAAAA,UAAUC,OACrE6gC,EAAcF,EAAK76E,OAAOyc,MAAM5d,GAAUA,EAAMzK,OAAS6lD,EAAAA,UAAU+E,QAAyB,OAAfngD,EAAM9O,OACnFirF,EAAkBhxD,EAAOhqB,OAAOyc,MAAM5d,GAAUA,EAAMzK,OAAS6lD,EAAAA,UAAUC,OACzE+gC,EAAgBjxD,EAAOhqB,OAAOyc,MAAM5d,GAAUA,EAAMzK,OAAS6lD,EAAAA,UAAU+E,QAAyB,OAAfngD,EAAM9O,OAE7F,IAAK+qF,IAAkBE,EAErB,YADAthF,EAAAA,EAAOW,MAAM,IAAIC,MAAM,6C,IAIA0gF,EAAzB,MAAME,EAAiD,QAA9BF,EAAAA,aAAAA,EAAAA,EAAiBxgF,OAAOiL,MAAM,UAA9Bu1E,IAAAA,EAAAA,EAAoC,GACvDG,EAAcroF,KAAKuS,IAAIw1E,EAAK76E,OAAOzO,OAAQy4B,EAAOhqB,OAAOzO,QAE/D,IAAK,IAAI2P,EAAI,EAAGA,EAAIg6E,EAAiB3pF,OAAQ2P,IAAK,CAChD,MAAMk6E,EAAUC,EAAWP,EAAeE,EAAiB95E,GAErDo6E,EAAoBC,EAAeT,EAAeC,EAAaK,EAASJ,EAAiBC,EAAe/5E,GAE9G,IAAK,IAAIpE,EAAI,EAAGA,EAAIq+E,EAAar+E,IAAK,CAEpC,IAAK+9E,EAAK76E,OAAOlD,GACf,SAIF,MAAM0+E,EAAcC,EAAgBZ,EAAK76E,OAAOlD,GAAIktB,EAAOhqB,OAAQlD,GACnE,GAAK0+E,EAIL,GAAIF,EAAmB,CACrB,GAAIT,EAAK76E,OAAOlD,GAAG1I,OAAS6lD,EAAAA,UAAUC,KAEpC,S,IAGkC2gC,EAFzBA,EAAK76E,OAAOlD,GAAG1I,OAAS6lD,EAAAA,UAAU8B,OAE3C8+B,EAAK76E,OAAOlD,GAAGtC,OAAO4gF,IAA0C,QAA9BP,EAAAA,EAAK76E,OAAOlD,GAAGtC,OAAO4gF,UAAtBP,IAAAA,EAAAA,EAAkC,GAAKW,EAAYhhF,OAAO0G,GACnF25E,EAAK76E,OAAOlD,GAAG1I,OAAS6lD,EAAAA,UAAUmD,MAEN,iBAA1Bo+B,EAAYhhF,OAAO0G,GAC5B25E,EAAK76E,OAAOlD,GAAGtC,OAAO4gF,GAAW,KAC5BP,EAAK76E,OAAOlD,GAAGtC,OAAO4gF,GACtBI,EAAYhhF,OAAO0G,IAEU,MAAzBs6E,EAAYhhF,OAAO0G,KAC5B25E,EAAK76E,OAAOlD,GAAGtC,OAAO4gF,GAAWI,EAAYhhF,OAAO0G,IAItD25E,EAAK76E,OAAOlD,GAAGtC,OAAO4gF,GAAWI,EAAYhhF,OAAO0G,EAExD,MAAO,QAA8B7S,IAA1BmtF,EAAYhhF,OAAO0G,GAAkB,C,IAK5C25E,EADuBA,EADzB,GADAA,EAAK76E,OAAOlD,GAAGtC,OAAO+J,OAAO62E,EAAS,EAAGI,EAAYhhF,OAAO0G,IACxDs6E,EAAYE,MACdb,EAAK76E,OAAOlD,GAAG4+E,MAA4B,QAApBb,EAAAA,EAAK76E,OAAOlD,GAAG4+E,aAAfb,IAAAA,EAAAA,EAAwB,IAAIx8E,MAAMw8E,EAAK76E,OAAOlD,GAAGtC,OAAOjJ,OAAS,GAAGtE,KAAK,GAC5E,QAApB4tF,EAAAA,EAAK76E,OAAOlD,GAAG4+E,aAAfb,IAAAA,GAAAA,EAAsBt2E,OAAO62E,EAAS,EAAGI,EAAYE,MAAMx6E,GAE/D,CACF,CACF,C,IAMkC25E,EAAwB7wD,EAJ1D6wD,EAAKtpF,OAASspF,EAAK76E,OAAO,GAAGxF,OAAOjJ,OAEpCspF,EAAK/+E,KAAO,OACP++E,EAAK/+E,MAAI,CACZo4D,MAAOynB,EAAyC,QAAhBd,EAAS,QAATA,EAAAA,EAAK/+E,YAAL++E,IAAAA,OAAAA,EAAAA,EAAW3mB,aAAX2mB,IAAAA,EAAAA,EAAoB,GAAsB,QAAlB7wD,EAAW,QAAXA,EAAAA,EAAOluB,YAAPkuB,IAAAA,OAAAA,EAAAA,EAAakqC,aAAblqC,IAAAA,EAAAA,EAAsB,KAElF,CAtGI4xD,CAAY5B,EAAc/d,GAHxB4d,EAAc12D,KAAKvnB,KAAKm+E,EAAe9d,GAGN,IAGrC,MAAM4f,EAAe,IAAyB,QAApBhC,EAAAA,EAAc7mD,cAAd6mD,IAAAA,EAAAA,EAAwB,MAAyB,QAAhBC,EAAAA,EAAU9mD,cAAV8mD,IAAAA,EAAAA,EAAoB,I,IAc3DD,EAThBgC,EAAatqF,OAAS,IACxBsoF,EAAc7mD,OAAS6oD,GAQzB,MAAMC,EAAiC,QAAnBjC,EAAAA,EAAcx/E,aAAdw/E,IAAAA,EAAAA,EAAuBC,EAAUz/E,M,IAKzBw/E,EAAmCC,EAJ5C,MAAfgC,IACFjC,EAAcx/E,MAAQyhF,GAGxB,MAAMC,EAAiB,IAA2B,QAAtBlC,EAAAA,EAAc5hB,gBAAd4hB,IAAAA,EAAAA,EAA0B,MAA2B,QAAlBC,EAAAA,EAAU7hB,gBAAV6hB,IAAAA,EAAAA,EAAsB,IAKrF,OAJIiC,EAAexqF,OAAS,IAC1BsoF,EAAc5hB,SAAW8jB,GAGpBlC,CACT,CA4EA,SAASwB,EAAWW,EAAkBR,EAAoB3+D,GACxD,MAAMo/D,GAAMC,EAAAA,EAAAA,YAAWV,EAAYhhF,OAAOqiB,GAAQm/D,EAAUxhF,QAC5D,OAAIyhF,EAAM,EACD,EAELT,EAAYhhF,OAAOqiB,KAAWm/D,EAAUxhF,OAAOyhF,IAA6B,MAArBT,EAAYE,OAAoC,MAAnBM,EAAUN,MACzFF,EAAYE,MAAM7+D,GAASm/D,EAAUN,MAAMO,GAAOA,EAAM,EAAIA,EAEjET,EAAYhhF,OAAOqiB,GAASm/D,EAAUxhF,OAAOyhF,GACxCA,EAAM,EAERA,CACT,CAEA,SAASV,EACPT,EACAC,EACAoB,EACAnB,EACAC,EACAhkC,GAEA,MAAMmlC,EAaR,SAA6BJ,EAAkBG,EAAmBX,EAAoBvkC,GACpF,GAAI+kC,EAAUN,OAASF,EAAYE,MACjC,YACkCrtF,IAAhC2tF,EAAUxhF,OAAO2hF,IACjBH,EAAUxhF,OAAO2hF,KAAeX,EAAYhhF,OAAOy8C,SACpB5oD,IAA/B2tF,EAAUN,MAAMS,IAChBH,EAAUN,MAAMS,KAAeX,EAAYE,MAAMzkC,GAGrD,YAAuC5oD,IAAhC2tF,EAAUxhF,OAAO2hF,IAA4BH,EAAUxhF,OAAO2hF,KAAeX,EAAYhhF,OAAOy8C,EACzG,CAvBwBolC,CAAoBvB,EAAeqB,EAAWnB,EAAiB/jC,GACrF,QAAKmlC,IAGc,MAAfrB,GAAwC,MAAjBE,QAKS5sF,IAAlC0sF,EAAYvgF,OAAO2hF,IAA4BpB,EAAYvgF,OAAO2hF,KAAelB,EAAczgF,OAAOy8C,GAE1G,CAcA,SAASwkC,EAAgBa,EAAuBC,EAAuB1/D,GACrE,MAAM2/D,EAAaD,EAAa/qF,QAAQsL,GAAMA,EAAE/M,OAASusF,EAAevsF,OAExE,OAA0B,IAAtBysF,EAAWjrF,OACNirF,EAAW,GAGbD,EAAa1/D,EACtB,CAEA,MAAM4/D,EAAmB,iCAEzB,SAASd,EACPe,EACAC,GAGA,MAAMC,EAAWF,EAAUjgE,MAAMogE,GAAMA,EAAEt4D,cAAgBk4D,IACnDK,EAAaH,EAAYlgE,MAAMogE,GAAMA,EAAEt4D,cAAgBk4D,IAE7D,GAAkB,MAAdK,GAAkC,MAAZF,EACxB,MAAO,CAAC,CAAEthF,MAAOwhF,EAAWxhF,MAAQshF,EAASthF,MAAOipB,YAAak4D,EAAkBn8C,KAAMs8C,EAASt8C,OAIpG,MAAMy8C,EAAaD,QAAAA,EAAcF,EACjC,OAAkB,MAAdG,EACK,CAACA,GAGH,EACT,CAaA,SAAShD,EAAev2D,GACtB,OAAO,OACFA,GAAAA,CACHxjB,OAAQwjB,EAAMxjB,OAAOrO,KAAKkN,GAAkB,OACvCA,GAAAA,CACHrE,OAAQqE,EAAMrE,YAGpB,C,w4BCrLO,SAASwiF,EAAmBvgF,EAA4By7D,GAC7D,MAAM51C,EAAU7lB,EACbwgF,8BAA8B/kB,EAAQtC,QAASsC,EAAQ15D,YACvDhN,QAAQmO,GAAUA,EAAM9F,OACxBlI,KAAKrC,GAAY,OACbA,GAAAA,CACHuK,KAAM0/E,EAA+BjqF,EAAOuK,UAGhD,OAGF,SACE4C,EACAy7D,EACAglB,GAEA,IAAIC,GAAa,EACbC,EAAoC,CAAEj6D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAaE,UAAWt9B,KAAKwrF,EAAAA,EAAAA,MACpFC,EAA4C,KAC5CC,EAAa,IAAIvnD,IACjBwnD,EAAmD,KAEvD,MAAMC,EAAiB,CACrBC,EACAC,EACAlE,EACAmE,KAEA,IAAIC,EAAgBD,EAChBE,GAAW,EAEa,MAAxBR,IACFA,EAAqBnyE,cACrBmyE,EAAuB,MAGzB,MAAMS,EAAO,KACXX,EAAe9rF,MAAQ6rF,EAAaluD,EAAAA,aAAa30B,MAAQ20B,EAAAA,aAAaC,KACtEwuD,EAAWM,KAAKZ,GAChBM,EAAWO,UAAU,EAGvB,GAAId,EAEF,YADAY,IAIF,MAAMG,EAAc,KAClB,MAAMC,EAAYrrF,KAAKg1C,IAAI61C,EAAQC,EAAWnE,EAAOloF,QACjDosF,EAAQlE,EAAOloF,QAAU4sF,GAAa1E,EAAOloF,OAC/CksF,EAAeC,EAAYS,EAAW1E,EAAQoE,GAGhDE,GAAM,EAGFK,EAAS/xB,IACb,IACE,GAAIA,IAuMZ,SAA0BA,G,IAGpBA,EADCA,EACDA,EAFJ,MAAMv9D,EAAUu9D,EAAcr5B,QACM,QAA/Bq5B,EAAAA,EAAcr5B,OAAO,GAAGlkC,eAAxBu9D,IAAAA,EAAAA,EAAmC,IAAI3qD,cACZ,QAA5B2qD,EAAmB,QAAnBA,EAAAA,EAAchyD,aAAdgyD,IAAAA,OAAAA,EAAAA,EAAqBv9D,eAArBu9D,IAAAA,EAAAA,EAAgC,GACpC,GAAIv9D,EAAQ4C,SAAS,WACnB,OAAO,EACF,GAAI5C,EAAQ4C,SAAS,eAE1B,MAAM,IAAI4I,MAAMxL,GAElB,OAAO,CACT,CAlN8BuvF,CAAiBhyB,GACrC,OAAO,CAEX,CAAE,MAAO/vD,G,IAGE+vD,EACCA,EACAA,EAFDA,EACCA,EACAA,EAGV,OAPA3yD,EAAAA,EAAOW,MAAMiC,EAAG,CACdD,IAAK,uBACLhC,MAAoC,QAA7BgyD,EAAAA,SAAoB,QAApBA,EAAAA,EAAehyD,aAAfgyD,IAAAA,OAAAA,EAAAA,EAAsBv9D,eAAtBu9D,IAAAA,EAAAA,EAAiC,GACxCr5B,OAA0D,QAAlDq5B,EAAAA,SAAqB,QAArBA,EAAAA,EAAer5B,cAAfq5B,IAAAA,OAAAA,EAAAA,EAAuB16D,KAAK2K,GAAMA,EAAExN,UAASqV,KAAK,cAAlDkoD,IAAAA,EAAAA,EAA4D,GACpEiyB,OAAsC,QAA9BjyB,EAAAA,SAAuB,QAAvBA,EAAAA,EAAe4L,gBAAf5L,IAAAA,OAAAA,EAAAA,EAAyBloD,KAAK,YAA9BkoD,IAAAA,EAAAA,EAAsC,KAEhD8wB,GAAa,GACN,CACT,CAEA,GAAIS,EAAY,EAKd,OAHA34B,EAAM,qCADN24B,EAAY9qF,KAAKyrF,MAAMzrF,KAAK0rF,KAAKZ,OAEjCE,GAAW,EACXL,EAAeC,EAAYC,EAAOlE,EAAQmE,IACnC,E,IAGOL,EAAhB,MAAMkB,EAAyBd,QAAfJ,EAAAA,EAAWrjF,IAAIyjF,UAAfJ,IAAAA,EAAAA,EAAyB,EACzC,OAAIkB,EAAU,GACZtB,GAAa,GACN,IAGTI,EAAWrnD,IAAIynD,EAAOc,EAAU,GAEhCjB,EAAah3E,YAAW,KACtB9M,EAAAA,EAAOqN,KAAK,YAAY42E,MAAUc,EAAU,MAC5ChB,EAAeC,EAAYC,EAAOlE,EAAQmE,GAC1CJ,EAAa,IAAI,GAChB,KAAO1qF,KAAK4rF,IAAI,EAAGD,IAEtBX,GAAW,GAEJ,EAAI,EAGPa,EAmJV,SAA4BlF,EAAkBj6E,EAAeo+E,GAC3D,GAAIp+E,IAAUi6E,EAAOloF,OACnB,MAAO,EAAE,GAEX,OAAOkoF,EAAOh0E,MAAMjG,EAAOA,EAAQo+E,EACrC,CAxJ0BgB,CAAmBnF,EAAQkE,EAAOC,GACxD34B,EAAM,YAAY05B,EAAcx6E,KAAK,SACrC,MAAM06E,EAAa,OAAK3mB,GAAAA,CAAStC,QAAS4jB,EAA4B0D,EAAkByB,KAEpFzmB,EAAQxC,YACVmpB,EAAWnpB,UAAY,GAAGwC,EAAQxC,mBAAmBioB,KAASC,KAIhEN,EAAuB7gF,EAAWg1B,SAASotD,GAAY31E,UAAU,CAC/D80E,KAAOc,I,IACAA,IAAsB,QAAtBA,EAAAA,EAAgB9rD,cAAhB8rD,IAAAA,EAAAA,EAA0B,IAAIvtF,OAAS,GAA8B,MAAzButF,EAAgBzkF,QAC3D+jF,EAAMU,KAIZjB,EA8HR,SAA4BF,EAAeC,EAAmBnE,GAC5D,MAAMsF,EAAY,GAClB,OAAOjsF,KAAKg1C,IAAI81C,EAAW9qF,KAAKuS,IAAIvS,KAAKyrF,OAAO9E,EAASkE,GAASoB,GAAY,GAChF,CAjIwBC,CACdrB,EAAQC,EAyFlB,SAAqClmE,EAA6BunE,G,IAMLvnE,EAAAA,EAL3D,IAAKA,EAASyL,KAAK5xB,OAEjB,OAAO0tF,EAAc,EAGvB,MAAMC,EAA0E,QAArBxnE,EAAAA,EAASyL,KAAK,GAAGrnB,YAAjB4b,IAAAA,GAA4B,QAA5BA,EAAAA,EAAuBw8C,aAAvBx8C,IAAAA,OAAAA,EAAAA,EAA8B+E,MACtF+3C,GAAmD,uBAArBA,EAAKjwC,cAGtC,GAAI26D,EAAmB,CACrB,MAAMC,EAAgBrsF,KAAKC,MAAMmsF,EAAkB5jF,OAGnD,OAFA2pD,EAAM,GAAGi6B,EAAkB5jF,SAEvB6jF,GAAiB,EACZrsF,KAAKyrF,MAAoB,IAAdU,GACTE,EAAgB,EAClBrsF,KAAKy0D,KAAmB,IAAd03B,GAIC,IAAhBA,EACKA,EACEE,EAAgB,GAClBrsF,KAAKy0D,KAAmB,GAAd03B,GAEVnsF,KAAKyrF,MAAMU,EAAc,EAEpC,CAEA,OAAOA,CACT,CAvHUG,CAA4BN,EAAiBlB,GAC7CnE,EAAOloF,QAELssF,IAAkBD,GACpB34B,EAAM,kBAAkB44B,KAE1BT,EAAiBxD,EAAiBwD,EAAgB0B,GAAgB,EAEpEb,SAAU,KACJH,IAIAV,EAAej6D,KAAK5xB,QACtBmsF,EAAWM,KAAKZ,GAElBc,IAAa,EAEf7jF,MAAQA,IACNX,EAAAA,EAAOW,MAAMA,EAAO,CAAEgC,IAAK,oBAC3BqhF,EAAWM,KAAKZ,GACZgB,KAGJF,GAAa,GAEf,EAGEmB,EAAsB3B,IAC1BJ,EAAuB7gF,EAAWkD,MAAMu4D,GAAShvD,UAAU,CACzD80E,KAAOc,IACL1B,EAAiB0B,CAAe,EAElCb,SAAU,KACRP,EAAWM,KAAKZ,EAAe,EAEjC/iF,MAAQA,IACNX,EAAAA,EAAOW,MAAMA,EAAO,CAAEgC,IAAK,0CAC3BqhF,EAAWrjF,MAAM+iF,EAAe,GAElC,EAGE1lE,EAAW,IAAI4nE,EAAAA,YAA+B5B,IAClD,MAAM6B,EFnI+B,CAAC5/E,IACxC,MAAM4/E,GAAWC,EAAAA,EAAAA,IAAkB7/E,EAAO,CAACuxB,EAAAA,KAC3C,OAAIquD,EAAShuF,OAAS,EACboO,EACJxM,UAAUosF,EAAS,GAAGhvE,KAAMgvE,EAAS,GAAGlvE,IACxCnV,QAAQ,wBAAwBo+E,MAA0B,KAExD,EAAE,EE4HUmG,CAA0BvC,EAAiB,GAAGrjF,MAE/D,OAAK6lF,EAAAA,EAAAA,IAAaH,IAMlB9iF,EAAWlC,iBACRolF,iBAAiB,mBAAoB,CACpCloF,UAAWygE,EAAQ94D,MACnB0vD,eAAgBywB,QAAsBlxF,IAEvC0oB,MAAMvc,IACL,MAAMi/E,EAASj/E,EAAO7I,KAAK2J,GAAU0G,SAAS1G,EAAO,MAChDm+E,GAAWA,EAAOloF,QAIrBkoF,EAAO37E,MAAK,CAACzO,EAAG0O,IAAMA,EAAI1O,IAC1B41D,EAAM,YAAYw0B,EAAOt1E,KAAK,gBAC9Bs5E,EAAeC,EAAY,EAAGjE,EAsExC,SAA6BA,GAC3B,OAAO3mF,KAAKyrF,MAAMzrF,KAAK0rF,KAAK/E,EAAOloF,QACrC,CAxEgDquF,CAAoBnG,MAL1D//E,EAAAA,EAAOC,KAAK,2DACZ0lF,EAAmB3B,GAKrB,IAEDmC,OAAOvjF,IACN5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,sDACvBgjF,EAAmB3B,EAAW,IAE3B,KACLP,GAAa,EACTK,GACFj3E,aAAai3E,GAEa,MAAxBF,IACFA,EAAqBnyE,cACrBmyE,EAAuB,KACzB,IAjCAr4B,EAAM,8BAA8Bs6B,UACpC7B,EAAWO,WAiCZ,IAGH,OAAOvmE,CACT,CAnMSooE,CAA0BrjF,EAAYy7D,EAAS51C,EACxD,CAsQsBza,QAAQhP,aAAaI,QAAQ,GAAGgkB,EAAAA,8BACtD,SAASgoC,EAAMn2D,GAKf,C,4tCCzSO,MAAMixF,EAAsB,sBAsCtBC,EAA6B,OAE7BC,EAAmC,cAEnCC,EAA8B,SAE9BC,EAA4B,OAElC,MAAMC,UAA8BC,EAAAA,GAKzC1gF,KAAAA,CAAMu4D,GACJ,OAAO,IAAIonB,EAAAA,YAA+B5B,I,IACnCxlB,EAAL,KAAuB,QAAlBA,EAAAA,EAAQ15D,kBAAR05D,IAAAA,OAAAA,EAAAA,EAAoBooB,eACvB,MAAM,IAAIhmF,MAAM,qC,YAGlBL,EAAAA,EAAAA,oBACGC,KAAIC,EAAAA,EAAAA,IAAc+9D,EAAQ15D,WAAW8hF,cAAcC,YACnDxpE,KAAI,W,MAAC,aAAOC,G,IASOkhD,EARlB,KAAMlhD,aAAc5c,EAAAA,uBAA4B,sBAAuB4c,GAAS,uBAAwBA,GACtG,MAAM,IAAI1c,MAAM,uBAIlB,MAAMkmF,EAASxpE,EAGfkhD,EAAQtC,QAAyB,QAAfsC,EAAAA,EAAQtC,eAARsC,IAAAA,OAAAA,EAAAA,EAAiBvmE,KAAKrC,IACtCA,EAAOmN,WAAa+jF,EACblxF,KAGT,MAAMmxF,EAAa,IAAI5iF,IAKvB,GAJAq6D,EAAQtC,QAAQv6D,SAAS/L,I,IACRA,EAAfmxF,EAAWjyE,IAAmB,QAAflf,EAAAA,EAAOoxF,gBAAPpxF,IAAAA,EAAAA,EAAmB,GAAG,IAGf,IAApBmxF,EAAWvzF,KACb,MAAM,IAAIoN,MAAM,0DAKlB,OAFoB49D,EAAQtC,QAAQ,GAAG8qB,UAGrC,IAAK,eACG,EAAKC,UAAUzoB,EAASsoB,EAAQ9C,GACtC,MAEF,IAAK,iBACG,EAAKkD,YAAY1oB,EAASsoB,EAAQ9C,GACxC,MAEF,IAAK,wBACG,EAAKmD,kBAAkB3oB,EAASsoB,EAAQ9C,GAC9C,MAEF,IAAK,wBACG,EAAKoD,kBAAkB5oB,EAASsoB,EAAQ9C,GAC9C,MAEF,IAAK,eACG,EAAK3O,UAAU7W,EAASsoB,EAAQ9C,GACtC,MAEF,QACE,EAAKt6D,QAAQ80C,EAASsoB,EAAQ9C,GAIpC,I,gBAnDa1mE,G,gCAAR,G,GAqDX,CAEQoM,OAAAA,CAAQ80C,EAAgClhD,EAAoB0mE,GAClE,MAAMqD,EAAkBhrE,EAAAA,OAAOC,eAAegrE,0BAExCC,EAAiB,OAClB/oB,GAAAA,CACHtC,QAAS5+C,EAAGimE,8BAA8B/kB,EAAQtC,QAASsC,EAAQ15D,YAAY7M,KAAKrC,GAAY,OAC3FA,GAAAA,CACHoxF,cAAUryF,EACVwL,MAAMqnF,EAAAA,EAAAA,IAAuB5xF,EAAOuK,YAWxC,QAL8C,IAA5Cs/E,EAAwB8H,IAA8BF,EAElD/D,EAAmBhmE,EAAIiqE,GADvBjqE,EAAGrX,MAAMshF,IAEJ/3E,UAAUw0E,GAEdA,CACT,CAEckD,WAAAA,CACZ1oB,EACAlhD,EACA0mE,G,kBAHF,eAKE,MAAM9nB,EAAUsC,EAAQtC,QAAQpkE,QAAQlC,GACX,aAApBA,EAAOoxF,WAGhB,GAAuB,IAAnB9qB,EAAQrkE,OACV,MAAM,IAAI+I,MAAM,iDAElB,MAAM,mBAAE6mF,EAAkB,WAAE/uD,GAAe,EAAKpgB,YAAYgF,EAAI4+C,EAASsC,GACzEwlB,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAasvC,UAEhD,I,IAUiBrG,EATf,MAAMkpB,EAAapqE,EAAGjX,YACpB,WACA,CACEJ,MAAOyyB,EACP5yB,MAAO04D,EAAQ94D,MAAMmR,KAAK8wE,MAAM/uB,cAChC7yD,IAAKy4D,EAAQ94D,MAAMiR,GAAGgxE,MAAM/uB,cAC5B8Z,KAAMlU,EAAQloD,UAEhB,CACE0lD,UAA4B,QAAjBwC,EAAAA,EAAQxC,iBAARwC,IAAAA,EAAAA,EAAqB,WAChCopB,QAAS,CACP,eAAgB,UAAUrpF,EAAAA,QAI1Byf,QAAmC0pE,EACnCG,EAAe7pE,aAAAA,EAAAA,EAAUyL,KAE/B,IAAIq+D,GAAYpwC,IACZqwC,EAAW,E,IAGbF,EADF,MAAMz9D,EA8CJ,QA7CAy9D,EAAAA,aAAAA,EAAAA,EAAc5vF,KAAKM,IACjB,MAAMyvF,EAAuB,GACvBC,EAAwB,GAC9B,IAAI95C,EAAM,EAkBV,OAjBA51C,EAAQ2vF,QAAQvmF,SAAQ,EAAE6+C,EAAMmZ,MAC9BquB,EAAW9lF,KAAY,IAAPs+C,GAChBynC,EAAY/lF,KAAKy3D,GACbA,EAAQmuB,IACVA,EAAWnuB,GAETA,EAAQouB,IACVA,EAAWpuB,GAETA,EAAQmuB,IACVA,EAAWnuB,GAETA,EAAQouB,IACVA,EAAWpuB,GAEbxrB,GAAOwrB,CAAK,KAEPwuB,EAAAA,EAAAA,iBAAgB,CACrBt/D,MAAO4+D,EAAmB5+D,MAC1BxyB,KAAMkC,EAAQA,QACd+N,OAAQ,CACN,CACEjQ,KAAM,OACNqE,KAAM6lD,EAAAA,UAAUC,KAChB1/C,OAAQknF,EACR3rE,OAAQ,CAAC,GAEX,CACEhmB,KAAMkC,EAAQA,QACdmC,KAAM6lD,EAAAA,UAAU8B,OAChBvhD,OAAQmnF,EACR5rE,OAAQ,CAAC,IAGbja,KAAM,CACJgmF,2BAA4B,QAC5Bv/B,OAAQ,CACN1a,SAGJ,WA5CJ05C,IAAAA,EAAAA,EA6CM,GAERz9D,EAAOhmB,MAAK,CAACzO,EAAG0O,K,IAAOA,EAAAA,EAAkC1O,EAAAA,E,OAA5B,QAAN0O,EAAAA,EAAEjC,YAAFiC,IAAAA,GAAc,QAAdA,EAAAA,EAAQwkD,cAARxkD,IAAAA,OAAAA,EAAAA,EAAgB8pC,MAAwB,QAANx4C,EAAAA,EAAEyM,YAAFzM,IAAAA,GAAc,QAAdA,EAAAA,EAAQkzD,cAARlzD,IAAAA,OAAAA,EAAAA,EAAgBw4C,IAAG,IAC5E61C,EAAWM,KAAK,CAAE76D,KAAMW,EAAQxyB,MAAO29B,EAAAA,aAAaC,MACtD,CAAE,MAAO5yB,GACPohF,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAa30B,OAClD,CAEA,OAAOojF,CACT,GA5FA,E,CA8FQ1rE,WAAAA,CACNgF,EACA4+C,EACAsC,GAEA,MAAM6pB,EAAsB/qE,EAAGimE,8BAA8BrnB,EAASsC,EAAQ15D,YAC9E,IAAKujF,EAAoBxwF,OACvB,MAAM,IAAI+I,MAAM,2CAElB,MAAM6mF,EAAqBY,EAAoB,GAE/C,MAAO,CAAEZ,qBAAoB/uD,YADV8uD,EAAAA,EAAAA,IAAuBC,EAAmBtnF,MAE/D,CAEcgnF,iBAAAA,CACZ3oB,EACAlhD,EACA0mE,G,kBAHF,eAKE,MAAM9nB,EAAUsC,EAAQtC,QAAQpkE,QAAQlC,GACX,oBAApBA,EAAOoxF,WAGhB,GAAuB,IAAnB9qB,EAAQrkE,OACV,MAAM,IAAI+I,MAAM,wDAGlB,IAAI,mBAAE6mF,EAAkB,WAAE/uD,GAAe,EAAKpgB,YAAYgF,EAAI4+C,EAASsC,GAGpD,OAAf9lC,IACFA,EAAa,IAGfsrD,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAasvC,UAEhD,I,IAgBiB7mD,EAAAA,EAPAwgD,EARf,MAeM93C,EAAgC,QAAvB1I,SAfQV,EAAGjX,YACxB,kBACA,CACEJ,MAAOyyB,EACP5yB,MAAO04D,EAAQ94D,MAAMmR,KAAK8wE,MAAM/uB,cAChC7yD,IAAKy4D,EAAQ94D,MAAMiR,GAAGgxE,MAAM/uB,eAE9B,CACEoD,UAA4B,QAAjBwC,EAAAA,EAAQxC,iBAARwC,IAAAA,EAAAA,EAAqB,kBAChCopB,QAAS,CACP,eAAgB,UAAUrpF,EAAAA,SAKRujC,sBAAT9jB,IAAAA,GAC6C,QAD7CA,EAAAA,EACXlmB,QAAQ0E,IAAWoI,EAAAA,GAAiB5M,SAASwE,EAAMA,gBADxCwhB,IAAAA,OAAAA,EAAAA,EAEX5Z,MAAK,CAACzO,EAAG0O,KAAMikF,EAAAA,EAAAA,IAAwB3yF,EAAG0O,KAExCkkF,EAA6C7hE,aAAAA,EAAAA,EAAQzuB,KAAKuE,IACvD,CACLnG,KAAMmG,EAAMA,MACZsE,OAAQ,CAACtE,EAAM+/B,iBAIb8C,GAAY8oD,EAAAA,EAAAA,iBAAgB,CAChCt/D,MAAO4+D,EAAmB5+D,MAC1BviB,OAAQiiF,QAAAA,EAAuB,KAGjCvE,EAAWM,KAAK,CAAE76D,KAAM,CAAC4V,GAAYznC,MAAO29B,EAAAA,aAAaC,MAC3D,CAAE,MAAO5yB,GACPohF,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAa30B,OAClD,CAEA,OAAOojF,CACT,GA5DA,E,CA8DcoD,iBAAAA,CACZ5oB,EACAlhD,EACA0mE,G,kBAHF,eAKE,MAAM9nB,EAAUsC,EAAQtC,QAAQpkE,QAAQlC,GACX,oBAApBA,EAAOoxF,WAGhB,GAAuB,IAAnB9qB,EAAQrkE,OACV,MAAM,IAAI+I,MAAM,wDAGlBojF,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAasvC,UAEhD,MAAM,mBAAE4iB,EAAkB,WAAE/uD,GAAe,EAAKpgB,YAAYgF,EAAI4+C,EAASsC,GAEzE,I,IA0BExgD,EAjBewgD,EARf,MAAMxgD,QAAiBV,EAAGjX,YACxB,kBACA,CACEJ,MAAOyyB,EACP5yB,MAAO04D,EAAQ94D,MAAMmR,KAAK8wE,MAAM/uB,cAChC7yD,IAAKy4D,EAAQ94D,MAAMiR,GAAGgxE,MAAM/uB,eAE9B,CACEoD,UAA4B,QAAjBwC,EAAAA,EAAQxC,iBAARwC,IAAAA,EAAAA,EAAqB,kBAChCopB,QAAS,CACP,eAAgB,UAAUrpF,EAAAA,QAK1BiqF,EAAmB,CAAEnyF,KAAMiwF,EAA4B5rF,KAAM6lD,EAAAA,UAAU+E,OAAQxkD,OAAQ,GAAIub,OAAQ,CAAC,GACpGosE,EAA0B,CAC9BpyF,KAAMkwF,EACN7rF,KAAM6lD,EAAAA,UAAU8B,OAChBvhD,OAAQ,GACRub,OAAQ,CAAC,GAELqsE,EAAqB,CAAEryF,KAAMmwF,EAA6B9rF,KAAM6lD,EAAAA,UAAU+E,OAAQxkD,OAAQ,GAAIub,OAAQ,CAAC,GACvGssE,EAAmB,CAAEtyF,KAAMowF,EAA2B/rF,KAAM6lD,EAAAA,UAAU+E,OAAQxkD,OAAQ,GAAIub,OAAQ,CAAC,GAE1F,QAAf2B,EAAAA,EAAS1X,cAAT0X,IAAAA,GAAAA,EAAiBrc,SAASwD,I,IAIEA,EAHrByjF,EAAAA,GAAiB5wF,SAASmN,EAAM3I,SACnCgsF,EAAU1nF,OAAOoB,KAAKiD,EAAM3I,OAC5BisF,EAAiB3nF,OAAOoB,KAAKiD,EAAMo3B,aACnCmsD,EAAY5nF,OAAOoB,MAAkB,QAAbiD,EAAAA,EAAMG,eAANH,IAAAA,OAAAA,EAAAA,EAAetN,QAASsN,EAAMG,QAAQmF,KAAK,MAAQ,sBAC3Ek+E,EAAU7nF,OAAOoB,KAAKiD,EAAMzK,MAC9B,IAGF,MAAM2kC,GAAY8oD,EAAAA,EAAAA,iBAAgB,CAChCt/D,MAAO4+D,EAAmB5+D,MAC1BviB,OAAQ,CAACkiF,EAAWC,EAAkBC,EAAaC,KAGrD3E,EAAWM,KAAK,CAAE76D,KAAM,CAAC4V,GAAYznC,MAAO29B,EAAAA,aAAaC,MAC3D,CAAE,MAAO5yB,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,0BACvBqhF,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAa30B,OAClD,CAEA,OAAOojF,CACT,GAhEA,E,CAmEciD,SAAAA,CACZzoB,EACAlhD,EACA0mE,G,OAHF,eAKE,GAA+B,IAA3BxlB,EAAQtC,QAAQrkE,OAClB,MAAM,IAAI+I,MAAM,+CAGlB,MAAMhL,EAAS4oE,EAAQtC,QAAQ,GACzB2sB,EAAejzF,EAAOizF,aAC5B,IAAKA,EACH,MAAM,IAAIjoF,MAAM,iDAGlB,MAAMynF,EAAsB/qE,EAAGimE,8BAA8B,CAAC3tF,GAAS4oE,EAAQ15D,YACzE4zB,GAAa8uD,EAAAA,EAAAA,IAAuBa,EAAoB,GAAGloF,KAAKqB,QAAQ,OAAQ,OAEtFwiF,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAasvC,UAEhD,I,IA4BgBikB,EAIgBA,EAtBftqB,EATf,MAAMsqB,QAA4CxrE,EAAGjX,YACnD,eACA,CACEJ,MAAOyyB,EACP5yB,MAAO04D,EAAQ94D,MAAMmR,KAAK8wE,MAAM/uB,cAChC7yD,IAAKy4D,EAAQ94D,MAAMiR,GAAGgxE,MAAM/uB,cAC5B33D,MAAO,KAET,CACE+6D,UAA4B,QAAjBwC,EAAAA,EAAQxC,iBAARwC,IAAAA,EAAAA,EAAqB,SAChCopB,QAAS,CACP,eAAgB,UAAUrpF,EAAAA,QAIhCuqF,SAAAA,EAAgBr/D,KAAK9lB,OAAOS,MAAK,CAAC2kF,EAAmBC,KACnD,MAAMC,EAA4BF,EAAInnF,MAAM,GACtCsnF,EAA4BF,EAAIpnF,MAAM,GAC5C,OAAOklC,OAAOoiD,GAAgBpiD,OAAOmiD,EAAa,IAIpD,MAAME,GAAKhB,EAAAA,EAAAA,iBAAgB,CACzB7hF,OAAQ,CACN,CAEEjQ,KAAMisC,EAAAA,GACNxhC,OAAQgoF,SAA2B,QAA3BA,EAAAA,EAAgBr/D,KAAK9lB,cAArBmlF,IAAAA,OAAAA,EAAAA,EAA6B7wF,KAAKyK,GACjCA,EAAE0mF,OAAOP,MAGpB,CAAExyF,KAAM,SAAUyK,OAAQgoF,SAA2B,QAA3BA,EAAAA,EAAgBr/D,KAAK9lB,cAArBmlF,IAAAA,OAAAA,EAAAA,EAA6B7wF,KAAKyK,GAAMokC,OAAOpkC,EAAEd,MAAM,UAIrFoiF,EAAWM,KAAK,CAAE76D,KAAM,CAAC0/D,IAC3B,CAAE,MAAOvmF,GACP5C,EAAAA,EAAOW,MAAMiC,GACbohF,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAa30B,OAClD,CAIA,OAFAojF,EAAWO,WAEJP,CACT,GAjEA,E,CAmEc3O,SAAAA,CACZ7W,EACAlhD,EACA0mE,G,OAHF,eAKE,GAA+B,IAA3BxlB,EAAQtC,QAAQrkE,OAClB,MAAM,IAAI+I,MAAM,+CAGlB,I,IAQiB49D,EAPf,MAAM6qB,QAAuC/rE,EAAGjX,YAC9C,SACA,CACEP,MAAO04D,EAAQ94D,MAAMmR,KAAK8wE,MAAM/uB,cAChC7yD,IAAKy4D,EAAQ94D,MAAMiR,GAAGgxE,MAAM/uB,eAE9B,CACEoD,UAA4B,QAAjBwC,EAAAA,EAAQxC,iBAARwC,IAAAA,EAAAA,EAAqB,SAChCopB,QAAS,CACP,eAAgB,UAAUrpF,EAAAA,QAM1B4qF,GAAKhB,EAAAA,EAAAA,iBAAgB,CACzB7hF,OAAQ,CAAC,CAAEjQ,KAAM,SAAUyK,OAAQuoF,aAAAA,EAAAA,EAAgB5/D,SAErDu6D,EAAWM,KAAK,CAAE76D,KAAM,CAAC0/D,GAAKvxF,MAAO29B,EAAAA,aAAaC,MACpD,CAAE,MAAO5yB,GACPohF,EAAWM,KAAK,CAAE76D,KAAM,GAAI7xB,MAAO29B,EAAAA,aAAa30B,OAClD,CAIA,OAFAojF,EAAWO,WAEJP,CACT,GApCA,E,CAsCAsF,cAAAA,GACE,OAAOpjF,QAAQC,QAAQ,CAAEqzB,OAAQ,UAAWpkC,QAAS,yBAA0BpB,MAAO,WACxF,CAjbAqL,WAAAA,CAAYic,EAAkB0P,GAC5B1rB,MAAMgc,EAAU0P,EAClB,EAwbF,QANA,WACEwyD,EAAAA,GAAW+L,0BAA0B,CACnChjB,WAAY,IAAImgB,EAAsB,kBAAmBL,IAE7D,C,mFCreO,SAASpwB,EAAkB71D,EAAuBopF,EAA4BC,GAAe,GAClG,MAAMlvE,GAAiB9F,EAAAA,EAAAA,IAAkBrU,GAEzC,IAAIspF,EAA0B,GAC1BD,GAEED,IAAuBpkF,EAAAA,KACzBskF,EAA0B,KAAKtkF,EAAAA,YAInC,MAAMgQ,EAAemF,EAAe3iB,MAAM6F,QACpC4E,GAASw4B,EAAAA,EAAAA,IAA2BtgB,GAG1C,GAAInF,EAAavd,OAAQ,CACvB,GAAe,UAAXwK,EACF,MAAO,wBAAwBkqE,EAAAA,OAAoBmd,KAA2BC,EAAAA,MAAqBnsB,EAAAA,MAAqBosB,EAAAA,MAAyB7tE,EAAAA,MAAqB8tE,EAAAA,sBAAmCL,KAE3M,GAAe,SAAXnnF,EACF,MAAO,wBAAwBkqE,EAAAA,OAAoBmd,KAA2BC,EAAAA,MAAqBnsB,EAAAA,MAAqBosB,EAAAA,MAAyBE,EAAAA,MAAoBD,EAAAA,sBAAmCL,KAE1M,GAAe,WAAXnnF,EACF,MAAO,wBAAwBkqE,EAAAA,OAAoBmd,KAA2BC,EAAAA,MAAqBnsB,EAAAA,MAAqBosB,EAAAA,MAAyBG,EAAAA,MAAoBF,EAAAA,sBAAmCL,IAE5M,CACA,MAAO,wBAAwBjd,EAAAA,OAAoBmd,KAA2BC,EAAAA,MAAqBnsB,EAAAA,MAAqBosB,EAAAA,MAAyBC,EAAAA,sBAAmCL,IACtL,CAMO,SAASzxE,EAA6B1X,GAC3C,OAAQA,GACN,KAAKkB,EAAAA,GACH,OAAOyoF,EAAAA,GACT,KAAK3kF,EAAAA,GACH,OAAO4kF,EAAAA,GACT,QACE,MAAMtpF,EAAQ,IAAIC,MAAM,0BAA0BP,KAKlD,MAJAL,EAAAA,EAAOW,MAAMA,EAAO,CAClBN,eACAsC,IAAK,wDAAwDtC,MAEzDM,EAEZ,C,yGCpEO,SAASupF,EAAkB9pF,GAEhC,MAAMrE,EAAavE,EAAAA,GAAWwE,YAAYoE,EAAUnE,EAAAA,GACXzE,EAAAA,GAAW4Y,eAClDrU,GACCiU,GAAMA,aAAay8D,EAAAA,IAEW9qE,SAASwhF,GAAMA,EAAEgH,gBAIpB3yF,EAAAA,GAAWy7B,gBAAgBl3B,EAAYiY,EAAAA,GAC/CrS,SAASwhF,GAAMA,EAAEgH,eACzC,CAEO,SAASx4D,EAAetK,EAAmBC,EAAoBlnB,GACpE,MAAMkd,GAAK5Z,EAAAA,EAAAA,IAAsBtD,GAAU4D,YAC3ComF,EAAAA,EAAAA,IAAiC9sE,EAAI+J,EAAWC,GAChD4iE,EAAkB9pF,EACpB,CAEO,SAASwsE,EAAoBvlD,EAAmBC,EAAoBlnB,GACzE,MAAMkd,GAAK5Z,EAAAA,EAAAA,IAAsBtD,GAAU4D,YAC3CqmF,EAAAA,EAAAA,IAA6B/sE,EAAI+J,EAAWC,GAC5C4iE,EAAkB9pF,EACpB,C,qOCkBA,MAAMkqF,EAAgBz2D,IACpB,GAAIA,EAAQ,CAEV,GADyB7nB,OAAOlL,OAAOmtC,EAAAA,WAC5Bj2C,SAAS67B,GAClB,OAAOA,CAEX,CACgB,EAOX,SAAS02D,EAAwBC,GACtC,OAAQA,GACN,IAAK,OACH,MAAO,OACT,IAAK,SACH,MAAO,SACT,IAAK,GAEL,IAAK,qBACH,MAAO,qBACT,QACE,MAAO,QAEb,CAEO,SAASC,EAA2BC,GACzC,OAAQA,GACN,IAAK,MACL,IAAK,QACL,IAAK,WACL,IAAK,UACL,IAAK,QACH,OAAOA,EACT,QACE,MAAO,SAEb,CAEO,SAASztD,EAAuB33B,G,IACVA,EAA3B,MAAMqlF,EAAa,IAAIxmF,IAAkC,QAA9BmB,EAAAA,aAAAA,EAAAA,EAASrN,KAAKgK,GAAMA,EAAEgC,oBAAtBqB,IAAAA,EAAAA,EAAqC,IAGhEqlF,EAAW5uD,OAAO,sBAGlB,MAAM6uD,EAAejmF,MAAMkS,KAAK8zE,GAEhC,OAA4B,IAAxBC,EAAa/yF,OACR0yF,EAAwBK,EAAa,IAItB,IAApBD,EAAWn3F,KACN,qBAIF,OACT,CAEO,SAASk+B,EAAkB3G,EAAmB3qB,G,IAOasoF,EANhE,MAAMtwD,GAAsBC,EAAAA,EAAAA,IAAuBj4B,GAC7CsoF,EAAyCtwD,aAAAA,EAAAA,EAAqB9xB,OAAO,GACrEukF,EAAwCzyD,aAAAA,EAAAA,EAAqB9xB,OAAO,GAEpE6c,EAAQ0nE,aAAAA,EAAAA,EAAY/pF,OAAOkN,QAAQ+c,G,IAEuB29D,EADhE,MAAMrmF,OACM1N,IAAVwuB,IAAkC,IAAXA,EAAeonE,EAAoD,QAA5B7B,EAAAA,SAAmB,QAAnBA,EAAAA,EAAa5nF,cAAb4nF,IAAAA,OAAAA,EAAAA,EAAsBvlE,UAAtBulE,IAAAA,EAAAA,EAAgC,SAAM/zF,EAEtG,YAAeA,IAAX0N,GACFrC,EAAAA,EAAOC,KAAK,yCAA0C,CAAE8qB,cACjD,SAEF1oB,CACT,CAEO,SAASo4B,EACdi4B,EACAmH,EACA9nC,EACA+4D,EACAC,GAEA,MAAO,CAACjhE,EAAkBkhE,KACxB,MAAMC,EAAYX,EAAaQ,EAAYlzF,MAAMi8B,QAC3C1J,EAAQ2D,EAAAA,GAAcC,aACzBwlC,UAAU,SAAU,CAAEvhD,YAAY,IAClCgsB,qBAAqB,cAAe,GACpC5P,SAASskC,EAAS5oC,IAClBmQ,mBAAkB,GAClB3L,QACC,IAAIgG,EAAAA,GAAqB,CACvBC,gBAAiB,CAAC,IAkCrB,SAAmCzK,GACxC,OAAQwG,GACCA,EAAOmE,MACZx8B,EAAAA,EAAAA,MAAI,IACK,CAAC6xB,KAIhB,CA1CkCohE,CAA0BphE,OAGrDkE,aAAaC,EAAAA,IACbE,QAAQ,IAAIlC,EAAAA,GAAU,CAAEW,qBAAsB,CAAE9C,QAAOiB,UAAW2nC,EAAS5oC,GAAQzC,UAAW0jE,MAC9F18D,iBAAiB,CAChB,IAAI4D,EAAAA,GAAmB,CAAEnI,QAAOiI,eAAcj/B,YAAai4F,IAAa3lF,EAAAA,OAsB5E,OAnBIy0D,IAAUn/B,EAAAA,UAAUC,MACtBxQ,EACG6T,qBAAqB,WAAY,CAAEC,KAAMC,EAAAA,aAAaC,SACtDH,qBAAqB,cAAe,KACpCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAa,GAClChQ,aAAaC,EAAAA,IACb+P,qBAAqB,YAAatD,EAAAA,UAAUC,MAG7CswD,IACF9gE,EAAMopC,UAAU,SAAU,CACxBvhD,YAAY,EACZ4jD,MAAO,CAACq1B,KAGV9gE,EAAMghE,eAAe,MAGhB,IAAIz9D,EAAAA,GAAiB,CAC1B5tB,KAAMqqB,EAAMoE,SACZ,CAEN,CAkBO,SAAS8gC,EACdvlC,EACA3xB,EACAiI,GAEA,MAAMgrF,EAAYthE,GAAQuhE,EAAAA,EAAAA,GAAsBlzF,EAAK2xB,GAASwhE,EAAAA,EAAUC,OAExE,GAAIH,EAEF,OAiBG,SAAoC1wF,EAAiBvC,GAC1D,OAAQuC,GACN,KAAK4wF,EAAAA,EAAUE,QACb,OAAO5xE,EAAAA,GAET,KAAK0xE,EAAAA,EAAUC,OACb,OAAO52E,EAAAA,GAET,KAAK22E,EAAAA,EAAUG,mBAEb,OAAItzF,IAAQiN,EAAAA,GACH7D,EAAAA,GAEF4W,EAAAA,GAET,QAAS,CACP,MAAMohB,EAAM,IAAI34B,MAAM,0BAA0BzI,KAEhD,MADA6H,EAAAA,EAAOW,MAAM44B,EAAK,CAAE7+B,OAAMiI,IAAK,0BAA0BxK,MACnDohC,CACR,EAEJ,CAtCWmyD,CAA2BN,EAAWjzF,GAI/C,MAAMwzF,EAAqBj6D,EAAkBv5B,EAAKiI,GAClD,MAA2B,uBAAvBurF,EACKxzE,EAAAA,IAGTnY,EAAAA,EAAOC,KAAK,mEAAoE,CAC9E9H,MACAwzF,mBAAoBA,QAAAA,EAAsB,KAGrCh3E,EAAAA,GACT,CAyBO,SAASkmB,EAA2Bv0B,GAKzC,OAAO22B,EAJS32B,EAAO1O,MAAM6F,QAAQxF,KAAKH,IACjCyK,EAAAA,EAAAA,IAAyBzK,GAAQuK,SAI5C,CAEO,SAASq7B,EAAW/B,GACzB,MAAqB,aAAdA,GAA0C,UAAdA,GAAuC,UAAdA,CAC9D,CAuBO,SAASC,EAAqBjC,EAAqBvB,G,IAIgBwzD,EAHxE,MAAMf,EAAwCzyD,aAAAA,EAAAA,EAAqB9xB,OAAO,GACpEslF,EAAwCxzD,aAAAA,EAAAA,EAAqB9xB,OAAO,GACpE6c,EAAQ0nE,aAAAA,EAAAA,EAAY/pF,OAAOkN,QAAQ2rB,GACzC,YAAiBhlC,IAAVwuB,IAAkC,IAAXA,EAAesnE,EAA2BmB,SAAkB,QAAlBA,EAAAA,EAAY9qF,cAAZ8qF,IAAAA,OAAAA,EAAAA,EAAqBzoE,SAAUxuB,CACzG,CAEO,SAAS4jC,EACdoB,EACApf,EACA6d,G,IAQgEswD,EAGGkD,EATnE,MAAMlD,EAAyCtwD,aAAAA,EAAAA,EAAqB9xB,OAAO,GACrEukF,EAAwCzyD,aAAAA,EAAAA,EAAqB9xB,OAAO,GACpEslF,EAAwCxzD,aAAAA,EAAAA,EAAqB9xB,OAAO,GACpE6c,EAAQ0nE,aAAAA,EAAAA,EAAY/pF,OAAOkN,QAAQ2rB,GAEnCgyD,OACMh3F,IAAVwuB,IAAkC,IAAXA,EAAeonE,EAAwB7B,SAAmB,QAAnBA,EAAAA,EAAa5nF,cAAb4nF,IAAAA,OAAAA,EAAAA,EAAsBvlE,IAAU,QAE1F0oE,OACMl3F,IAAVwuB,IAAkC,IAAXA,EAAesnE,EAA2BmB,SAAkB,QAAlBA,EAAAA,EAAY9qF,cAAZ8qF,IAAAA,OAAAA,EAAAA,EAAqBzoE,SAAUxuB,EAG5F2Q,EAAUiV,EAAe3iB,MAAM6F,QAAQxF,KAAKH,I,IAUlB4wF,EAT9B,MAAMvlE,EAAQ0nE,aAAAA,EAAAA,EAAY/pF,OAAOkN,QAAQlW,EAAOK,KAC1C2zF,GAAwBvpF,EAAAA,EAAAA,IAAyBzK,GACvD,GAAIg0F,EAAsBzpF,OACxB,OAAOypF,EAAsBzpF,O,IAMDqmF,EAF9B,MAAMrmF,OACM1N,IAAVwuB,IAAkC,IAAXA,EACnBonE,EAAoD,QAA5B7B,EAAAA,SAAmB,QAAnBA,EAAAA,EAAa5nF,cAAb4nF,IAAAA,OAAAA,EAAAA,EAAsBvlE,UAAtBulE,IAAAA,EAAAA,EAAgC,cACxD/zF,EACN,OAAO0N,QAAAA,EAAU,OAAO,IAK1B,IAAI0pF,EAAuB,GACvBC,EAA0B,GAEH,uBAAvBL,EACFK,EAA0B,KAAKryD,QAG/BoyD,EAAuB,KAAKpyD,QAW9B,OAhFK,SAA0BA,EAAqB34B,GACpD,OAAIA,EAAQ26B,WAAa,CAAC,QAAS,YAAY3jC,SAASgJ,EAAQ26B,WAE5D,kBAAiBswD,EAAAA,EAAAA,IAAsBjrF,eACvCA,EAAQ26B,UACR,IAAIhC,qCAEG34B,EAAQ26B,WAAmC,UAAtB36B,EAAQ26B,UAEpC,kBAAiBswD,EAAAA,EAAAA,IAAsBjrF,eAAuB24B,EAAc,mCAGvE,WAAWA,wBAAiCsyD,EAAAA,EAAAA,IAAsBjrF,gBAE7E,CAkESkrF,CAAiBvyD,EAPU,CAChCqyD,0BACAD,uBACA1pF,OAhBa46B,EAAuB,IAAI33B,EAASqmF,IAiBjDhwD,UAAWkwD,GAIf,C,4FCvUO,SAASvD,EAAwB3yF,EAAkB0O,GACxD,OAAsB,IAAlB1O,EAAE4mC,YACG,EAEa,IAAlBl4B,EAAEk4B,aACI,EAEH5mC,EAAE4mC,YAAcl4B,EAAEk4B,WAC3B,CAIO,SAASkG,EAAgB/b,GAC9B,MAAM1lB,EAAU,IAAI0lB,GACfA,EAAO1uB,SAASoN,EAAAA,KACnBpE,EAAQ8pB,QAAQ1lB,EAAAA,IAGlB,MAAM+mF,EAAsCnrF,EAAQ/I,KAAKuE,IAAW,CAClEA,QACAoF,MAAOgG,OAAOpL,OAGhB,MAAO,CAAC,CAAEA,MAAO,MAAOoF,MAAOi8B,EAAAA,OAAyBsuD,EAC1D,CACO,MACMvD,EAAmB,CAAC,kBAAmBxjF,EAAAA,GADpB,SAGnBR,EAAmB,CAAC,wBAAyB,oBACnD,SAAS86B,EAAgBhZ,GAC9B,MACMylE,EADU,IAAIzlE,GACgCzuB,KAAKuE,IAAW,CAClEA,QACAoF,MAAOgG,OAAOpL,OAGhB,MAAO,CAAC,CAAEA,MAAO,MAAOoF,MAAOi8B,EAAAA,OAAyBsuD,EAC1D,CAGO,SAASpvE,EAAiBjlB,G,IAIdA,EAAjB,QAHcmxE,EAAAA,EAAAA,IAA4BnxE,EAAO8J,QAC7CsnE,EAAAA,EAAAA,IAAgCpxE,EAAO8J,OACvC9J,EAAO8J,UACwB,QAAlB9J,EAAAA,EAAO+J,mBAAP/J,IAAAA,OAAAA,EAAAA,EAAqB,GACxC,C,sKCvCO,MAAMiqC,EAAwC,uCAE9C,SAASC,EAAiB5hC,EAAuBu5B,EAAqByyD,GAC3E,IAAIC,EAAuB,GACvBL,EAA0B,GAE9B,MAAM1lF,GAASmO,EAAAA,EAAAA,IAAkBrU,GAC3BiC,GAASw4B,EAAAA,EAAAA,IAA2Bv0B,GAQ1C,OANI8lF,GAAcA,IAAehnF,EAAAA,GAC/BinF,EAAuB,KAAKD,UACnBA,GAAcA,IAAehnF,EAAAA,KACtC4mF,EAA0B,MAAMI,YAG3BzzD,EAAAA,EAAAA,GACL,wBAAuBszD,EAAAA,EAAAA,IAAsB,CAC3CI,uBACAL,0BACA3pF,8BACoBs3B,KACtB,CAAE1P,aAAc,KAAK0P,MAAiB9Q,MAAO,0BAEjD,CAEO,SAASyjE,EAAoBjiE,GAElC,OADeA,EAAOpyB,KAAKonC,IAAc6P,EAAAA,EAAAA,IAA2B7P,KACtDqqB,SAAStmD,GAAOA,EAAI,CAACA,GAAK,IAC1C,CAEO,SAASwiC,EAAsBztC,EAAayJ,EAAexB,GAChE,MAAMmV,GAA4BC,EAAAA,EAAAA,IAA6BpV,GACzD05C,EAA2D,IAAnDvkC,EAA0B3d,MAAM6F,QAAQ5F,OAEhDu6B,EAAmC,wBADfV,EAAAA,EAAAA,IAAkBv5B,EAAKiI,GAG3CyxB,EAAetc,EAA0B3d,MAAM6F,QAAQslB,MAAMjrB,GAC7Ds6B,GACK/uB,EAAAA,EAAAA,IAAoBvL,EAAOiK,WAAajK,EAAO8J,QAAUA,GAE3DyB,EAAAA,EAAAA,IAAoBvL,EAAOiK,YAAaQ,EAAAA,EAAAA,IAAyBzK,GAAQ8J,QAAUA,IAG5F,OAAIk4C,IAAUjoB,IACZpB,EAAAA,EAAAA,IAAat4B,EAAKyJ,EAAO,UAAWxB,EAAUgyB,EAAaja,EAAAA,GAAexD,EAAAA,IACnE,aAEP8b,EAAAA,EAAAA,IAAat4B,EAAKyJ,EAAO,SAAUxB,EAAUgyB,EAAaja,EAAAA,GAAexD,EAAAA,IAClE,SAEX,CAEO,SAASgxB,EAAsBxtC,EAAayJ,EAAexB,GAChE,MAAMmsF,GAAiBz2E,EAAAA,EAAAA,IAAkB1V,GACnC05C,EAAgD,IAAxCyyC,EAAe30F,MAAM6F,QAAQ5F,OACrCg6B,EAAe06D,EAAe30F,MAAM6F,QAAQslB,MAC/CjrB,GAAWA,EAAO8J,QAAUA,IAASyB,EAAAA,EAAAA,IAAoBvL,EAAOiK,YAGnE,OAAI+3C,IAAUjoB,IACZpB,EAAAA,EAAAA,IAAat4B,EAAKyJ,EAAO,UAAWxB,EAAUwZ,EAAAA,IACvC,aAEP6W,EAAAA,EAAAA,IAAat4B,EAAKyJ,EAAO,SAAUxB,EAAUwZ,EAAAA,IACtC,SAEX,CAEO,SAAS4yE,EAAiBr0F,EAAas0F,EAAqBrsF,GAEjE,OAAOssF,EAAkBv0F,EAAKs0F,GADP32E,EAAAA,EAAAA,IAAkB1V,GAE3C,CAEO,SAASusF,EAAiBx0F,EAAas0F,EAAqBrsF,GAEjE,OAAOssF,EAAkBv0F,EAAKs0F,GADPh4E,EAAAA,EAAAA,IAAkBrU,GAE3C,CAEO,SAASwsF,EAAmBz0F,EAAas0F,EAAqBrsF,GAEnE,OAAOssF,EAAkBv0F,EAAKs0F,GADLn3E,EAAAA,EAAAA,IAAoBlV,GAE/C,CAEO,SAASssF,EAAkBv0F,EAAas0F,EAAqB10F,GAClE,MAAM80F,EAAmB90F,EAASH,MAAM6F,QACrC3F,QAAQA,GAAWA,EAAOK,MAAQA,IAAOkL,EAAAA,EAAAA,IAAoBvL,EAAOiK,YACpE9J,KAAKH,GAAYC,EAASH,MAAMvB,OAASse,EAAAA,IAAapS,EAAAA,EAAAA,IAAyBzK,GAAQ8J,MAAQ9J,EAAO8J,QACnGkrF,EAAkB/0F,EAASH,MAAM6F,QACpC3F,QAAQA,GAAWA,EAAOK,MAAQA,IAAO4lF,EAAAA,EAAAA,IAAoBjmF,EAAOiK,YACpE9J,KAAKH,GAAYC,EAASH,MAAMvB,OAASse,EAAAA,IAAapS,EAAAA,EAAAA,IAAyBzK,GAAQ8J,MAAQ9J,EAAO8J,QAEzG,OAAO6qF,EAAU30F,QAAQ0E,IACnBswF,EAAgB90F,SAASwE,KAGM,IAA5BqwF,EAAiBh1F,QAAgBg1F,EAAiB70F,SAASwE,KAEtE,C,0HCrGO,SAASk7E,EACdztE,EACA8iF,EACA9uD,EACAu5C,GAEA,GAAIv5C,IAAS+uD,EAAAA,2BAA2BC,gBAAiB,CACvD,MAAMruE,EAASmuE,QAAAA,EAAiB,GAChC,OAAsB,IAAlBnuE,EAAO/mB,QAAgB+mB,EAAO5mB,SAASiS,GAClC,GAEF,CAACA,EACV,CAKA,IAAI2U,GAAUmuE,aAAAA,EAAAA,EAAel1F,QAAqBk1F,EAAZvV,EACtC,OAAI54D,EAAO5mB,SAASiS,GACX2U,EAAO9mB,QAAQo1F,GAAkBA,IAAkBjjF,IAGrD,IAAI2U,EAAQ3U,EACrB,CAEO,SAASwtE,EAAyBptD,GACvC,OAAOA,EAAOpyB,KAAKonC,I,IAAc6P,E,OAA2B7P,QAA3B6P,EAAAA,EAA2B7P,UAA3B6P,IAAAA,EAAAA,EAAyC,MAAM,GAClF,CAEO,SAASA,EAA2BplB,G,IAC1BA,EAAf,MAAMpD,EAAwB,QAAfoD,EAAAA,EAAMxjB,OAAO,UAAbwjB,IAAAA,OAAAA,EAAAA,EAAiBpD,OAEhC,IAAKA,EACH,OAAO,KAGT,MAAM/d,EAAOqD,OAAOrD,KAAK+d,GACzB,OAAoB,IAAhB/d,EAAK9Q,OACA,KAGF6uB,EAAO/d,EAAK,GACrB,CAMO,SAASwkF,EAAiB3V,EAAqBp3E,GACpD,MAAMgtF,GAAex4E,EAAAA,EAAAA,IAAkBxU,GACjCitF,EAAeD,EAAax1F,MAAM6F,QACrC3F,QAAQA,IAAWuL,EAAAA,EAAAA,IAAoBvL,EAAOiK,YAC9C9J,KAAKH,GAAWA,EAAO8J,MAAMI,MAAM,KAAK/J,IAAIq1F,KAC5C7iF,KAAK,KACF8iF,EAAiBH,EAAax1F,MAAM6F,QACvC3F,QAAQA,IAAWimF,EAAAA,EAAAA,IAAoBjmF,EAAOiK,YAC9C9J,KAAKH,GAAWA,EAAO8J,MAAMI,MAAM,KAAK/J,IAAIq1F,KAC5C7iF,KAAK,KACR,OAAO+sE,EAAU1/E,QAAQmS,IACnBsjF,EAAev1F,SAASiS,KAGG,IAAxBojF,EAAax1F,QAAgBw1F,EAAar1F,SAASiS,KAE9D,CAEA,SAASqjF,EAAmBrjF,GAC1B,MAAc,OAAVA,EACK,OAEFA,CACT,CAQO,SAASy7B,EAAsBz7B,EAAe7J,GACnD,MAAMw2D,GAAchiD,EAAAA,EAAAA,IAAkBxU,GAChC05C,EAA6C,IAArC8c,EAAYh/D,MAAM6F,QAAQ5F,OAClCg6B,EAAe+kC,EAAYh/D,MAAM6F,QAAQslB,MAC5CjrB,GAAWA,EAAO8J,QAAUqI,IAAS5G,EAAAA,EAAAA,IAAoBvL,EAAOiK,YAOnE,MAJc,SAAVkI,IACFA,EAAQ,MAGN6vC,IAAUjoB,IACZpB,EAAAA,EAAAA,IAAarrB,EAAAA,GAAsB6E,EAAO,UAAW7J,EAAUmB,EAAAA,IACxD,aAEPkvB,EAAAA,EAAAA,IAAarrB,EAAAA,GAAsB6E,EAAO,SAAU7J,EAAUmB,EAAAA,IACvD,SAEX,C,gHC/EA,SAASisF,EAASC,EAAmBp3F,EAAcslC,GACjD,MAAMx2B,EAAQsoF,EAAMC,eAAer3F,GACnC,QAAc1B,IAAVwQ,EAIJ,OAAOA,EAAMzK,OAASihC,EAAYx2B,OAAQxQ,CAC5C,CAEO,MAAMg5F,EAA2B,YAC3BC,EAAsB,OACtBC,EAA0B,WAC1BC,EAAoB,KACpB9kE,EAAwB,SAE9B,SAAS+kE,EAAuBC,GACrC,MAAMrqF,EAAiB,CAAC,EAMxB,OAJAqI,OAAOC,QAAQ+hF,GAAgBrsF,SAAQ,EAAEssF,EAAGhsF,MAC1C0B,EAAOsqF,GAAkB,iBAANhsF,EAAiBA,EAAIO,KAAKC,UAAUR,EAAE,IAGpD0B,CACT,CAEO,SAASqqD,EAAelkC,G,IACzBA,EAAJ,OAAc,QAAVA,EAAAA,EAAM1nB,YAAN0nB,IAAAA,OAAAA,EAAAA,EAAYpvB,QAAS6uD,EAAAA,cAAcC,SAOlC,SAAiC1/B,GACtC,MAAM2jE,EAAQ,IAAIS,EAAAA,WAAWpkE,GAEvBqkE,EAAiBX,EAASC,EAAOE,EAA0BptC,EAAAA,UAAUC,MACrErJ,EAAYq2C,EAASC,EAAOG,EAAqBrtC,EAAAA,UAAU+E,QAGjE,QAAuB3wD,IAAnBw5F,QAA8Cx5F,IAAdwiD,EAClC,OAAO,K,IAGaq2C,EAAtB,MAAMY,EAAyE,QAAzDZ,EAAAA,EAASC,EAAOI,EAAyBttC,EAAAA,UAAU+E,eAAnDkoC,IAAAA,EAAAA,EAA8D,K,IACpEA,EAAhB,MAAMtsC,EAA6D,QAAnDssC,EAAAA,EAASC,EAAOK,EAAmBvtC,EAAAA,UAAU+E,eAA7CkoC,IAAAA,EAAAA,EAAwD,K,IACpDA,EAApB,MAAMa,EAAoE,QAAtDb,EAAAA,EAASC,EAAOzkE,EAAuBu3B,EAAAA,UAAUmD,cAAjD8pC,IAAAA,EAAAA,EAA2D,KAEzE9mE,EAAyB,OAAhB2nE,EAAuB,KAAOA,EAAYvtF,OAEnDupD,EAAcojC,EAAMnnF,OAAOxO,QAC/B,CAAC8O,EAAGY,IACFA,IAAM2mF,EAAehrE,OACrB3b,IAAM2vC,EAAUh0B,OAChB3b,KAAM4mF,aAAAA,EAAAA,EAAejrE,QACrB3b,KAAM05C,aAAAA,EAAAA,EAAS/9B,QACf3b,KAAM6mF,aAAAA,EAAAA,EAAalrE,SAGvB,MAAO,CACL9Q,IAAKyX,EACLotB,UAAWi3C,EACXh3C,YACAi3C,gBACAltC,UACAotC,kBAAmB,IAAM5nE,EACzB6nE,oBAAqB,KACrBzhC,0BAA2B,IAAkB,OAAXpmC,EAAkBA,EAAOzuB,IAAI81F,GAA0B,KACzFS,kBAAmB,IAAuB,OAAhBH,EAAuBA,EAAYh4F,KAAO,KACpEg0D,cAEJ,CA5CWokC,CAAwB3kE,GA+C5B,SAA8BA,GACnC,MAAM2jE,EAAQ,IAAIS,EAAAA,WAAWpkE,GACvBotB,EAAYu2C,EAAMiB,oBAAoBnuC,EAAAA,UAAUC,MAChDrJ,EAAYs2C,EAAMiB,oBAAoBnuC,EAAAA,UAAU+E,QAGtD,QAAkB3wD,IAAduiD,QAAyCviD,IAAdwiD,EAC7B,OAAO,K,IAGmBs2C,EAA5B,MAAMc,EAA2C,QAArBd,EAAAA,EAAMC,eAAe,eAArBD,IAAAA,EAAAA,EAAgC,K,IACtCA,EAAtB,MAAMW,EAAqC,QAArBX,EAAAA,EAAMC,eAAe,gBAArBD,IAAAA,EAAAA,EAAiC,K,IACvCA,EAAhB,MAAMvsC,EAA+B,QAArBusC,EAAAA,EAAMC,eAAe,aAArBD,IAAAA,EAAAA,EAA8B,MAMvCY,EAAaM,GA6BtB,SACElB,EACAmB,EACA9kE,GAGA,MAAMukE,EAAcZ,EAAMC,eAAe,UACzC,QAAoB/4F,IAAhB05F,GAA6BA,EAAY3zF,OAAS6lD,EAAAA,UAAUmD,MAAO,CACrE,MAAM5iD,EAASutF,EAAYvtF,OAAO7I,IAAI81F,GACtC,MAAO,CAACM,EAAa,IAAMvtF,EAC7B,CAEE,MAAO,CAAC,KAAM,IAMlB,SAAyB8tF,EAAkB/2F,GACzC,MAAMg3F,EAAaD,EAAUloE,OAC7B,QAAmB/xB,IAAfk6F,EAA0B,CAC5B,MAAMlrF,EAAS,IAAIgB,MAAM9M,GAEzB,OADA8L,EAAOpQ,KAAKs7F,GACLlrF,CACT,CACE,OAAO,IAEX,CAfwBmrF,CAAgBF,EAAW9kE,EAAMjyB,QAEzD,CA3C8Bk3F,CAAiBtB,EAAOt2C,EAAWrtB,GAEzDugC,EAAcojC,EAAMnnF,OAAOxO,QAC/B,CAAC8O,EAAGY,IACFA,IAAM0vC,EAAU/zB,OAChB3b,IAAM2vC,EAAUh0B,OAChB3b,KAAM+mF,aAAAA,EAAAA,EAAqBprE,QAC3B3b,KAAM4mF,aAAAA,EAAAA,EAAejrE,QACrB3b,KAAM05C,aAAAA,EAAAA,EAAS/9B,QACf3b,KAAM6mF,aAAAA,EAAAA,EAAalrE,SAGvB,MAAO,CACL+zB,YACAC,YACAo3C,sBACAH,gBACAltC,UACAotC,kBAAmBK,EACnB7hC,0BAA2B6hC,EAC3BH,kBAAmB,K,IAAMH,E,OAAiB,QAAjBA,EAAAA,aAAAA,EAAAA,EAAah4F,YAAbg4F,IAAAA,EAAAA,EAAqB,IAAI,EAClDhkC,cACAh4C,IAAKyX,EAET,CAvFWklE,CAAqBllE,EAEhC,CAuHO,SAAS0tB,EAAYjC,G,IACnBA,EAAP,OAAgC,QAAzBA,EAAAA,aAAAA,EAAAA,EAAW2B,UAAU7gD,YAArBk/C,IAAAA,EAAAA,EAA6Bo4C,CACtC,CAEO,SAASh2C,EAAYpC,G,IACnBA,EAAP,OAAgC,QAAzBA,EAAAA,aAAAA,EAAAA,EAAW4B,UAAU9gD,YAArBk/C,IAAAA,EAAAA,EAA6Bq4C,CACtC,CAEO,SAASljC,EAAUnV,G,IACjBA,EAAAA,EAAP,OAA+B,QAAxBA,EAAAA,SAAkB,QAAlBA,EAAAA,EAAW2L,eAAX3L,IAAAA,OAAAA,EAAAA,EAAoBl/C,YAApBk/C,IAAAA,EAAAA,EAA4Bu4C,CACrC,CAEO,SAASp3B,EAAsBrsC,G,IAIlBA,EAHlB,IAAIvkB,EAAQ,EACRC,EAAM,EAEV,MAAMmxC,EAAqB,QAAT7sB,EAAAA,EAAO,UAAPA,IAAAA,OAAAA,EAAAA,EAAW/jB,OAAOyc,MAAM5d,GAAUA,EAAMzK,OAAS6lD,EAAAA,UAAUC,OAC7E,GAAItJ,EAAW,CACb,MAAMp2C,EAAS,IAAIo2C,EAAUp2C,QAAQsD,OAC/B6qF,EAAcnuF,EAAO,GAAKA,EAAOA,EAAOjJ,OAAS,GACvDiO,EAAQmpF,EAAcnuF,EAAO,GAAKA,EAAOA,EAAOjJ,OAAS,GACzDkO,EAAMkpF,EAAcnuF,EAAOA,EAAOjJ,OAAS,GAAKiJ,EAAO,EACzD,CACA,MAAO,CAAEgF,QAAOC,MAClB,CAEO,MAAMmpF,EAAqB,gBAC3B,SAASv4B,EAAqB7wD,EAAeC,GAClD,MAAM+jB,GAAQqlE,EAAAA,EAAAA,kBAAiB,CAC7B,CACE3uC,KAAM16C,EACNspF,QAASrpF,EACTspF,UAAU,EACVv4F,KAAM,8CACNF,MAAO,6BAQX,OALAkzB,EAAMzzB,KAAO64F,EACbplE,EAAM1nB,KAAO,CACXktF,UAAWC,EAAAA,UAAUC,aAGhB1lE,CACT,CAEO,SAASwoC,EAAkBjoC,GAChC,OAAyB,IAAlBA,EAAOxyB,QAAsD,IAAtCwyB,EAAO,GAAG/jB,OAAO,GAAGxF,OAAOjJ,MAC3D,C,iBClOA,IAAI43F,EAEG,SAASC,IACTD,IACHA,EAAkB,IAAIE,EAE1B,C,2BAKO,MAAMA,EAEJlmB,oBAAAA,GACL,OAAO9qE,KAAKixF,iBACd,CAEOzkB,gBAAAA,CAAiBxR,GACjBh7D,KAAKixF,oBACRjxF,KAAKixF,kBAAoB,CAAC,GAG5BjxF,KAAKixF,kBAAkB7nB,cAAgBpO,CACzC,CAEO4R,cAAAA,CAAe5R,GACfh7D,KAAKixF,oBACRjxF,KAAKixF,kBAAoB,CAAC,GAG5BjxF,KAAKixF,kBAAkB5nB,YAAcrO,CACvC,CAEO+R,cAAAA,CAAe/R,GACfh7D,KAAKixF,oBACRjxF,KAAKixF,kBAAoB,CAAC,GAG5BjxF,KAAKixF,kBAAkBlzD,YAAci9B,CACvC,CAEO4P,oBAAAA,CAAqB3xE,GAC1B+G,KAAKixF,kBAAoB,CACvB7nB,cAAenwE,EAAMmwE,cACrBC,YAAapwE,EAAMowE,YACnBtrC,YAAa9kC,EAAM8kC,YACnBgC,QAAS9mC,EAAM8mC,QACf+zB,UAAW76D,EAAM66D,UACjB+C,eAAgB59D,EAAM49D,eAE1B,C,+BAtCiE7gE,G,EAAzDi7F,uB,EAAR,M,uFAyCK,SAAStmB,IACd,OAAOmmB,CACT,C,sTC9CA,IAAII,EAcG,SAASC,EAAsBrwC,EAA0BswC,GAC9D,OAAOhpE,EAAAA,QAAQC,UAAUy4B,EAGpB,SAAiCswC,GACtC,O,sUAAO,IACF/jF,OAAOC,QAAQ8a,EAAAA,QAAQ4xC,sBAAsBxtB,QAAoB,CAACC,GAAMjzC,EAAKyJ,MAC1E8lB,EAAAA,GAAmB1vB,SAASG,KAC9BizC,EAAIjzC,GAAOyJ,GAGNwpC,IACN,CAAC,GACD2kD,EAEP,CAdiCC,CAAwBD,GACzD,CAeO,SAAStkD,EAAsBwkD,EAAqBzzF,EAAeigC,G,IAEnD1gC,EACCA,EAFtB,MAAMA,EAAavE,EAAAA,GAAWwE,YAAYygC,EAAcxgC,EAAAA,GAClDi0F,EAA0C,QAA3Bn0F,EAAAA,EAAWnE,MAAMuc,kBAAjBpY,IAAAA,OAAAA,EAAAA,EAA6BiK,OAAOqhB,UACnD8oE,EAA2C,QAA3Bp0F,EAAAA,EAAWnE,MAAMuc,kBAAjBpY,IAAAA,OAAAA,EAAAA,EAA6BiK,OAAOshB,WAE1D,GAAI4oE,GAAgBC,EAAe,CACjC,IAAIC,EAnCR,SAAgC5zF,EAAeyzF,EAAqB3oE,EAAoBD,EAAY,WAClG,OAAI7qB,IAAUqhC,EAAAA,IAAsBoyD,IAAYppE,EAAAA,GAAWrqB,OAClDopB,EAAAA,EAAAA,IAAY,GAAG7mB,EAAAA,GAAUC,WAAWqoB,MAAayhD,EAAAA,EAAAA,IAAaxhD,MAAevoB,EAAAA,GAAU2nB,UACrFlqB,IAAUqhC,EAAAA,IAAsBoyD,IAAYppE,EAAAA,GAAW1hB,OACzDygB,EAAAA,EAAAA,IAAY,GAAG7mB,EAAAA,GAAUC,WAAWqoB,MAAayhD,EAAAA,EAAAA,IAAaxhD,MAAevoB,EAAAA,GAAUuH,WAEvFsf,EAAAA,EAAAA,IACL,GAAG7mB,EAAAA,GAAUC,WAAWqoB,MAAayhD,EAAAA,EAAAA,IAAaxhD,MAAe2oE,MAAWnnB,EAAAA,EAAAA,IAAatsE,KAG/F,CAyBkB6zF,CAAuB7zF,EAAOyzF,EAASE,EAAeD,GACpE,MAAMI,EAAUR,EAAsBM,GAGtC,GAAI3zD,EAAc,EACQ6sC,EAAAA,EAAAA,MACRC,qBAAqB9sC,EAAa7kC,MACpD,CAEA,OAAO04F,CACT,CAEA,MAAO,EACT,CAQO,SAAS3vD,EAAyBsvD,EAAqBzzF,EAAeigC,GAC3E,MAAMtlC,EAAOs0C,EAAsBwkD,EAASzzF,EAAOigC,GAC/CtlC,GACFw6E,EAAex6E,EAEnB,CAQO,SAAS6rB,EAAsBqE,EAAmBC,EAAoBwiC,GAE3E,OADqBgmC,EAAsBroE,EAAAA,GAAOpB,KAAKiB,EAAYD,GAAYyiC,EAEjF,CAEO,SAAS4d,EAAoBjoB,EAAiBhjB,EAA4BszD,G,IAEzDh0F,EACDA,EAFrB,MAAMA,EAAavE,EAAAA,GAAWwE,YAAYygC,EAAcxgC,EAAAA,GAClDk0F,EAA2C,QAA3Bp0F,EAAAA,EAAWnE,MAAMuc,kBAAjBpY,IAAAA,OAAAA,EAAAA,EAA6BiK,OAAOshB,WACpD4oE,EAA0C,QAA3Bn0F,EAAAA,EAAWnE,MAAMuc,kBAAjBpY,IAAAA,OAAAA,EAAAA,EAA6BiK,OAAOqhB,UAEzD,GAAI8oE,EAAe,CAEjB,OAAOL,GADSlqE,EAAAA,EAAAA,IAAY,GAAG7mB,EAAAA,GAAUC,WAAWkxF,MAAgBpnB,EAAAA,EAAAA,IAAaqnB,MAAkB1wC,KAC7DswC,EACxC,CACA,MAAO,EACT,CASO,SAAS1mB,EAAwB5pB,EAAiBhjB,EAA4BszD,GACnF,MAAMQ,EAAgB7oB,EAAoBjoB,EAAMhjB,EAAcszD,GAE9D,GAAIQ,EAAJ,CAEE,GAAI9zD,EAAc,EACQ6sC,EAAAA,EAAAA,MACRC,qBAAqB9sC,EAAa7kC,MACpD,CAEA+5E,EAAe4e,EAEjB,MACF,CAEO,SAAS5e,EAAeD,GAC7Bme,EAAgBne,EAChBlhE,EAAAA,gBAAgBtO,KAAKwvE,EACvB,CAEO,SAAS72E,IAEd,MAAM8d,EAAWnI,EAAAA,gBAAgBoI,cACjCpI,EAAAA,gBAAgBtO,KAAKyW,EAASkgD,SAAWlgD,EAASG,OACpD,CAKO,SAASsO,IACd,MAAMzO,EAAWnI,EAAAA,gBAAgBoI,cAC3B43E,GAAaC,EAAAA,EAAAA,IAAiBhpE,EAAAA,GAAOzoB,WACrCyyE,EAAa94D,EAASkgD,SAAWlgD,EAASG,OAC1CA,EAAStI,EAAAA,gBAAgBkgF,YAE3BF,IAAe/e,GAAcA,EAAWz5E,SAASw4F,KAIhD13E,EAAOtY,IAAI,eAOdmxE,EAAe6e,IALXX,GACFr/E,EAAAA,gBAAgBhP,QAAQquF,GAE1Br/E,EAAAA,gBAAgBtO,KAAKsuF,IAIzB,C,wJCxJO,MAAMG,UAA6B9mE,EAAAA,GAKjCoP,UAAAA,GACL,MAAMl7B,EAAYvG,EAAAA,GAAWqZ,aAAalS,MAO1CA,KAAgC,0BAAEZ,EACpC,CAbAsB,WAAAA,CAAYy/C,GACVx/C,MAAMw/C,EACR,E,+8BC2BF,MAAM8xC,EAAqB,OACdC,EAA8B,UAC9BC,EAA+B,WAC/BC,EAAiC,oBACjCC,EAA+B,WAC/BC,EAAkC,2BAClCC,EAAiC,oBAEvC,SAASjjE,EAAuBvD,GACrCA,EAAUymE,2BAA2BN,EAA4BvgE,QAAQ8gE,cAAc,CACrFnzD,KAAM,QACNqlC,WAAY,oBAEd54C,EAAUymE,2BAA2BL,EAA6BxgE,QAAQ8gE,cAAc,CACtFnzD,KAAM,QACNqlC,WAAY,mBAEd54C,EAAUymE,2BAA2BJ,EAA+BzgE,QAAQ8gE,cAAc,CACxFnzD,KAAM,QACNqlC,WAAY,qBAEd54C,EAAUymE,2BAA2BH,EAA6B1gE,QAAQ8gE,cAAc,CACtFnzD,KAAM,QACNqlC,WAAY,kBAEd54C,EAAUymE,2BAA2BF,EAAgC3gE,QAAQ8gE,cAAc,CACzFnzD,KAAM,QACNqlC,WAAY,YAEd54C,EAAUymE,2BAA2BD,EAA+B5gE,QAAQ8gE,cAAc,CACxFnzD,KAAM,QACNqlC,WAAY,YAEhB,CAEO,SAASpN,EACdm7B,GAEA,OAAOA,EACJrzD,qBAAqB,WAAY,CAAEC,KAAMC,EAAAA,aAAaC,SACtDH,qBAAqB,cAAe,KACpCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAa,GAClCA,qBAAqB,cAAe,GACpCA,qBAAqB,YAAatD,EAAAA,UAAUC,MAC5C3M,aAAaC,EAClB,CAEO,SAASqjE,EACdD,GAEA,OAAOA,EACJrzD,qBAAqB,WAAY,CAAEC,KAAMC,EAAAA,aAAaC,SACtDH,qBAAqB,cAAe,KACpCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAa,GAClCA,qBAAqB,YAAatD,EAAAA,UAAUC,KACjD,CAMO,SAAS42D,EAAwB7qE,EAAkB8qE,GACxDA,EACGjwE,MAAM,CACLiJ,GAAIinE,EAAAA,eAAeC,QACnB1wF,QAAS,CACPi9B,KAAM,UACNglC,MAAOv8C,EACP1H,OAAQ,cACR2yE,UAAU,KAGbC,0BAA6D,WAAY,CACxE7/E,QAAQ,EACRyO,SAAS,EACTiM,KAAK,IAIT,MAAM/B,EAAY8mE,EAAejjE,QAEjC7D,EAAUA,EAAU7yB,OAAS,GAAGg6F,YAAc,gBAChD,CAKO,SAAS7sD,EAAwB7a,EAAiBE,EAAqBjqB,GAC5E,MAAM0xF,GAAgB3E,EAAAA,EAAAA,KAAiB1V,EAAAA,EAAAA,IAAyBptD,GAASjqB,GACnEic,EAAS65C,EAA0B67B,EAAAA,GAAoBhkE,cAAcC,aACzEujE,EAAwB9xF,KAAK,KAAMqyF,IAEjCz1E,aAAkB21E,EAAAA,IACpB7nE,EAAM8nE,oBAAoB51E,EAAOkS,SAAS,EAE9C,CAMO,SAAS0W,EACd9sC,EACAgyB,EACAE,EACAjqB,GAEA,MAAMqsF,GAAYH,EAAAA,EAAAA,IAAoBjiE,GAChC6nE,GAAgB1F,EAAAA,EAAAA,IAAiBr0F,EAAKs0F,EAAWrsF,GAEjDic,EAASi1E,EAA4BS,EAAAA,GAAoBhkE,cAC3DmkE,EAAcr6F,QAChBwkB,EAAO2R,aAAaujE,EAAwB9xF,KAAK,KAAMyyF,IAErD71E,aAAkB21E,EAAAA,IACpB7nE,EAAM8nE,oBAAoB51E,EAAOkS,SAAS,EAE9C,CAKO,SAAS2W,EACd/sC,EACAgyB,EACAE,EACAjqB,GAEA,MAAMqsF,GAAYH,EAAAA,EAAAA,IAAoBjiE,GAGhC6nE,EACkB,wBAHExgE,EAAAA,EAAAA,IAAkBv5B,EAAKiI,IAI3CwsF,EAAAA,EAAAA,IAAmBz0F,EAAKs0F,EAAWrsF,IACnCusF,EAAAA,EAAAA,IAAiBx0F,EAAKs0F,EAAWrsF,GAEjCic,EAASi1E,EAA4BS,EAAAA,GAAoBhkE,cAE3DmkE,EAAcr6F,QAChBwkB,EAAO2R,aAAaujE,EAAwB9xF,KAAK,KAAMyyF,IAErD71E,aAAkB21E,EAAAA,IACpB7nE,EAAM8nE,oBAAoB51E,EAAOkS,SAAS,EAE9C,CAEA,SAAS4jE,IACP,OAAQ7hE,GACCA,EAAOmE,MACZx8B,EAAAA,EAAAA,MAAKwxB,GACIA,EAAKxxB,KAAI,CAAC6xB,EAAOkhE,IACf,OACFlhE,GAAAA,CACHxjB,OAAQwjB,EAAMxjB,OAAOrO,KAAI,CAACmL,EAAGs/C,KAE3B,GAAIt/C,EAAE1I,OAAS6lD,EAAAA,UAAUC,KACvB,OAAOp9C,EAET,MAAMynB,GAAcunE,EAAAA,EAAAA,qBAAoBhvF,EAAG0mB,EAAOL,GAClD,OAAO,OACFrmB,GAAAA,CACHiZ,OAAQ,OACHjZ,EAAEiZ,QAAM,CACXwO,cACAj0B,MAAO,CACLqnC,KAAMo0D,EAAAA,iBAAiBC,yB,UAU3C,CAEO,SAASC,IACd,OAAQjiE,GACCA,EAAOmE,MACZx8B,EAAAA,EAAAA,MAAKwxB,GACIA,EACJxxB,KAAK2nD,IACAA,EAAEt5C,OAAOzO,OAAS,GAGjB+nD,EAAEt5C,OAAO,GAAG+V,OAAOuO,oBACtBg1B,EAAEt5C,OAAO,GAAG+V,OAAOuO,kBAAoBgmE,GAHhChxC,KAOVx7C,MAAK,CAACzO,EAAG0O,KACR,GAAI1O,EAAE2Q,OAAOzO,OAAS,GAAKwM,EAAEiC,OAAOzO,OAAS,EAC3C,OAAO,EAET,MAAM26F,EAA4B78F,EAAE2Q,OAAO,GAAG+V,OAAOuO,kBAC/C6nE,GAAOD,aAAAA,EAAAA,EAAOjxE,MAAM0vE,IACtB,GACAuB,aAAAA,EAAAA,EAAOjxE,MAAMyvE,IACb,GACAwB,aAAAA,EAAAA,EAAOjxE,MAAMwvE,IACb,GACAyB,aAAAA,EAAAA,EAAOjxE,MAAMuvE,MAEb0B,aAAAA,EAAAA,EAAOjxE,MAAMsvE,IADb,EAGA,EACE6B,EAA4BruF,EAAEiC,OAAO,GAAG+V,OAAOuO,kBAarD,OAAO6nE,IAZMC,aAAAA,EAAAA,EAAOnxE,MAAM0vE,IACtB,GACAyB,aAAAA,EAAAA,EAAOnxE,MAAMyvE,IACb,GACA0B,aAAAA,EAAAA,EAAOnxE,MAAMwvE,IACb,GACA2B,aAAAA,EAAAA,EAAOnxE,MAAMuvE,MAEb4B,aAAAA,EAAAA,EAAOnxE,MAAMsvE,IADb,EAGA,EAEc,MAK9B,CAEO,SAASxkB,EAAuBzjD,GACrC,OAAO,IAAI+nE,EAAqB,CAC9B5tF,WAAY,CAAEioB,IAAKq7D,EAAAA,qBACnBz9D,QAASA,GAEb,CAEO,SAASqP,EAAerP,EAAsB+pE,GAMnD,MAAMC,EAAWhqE,EAAQ7F,MAAM9c,I,IAAUA,E,OAAkB,QAAlBA,EAAAA,EAAMgkB,oBAANhkB,IAAAA,OAAAA,EAAAA,EAAoB+B,cAAchQ,SAAS,QAAQ,IACtF66F,EAAkBjqE,EAAQ7F,MAC7B9c,GAAUA,EAAM4iB,QAAU4/C,EAAAA,IAA0BxiE,EAAM4iB,QAAU6/C,EAAAA,KAGvE,OAAIkqB,EACK,IAAIt+D,EAAAA,GAAqB,CAC9B1G,MAAOmL,EAAoB,GACzBh2B,WAAY,CAAEioB,IAAKq7D,EAAAA,qBACnBz9D,QAASA,GACN+pE,IAELp+D,gBAAiB,CAACg+D,KAIjBM,GAUHjqE,EAAUA,EAAQ3wB,KAAKgO,GAAW,OAC7BA,GAAAA,CACH,aAAI0L,GAEF,QADkBkiC,EAAAA,EAAAA,QAAkCJ,EAAAA,EAAAA,SAC/BE,EAAAA,GAAcC,WAAak/C,EAAAA,EAAmBC,SAAWD,EAAAA,EAAmBE,OACnG,MAIGj6D,EAAoB,GACzBh2B,WAAY,CAAEioB,IAAKq7D,EAAAA,qBACnBz9D,QAASA,GACN+pE,KArBI,IAAIr+D,EAAAA,GAAqB,CAC9B1G,MAAOmL,EAAoB,GACzBh2B,WAAY,CAAEioB,IAAKq7D,EAAAA,qBACnBz9D,QAASA,GACN+pE,IAELp+D,gBAAiB,CAAC49D,IAiBxB,CAEO,SAASp5D,EAAoB45D,GAClC,OAAO,IAAI9oE,EAAAA,GAAiB,GAC1B9mB,WAAY,CAAEioB,IAAKq7D,EAAAA,qBACnBz9D,QAAS,IACN+pE,GAEP,C,qDC/TO,MAAMp0F,E,QAAYglB,GACZ0D,EAAkB,MAAM1oB,IAG9B,SAASqnB,EAAYqtE,GAC1B,MAAO,GAAGhsE,KAAmBgsE,GAC/B,C,6lCCaO,MAAM3mB,EAAqB,CAChCnsE,EACA6mF,EACAkM,EACArK,IAEO,WACFsK,GAAAA,CACHnM,WACAn+D,MAAOm+D,IACJkM,GAAAA,CACHnwF,WAAY,CAAEioB,IAAKooE,EAAAA,IACnBjzF,OACA0oF,iBASSlwD,EAAiB,CAACx4B,EAAc+yF,IACpC,OACFC,EACAD,GAAAA,CACH/yF,SAIEgzF,EAAqB,CACzBtqE,MAAO,IACP2jD,UAAW,QACX6mB,WAAY,OACZC,oBAAqB/0F,EAAAA,IAGV20E,EAAmB,CAC9B/yE,EACA6mF,EACA6B,EACAqK,IAEO5mB,EAAmBnsE,EAAM6mF,EAAU,KAAKkM,GAAwBrK,GAGlE,SAAS7uE,EAAwBvc,EAAkCmgF,GAExE,OAD2B,IAAIp6E,EAAAA,EAAkB/F,GACvBu8E,cAAc,CAAE4D,cAC5C,CAEO,SAASvjE,EAAsBzL,G,IAOlBA,EAMFA,EAAAA,EAThB,OAAIA,EAAKhN,MACA,CACLA,OAAO2xF,EAAAA,EAAAA,IAA8B3kF,EAAKhN,OAC1CC,YAAa,CAAW,QAAV+M,EAAAA,EAAKpS,aAALoS,IAAAA,EAAAA,EAAcA,EAAKhN,QAI9B,CACLA,MAAOgN,EAAKhN,MACZC,YAAa,CAAyB,QAAxB+M,EAAU,QAAVA,EAAAA,EAAKpS,aAALoS,IAAAA,EAAAA,EAAcA,EAAKhN,aAAnBgN,IAAAA,EAAAA,EAA4B,IAE9C,CAEO,SAAS+L,EACd/L,EACA9W,G,IAIUA,EADD8W,EACC9W,EAFV,MAAMqN,EAAoB,CACxBvD,MAAiB,QAAVgN,EAAAA,EAAKhN,aAALgN,IAAAA,EAAAA,EAAc,GACrBvM,OAA4B,QAApBvK,EAAAA,SAAY,QAAZA,EAAAA,EAAQsK,YAARtK,IAAAA,OAAAA,EAAAA,EAAcuK,cAAdvK,IAAAA,EAAAA,EAAwB,S,IAOhB8W,EAMFA,EAThB,MAAqB,uBAAjBzJ,EAAM9C,OACD,CACLT,OAAO2xF,EAAAA,EAAAA,IAA8BpuF,EAAMvD,OAC3CC,YAAa,CAAW,QAAV+M,EAAAA,EAAKpS,aAALoS,IAAAA,EAAAA,EAAczJ,EAAMvD,QAI/B,CACLA,OAAO2xF,EAAAA,EAAAA,IAA8B/wF,KAAKC,UAAU0C,IACpDtD,YAAa,CAAW,QAAV+M,EAAAA,EAAKpS,aAALoS,IAAAA,EAAAA,EAAczJ,EAAMvD,OAEtC,CAEO,SAASiZ,EAAmBpd,EAAgCmgF,GAEjE,OAD0B,IAAIp6E,EAAAA,EAAkB/F,GACvB+1F,cAAc,CAAE5V,cAC3C,CAEO,SAASnlE,EAA2Bhb,EAAgCmgF,GAEzE,OAD0B,IAAIp6E,EAAAA,EAAkB/F,GACvBg2F,gBAAgB,CAAE7V,cAC7C,CAEO,SAASplE,EAAwB/a,EAAgCmgF,GAEtE,OAD0B,IAAIp6E,EAAAA,EAAkB/F,GACvBi2F,cAAc,CAAE9V,cAC3C,CAsCO,SAAS3iE,EAAsBxd,GAEpC,OADA8kB,EAAAA,EAAAA,GAAgB9kB,GACTA,EACJxF,KAAKH,IACJ,IAAKA,EAAO8J,MACV,MAAO,GAGT,MAAMA,EA5CL,SAAsC9J,G,IAIWA,EAEAA,EAGFA,EAPpD,OAAIA,EAAOiK,WAAa2e,EAAAA,GAAaa,OAASzpB,EAAOiK,WAAa2e,EAAAA,GAAaC,cACzE7oB,EAAOK,MAAQypB,EAAAA,GAAwBC,gBAClC27D,EAAAA,GAAWE,gCAA4C,QAAZ5lF,EAAAA,EAAO8J,aAAP9J,IAAAA,EAAAA,EAAgB,IAE3D0lF,EAAAA,GAAWC,gCAA4C,QAAZ3lF,EAAAA,EAAO8J,aAAP9J,IAAAA,EAAAA,EAAgB,IAG7D0lF,EAAAA,GAAWC,gCAA4C,QAAZ3lF,EAAAA,EAAO8J,aAAP9J,IAAAA,EAAAA,EAAgB,GAEtE,CAiCoB67F,CAA6B77F,GAC3C,OA5BN,SAA8BA,EAA+B8J,GAE3D,OAAI9J,EAAOK,MAAQypB,EAAAA,GAAwBC,gBACrC/pB,EAAOiK,WAAa2e,EAAAA,GAAaE,eAAiB9oB,EAAOiK,WAAa2e,EAAAA,GAAaC,cAC9E,GAAGD,EAAAA,GAAaE,sBAAsBhf,KAExC,GAAG8e,EAAAA,GAAac,cAAc5f,KAGhC,GAAG9J,EAAOiK,aAAaH,IAChC,CAkBagyF,CAAqB97F,EAAQ8J,EAAM,IAE3C6I,KAAK,IACV,CACO,SAAS4sB,EAAmBC,GACjC,MAAc,OAAVA,EACKA,EAC4B,WAA1BA,EAAM79B,UAAU,EAAG,GACrB,SAAS69B,MAGXA,CACT,CAEO,SAASmhD,EAAqBnhD,GACnC,MAA8B,WAA1BA,EAAM79B,UAAU,EAAG,IAAuC,OAApB69B,EAAMvrB,OAAO,GAC9CurB,EAAMvrB,MAAM,GAAGA,MAAM,GAAI,GAG3BurB,CACT,CAEO,SAASkwD,EAAuB9uD,GACrC,OAAOA,EAAWl3B,QAAQ,WAAY,IACxC,CAGO,MAAMm0D,EAAa,G,wVCjLnB,eAAK52D,G,mGAAAA,C,CAAL,C,IAOA,WAAK8nB,G,uCAAAA,C,CAAL,C,IAaA,MAAMY,EAAS,CACpBzoB,QAAS,KAAM4mB,EAAAA,EAAAA,IAAY,WAC3BS,KAAM,CAACiB,EAAoBD,EAAY,aACrCzB,EAAAA,EAAAA,IAAY,WAAwByB,MAAayhD,EAAAA,EAAAA,IAAaxhD,WAChEhhB,OAAQ,CAACghB,EAAoBD,EAAY,aACvCzB,EAAAA,EAAAA,IAAY,WAAwByB,MAAayhD,EAAAA,EAAAA,IAAaxhD,aAChE9sB,SAAU,CAAC8sB,EAAoBD,EAAY,aACzCzB,EAAAA,EAAAA,IAAY,WAAwByB,MAAayhD,EAAAA,EAAAA,IAAaxhD,eAChEZ,OAAQ,CAACY,EAAoBD,EAAY,aACvCzB,EAAAA,EAAAA,IAAY,WAAwByB,MAAayhD,EAAAA,EAAAA,IAAaxhD,cAGrDM,EAAa,CACxBprB,MAAO,CAAC8qB,EAAoBD,EAAY,UAAWwsE,KACjDjuE,EAAAA,EAAAA,IACE,WAAwByB,MAAayhD,EAAAA,EAAAA,IAAaxhD,YAAmCusE,KAEzF1uF,MAAO,CAACmiB,EAAoBD,EAAY,UAAWwsE,KACjDjuE,EAAAA,EAAAA,IACE,WAAwByB,MAAayhD,EAAAA,EAAAA,IAAaxhD,YAAmCusE,MAI9EztE,EAA4D,CACvEpnB,QAAS,YACTqnB,KAAM,8BACN/f,OAAQ,gCACR9L,SAAU,kCACVksB,OAAQ,iCAGGC,EAAmE,CAC9ExhB,MAAO,+CACP3I,MAAO,gDAMIwpB,EAAmB,CAAC,OAAQ,KAAM,OAAO3K,EAAAA,KAAkB,OAAOzB,EAAAA,MAElE8N,EAAqB,CAChC,OACA,KACA,OACA,aACA,oBACA,eACA,kBACA,aACA/L,EAAAA,GACA,OAAOA,EAAAA,KACP,OAAON,EAAAA,KACP,OAAOzB,EAAAA,KACP,OAAOjF,EAAAA,KACP,OAAOpT,EAAAA,KACP,OAAOq+B,EAAAA,KACP,OAAO+C,EAAAA,KACP,OAAOtnB,EAAAA,KACP,OAAOO,EAAAA,KACP,OAAOzD,EAAAA,KACP,OAAO6C,EAAAA,MAGF,SAAStc,IACd,MAAMia,EAAWnI,EAAAA,gBAAgBoI,cAEjC,OADaD,EAASkgD,SAAS9sD,MAAM4M,EAASkgD,SAAShtD,YAAY,KAAO,EAAG8M,EAASkgD,SAAShhE,OAEjG,CAOO,SAASknC,IACd,MAAMpmB,EAAWnI,EAAAA,gBAAgBoI,cAC3Bk7E,EAAa,qCAEbC,EADWp7E,EAASkgD,SAAS9sD,MAAM4M,EAASkgD,SAAS7qD,QAAQ8lF,GAAcA,GAAoB,GACxE9xF,MAAM,KAEnC,IAAIqlB,EAAY0sE,EAAY,GAC5B,MAAMzsE,EAAaysE,EAAY,GACzB3/E,EAAiB2/E,EAAY,GAKnC,OAHI1sE,IAAcib,EAAAA,KAChBjb,EAAYgb,EAAAA,IAEP,CAAEhb,YAAWC,aAAYlT,iBAClC,CAEO,SAASwyD,IACd,MACMotB,EADWxjF,EAAAA,gBAAgBoI,cACFigD,SAAS72D,MAAM,KAE9C,OADagyF,EAAcA,EAAcn8F,OAAS,EAEpD,CAEO,SAAS44F,EAAiBhxC,EAAcswC,GAC7C,OAAOhpE,EAAAA,QAAQC,UAAUy4B,EAUpB,SAA4BswC,GACjC,O,sUAAO,IACF/jF,OAAOC,QAAQ8a,EAAAA,QAAQ4xC,sBAAsBxtB,QAAoB,CAACC,GAAMjzC,EAAKyJ,MAC1EokB,EAAiBhuB,SAASG,KAC5BizC,EAAIjzC,GAAOyJ,GAGNwpC,IACN,CAAC,GACD2kD,EAEP,CArBiCkE,CAAmBlE,GACpD,CACO,SAASxoE,EAAuBpT,GACrC,MAAO,CACLkT,UAAWlT,EAAWnO,OAAOqhB,UAC7BC,WAAYnT,EAAWnO,OAAOshB,WAC9BlT,eAAgBD,EAAWnO,OAAOoO,eAEtC,CAqBO,SAASgrB,EAAkBh/B,GAChC,MAAMmsF,GAAiBz2E,EAAAA,EAAAA,IAAkB1V,GACzC,IAAI,UAAEinB,EAAS,WAAEC,GAAeyX,IAC5B1X,IAAcgb,EAAAA,KAChBhb,EAAYib,EAAAA,IAGd,IADqBiqD,EAAe30F,MAAM6F,QAAQslB,MAAMjrB,GAAWA,EAAOK,MAAQkvB,IAC/D,CACjB,MAAM1O,EAAWnI,EAAAA,gBAAgBoI,cAEjC5Y,EAAAA,EAAOqN,KAAK,oCAAqC,CAC/Cga,YACA/W,IAAK,GAAGqI,EAASkgD,WAAWlgD,EAASG,UAEzC,CAGA,IAD0ByzE,EAAe30F,MAAM6F,QAAQslB,MAAMjrB,IAAWgxE,EAAAA,EAAAA,IAAahxE,EAAO8J,SAAW0lB,IAC/E,CACtB,MAAM3O,EAAWnI,EAAAA,gBAAgBoI,cAEjC5Y,EAAAA,EAAOqN,KAAK,qCAAsC,CAChDia,aACAhX,IAAK,GAAGqI,EAASkgD,WAAWlgD,EAASG,UAEzC,CACF,C,iSCtLO,SAAS0nD,EAAkBlpE,GAChC,OAAOE,EAAAA,GAAWwE,YAAY1E,EAAO2E,EAAAA,EACvC,CAMO,SAASwE,EAAcyzF,GAC5B,OAAO18F,EAAAA,GAAW8gB,YAAY47E,EAAad,EAAAA,GAC7C,CAEO,SAASrrE,EAAaizC,GAC3B,OAAOxjE,EAAAA,GAAW8gB,YAAY0iD,EAAamC,EAAAA,IAA0B37D,QAAQ,OAAQ,IACvF,CAEO,SAASuyD,EAAmBiH,GACjC,OAAOxjE,EAAAA,GAAW8gB,YAAY0iD,EAAam5B,EAAAA,IAAiC3yF,QAAQ,OAAQ,IAC9F,CAWO,SAAe4b,EAAkB82E,G,OAAlB92E,EAAAA,MAAAA,KAAAA,U,UAAAA,I,eAAf,UAAiC82E,GAItC,aAHkB3zF,EAAAA,EAAAA,oBAAmBC,IAAI4yF,EAAAA,GAAqB,CAAExM,cAAe,CAAEhlF,MAAOsyF,IAI1F,EALsB92E,E,8KAAAA,EAAAA,MAAAA,KAAAA,U,CAWf,SAAS4R,EAA2BklE,GACzC,OAAO18F,EAAAA,GAAWy7B,gBAAgBihE,EAAarqE,EAAAA,GACjD,CAMO,SAASD,EACdxa,EACAglF,EACAC,GAEA,MAAM11E,EAAMnnB,EAAAA,GAAWuY,WAAWX,EAAOglF,GACzC,OAAIz1E,aAAe01E,EACV11E,GACU,OAARA,GACT3e,EAAAA,EAAOC,KAAK,wBAAwBo0F,EAAWpwF,cAG1C,KACT,CAEO,SAASqN,EAAclC,G,IACrBA,EAAP,OAA2B,QAApBA,EAAAA,EAAMxX,MAAMsE,gBAAZkT,IAAAA,OAAAA,EAAAA,EAAsB2T,MAAMogE,GAAMA,aAAahnE,EAAAA,IACxD,C,kEC5EA,MAAMm4E,EAAK,IAAIC,EAAAA,EAAO,CACpBC,UAAW,EACXC,SAAU,EACVC,SAAU,EACVC,SAAU,EACVC,SAAU,IAGL,SAAS5/D,EAAYD,EAAoB9uB,EAAeiE,GAC7D,MAAO2qF,EAAMxnF,EAAMynF,GAASR,EAAGx7E,OAAOic,EAAU9uB,EAAO,EAAG,KAE1D,IAAI8uF,EAA0B,GAC1BC,EAA0B,IAAI7wF,IAClC,GAAI0wF,GAAQC,EAAO,CAMjB,MAAMG,EAAO,CAACr4B,EAAcs4B,KACtBA,GACFF,EAAWlgF,IAAI8nD,EACjB,EAIF,IAAK,IAAIp1D,EAAI,EAAGA,EAAIstF,EAAMj9F,OAAQ2P,IAAK,CACrC,IAAI2tF,EAAUL,EAAMttF,GAGpB+sF,EAAAA,EAAOa,UAAUrgE,EAAS1nB,EAAKk1E,IAAI4S,IAAW9nF,EAAKgoF,OAAOF,GAAUF,GAEpEF,EAAc7yF,KAAK6yB,EAAS1nB,EAAKk1E,IAAI4S,IACvC,CAEAjrF,EAAS,CAAC6qF,EAAe,IAAIC,IAC/B,MAAY/uF,GACViE,EAAS,GAEb,CAEO,MAAM0vC,GAAuB07C,EAAAA,EAAAA,UAAetgE,EAAa,I,8PCpCzD,MAAM6E,EAAkB,cAElBjG,GAAa2hE,EAAAA,EAAAA,UACxB,CAAClrE,EAAqBwJ,EAAgBliB,KACpC,GAAe,iBAAXkiB,EACF,OAAO2hE,EAAiBnrE,EAAQ1Y,GAGnB,aAAXkiB,GACF4hE,EAAoBprE,GAGtB,MAAM09B,EAAW1oB,I,IAgBbq2D,EAdF,IACE,GAAe,gBAAX7hE,EACF,OAAO8hE,EAA+Bt2D,GACjC,GAAe,aAAXxL,EACT,OAAO+hE,EAAsBvrE,EAAQgV,EAEzC,CAAE,MAAOz8B,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,mBAGvBkxB,EAASoa,EAAAA,UAAUC,MACrB,CACA,MAAMwnD,EAAernD,EAAAA,cAAc7tC,IAAIqzB,G,IAErC6hE,E,IACK9zF,EAAP,OAAoB,QAAbA,GAD4C,QAAjD8zF,EAAmB,QAAnBA,EAAAA,EAAavqD,cAAbuqD,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAsBr2D,EAAU/4B,OAAO,IAAI,GAAM,UAAjDovF,IAAAA,EAAAA,GAA0DG,EAAAA,EAAAA,iBAAgBx2D,EAAU/4B,OAAO,IAAI,GAAM,IAC1FutB,UAANjyB,IAAAA,EAAAA,EAAiB,CAAC,EAGrBk0F,EAAczrE,EAAOpyB,KAAKonC,IAAe,CAC7Cz9B,MAAOmmD,EAAQ1oB,GACfA,UAAWA,MAcb,OAXAy2D,EAAY1xF,MAAK,CAACzO,EAAG0O,SACH1P,IAAZgB,EAAEiM,YAAmCjN,IAAZ0P,EAAEzC,MACtByC,EAAEzC,MAAQjM,EAAEiM,MAEd,IAGS,QAAd+P,GACFmkF,EAAY9uC,UAGP8uC,EAAY79F,KAAI,EAAGonC,eAAgBA,GAAU,IAEtD,CAAChV,EAAqBwJ,EAAgBliB,KACpC,MAAMokF,EAAiB1rE,EAAOxyB,OAAS,EAAIwyB,EAAO,GAAG/jB,OAAO,GAAGxF,OAAO,GAAK,EACrEk1F,EACJ3rE,EAAOxyB,OAAS,EACZwyB,EAAOA,EAAOxyB,OAAS,GAAGyO,OAAO,GAAGxF,OAAOupB,EAAOA,EAAOxyB,OAAS,GAAGyO,OAAO,GAAGxF,OAAOjJ,OAAS,GAC/F,EACAo+F,EAAa5rE,EAAOxyB,OAAS,GAAIq3C,EAAAA,EAAAA,IAA2B7kB,EAAO,IAAM,GACzE6rE,EAAY7rE,EAAOxyB,OAAS,GAAIq3C,EAAAA,EAAAA,IAA2B7kB,EAAOA,EAAOxyB,OAAS,IAAM,GAExFs+F,EAAe9rE,EAAOpyB,KACzB6xB,GACCA,EAAMjyB,OACN,IACAiyB,EAAMxjB,OAAOrO,KAAKkN,GAAUA,EAAM9O,KAAO,IAAM8O,EAAMrE,OAAO,GAAK,IAAMqE,EAAMrE,OAAOqE,EAAMrE,OAAOjJ,OAAS,OAE9G,MAAO,GAAGo+F,KAAcC,KAAaH,KAAkBC,KAAiB3rE,EAAOxyB,UAAUs+F,KAAgBtiE,KAAUliB,GAAW,IAIrHgkF,EAAkClsE,IAC7C,IAAK2sE,IACH,MAAM,IAAIx1F,MAAM,2CAGlB,MAAM0F,EAASmjB,EAAKnjB,OAAOxO,QAAQsL,GAAMA,EAAE1I,OAAS6lD,EAAAA,UAAU8B,SAExDg0C,EAAa/vF,EAAO,GAAGxF,OAAOjJ,OAEpC,IAAIy+F,EAAel9F,KAAKyrF,MAAMwR,EAAa,MAAQ,EAC/CC,EAAe,IAEjBA,EAAel9F,KAAKy0D,KAAKyoC,EAAe,IAG1C,MAAMC,EAASjwF,EAAO,GAAGxF,OAAOhJ,QAAO,CAAC8O,EAAGY,IAAMA,EAAI8uF,GAAiB,IAEhEx1F,EAAS,IAAI01F,aAAaD,GAGhC,OAFeE,EAAAA,oBAAoBC,gBAAgBC,mBAAmB71F,GAExDo6D,QAAQrjE,MAAM,EAGjB29F,EAAmB,CAACnrE,EAAqB1Y,KACpD,MAAMgiB,EAAe,IAAItJ,GAYzB,OAXAsJ,EAAavvB,MAAK,CAACzO,EAAG0O,KACpB,MAAMuyF,GAAS1nD,EAAAA,EAAAA,IAA2Bv5C,GACpCkhG,GAAS3nD,EAAAA,EAAAA,IAA2B7qC,GAC1C,OAAKuyF,GAAWC,GAGaA,QAAtBD,EAAAA,aAAAA,EAAAA,EAAQE,cAAcD,UAAtBD,IAAAA,EAAAA,EAFE,E,IAEFA,CAAkC,IAEzB,SAAdjlF,GACFgiB,EAAaqzB,UAERrzB,CAAY,EAGf8hE,EAAuBprE,IAC3B,IAAK+rE,IACH,OAIF,MAAMW,GAASC,EAAAA,EAAAA,qBAAoB,CAAE5sE,OAAQC,IAC7C,IAAK0sE,EACH,OAIF,MACME,EADeF,EAAOzwF,OAAOxO,QAAQsL,GAAMA,EAAE1I,OAAS6lD,EAAAA,UAAU8B,SAC1CqH,SAASr/B,GAAW,IAAImsE,aAAansE,EAAOvpB,UAExE,IACE,MAAMo2F,EAAWC,EAAAA,gBAAgBC,OAAO,CAAE56C,YAAa,KAAO66C,WAAWJ,GACzEK,EAAWJ,EAASK,QACtB,CAAE,MAAO30F,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,8CACzB,GAGF,IAAI20F,EAEG,MAAM1B,EAAwB,CAACvrE,EAAqBZ,KACzD,IAAK2sE,IACH,MAAM,IAAIx1F,MAAM,2CAElB,IAAK02F,EACH,MAAM,IAAI12F,MAAM,qCAGlB,MAAMuiB,EAAQkH,EAAOrc,QAAQyb,GAC7B,OAAI6tE,EAASE,cAAcr0E,GAAOs0E,UACzBH,EAASE,cAAcr0E,GAAOu0E,iBAAiB7/F,OAGjD,CAAC,EAGGu+F,EAAgB,KAC3B,MAAMuB,EAAiC,iBAAhBC,YAMvB,OAJKD,IACH58F,EAAAA,EAAAA,IAAqBC,EAAAA,GAAkBC,gBAAiBC,EAAAA,GAAoBD,gBAAgB4jF,oBAGvF8Y,CAAO,C,qWC1JhB,MAAME,EAAiD,GAAGt0E,EAAAA,uBACpDu0E,EAA+C,GAAGv0E,EAAAA,iCAClDw0E,EAAsB,GAAGx0E,EAAAA,gBACzBy0E,EAAgC,GAAGz0E,EAAAA,kBAGlC,SAASxf,EAAkCk0F,EAAyB5wE,GACzE,IAAK4wE,GAA0B,iBAAVA,EACnB,MAAO,GAET,MAAM9/F,EAAM+/F,EAAkCD,EAAO5wE,GACrD,IAAI8wE,EAAwB,GAC5B,IACEA,GAAc5vE,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAMtT,aAAaI,QAAQpH,IAAQ,MACzE,CAAE,MAAOyK,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,sDACzB,CAKA,OAHKgC,MAAMrD,QAAQ62F,KACjBA,EAAc,IAETA,CACT,CAGO,SAAS/N,EAAiC6N,EAAyB5wE,EAAmBC,GAC3F,IAAK2wE,GAA0B,iBAAVA,EACnB,OAEF,MAAM9/F,EAAM+/F,EAAkCD,EAAO5wE,GACrD,IAAI+uD,EAAqB,GACzB,IACEA,GAAW7tD,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAMtT,aAAaI,QAAQpH,IAAQ,MACtE,CAAE,MAAOyK,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,sDACzB,CAEKgC,MAAMrD,QAAQ80E,KACjBA,EAAW,IAIb,MAAMgiB,EAAkBhiB,EAASt+E,QAAQw+E,GAAoBA,IAAYhvD,IACzE8wE,EAAgBttE,QAAQxD,GAExBnoB,aAAaC,QAAQjH,EAAKqK,KAAKC,UAAU21F,GAC3C,CAEO,SAAS/N,EAA6B4N,EAAsB5wE,EAAmBC,GACpF,IAAK2wE,IAAU5wE,IAAcC,GAA+B,iBAAV2wE,EAChD,OAEF,MAAM9/F,EAAM+/F,EAAkCD,EAAO5wE,GACrD,IAAI+uD,EAAqB,GACzB,IACEA,GAAW7tD,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAMtT,aAAaI,QAAQpH,IAAQ,MACtE,CAAE,MAAOyK,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,sDACzB,CAEKgC,MAAMrD,QAAQ80E,KACjBA,EAAW,IAEb,MAAMgiB,EAAkBhiB,EAASt+E,QAAQw+E,GAAoBA,IAAYhvD,IACzEnoB,aAAaC,QAAQjH,EAAKqK,KAAKC,UAAU21F,GAC3C,CAEO,SAASpmB,EAAqBimB,EAAe5wE,GAClD,IAAK4wE,IAAU5wE,EACb,OAGF,MAAMlvB,EAAMkgG,EAA0BJ,GAEtC,IAAI7hB,EAAqB,GACzB,IACEA,GAAW7tD,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAMtT,aAAaI,QAAQpH,IAAQ,MACtE,CAAE,MAAOyK,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,+CACzB,CAMA,GAJKgC,MAAMrD,QAAQ80E,KACjBA,EAAW,KAGwB,IAAjCA,EAASpoE,QAAQqZ,GAAmB,CAEtC,MAAM+wE,EAAkBhiB,EAASt+E,QAAQwgG,GAAoBA,IAAYjxE,IACzE+wE,EAAgBttE,QAAQzD,GAExBloB,aAAaC,QAAQjH,EAAKqK,KAAKC,UAAU21F,GAC3C,CACF,CAEO,SAASppB,EAA0BipB,EAAe5wE,GACvD,IAAK4wE,IAAU5wE,EACb,OAEF,MAAMlvB,EAAMkgG,EAA0BJ,GACtC,IAAI7hB,EAAqB,GACzB,IACEA,GAAW7tD,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAMtT,aAAaI,QAAQpH,IAAQ,MACtE,CAAE,MAAOyK,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,sDACzB,CAEKgC,MAAMrD,QAAQ80E,KACjBA,EAAW,IAEb,MAAMgiB,EAAkBhiB,EAASt+E,QAAQwgG,GAAoBA,IAAYjxE,IACzEloB,aAAaC,QAAQjH,EAAKqK,KAAKC,UAAU21F,GAC3C,CAEO,SAAS3pB,EAA2BwpB,GACzC,IAAKA,GAA0B,iBAAVA,EACnB,MAAO,GAET,MAAM9/F,EAAMkgG,EAA0BJ,GACtC,IAAIM,EAAqB,GACzB,IACEA,GAAWhwE,EAAAA,EAAAA,IAAiB/lB,KAAKiQ,MAAMtT,aAAaI,QAAQpH,IAAQ,MACtE,CAAE,MAAOyK,GACP5C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,sDACzB,CAKA,OAHKgC,MAAMrD,QAAQi3F,KACjBA,EAAW,IAENA,CACT,CAEA,SAASL,EAAkC56E,EAAY+J,GAMrD,OAJEA,EADEA,IAAcib,EAAAA,GACJ,GAEA,IAAIjb,IAEX,GAAGwwE,KAAkDv6E,IAAK+J,GACnE,CAEA,SAASgxE,EAA0B/6E,GACjC,MAAO,GAAGw6E,KAAgDx6E,GAC5D,CAEO,SAASjE,I,IACPla,EAAP,OAA4B44F,QAArB54F,EAAAA,aAAaI,QAAQw4F,UAArB54F,IAAAA,EAAAA,OAA6CxK,CACtD,CAEO,SAAS6mB,EAA+By8E,GAC7C94F,aAAaC,QAAQ24F,EAAqBE,EAC5C,CAEA,MAAMO,EAA2B,GAAGj1E,EAAAA,iBAC7B,SAASqW,EACdhkC,EACA6iG,EACAC,G,IAEmBv5F,EAAnB,MACMw9D,GAD4E,QAA/Dx9D,EAAAA,aAAaI,QAAQ,GAAGi5F,KAA4B5iG,eAApDuJ,IAAAA,EAAAA,EAAoE,IAC9D6C,MAAM,KAC/B,IAAK26D,EAAM,KAAOA,EAAM,GACtB,MAAO,CAAE9oC,OAAQ4kE,EAAe9mF,UAAW+mF,GAI7C,MAAO,CAAE7kE,OAFM8oC,EAAM,GAEJhrD,UADCgrD,EAAM,GAE1B,CAEO,SAASluB,EAAoB74C,EAAgBi+B,EAAgBliB,GAE9DkiB,GAAUliB,GACZxS,aAAaC,QAAQ,GAAGo5F,KAA4B5iG,OAAa,GAAGi+B,KAAUliB,IAElF,CAEA,SAASgnF,EAAqBv4F,GAG5B,MAAO,IAFIw4F,EAAAA,EAAAA,IAAkBx4F,OACTy4F,EAAAA,EAAAA,IAAez4F,IAErC,CAEO,SAAS8nB,EAAmB9nB,GACjC,MAAM04F,EAASH,EAAqBv4F,GAC9B24F,EAAe55F,aAAaI,QAAQ,GAAGgkB,EAAAA,MAAiBu1E,iBAC9D,OAAIC,EACKv2F,KAAKiQ,MAAMsmF,GAEb,EACT,CAEO,SAASlqC,EAAmBzuD,EAAuBkG,GACxD,MAAMwyF,EAASH,EAAqBv4F,GACpCjB,aAAaC,QAAQ,GAAGmkB,EAAAA,MAAiBu1E,gBAAsBt2F,KAAKC,UAAU6D,GAChF,CAGA,MAAM0yF,EAA+B,GAAGz1E,EAAAA,iBACjC,SAASmwB,EAAgB5sC,EAAuBmyF,GACrD,MAAMC,EAAqB/5F,aAAaI,QAAQ,GAAGy5F,KAAgClyF,KACnF,OAAOoyF,GAA0CD,CACnD,CAEO,SAASlmD,EAAajsC,EAAuBlF,GAClD,IAAIu3F,EAAcv3F,EAAMqC,WACH,kBAAVrC,GAAwBA,IACjCu3F,EAAc,IAEhBh6F,aAAaC,QAAQ,GAAG45F,KAAgClyF,IAAUqyF,EACpE,CAGA,MAAMC,EAA+B,kCAC9B,SAASjjC,EAAoBrvD,EAAqBlF,GACvD,MAAMzJ,EAAM,GAAGihG,KAAgCtyF,SACjCnS,IAAViN,EAIJzC,aAAaC,QAAQjH,EAAKyJ,GAHxBzC,aAAak6F,WAAWlhG,EAI5B,CAEO,SAAS46D,EAAoBjsD,GAClC,OAAOqH,QAAQhP,aAAaI,QAAQ,GAAG65F,KAAgCtyF,KACzE,CAKA,MAAMwyF,EAAsC,yCACrC,SAASlxE,I,IACKjpB,EAAnB,MAAMo6F,EAAkCD,QAArBn6F,EAAAA,aAAaI,QAAQ+5F,UAArBn6F,IAAAA,EAAAA,EAA6D,GAChF,OAAQo6F,GACN,IAAK,QACL,IAAK,OACH,OAAOA,EACT,QACE,MAAO,OAEb,CAEO,SAAS5nC,EAAyBj3D,GACvCyE,aAAaC,QAAQk6F,EAAqC5+F,EAC5D,CAGA,MAAM8+F,EAAuC,GAAGj2E,EAAAA,uBACzC,SAAS6sC,EAAkBzuC,GAChC,IAAIw3E,EAAcx3E,EAAc1d,WAC3B0d,IACHw3E,EAAc,IAGhBh6F,aAAaC,QAAQ,GAAGo6F,kBAAsDL,EAChF,CAEO,SAAS9oC,EAAmB7uC,GACjC,IAAI23E,EAAc33E,EAAMvd,WACnBud,IACH23E,EAAc,IAGhBh6F,aAAaC,QAAQ,GAAGo6F,UAA8CL,EACxE,CAEO,SAASppC,EAAuBrtC,GACrC,IAAIy2E,EAAcz2E,EAAUze,WACvBye,IACHy2E,EAAc,IAGhBh6F,aAAaC,QAAQ,GAAGo6F,cAAkDL,EAC5E,CAEO,SAASxpC,EAAkBspC,GAEhC,MAAuB,SADH95F,aAAaI,QAAQ,GAAGi6F,oBACLP,CACzC,CAEO,SAASrpC,EAAmBqpC,GAEjC,MAAuB,SADH95F,aAAaI,QAAQ,GAAGi6F,YACLP,CACzC,CAEO,SAASppC,EAAuBopC,GAErC,MAAuB,SADH95F,aAAaI,QAAQ,GAAGi6F,gBACLP,CACzC,CAGA,MAAMQ,EAAiC,GAAGl2E,EAAAA,kBAKnC,SAASia,EACd12B,EACAhG,GAEA,MAAM6C,EAASxE,aAAaI,QAAQ,GAAGk6F,KAAkC3yF,K,IAEhEhG,EADT,OAAe,OAAX6C,GACmC1B,QAA9BnB,EAAAA,EAAOiiB,MAAM9gB,GAAM0B,IAAW1B,WAA9BnB,IAAAA,EAAAA,EAGF,IACT,CAEO,SAASysB,EAAwEzmB,EAAWlF,GACjGzC,aAAaC,QAAQ,GAAGq6F,KAAkC3yF,IAAUlF,EACtE,CAEA,MAAM83F,EAA4C,GAAGn2E,EAAAA,6BAC9C,SAASk7D,IAEd,QADct/E,aAAaI,QAAQm6F,EAErC,CAEA,MAAMC,EAAmC,GAAGp2E,EAAAA,gCAErC,SAASizD,IACd,MAAM50E,EAAQzC,aAAaI,QAAQo6F,GACnC,OAAO/3F,EAAQ0G,SAAS1G,EAAO,SAAMjN,CACvC,CACO,SAAS47E,EAA6BqpB,GAC3Cz6F,aAAaC,QAAQu6F,EAAkCC,EAAU31F,SAAS,IAC5E,CAEO,SAASigC,IAEd,OADc/kC,aAAaI,QAAQy4F,EAErC,CACO,SAAS3zD,EAAejsC,GAC7B+G,aAAaC,QAAQ44F,EAA+B5/F,EACtD,C,kCCtVO,MAAMvE,EAAU,CACrBgmG,UAAW,CACTzmG,UAAW,2BACX0mG,OAAQ,yBACRC,OAAQ,yBACRtnD,OAAQ,8BAEVxb,qBAAsB,CACpBne,OAAQ,+BAEVsK,OAAQ,CACN42E,cAAe,wCAEjBriG,UAAW,CACToL,WAAY,CACVvG,MAAO,sEAETy9F,SAAU,CAAC,EACXvhB,YAAa,CACXl8E,MAAO,iEAEToiB,OAAQ,CACNC,UAAW,+CAGf4pB,WAAY,CACV/hB,OAAQ,CAAC,EACTpgB,OAAQ,CAAC,EACToiC,OAAQ,CACNmG,eAAgB,8BAChBnO,gBAAiB,+BACjBgM,kBAAmB,kCACnBC,aAAc,4BACdG,aAAc,4BACdnE,qBAAsB,CACpB3vC,aAAc,oCACd6wC,aAAc,oCACdC,aAAc,oCACdd,iBAAkB,gCAClBM,qBAAsB,iCACtBV,0BAA2B,iCAE3Bc,cAAe,gCACfC,kBAAmB,iCACnBF,uBAAwB,oCAK9BtmB,MAAO,CACLE,eAAgB,oCAChBkqD,oBAAqB,oCACrB2sB,eAAgB,4BAChBC,sBAAuB,oCACvB50E,sBAAuB,sCACvBP,wBAAyB,wCACzB5B,OAAQ,CACNC,eAAgB,iCAIpBvvB,sBAAuB,CACrBs+C,WAAY,0BACZgoD,YAAa,2BACbl0B,YAAa,2BACbT,QAAS,uBACTQ,UAAW,yBACXH,UAAW,yBACX/sE,oBAAqB,oCACrBhF,oBAAqB,oCACrBK,oBAAqB,qCAEvBoG,SAAU,CACRqnE,aAAc,4BACdpmE,sBAAuB,sCACvBE,sBAAuB,uCAEzB0+F,gBAAiB,CACfj3E,OAAQ,gCACRk3E,MAAO,4BAET74C,MAAO,CACLvrD,QAAS,4BACTwrD,YAAa,sBACbmD,WAAY,4B,yGChFT,MAAM4P,EAAYnP,IACvB,GAAIj+C,UAAUiL,WAAahZ,OAAOihG,gBAChClzF,UAAUiL,UAAUkoF,UAAUl1C,OACzB,CACL,MAAMn8C,EAAKH,SAASyxF,cAAc,YAClCtxF,EAAGvH,MAAQ0jD,EACXt8C,SAASlJ,KAAK46F,YAAYvxF,GAC1BA,EAAGqtB,SACHxtB,SAAS2xF,YAAY,QACrB3xF,SAASlJ,KAAK86F,YAAYzxF,EAC5B,GAoBK,MAIMo4C,EAAuB,CAACs5C,EAAmBpxE,EAAyB1rB,KAC/E,MAAM4a,EAAWnI,EAAAA,gBAAgBoI,cAC3Bm4C,EAAehqC,EAAAA,QAAQ4xC,qBAI7B,OAHA5H,EAAY,KAA0BhzD,EAAU8Y,KAAK+hD,cACrD7H,EAAY,GAAwBhzD,EAAU4Y,GAAGiiD,cACjD7H,EAAa8pC,GAAar4F,KAAKC,UAAUgnB,GATdqxE,EAUP/zE,EAAAA,QAAQC,UAAUrO,EAASkgD,SAAU9H,GATlD,GAAGz3D,OAAOqf,SAAS2+C,aAAah+D,OAAOqf,SAAS4+C,OAAOl7C,EAAAA,OAAO6M,YAAY4xE,IADvD,IAACA,CAU4C,EAGlE,SAAStzE,EAAsB8P,GACpC,OAAIA,EAAMz/B,QACDy/B,aAAAA,EAAAA,EAAOyjE,OAAO,GAAGC,eAAgB1jE,EAAMvrB,MAAM,IAGtD/L,EAAAA,EAAOC,KAAK,2BACLq3B,EACT,CAEO,SAAS83C,EAAa93C,EAAez/B,EAAgBojG,GAC1D,OAAO3jE,EAAM79B,UAAU,EAAG5B,IAAWojG,GAAY3jE,EAAMz/B,OAASA,EAAS,IAAM,GACjF,CAEO,SAAS28D,EAA8BhT,GAE5C,MAAM3qC,GAAOsuD,EAAAA,EAAAA,UAAS3jB,EAAI05C,YAAc,GAClCvkF,GAAKwuD,EAAAA,EAAAA,UAAS3jB,EAAI05C,YAAc,GAWtC,MATc,CACZrkF,OACAF,KACAtE,IAAK,CACHwE,OACAF,MAKN,C,+SC5BO,SAASs1E,EAAsBjrF,GACpC,MAAM,qBACJqrF,EAAuB,GAAE,wBACzBL,EAA0B,GAAE,qBAC5BD,EAAuB,GAAE,OACzB1pF,GACErB,EAEJ,OAAQqB,GACN,IAAK,qBACH,MAAO,IAAIkqE,EAAAA,KAAkB8f,MAAyBL,KAA2BmP,EAAAA,MAAmBxR,EAAAA,MAAqBnsB,EAAAA,MAAqBosB,EAAAA,MAAyBmC,KAAwBlC,EAAAA,KACjM,IAAK,OACH,MAAO,IAAItd,EAAAA,KAAkB8f,MAAyBL,KAA2BmP,EAAAA,MAAmBxR,EAAAA,MAAqBnsB,EAAAA,MAAqBosB,EAAAA,MAAyBE,EAAAA,MAAoBiC,KAAwBlC,EAAAA,KACrN,IAAK,SACH,MAAO,IAAItd,EAAAA,KAAkB8f,MAAyBL,KAA2BmP,EAAAA,MAAmBxR,EAAAA,MAAqBnsB,EAAAA,MAAqBosB,EAAAA,MAAyBG,EAAAA,MAAoBgC,KAAwBlC,EAAAA,KACrN,QACE,MAAO,IAAItd,EAAAA,KAAkB8f,MAAyBL,KAA2BmP,EAAAA,MAAmBxR,EAAAA,MAAqBnsB,EAAAA,MAAqBosB,EAAAA,MAAyB7tE,EAAAA,MAAqBgwE,KAAwBlC,EAAAA,KAE1N,CAEO,SAASt1E,EAAoBnF,GAClC,MAAMrX,EAAWP,EAAAA,GAAW4jG,eAAez/E,EAAAA,GAAcvM,GACzD,KAAMrX,aAAoB2jB,EAAAA,IACxB,MAAM,IAAI9a,MAAM,0BAElB,OAAO7I,CACT,CAEO,SAAS+d,EAAkB1G,GAChC,OAAOojB,EAAwB5Y,EAAAA,GAAYxK,EAC7C,CAEO,SAASqkE,EAAyBrkE,GACvC,OAAOojB,EAAwBskD,EAAAA,GAAoB1nE,EACrD,CAEO,SAASkG,EAAoBlG,GAClC,OAAOojB,EAAwBra,EAAAA,GAAc/I,EAC/C,CAGO,SAASoG,EAA6BpG,GAC3C,OAAOojB,EAAwBntB,EAAAA,GAAyB+J,EAC1D,CAEO,SAASqF,EAAkBrF,GAChC,OAAOojB,EAAwB7d,EAAAA,GAAYvF,EAC7C,CAEO,SAASwF,EAAkBxF,GAChC,OAAOojB,EAAwBjxB,EAAAA,GAAY6N,EAC7C,CAEO,SAASogD,EAAsBpgD,GACpC,MAAMrX,EAAWP,EAAAA,GAAW4jG,eAAex/E,EAAAA,GAAiBxM,GAC5D,KAAMrX,aAAoB4hB,EAAAA,IACxB,MAAM,IAAI/Y,MAAM,6BAElB,OAAO7I,CACT,CAEO,SAAS2pC,EAAwBtyB,GACtC,MAAMrX,EAAWP,EAAAA,GAAW4jG,eAAez4D,EAAAA,GAAoBvzB,GAC/D,KAAMrX,aAAoB8jB,EAAAA,GACxB,MAAM,IAAIjb,MAAM,gCAElB,OAAO7I,CACT,CAEO,SAAS28E,EAA6BtlE,GAC3C,MAAMrX,EAAWP,EAAAA,GAAW4jG,eAAe1kB,EAAAA,GAAwBtnE,GACnE,KAAMrX,aAAoB8jB,EAAAA,GACxB,MAAM,IAAIjb,MAAM,+BAElB,OAAO7I,CACT,CAEO,SAAS4/B,EAAwBvoB,GACtC,MAAMrX,EAAWP,EAAAA,GAAW4jG,eAAex7D,EAAAA,GAAoBxwB,GAC/D,KAAMrX,aAAoB8jB,EAAAA,GACxB,MAAM,IAAIjb,MAAM,gCAElB,OAAO7I,CACT,CAEO,SAAS2L,EAAsB0L,GACpC,MAAMrX,EAAWP,EAAAA,GAAW4jG,eAAe//E,EAAAA,GAAgBjM,GAC3D,KAAMrX,aAAoBqjB,EAAAA,IACxB,MAAM,IAAIxa,MAAM,4BAElB,OAAO7I,CACT,CAEO,SAASiqB,EAAuB5S,GACrC,MAAMrX,EAAWP,EAAAA,GAAW4jG,eAAepgF,EAAAA,GAAkB5L,GAC7D,KAAMrX,aAAoB4hB,EAAAA,IACxB,MAAM,IAAI/Y,MAAM,8BAElB,OAAO7I,CACT,CAEO,SAASy6B,EAAwBT,EAAgC3iB,GACtE,MAAMrX,EAAWP,EAAAA,GAAW4jG,eAAerpE,EAAc3iB,GAEzD,KAAMrX,aAAoB4hB,EAAAA,IACxB,MAAM,IAAI/Y,MAAM,sCAAsCmxB,0BAExD,OAAOh6B,CACT,CAEO,SAASo+E,EAAkC/1E,GAChD,MAAMrI,EAAWP,EAAAA,GAAW4jG,eAAe3kB,EAAAA,GAA0Br2E,GACrE,KAAMrI,aAAoB8jB,EAAAA,GACxB,MAAM,IAAIjb,MAAM,sCAElB,OAAO7I,CACT,CAEO,SAASk6E,EAAoC7xE,GAClD+1E,EAAkC/1E,GAAU/B,SAAS,CACnDuD,MAAO,KACPpF,MAAO,IAEX,CAEO,SAASqyE,EAAgCzuE,GAC9C,MAAMrI,EAAWP,EAAAA,GAAW4jG,eAAexkB,EAAAA,GAAmBx2E,GAC9D,KAAMrI,aAAoB4hB,EAAAA,IACxB,MAAM,IAAI/Y,MAAM,+BAElB,OAAO7I,CACT,CAEO,SAASm6E,EAAmC/5E,EAAaiI,GAC9DyuE,EAAgCzuE,GAAU/B,SAAS,CACjDZ,QAAS,CACP,CAEEmE,MAAO,KACPG,SAAU,KACV5J,IAAKA,KAIb,CAEO,SAASuc,EAA2Bqd,GACzC,MAAO,OAAOA,GAChB,CAOO,SAASxvB,EACdzK,EACAi6B,EAAuBpd,EAAAA,IAEvB,IAAIoI,EAAAA,EAAAA,IAAiBjlB,GACnB,MAAO,CACL8J,MAAO9J,EAAO8J,MACdS,OAAQ,sBAIZ,IACE,MAAMg5F,GAAepyB,EAAAA,EAAAA,IAA4BnxE,EAAO8J,QACpDsnE,EAAAA,EAAAA,IAAgCpxE,EAAO8J,OACvC9J,EAAO8J,MACLgvB,GAAa0qE,EAAAA,EAAAA,IAAiB94F,KAAKiQ,MAAM4oF,IAC/C,IAAmB,IAAfzqE,EACF,OAAOA,EAEP,MAAM,IAAIqlB,EAAAA,GAAe,kDAE7B,CAAE,MAAOrzC,GAQP,GAPIA,aAAaqzC,EAAAA,GACfj2C,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,gDAAgDovB,IAAgBnwB,MAAO9J,EAAO8J,QAErG5B,EAAAA,EAAOW,MAAMiC,EAAG,CAAED,IAAK,6CAA6CovB,IAAgBnwB,MAAO9J,EAAO8J,QAIhG9J,EAAO8J,MACT,MAAO,CACLA,MAAO9J,EAAO8J,MACdS,OAAQ,SAGZ,MAAMO,CACR,CACF,CAEO,SAASiuB,EACdkB,EACAj6B,GAEA,OAAIi6B,IAAiBpd,EAAAA,IAAc7c,EAC1ByK,EAAyBzK,GAG3B,CACL8J,MAAO9J,aAAAA,EAAAA,EAAQ8J,MAEnB,CAEO,SAASi3F,EAAezpF,GAE7B,OAGK,SACLmsF,GAEA,MAAM7iB,EAAc6iB,EAA0B99F,QAC3C3F,QAAQA,GAAWA,EAAOK,MAAQmqC,EAAAA,KAClCrqC,KAAKH,GAAWA,EAAO8J,QAE1B,IAAK82E,EACH,MAAM,IAAI93E,MAAM,uCAElB,OAAO83E,EAAY,EACrB,CAdS8iB,CADgB1lF,EAAkB1G,GACaxX,MACxD,CAeO,SAASghG,EAAkBxpF,GAEhC,OADmB1L,EAAsB0L,GACvBpL,UACpB,C,sIC1QO,SAASs7B,EAA6BvjC,GAC3C,MAAMpE,EAAYH,EAAAA,GAAWC,aAAasE,GAC1C,IAAI0/F,EAAoC,GAExC,IAAK,MAAM1jG,KAAYJ,EAAUC,MAAMD,UACjCI,aAAoB4hB,EAAAA,IAAwB5hB,EAASH,MAAM6F,QAAQ5F,QACrE4jG,EAAiBv5F,KAAKnK,GAEpBA,aAAoB8jB,EAAAA,GAA0B9jB,EAASH,MAAMgK,OAAiC,eAAxB7J,EAASH,MAAMvB,MACvFolG,EAAiBv5F,KAAKnK,GAG1B,OAAO0jG,CACT,CAEO,SAASh8D,EAAer/B,GAE7B,MAAMrE,EAAavE,EAAAA,GAAWwE,YAAYoE,EAAUnE,EAAAA,GACpDF,EAAWsC,SAAS,CAClB7D,SAAU,KAGa8kC,EAA6BvjC,GAErC4F,SAAS5J,IACxB,GAAIA,aAAoB4hB,EAAAA,IAA+C,yBAAvB5hB,EAASH,MAAMO,IAAgC,CAC7F,IAAI,UAAEkvB,IAAc0X,EAAAA,EAAAA,MAEhB1X,IAAcgb,EAAAA,KAChBhb,EAAYib,EAAAA,IAEdvqC,EAASsG,SAAS,CAChBZ,QAAS1F,EAASH,MAAM6F,QAAQ3F,QAAQA,GAAWA,EAAOK,MAAQkvB,KAEtE,MAAWtvB,aAAoB4hB,EAAAA,GAC7B5hB,EAASsG,SAAS,CAChBZ,QAAS,KAEF1F,aAAoB8jB,EAAAA,GAC7B9jB,EAASsG,SAAS,CAChBuD,MAAO,GACP9K,KAAM,IAEV,GAEJ,CAEO,MAAMkf,EAAmB,SAAUje,GACxC,MAAM2jG,EAAM3jG,EAASH,MAAM+jG,KAG3B,GAAID,GAAO3jG,EAASH,MAAM6F,QAAQ6F,MAAMxL,GAAWA,EAAOK,MAAQujG,EAAIvjG,KAAOL,EAAOiK,WAAa6B,EAAAA,GAASC,QACxG,OAAO+3F,EAAAA,GAGT,MAAMC,EAAc9jG,EAASH,MAAMvB,OAASujB,EAAAA,GACtCkiF,EAAyB/jG,EAASH,MAAM6F,QAAQ3F,QAAQA,IAAWuL,EAAAA,EAAAA,IAAoBvL,EAAOiK,YAAWlK,OACzGkkG,IAAuBL,aAAAA,EAAAA,EAAKvjG,MAAkC,IAA3B2jG,EACnCE,GAAsBN,aAAAA,EAAAA,EAAKvjG,MAAO2jG,EAAyB,EAGjE,GAAID,IAAgBE,GAAuBC,GACzC,OAAOJ,EAAAA,GAIT,GAAIF,aAAAA,EAAAA,EAAKt5F,KAAM,CACb,MACM1H,EAD+BghG,EAAIt5F,KACvB1H,KAElB,GAAa,UAATA,GAA6B,UAATA,GAA6B,aAATA,EAC1C,OAAOuhG,EAAAA,EAEX,CAEA,OAAO3hF,EAAAA,EACT,C","sources":["webpack://grafana-lokiexplore-app/./Components/FilterButton.tsx","webpack://grafana-lokiexplore-app/./Components/GrotError.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/InterceptBanner.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/GiveFeedbackButton.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/CustomVariableValueSelectors.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/PatternTag.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/PatternControls.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/VariableLayoutScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LayoutScene.tsx","webpack://grafana-lokiexplore-app/./services/TagValuesProviders.ts","webpack://grafana-lokiexplore-app/./services/TagKeysProviders.ts","webpack://grafana-lokiexplore-app/./services/Mousetrap.ts","webpack://grafana-lokiexplore-app/./services/KeybindingSet.ts","webpack://grafana-lokiexplore-app/./services/keyboardShortcuts.ts","webpack://grafana-lokiexplore-app/./Components/NoLokiSplash.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/IndexScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LevelsVariableScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LineFilterVariable.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/LineFilterVariablesScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/ShowLogsButtonScene.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/ToolbarScene.tsx","webpack://grafana-lokiexplore-app/./Components/Pages.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/GoToExploreButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/AddToInvestigationButton.tsx","webpack://grafana-lokiexplore-app/./Components/Panels/PanelMenu.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/AddToFiltersButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/BreakdownSearchScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/ByFrameRepeater.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/EmptyLayoutScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldSelector.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldValuesBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldsAggregatedBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/FieldsBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelsAggregatedBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LabelValuesBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LayoutSwitcher.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/NoMatchingLabelsScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Panels/ValueSummary.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SearchInput.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/NumericFilterPopoverScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SelectLabelActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/SortByScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/StatusWrapper.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/TimeSeriesLimit.ts","webpack://grafana-lokiexplore-app/./services/mixins.ts","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/RegexIconButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterCaseSensitivityButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/LineFilterInput.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterEditor.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogOptionsScene.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableColumnsContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableCellContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/TableHeaderContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsColumnSearch.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableEmptyFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableNavField.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableActiveFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableAvailableFields.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/LogsTableMultiSelect.tsx","webpack://grafana-lokiexplore-app/./Components/Table/ColumnSelection/ColumnSelectionDrawerWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/DefaultCellWrapComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Context/QueryContext.tsx","webpack://grafana-lokiexplore-app/./Components/Table/CellContextMenu.tsx","webpack://grafana-lokiexplore-app/./Components/Table/constants.ts","webpack://grafana-lokiexplore-app/./Components/Table/DefaultPill.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LineActionIcons.tsx","webpack://grafana-lokiexplore-app/./Components/Table/DefaultCellComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogLinePill.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Scroller.tsx","webpack://grafana-lokiexplore-app/./Components/Table/RawLogLineText.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogLineCellComponent.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsTableHeader.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsTableHeaderWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/Table.tsx","webpack://grafana-lokiexplore-app/./Components/Table/TableWrap.tsx","webpack://grafana-lokiexplore-app/./Components/Table/TableProvider.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsTableScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LineFilter/LineFilterScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsListScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/CopyLinkButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsPanelError.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsPanelScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsVolumeActions.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/LogsVolumePanel.tsx","webpack://grafana-lokiexplore-app/./Components/IndexScene/ShareButtonScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/FilterByPatternsButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternFieldLabelStatsRow.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternFieldLabelStats.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternNameLabel.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsLogsSampleScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsTableExpandedRow.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsViewTableScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsFrameScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsViewTextSearch.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsNotDetected.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/Breakdowns/Patterns/PatternsBreakdownScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceScene/BreakdownViews.ts","webpack://grafana-lokiexplore-app/./Components/ServiceScene/ActionBarScene.tsx","webpack://grafana-lokiexplore-app/./services/migrations.ts","webpack://grafana-lokiexplore-app/./Components/ServiceScene/ServiceScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/FavoriteServiceHeaderActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/SelectServiceButton.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ConfigureVolumeError.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/NoServiceSearchResults.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/TabPopoverScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionTabsScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/NoServiceVolume.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/AddLabelToFiltersHeaderActionScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionPaginationScene.tsx","webpack://grafana-lokiexplore-app/./Components/ServiceSelectionScene/ServiceSelectionScene.tsx","webpack://grafana-lokiexplore-app/./Components/Table/LogsHeaderActions.tsx","webpack://grafana-lokiexplore-app/./services/CustomConstantVariable.ts","webpack://grafana-lokiexplore-app/./services/ExpressionBuilder.ts","webpack://grafana-lokiexplore-app/./services/analytics.ts","webpack://grafana-lokiexplore-app/./services/comparison.ts","webpack://grafana-lokiexplore-app/./services/logql.ts","webpack://grafana-lokiexplore-app/./services/combineResponses.ts","webpack://grafana-lokiexplore-app/./services/shardQuerySplitting.ts","webpack://grafana-lokiexplore-app/./services/datasource.ts","webpack://grafana-lokiexplore-app/./services/expressions.ts","webpack://grafana-lokiexplore-app/./services/favorites.ts","webpack://grafana-lokiexplore-app/./services/fields.ts","webpack://grafana-lokiexplore-app/./services/filters.ts","webpack://grafana-lokiexplore-app/./services/labels.ts","webpack://grafana-lokiexplore-app/./services/levels.ts","webpack://grafana-lokiexplore-app/./services/logsFrame.ts","webpack://grafana-lokiexplore-app/./services/metadata.ts","webpack://grafana-lokiexplore-app/./services/navigate.ts","webpack://grafana-lokiexplore-app/./services/LogsSceneQueryRunner.ts","webpack://grafana-lokiexplore-app/./services/panel.ts","webpack://grafana-lokiexplore-app/./services/plugin.ts","webpack://grafana-lokiexplore-app/./services/query.ts","webpack://grafana-lokiexplore-app/./services/routing.ts","webpack://grafana-lokiexplore-app/./services/scenes.ts","webpack://grafana-lokiexplore-app/./services/search.ts","webpack://grafana-lokiexplore-app/./services/sorting.ts","webpack://grafana-lokiexplore-app/./services/store.ts","webpack://grafana-lokiexplore-app/./services/testIds.ts","webpack://grafana-lokiexplore-app/./services/text.ts","webpack://grafana-lokiexplore-app/./services/variableGetters.ts","webpack://grafana-lokiexplore-app/./services/variableHelpers.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Button, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { testIds } from 'services/testIds';\n\ntype Props = {\n onInclude: () => void;\n onClear: () => void;\n isIncluded: boolean;\n onExclude: () => void;\n isExcluded: boolean;\n buttonFill: 'solid' | 'outline' | 'text';\n titles?: {\n include: string;\n exclude: string;\n };\n hideExclude?: boolean;\n};\n\nexport const FilterButton = (props: Props) => {\n const { isExcluded, isIncluded, onInclude, onExclude, onClear, titles, buttonFill, hideExclude } = props;\n const styles = useStyles2(getStyles, isIncluded, isExcluded, hideExclude);\n return (\n
\n \n Include\n \n {!hideExclude && (\n \n Exclude\n \n )}\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, isIncluded: boolean, isExcluded: boolean, hideExclude?: boolean) => {\n return {\n container: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderRadius: 0,\n borderRight: isIncluded || hideExclude ? undefined : 'none',\n }),\n excludeButton: css({\n borderRadius: `0 ${theme.shape.radius.default} ${theme.shape.radius.default} 0`,\n borderLeft: isExcluded ? undefined : 'none',\n }),\n };\n};\n","import React from 'react';\n\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, EmptyState } from '@grafana/ui';\n\ntype Props = {\n children?: React.ReactNode;\n};\n\nexport const GrotError = ({ children }: React.PropsWithChildren) => {\n const styles = useStyles2(getStyles);\n return (\n
\n \n {children && children}\n \n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n wrap: css({\n margin: '0 auto',\n }),\n };\n};\n","import { Alert, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport function InterceptBanner(props: { onRemove: () => void }) {\n const styles = useStyles2(getStyles);\n return (\n <>\n \n
\n Check out our{' '}\n \n Get started doc\n \n , or see{' '}\n \n recent changes\n \n .
\n Help us shape the future of the app.{' '}\n \n Send us feedback\n {' '}\n or engage with us on{' '}\n \n GitHub\n \n .\n
\n \n \n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n alert: css({\n flex: 'none',\n }),\n };\n}\n","import React from 'react';\nimport { Icon, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport const GiveFeedbackButton = () => {\n const styles = useStyles2(getStyles);\n return (\n
\n \n Give feedback\n \n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n wrapper: css({\n display: 'flex',\n marginLeft: 'auto',\n gap: theme.spacing(1),\n position: 'relative',\n top: theme.spacing(-1),\n }),\n feedback: css({\n alignSelf: 'center',\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n '&:hover': {\n color: theme.colors.text.link,\n },\n }),\n };\n};\n","import {\n ControlsLayout,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VariableValueSelectWrapper,\n} from '@grafana/scenes';\nimport React from 'react';\n\nexport interface VariableValueSelectorsState extends SceneObjectState {\n layout?: ControlsLayout;\n include?: string[];\n exclude?: string[];\n}\n\nexport class CustomVariableValueSelectors extends SceneObjectBase {\n public static Component = CustomVariableValueSelectorsRenderer;\n}\n\nfunction CustomVariableValueSelectorsRenderer({ model }: SceneComponentProps) {\n const variablesSetState = sceneGraph.getVariables(model).useState();\n let variables = variablesSetState.variables;\n\n if (model.state.include?.length) {\n variables = variablesSetState.variables.filter((variable) =>\n model.state.include?.includes(variable.state.name ?? '')\n );\n }\n if (model.state.exclude?.length) {\n variables = variablesSetState.variables.filter(\n (variable) => !model.state.exclude?.includes(variable.state.name ?? '')\n );\n }\n\n return (\n <>\n {variables.map((variable) => (\n \n ))}\n \n );\n}\n","import { css } from '@emotion/css';\nimport { Button, Icon, Tag, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport React, { useState } from 'react';\nimport { testIds } from 'services/testIds';\n\ninterface Props {\n onRemove(): void;\n pattern: string;\n size?: PatternSize;\n}\n\ntype PatternSize = 'sm' | 'lg';\n\nexport const PatternTag = ({ onRemove, pattern, size = 'lg' }: Props) => {\n const styles = useStyles2(getStyles);\n const [expanded, setExpanded] = useState(false);\n return (\n
setExpanded(!expanded)} onMouseLeave={() => setExpanded(false)}>\n \n \n \n \n
\n );\n};\n\nconst PREVIEW_WIDTH: Record = {\n sm: 50,\n lg: Math.round(window.innerWidth / 8),\n};\n\nfunction getPatternPreview(pattern: string, size: PatternSize) {\n const length = pattern.length;\n if (length < PREVIEW_WIDTH[size]) {\n return pattern;\n }\n\n const substringLength = Math.round(PREVIEW_WIDTH[size] * 0.4);\n\n return `${pattern.substring(0, substringLength)} … ${pattern.substring(length - substringLength)}`;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n pattern: css({\n display: 'flex',\n fontFamily: 'monospace',\n gap: theme.spacing(0.25),\n cursor: 'pointer',\n overflow: 'hidden',\n }),\n tag: css({\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n backgroundColor: theme.colors.secondary.main,\n border: `solid 1px ${theme.colors.secondary.border}`,\n color: theme.colors.secondary.text,\n boxSizing: 'border-box',\n padding: theme.spacing(0.25, 0.75),\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n removeButton: css({\n paddingLeft: 2.5,\n paddingRight: 2.5,\n }),\n };\n};\n","import React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { PatternTag } from './PatternTag';\nimport { css } from '@emotion/css';\nimport { useStyles2, Text } from '@grafana/ui';\nimport { USER_EVENTS_ACTIONS, USER_EVENTS_PAGES, reportAppInteraction } from 'services/analytics';\nimport { testIds } from 'services/testIds';\nimport { AppliedPattern } from '../../services/variables';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ntype Props = {\n patterns: AppliedPattern[] | undefined;\n onRemove: (patterns: AppliedPattern[]) => void;\n};\nexport const PatternControls = ({ patterns, onRemove }: Props) => {\n const styles = useStyles2(getStyles);\n\n if (!patterns || patterns.length === 0) {\n return null;\n }\n\n const includePatterns = patterns.filter((pattern) => pattern.type === 'include');\n const excludePatterns = patterns.filter((pattern) => pattern.type !== 'include');\n\n const onRemovePattern = (pattern: AppliedPattern) => {\n addCurrentUrlToHistory();\n onRemove(patterns.filter((pat) => pat !== pattern));\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_removed, {\n includePatternsLength: includePatterns.length - (pattern?.type === 'include' ? 1 : 0),\n excludePatternsLength: excludePatterns.length - (pattern?.type !== 'include' ? 1 : 0),\n type: pattern.type,\n });\n };\n\n return (\n
\n {includePatterns.length > 0 && (\n
\n \n Included pattern{patterns.length > 1 ? 's' : ''}\n \n
\n {includePatterns.map((p) => (\n onRemovePattern(p)} />\n ))}\n
\n
\n )}\n {excludePatterns.length > 0 && (\n
\n \n Excluded pattern{excludePatterns.length > 1 ? 's' : ''}:\n \n
\n {excludePatterns.map((p) => (\n 1 ? 'sm' : 'lg'}\n onRemove={() => onRemovePattern(p)}\n />\n ))}\n
\n
\n )}\n
\n );\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n patternsContainer: css({\n overflow: 'hidden',\n }),\n patterns: css({\n display: 'flex',\n gap: theme.spacing(1),\n alignItems: 'center',\n flexWrap: 'wrap',\n }),\n };\n}\n","import { SceneComponentProps, SceneFlexLayout, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { GiveFeedbackButton } from './GiveFeedbackButton';\nimport { CustomVariableValueSelectors } from './CustomVariableValueSelectors';\nimport { PatternControls } from './PatternControls';\nimport { IndexScene } from './IndexScene';\nimport { CONTROLS_VARS_DATASOURCE, CONTROLS_VARS_FIELDS_COMBINED, LayoutScene } from './LayoutScene';\nimport { useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { AppliedPattern } from '../../services/variables';\n\ntype HeaderPosition = 'sticky' | 'relative';\ninterface VariableLayoutSceneState extends SceneObjectState {\n position: HeaderPosition;\n}\nexport class VariableLayoutScene extends SceneObjectBase {\n static Component = ({ model }: SceneComponentProps) => {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { controls, patterns } = indexScene.useState();\n\n const layoutScene = sceneGraph.getAncestor(model, LayoutScene);\n const { lineFilterRenderer, levelsRenderer } = layoutScene.useState();\n\n const styles = useStyles2((theme) => getStyles(theme, model.state.position));\n\n return (\n \n <>\n {/* First row - datasource, timepicker, refresh, labels, button */}\n {controls && (\n
\n
\n
\n {controls.map((control) => {\n return control instanceof SceneFlexLayout ? (\n \n ) : null;\n })}\n
\n
\n
\n \n
\n {controls.map((control) => {\n return control.state.key === CONTROLS_VARS_DATASOURCE ? (\n \n ) : null;\n })}\n\n
\n {controls.map((control) => {\n return !(control instanceof CustomVariableValueSelectors) &&\n !(control instanceof SceneFlexLayout) ? (\n \n ) : null;\n })}\n
\n
\n
\n
\n )}\n\n {/* 2nd row - Combined fields (fields + metadata) + Levels - custom renderer */}\n
\n {levelsRenderer && }\n {controls && (\n
\n
\n {controls.map((control) => {\n return control instanceof CustomVariableValueSelectors &&\n control.state.key === CONTROLS_VARS_FIELDS_COMBINED ? (\n \n ) : null;\n })}\n
\n
\n )}\n
\n\n {/* 3rd row - Patterns */}\n
\n indexScene.setState({ patterns })}\n />\n
\n\n {/* 4th row - Line filters - custom renderer */}\n
\n {lineFilterRenderer && }\n
\n \n \n );\n };\n}\n\n// @todo remove hardcoded height: https://github.com/grafana/grafana/issues/103795\nconst grafanaTopBarHeight = 40;\nfunction getStyles(theme: GrafanaTheme2, position: HeaderPosition) {\n return {\n firstRowWrapper: css({\n '& > div > div': {\n gap: '16px',\n label: 'first-row-wrapper',\n\n [theme.breakpoints.down('lg')]: {\n flexDirection: 'column',\n },\n },\n }),\n controlsFirstRowContainer: css({\n label: 'controls-first-row',\n display: 'flex',\n gap: theme.spacing(2),\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column-reverse',\n },\n }),\n controlsRowContainer: css({\n '&:empty': {\n display: 'none',\n },\n label: 'controls-row',\n display: 'flex',\n // @todo add custom renderers for all variables, this currently results in 2 \"empty\" rows that always take up space\n gap: theme.spacing(2),\n alignItems: 'flex-start',\n [theme.breakpoints.down('lg')]: {\n flexDirection: 'column',\n },\n }),\n stickyControlsContainer: css({\n position: 'sticky',\n top: grafanaTopBarHeight,\n left: 0,\n background: theme.colors.background.canvas,\n zIndex: theme.zIndex.navbarFixed,\n gap: theme.spacing(0),\n boxShadow: theme.shadows.z1,\n }),\n controlsContainer: css({\n label: 'controlsContainer',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n padding: theme.spacing(2),\n }),\n filters: css({\n label: 'filters',\n display: 'flex',\n }),\n filtersWrap: css({\n label: 'filtersWrap',\n display: 'flex',\n gap: theme.spacing(2),\n width: 'calc(100% - 450)',\n flexWrap: 'wrap',\n alignItems: 'flex-end',\n }),\n controlsWrapper: css({\n label: 'controlsWrapper',\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(0.375),\n }),\n timeRangeDatasource: css({\n label: 'timeRangeDatasource',\n display: 'flex',\n gap: theme.spacing(1),\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n }),\n timeRange: css({\n label: 'timeRange',\n display: 'flex',\n flexDirection: 'row',\n gap: theme.spacing(1),\n }),\n };\n}\n","import { GrafanaTheme2 } from '@grafana/data';\nimport { SceneComponentProps, sceneGraph, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { IndexScene } from './IndexScene';\nimport { css } from '@emotion/css';\nimport { InterceptBanner } from './InterceptBanner';\n\nimport { PLUGIN_ID } from '../../services/plugin';\nimport { logger } from '../../services/logger';\nimport { LineFilterVariablesScene } from './LineFilterVariablesScene';\nimport { VariableLayoutScene } from './VariableLayoutScene';\nimport { LevelsVariableScene } from './LevelsVariableScene';\nimport { getDrilldownSlug, PageSlugs } from '../../services/routing';\n\ninterface LayoutSceneState extends SceneObjectState {\n interceptDismissed: boolean;\n lineFilterRenderer?: LineFilterVariablesScene;\n levelsRenderer?: LevelsVariableScene;\n variableLayout?: SceneObject;\n}\n\nconst interceptBannerStorageKey = `${PLUGIN_ID}.interceptBannerStorageKey`;\n\nexport const CONTROLS_VARS_FIRST_ROW_KEY = 'vars-row__datasource-labels-timepicker-button';\nexport const CONTROLS_VARS_METADATA_ROW_KEY = 'vars-metadata';\nexport const CONTROLS_VARS_LEVELS_ROW_KEY = 'vars-levels';\nexport const CONTROLS_VARS_FIELDS = 'vars-fields';\nexport const CONTROLS_VARS_FIELDS_COMBINED = 'vars-fields-metadata';\nexport const CONTROLS_VARS_TIMEPICKER = 'vars-timepicker';\nexport const CONTROLS_VARS_REFRESH = 'vars-refresh';\nexport const CONTROLS_VARS_TOOLBAR = 'vars-toolbar';\nexport const CONTROLS_VARS_DATASOURCE = 'vars-ds';\nexport const CONTROLS_VARS_LABELS = 'vars-labels';\n\nexport class LayoutScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n interceptDismissed: !!localStorage.getItem(interceptBannerStorageKey),\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { contentScene } = indexScene.useState();\n const { interceptDismissed, variableLayout } = model.useState();\n\n if (!contentScene) {\n logger.warn('content scene not defined');\n return null;\n }\n\n const styles = useStyles2(getStyles);\n return (\n
\n
\n {!interceptDismissed && (\n {\n model.dismiss();\n }}\n />\n )}\n\n {variableLayout && }\n\n {/* Final \"row\" - body */}\n
{contentScene && }
\n
\n
\n );\n };\n\n public onActivate() {\n const slug = getDrilldownSlug();\n this.setState({\n lineFilterRenderer: new LineFilterVariablesScene({}),\n levelsRenderer: new LevelsVariableScene({}),\n variableLayout: new VariableLayoutScene({ position: slug === PageSlugs.explore ? 'sticky' : 'relative' }),\n });\n }\n\n public dismiss() {\n this.setState({\n interceptDismissed: true,\n });\n localStorage.setItem(interceptBannerStorageKey, 'true');\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n bodyContainer: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n }),\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n maxWidth: '100vw',\n }),\n body: css({\n label: 'body-wrapper',\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n padding: `0 ${theme.spacing(2)} ${theme.spacing(2)}`,\n }),\n controlsContainer: css({\n label: 'controlsContainer',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n };\n}\n","import { AdHocFiltersVariable, AdHocFilterWithLabels, SceneObject } from '@grafana/scenes';\nimport { DataSourceGetTagValuesOptions, GetTagResponse, MetricFindValue, ScopedVars, TimeRange } from '@grafana/data';\nimport { BackendSrvRequest, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { getDataSource } from './scenes';\nimport { logger } from './logger';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { getDataSourceVariable, getValueFromFieldsFilter } from './variableGetters';\nimport { AdHocFiltersWithLabelsAndMeta, DetectedFieldType, VAR_LEVELS } from './variables';\nimport { isArray } from 'lodash';\nimport { FilterOp } from './filterTypes';\nimport { getFavoriteLabelValuesFromStorage } from './store';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { ExpressionBuilder } from './ExpressionBuilder';\nimport { isOperatorInclusive, isOperatorRegex } from './operatorHelpers';\n\ntype FetchDetectedLabelValuesOptions = {\n expr?: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n throwError: boolean;\n};\n\nexport type FetchDetectedFieldsOptions = {\n expr: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n};\n\nexport type DetectedFieldsResult = Array<{\n label: string;\n type: DetectedFieldType;\n cardinality: number;\n parsers: Array<'logfmt' | 'json'> | null;\n}>;\n\nexport interface LokiLanguageProviderWithDetectedLabelValues {\n fetchDetectedLabelValues: (\n labelName: string,\n queryOptions?: FetchDetectedLabelValuesOptions,\n requestOptions?: Partial\n ) => Promise;\n\n fetchDetectedFields: (\n queryOptions?: FetchDetectedFieldsOptions,\n requestOptions?: Partial\n ) => Promise;\n}\n\nexport const getDetectedFieldValuesTagValuesProvider = async (\n filter: AdHocFiltersWithLabelsAndMeta,\n variable: AdHocFiltersVariable,\n expr: string,\n sceneRef: SceneObject,\n timeRange: TimeRange,\n variableType: UIVariableFilterType\n): Promise<{\n replace?: boolean;\n values: MetricFindValue[];\n}> => {\n const datasourceUnknownType = await getDataSourceSrv().get(getDataSource(sceneRef));\n // Narrow the DataSourceApi type to DataSourceWithBackend\n if (!(datasourceUnknownType instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagValuesProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n\n // Assert datasource is Loki\n const lokiDatasource = datasourceUnknownType as LokiDatasource;\n // Assert language provider is LokiLanguageProvider\n const languageProvider = lokiDatasource.languageProvider as LokiLanguageProviderWithDetectedLabelValues;\n\n let values: MetricFindValue[] = [];\n\n if (languageProvider && languageProvider.fetchDetectedLabelValues) {\n const options: FetchDetectedLabelValuesOptions = {\n expr,\n limit: 1000,\n timeRange,\n throwError: true,\n };\n\n const requestOptions: Partial = {\n showErrorAlert: false,\n };\n\n try {\n let results = await languageProvider.fetchDetectedLabelValues(filter.key, options, requestOptions);\n if (results && isArray(results)) {\n // Always return all level values\n if (variableType === VAR_LEVELS) {\n return { replace: true, values: results.map((key) => ({ text: key })) };\n }\n\n const currentFilters = variable.state.filters;\n\n // Remove values that are already used, if an exact match is found\n let valuesToRemove: string[] = [];\n currentFilters.forEach((filter) => {\n const value = filter.valueLabels?.[0] ?? filter.value;\n if (isOperatorRegex(filter.operator)) {\n value.split('|').forEach((v) => valuesToRemove.push(v));\n } else {\n valuesToRemove.push(value);\n }\n });\n\n const filteredResults = results.filter((value) => {\n return !valuesToRemove.includes(value);\n });\n\n if (filter.meta?.parser !== 'structuredMetadata') {\n if (filter.value) {\n const valueDecoded = getValueFromFieldsFilter(filter, variableType);\n return {\n replace: true,\n values: filteredResults.map((v) => ({\n text: v,\n value: JSON.stringify({\n value: v,\n parser: valueDecoded.parser,\n }),\n })),\n };\n } else {\n // if the filter is wip, we trust that the parser was returned in the getTagKeys method, and added to the meta prop on the filter\n return {\n replace: true,\n values: filteredResults.map((v) => ({\n text: v,\n value: JSON.stringify({\n value: v,\n parser: filter.meta?.parser ?? 'mixed',\n }),\n })),\n };\n }\n } else {\n values = filteredResults.map((r) => ({ text: r }));\n }\n } else {\n values = [];\n logger.error(results, { msg: 'fetchDetectedLabelValues error!' });\n }\n } catch (e) {\n logger.error(e, {\n msg: 'getDetectedFieldValuesTagValuesProvider: loki missing detected_field/.../values endpoint. Upgrade to Loki 3.3.0 or higher.',\n });\n values = [];\n }\n } else {\n logger.warn(\n 'getDetectedFieldValuesTagValuesProvider: fetchDetectedLabelValues is not defined in Loki datasource. Upgrade to Grafana 11.4 or higher.'\n );\n values = [];\n }\n\n return { replace: true, values };\n};\n\nexport function tagValuesFilterAdHocFilters(\n existingFilters: AdHocFilterWithLabels[],\n filter: AdHocFilterWithLabels<{}>\n) {\n let oldFiltersFiltered = existingFilters.filter(\n (f) => !(isOperatorInclusive(filter.operator) && f.key === filter.key)\n );\n\n // If there aren't any inclusive filters, we need to ignore the exclusive ones as well, or Loki will throw an error\n if (!oldFiltersFiltered.some((filter) => isOperatorInclusive(filter.operator))) {\n oldFiltersFiltered = [];\n }\n\n return oldFiltersFiltered;\n}\n\nexport async function getLabelsTagValuesProvider(\n variable: AdHocFiltersVariable,\n filter: AdHocFilterWithLabels\n): Promise<{\n replace?: boolean;\n values: GetTagResponse | MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(variable));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagValuesProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n\n if (datasource && datasource.getTagValues) {\n // Filter out other values for this key so users can include other values for this label\n const filterTransformer = new ExpressionBuilder(variable.state.filters);\n const filters = filterTransformer.getJoinedLabelsFilters();\n const filtersFiltered = tagValuesFilterAdHocFilters(filters, filter);\n\n const options: DataSourceGetTagValuesOptions = {\n key: filter.key,\n filters: filtersFiltered,\n };\n\n let results = await datasource.getTagValues(options);\n\n if (isArray(results)) {\n results = results.filter((result) => {\n // Filter out values that we already have added as filters\n return !variable.state.filters\n .filter((f) => f.key === filter.key)\n .some((f) => {\n if (isOperatorRegex(f.operator)) {\n const values = f.value.split('|');\n return values.some((value) => value === result.text);\n } else {\n // If true, the results should be filtered out\n return f.operator === FilterOp.Equal && f.value === result.text;\n }\n });\n });\n const favoriteValuesArray = getFavoriteLabelValuesFromStorage(\n getDataSourceVariable(variable).getValue()?.toString(),\n filter.key\n );\n const favoriteValuesSet = new Set(favoriteValuesArray);\n if (favoriteValuesArray.length) {\n results.sort((a, b) => {\n return (favoriteValuesSet.has(b.text) ? 1 : -1) - (favoriteValuesSet.has(a.text) ? 1 : -1);\n });\n }\n }\n\n return { replace: true, values: results };\n } else {\n logger.error(new Error('getTagValuesProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n","import { logger } from './logger';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport {\n DataSourceGetTagKeysOptions,\n getDefaultTimeRange,\n GetTagResponse,\n KeyValue,\n MetricFindValue,\n ScopedVars,\n TimeRange,\n} from '@grafana/data';\nimport { AdHocFiltersVariable, SceneObject } from '@grafana/scenes';\nimport { BackendSrvRequest, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { getDataSource } from './scenes';\nimport { LABELS_TO_REMOVE } from './filters';\nimport { DetectedFieldsResult, LokiLanguageProviderWithDetectedLabelValues } from './TagValuesProviders';\nimport { LEVEL_VARIABLE_VALUE, ParserType, VAR_FIELDS_AND_METADATA, VAR_LEVELS } from './variables';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { ExpressionBuilder } from './ExpressionBuilder';\n\nexport async function getLabelsTagKeysProvider(variable: AdHocFiltersVariable): Promise<{\n replace?: boolean;\n values: GetTagResponse | MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(variable));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagKeysProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n\n if (datasource && datasource.getTagKeys) {\n const filtersTransformer = new ExpressionBuilder(variable.state.filters);\n const filters = filtersTransformer.getJoinedLabelsFilters();\n\n const options: DataSourceGetTagKeysOptions = {\n filters,\n };\n\n const tagKeys = await datasource.getTagKeys(options);\n const result: MetricFindValue[] = Array.isArray(tagKeys) ? tagKeys : [];\n const filteredResult = result.filter((key) => !LABELS_TO_REMOVE.includes(key.text));\n\n return { replace: true, values: filteredResult };\n } else {\n logger.error(new Error('getTagKeysProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n\ntype DetectedFieldQueryOptions = {\n expr: string;\n timeRange?: TimeRange;\n limit?: number;\n scopedVars?: ScopedVars;\n sceneRef: SceneObject;\n variableType: UIVariableFilterType;\n};\n\nexport async function getFieldsKeysProvider({\n limit,\n timeRange,\n scopedVars,\n expr,\n sceneRef,\n variableType,\n}: DetectedFieldQueryOptions): Promise<{\n replace?: boolean;\n values: MetricFindValue[];\n}> {\n const datasource_ = await getDataSourceSrv().get(getDataSource(sceneRef));\n if (!(datasource_ instanceof DataSourceWithBackend)) {\n logger.error(new Error('getTagKeysProvider: Invalid datasource!'));\n throw new Error('Invalid datasource!');\n }\n const datasource = datasource_ as LokiDatasource;\n const languageProvider = datasource.languageProvider as LokiLanguageProviderWithDetectedLabelValues;\n\n const options: DetectedFieldQueryOptions = {\n expr,\n timeRange,\n scopedVars,\n variableType,\n sceneRef,\n limit,\n };\n\n // @todo delete after min supported grafana is upgraded to >=11.6\n // see ced526b3e37baded9082ffc3c2378a21201801b6 before this all got messed up\n const fetchDetectedFieldsFn =\n (datasource &&\n typeof languageProvider.fetchDetectedFields === 'function' &&\n languageProvider.fetchDetectedFields.bind(languageProvider)) ||\n function (opts: DetectedFieldQueryOptions) {\n return fetchDetectedFields(datasource, opts);\n };\n\n // fetchDetectedFields did not make the 11.5 cutoff, so is only available in 11.6, to keep this PR from needing to wait for 2 months before release, we're going to copy over the implementation into Grafana Logs Drilldown\n if (fetchDetectedFieldsFn && typeof fetchDetectedFieldsFn === 'function') {\n const tagKeys: DetectedFieldsResult | Error = await fetchDetectedFieldsFn(options);\n\n if (tagKeys instanceof Error) {\n logger.error(tagKeys, { msg: 'Failed to fetch detected fields' });\n throw tagKeys;\n }\n\n const result: MetricFindValue[] = tagKeys\n .filter((field) => {\n if (variableType === VAR_LEVELS) {\n return field.label === LEVEL_VARIABLE_VALUE;\n }\n\n if (variableType === VAR_FIELDS_AND_METADATA && field.label !== LEVEL_VARIABLE_VALUE) {\n return true;\n }\n\n return field.parsers !== null;\n })\n .map((field) => {\n if (variableType === VAR_FIELDS_AND_METADATA) {\n let parser: ParserType = field.parsers?.length === 1 ? field.parsers[0] : 'mixed';\n if (field.parsers === null) {\n parser = 'structuredMetadata';\n }\n\n const type = field.type;\n\n return {\n text: field.label,\n value: field.label,\n group: parser,\n meta: {\n parser,\n type,\n },\n };\n }\n\n return { text: field.label, value: field.label };\n });\n\n result.sort((a, b) => {\n if (a.group === 'structuredMetadata' && b.group !== 'structuredMetadata') {\n return -1;\n }\n if (a.group !== 'structuredMetadata' && b.group === 'structuredMetadata') {\n return 1;\n }\n return 0;\n });\n\n return { replace: true, values: result };\n } else {\n logger.error(new Error('getTagKeysProvider: missing or invalid datasource!'));\n return { replace: true, values: [] };\n }\n}\n\nconst EMPTY_SELECTOR = '{}';\n// @todo delete after min supported grafana is upgraded to >=11.6\nasync function fetchDetectedFields(\n datasource: LokiDatasource,\n queryOptions: DetectedFieldQueryOptions,\n requestOptions?: Partial\n): Promise {\n if (!('interpolateString' in datasource) || typeof datasource?.interpolateString !== 'function') {\n throw new Error('Datasource missing interpolateString method');\n }\n\n const interpolatedExpr =\n queryOptions.expr && queryOptions.expr !== EMPTY_SELECTOR\n ? datasource.interpolateString(queryOptions.expr, queryOptions.scopedVars)\n : undefined;\n\n if (!interpolatedExpr) {\n throw new Error('fetchDetectedFields requires query expression');\n }\n\n const url = `detected_fields`;\n const range = queryOptions?.timeRange ?? getDefaultTimeRange();\n const rangeParams = datasource.getTimeRangeParams(range);\n const { start, end } = rangeParams;\n const params: KeyValue = { start, end, limit: queryOptions?.limit ?? 1000 };\n params.query = interpolatedExpr;\n\n return new Promise(async (resolve, reject) => {\n try {\n const data: { limit: number; fields: DetectedFieldsResult } = await datasource.getResource(\n url,\n params,\n requestOptions\n );\n resolve(data.fields);\n } catch (error) {\n console.error('error', error);\n reject(error);\n }\n });\n}\n","/**\n * Originally from https://github.com/ccampbell/mousetrap\n *\n * Copyright 2012-2017 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.5\n * @url craig.is/killing/mice\n */\n\ninterface ExtendedKeyboardEvent extends KeyboardEvent {\n returnValue: boolean; // IE returnValue\n}\n\ntype MousetrapCallback = (e: ExtendedKeyboardEvent, combo: string) => boolean | void;\n\ninterface KeyInfo {\n key: string;\n modifiers: string[];\n action: string;\n}\n\ninterface CallbackInfo {\n /**\n * Modifiers (such as `ctrl`) involved in this binding\n */\n modifiers: string[];\n\n /**\n * A single key press binding, such as `t` (for `t v`) or `ctrl + z`\n */\n combo: string;\n\n /**\n * If this binding is a part of a sequence (`t v`, but not `ctrl + z`), this is the full sequence\n */\n seq?: string;\n\n /**\n * The event type, such as keydown, keyup, or keypress\n */\n action: string;\n level: number | undefined;\n callback: MousetrapCallback;\n}\n\n/**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n */\nlet MAP: Record = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta',\n};\n\n/**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n */\nlet KEYCODE_MAP: Record = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: \"'\",\n};\n\n/**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivalents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n */\nlet SHIFT_MAP: Record = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n $: '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n _: '-',\n '+': '=',\n ':': ';',\n '\"': \"'\",\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\',\n};\n\n/**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n */\nlet SPECIAL_ALIASES: Record = {\n option: 'alt',\n command: 'meta',\n return: 'enter',\n escape: 'esc',\n plus: '+',\n mod: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl',\n};\n\n/**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n */\nlet REVERSE_MAP: Record | null = null;\n\n/**\n * loop through the f keys, f1 to f19 and add them to the map\n * programmatically\n */\nfor (let i = 1; i < 20; ++i) {\n MAP[111 + i] = 'f' + i;\n}\n\n/**\n * loop through to map numbers on the numeric keypad\n */\nfor (let i = 0; i <= 9; ++i) {\n // This needs to use a string cause otherwise since 0 is falsey\n // mousetrap will never fire for numpad 0 pressed as part of a keydown\n // event.\n //\n // @see https://github.com/ccampbell/mousetrap/pull/258\n MAP[i + 96] = i.toString();\n}\n\n/**\n * takes the event and returns the key character\n */\nfunction characterFromEvent(event: KeyboardEvent): string {\n // for keypress events we should return the character as is\n if (event.type === 'keypress') {\n let character = String.fromCharCode(event.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!event.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (MAP[event.which]) {\n return MAP[event.which];\n }\n\n if (KEYCODE_MAP[event.which]) {\n return KEYCODE_MAP[event.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(event.which).toLowerCase();\n}\n\n/**\n * checks if two arrays are equal\n */\nfunction modifiersMatch(modifiers1: string[], modifiers2: string[]): boolean {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n}\n\n/**\n * takes a key event and figures out what the modifiers are\n */\nfunction eventModifiers(event: KeyboardEvent): string[] {\n let modifiers = [];\n\n if (event.shiftKey) {\n modifiers.push('shift');\n }\n\n if (event.altKey) {\n modifiers.push('alt');\n }\n\n if (event.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (event.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n}\n\n/**\n * prevents default for this event\n */\nfunction preventDefault(event: KeyboardEvent): void {\n if (event.preventDefault) {\n event.preventDefault();\n return;\n }\n\n event.returnValue = false;\n}\n\n/**\n * stops propagation for this event\n */\nfunction stopPropagation(event: KeyboardEvent): void {\n if (event.stopPropagation) {\n event.stopPropagation();\n return;\n }\n\n event.cancelBubble = true;\n}\n\n/**\n * determines if the keycode specified is a modifier key or not\n */\nfunction isModifier(key: string): boolean {\n return key === 'shift' || key === 'ctrl' || key === 'alt' || key === 'meta';\n}\n\n/**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n */\nfunction getReverseMap() {\n if (!REVERSE_MAP) {\n REVERSE_MAP = {};\n for (let key in MAP) {\n const keyNumber = parseInt(key, 10);\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (keyNumber > 95 && keyNumber < 112) {\n continue;\n }\n\n if (MAP.hasOwnProperty(key)) {\n REVERSE_MAP[MAP[key]] = key;\n }\n }\n }\n return REVERSE_MAP;\n}\n\n/**\n * picks the best action based on the key combination\n */\nfunction pickBestAction(key: string, modifiers: string[], action?: string): string {\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action === 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n}\n\n/**\n * Converts from a string key combination to an array\n */\nfunction keysFromString(combination: string): string[] {\n if (combination === '+') {\n return ['+'];\n }\n\n combination = combination.replace(/\\+{2}/g, '+plus');\n return combination.split('+');\n}\n\n/**\n * Gets info for a specific key combination\n */\nfunction getKeyInfo(combination: string, action?: string): KeyInfo {\n let keys;\n let key;\n let i;\n let modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (SPECIAL_ALIASES[key]) {\n key = SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action !== 'keypress' && SHIFT_MAP[key]) {\n key = SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n if (!key) {\n throw new Error('Unable to get key');\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action,\n };\n}\n\nfunction belongsTo(element: null | ParentNode | Element | Document, ancestor: Element | Document): boolean {\n if (element === null || element === document) {\n return false;\n }\n\n if (element === ancestor) {\n return true;\n }\n\n return belongsTo(element.parentNode, ancestor);\n}\n\nexport class Mousetrap {\n target: HTMLElement | Document;\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n */\n _callbacks: Record = {};\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n */\n _directMap: Record = {};\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n */\n _sequenceLevels: Record = {};\n\n /**\n * variable to store the setTimeout call\n */\n _resetTimer: undefined | number = undefined;\n\n /**\n * temporary state where we will ignore the next keyup\n */\n _ignoreNextKeyup: boolean | string = false;\n\n /**\n * temporary state where we will ignore the next keypress\n */\n _ignoreNextKeypress = false;\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n */\n _nextExpectedAction: boolean | string = false;\n\n _globalCallbacks: Record = {};\n\n constructor(el: HTMLElement | Document) {\n this.target = el;\n\n this.target.addEventListener('keypress', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n this.target.addEventListener('keydown', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n this.target.addEventListener('keyup', (event) => {\n if (event instanceof KeyboardEvent) {\n this._handleKeyEvent(event);\n }\n });\n }\n\n /**\n * resets all sequence counters except for the ones passed in\n */\n private _resetSequences = (doNotReset: Record): void => {\n doNotReset = doNotReset || {};\n\n let activeSequences = false,\n key;\n\n for (key in this._sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n this._sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n this._nextExpectedAction = false;\n }\n };\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n */\n private _getMatches = (\n character: string,\n modifiers: string[],\n event: Pick,\n sequenceName?: string,\n combination?: string,\n level?: number\n ): CallbackInfo[] => {\n let i;\n let callback;\n let matches = [];\n let action = event.type;\n\n // if there are no events related to this keycode\n if (!this._callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action === 'keyup' && isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < this._callbacks[character].length; ++i) {\n callback = this._callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && this._sequenceLevels[callback.seq] !== callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action !== callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if (\n (action === 'keypress' && !event.metaKey && !event.ctrlKey) ||\n modifiersMatch(modifiers, callback.modifiers)\n ) {\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n let deleteCombo = !sequenceName && callback.combo === combination;\n let deleteSequence = sequenceName && callback.seq === sequenceName && callback.level === level;\n if (deleteCombo || deleteSequence) {\n this._callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n };\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propagation on the event\n *\n * @param combo Is the key binding that triggered this callback. When a sequence is triggered, this is the whole sequence. Otherwise, it's the intermediate keys\n * @param sequence Is the 'parent sequence' of the combo. When the whole sequence is triggered, this is undefined.\n */\n private _fireCallback = (callback: Function, e: KeyboardEvent, combo: string, sequence?: string) => {\n // if this event should not happen stop here\n const target = e.target || e.srcElement;\n if (target && target instanceof HTMLElement && this.stopCallback(e, target, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n preventDefault(e);\n stopPropagation(e);\n }\n };\n\n /**\n * handles a character key event\n */\n private _handleKey = (character: string, modifiers: string[], e: KeyboardEvent) => {\n let callbacks = this._getMatches(character, modifiers, e);\n let i;\n let doNotReset: Record = {};\n let maxLevel = 0;\n let processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level ?? 0);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n const seq = callbacks[i].seq;\n if (seq) {\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level !== maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[seq] = 1;\n this._fireCallback(callbacks[i].callback, e, callbacks[i].combo, seq);\n\n // When matching a callback, don't reset other callbacks that starts with this prefix\n // This allows chaining of multiple shortcuts that share a prefix. e.g. if we have\n // `t left` and `t right`, allow user to hit `t left`, `right` without resetting the sequence\n const suffixPrefixIndex = seq.lastIndexOf(character);\n const sequencePrefix = seq.slice(0, suffixPrefixIndex);\n for (const [seq, level] of Object.entries(this._sequenceLevels)) {\n if (level > 0 && seq.startsWith(sequencePrefix)) {\n doNotReset[seq] = 1;\n }\n }\n\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n this._fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // Don't reset a sequence if this character is the start of a sequence that has already progressed.\n // This allows `t left` to be hit immediately after a `t right`\n for (const callback of this._callbacks[character] ?? []) {\n if (callback.action === e.type && callback.seq && callback.level === 0) {\n doNotReset[callback.seq] = 1;\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n let ignoreThisKeypress = e.type === 'keypress' && this._ignoreNextKeypress;\n if (e.type === this._nextExpectedAction && !isModifier(character) && !ignoreThisKeypress) {\n this._resetSequences(doNotReset);\n }\n\n this._ignoreNextKeypress = processedSequenceCallback && e.type === 'keydown';\n };\n\n /**\n * handles a keydown event\n */\n private _handleKeyEvent = (rawEvent: Event) => {\n if (!(rawEvent instanceof KeyboardEvent)) {\n throw new Error(\"Didn't get a KeyboardEvent\");\n }\n const event: KeyboardEvent = rawEvent;\n\n // Don't trigger shortcuts when a key is just held down\n if (event.repeat) {\n return;\n }\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof event.which !== 'number') {\n // @ts-expect-error - TODO: determine what to do with this compat\n event.which = event.keyCode;\n }\n\n let character = characterFromEvent(event);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (event.type === 'keyup' && this._ignoreNextKeyup === character) {\n this._ignoreNextKeyup = false;\n return;\n }\n\n this.handleKey(character, eventModifiers(event), event);\n };\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n */\n private _resetSequenceTimer = () => {\n clearTimeout(this._resetTimer);\n this._resetTimer = setTimeout(this._resetSequences, 1000);\n };\n\n /**\n * binds a key sequence to an event\n */\n private _bindSequence = (combo: string, keys: string[], callback: MousetrapCallback, action?: string): void => {\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n this._sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n */\n const _increaseSequence = (nextAction: string): MousetrapCallback => {\n return () => {\n this._nextExpectedAction = nextAction;\n ++this._sequenceLevels[combo];\n this._resetSequenceTimer();\n };\n };\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n */\n const _callbackAndReset = (e: KeyboardEvent): void => {\n this._fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n this._ignoreNextKeyup = characterFromEvent(e);\n }\n\n // Reset the sequence timer and allow for this shortcut to be\n // triggered again just by repeating the last key\n this._resetSequenceTimer();\n };\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (let i = 0; i < keys.length; ++i) {\n let isFinal = i + 1 === keys.length;\n let wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || getKeyInfo(keys[i + 1]).action);\n this._bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n };\n\n /**\n * binds a single keyboard combination\n */\n private _bindSingle = (\n combination: string,\n callback: MousetrapCallback,\n action?: string,\n sequenceName?: string,\n level?: number\n ): void => {\n // store a direct mapped reference for use with Mousetrap.trigger\n this._directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n let sequence = combination.split(' ');\n let info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n this._bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n this._callbacks[info.key] = this._callbacks[info.key] || [];\n\n // remove an existing match if there is one\n const eventLike = { type: info.action, metaKey: false, ctrlKey: false };\n this._getMatches(info.key, info.modifiers, eventLike, sequenceName, combination, level);\n\n const callbackInfo: CallbackInfo = {\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination,\n };\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n this._callbacks[info.key][sequenceName ? 'unshift' : 'push'](callbackInfo);\n };\n\n /**\n * binds multiple combinations to the same callback\n */\n private _bindMultiple = (combinations: string[], callback: MousetrapCallback, action: string | undefined): void => {\n for (let i = 0; i < combinations.length; ++i) {\n this._bindSingle(combinations[i], callback, action);\n }\n };\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n */\n bind = (keys: string | string[], callback: MousetrapCallback, action?: string) => {\n keys = keys instanceof Array ? keys : [keys];\n this._bindMultiple(keys, callback, action);\n return self;\n };\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n */\n unbind = (keys: string | string[], action?: string) => {\n return this.bind(keys, function () {}, action);\n };\n\n // From bind-global plugin\n // https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js#L28\n bindGlobal = (keys: string | string[], callback: MousetrapCallback, action?: string) => {\n this.bind(keys, callback, action);\n\n if (keys instanceof Array) {\n for (let i = 0; i < keys.length; i++) {\n this._globalCallbacks[keys[i]] = true;\n }\n return;\n }\n\n this._globalCallbacks[keys] = true;\n };\n\n // From bind-global plugin\n // https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js#L42\n unbindGlobal = (keys: string | string[], action?: string) => {\n this.unbind(keys, action);\n\n if (keys instanceof Array) {\n for (let i = 0; i < keys.length; i++) {\n this._globalCallbacks[keys[i]] = false;\n }\n return;\n }\n\n this._globalCallbacks[keys] = false;\n };\n\n /**\n * triggers an event that has already been bound\n */\n trigger = (keys: string, action: string | undefined) => {\n let self = this;\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n return self;\n };\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n */\n reset = () => {\n this._callbacks = {};\n this._directMap = {};\n return this;\n };\n\n /**\n * should we stop this event before firing off callbacks\n */\n stopCallback = (e: Event, element: HTMLElement, combo: string, sequence?: string): boolean => {\n // From global bind plugin https://github.com/Elvynia/mousetrap-global-bind/blob/master/mousetrap-global-bind.js\n if (this._globalCallbacks[combo] || (sequence && this._globalCallbacks[sequence])) {\n return false;\n }\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (belongsTo(element, this.target)) {\n return false;\n }\n\n // Events originating from a shadow DOM are re-targetted and `e.target` is the shadow host,\n // not the initial event target in the shadow tree. Note that not all events cross the\n // shadow boundary.\n // For shadow trees with `mode: 'open'`, the initial event target is the first element in\n // the event’s composed path. For shadow trees with `mode: 'closed'`, the initial event\n // target cannot be obtained.\n if ('composedPath' in e && typeof e.composedPath === 'function') {\n // For open shadow trees, update `element` so that the following check works.\n let initialEventTarget = e.composedPath()[0];\n if (initialEventTarget !== e.target && initialEventTarget instanceof HTMLElement) {\n element = initialEventTarget;\n }\n }\n\n // stop for input, select, and textarea\n return Boolean(\n element.tagName === 'INPUT' ||\n element.tagName === 'SELECT' ||\n element.tagName === 'TEXTAREA' ||\n ('isContentEditable' in element && element.isContentEditable)\n );\n };\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n handleKey: typeof this._handleKey = (...args) => {\n return this._handleKey(...args);\n };\n\n /**\n * allow custom key mappings\n */\n addKeycodes = (object: Record) => {\n for (let key in object) {\n if (object.hasOwnProperty(key)) {\n MAP[key] = object[key];\n }\n }\n REVERSE_MAP = null;\n };\n}\n","import { Mousetrap } from './Mousetrap';\n\nexport const mousetrap = new Mousetrap(document);\n\nexport interface KeyBindingItem {\n /** Key or key pattern like mod+o */\n key: string;\n /** Defaults to keydown */\n type?: string;\n /** The handler callback */\n onTrigger: () => void;\n}\n\n/**\n * Small util to make it easier to add and unbind Mousetrap keybindings\n */\nexport class KeybindingSet {\n private _binds: KeyBindingItem[] = [];\n\n addBinding(item: KeyBindingItem) {\n mousetrap.bind(\n item.key,\n (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n evt.returnValue = false;\n item.onTrigger();\n },\n 'keydown'\n );\n this._binds.push(item);\n }\n\n removeAll() {\n this._binds.forEach((item) => {\n mousetrap.unbind(item.key, item.type);\n });\n this._binds = [];\n }\n}\n","import { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { KeybindingSet } from './KeybindingSet';\nimport { getAppEvents, locationService } from '@grafana/runtime';\nimport { BusEventBase, BusEventWithPayload, RawTimeRange, SetPanelAttentionEvent } from '@grafana/data';\nimport { sceneGraph, SceneObject, VizPanel } from '@grafana/scenes';\nimport { getExploreLink } from '../Components/Panels/PanelMenu';\nimport { getTimePicker } from './scenes';\nimport { OptionsWithLegend } from '@grafana/ui';\nimport { narrowTimeRange } from './narrowing';\n\nconst appEvents = getAppEvents();\n\nexport function setupKeyboardShortcuts(scene: IndexScene) {\n const keybindings = new KeybindingSet();\n let vizPanelKey: string | null = null;\n\n const panelAttentionSubscription = appEvents.subscribe(SetPanelAttentionEvent, (event) => {\n if (typeof event.payload.panelId === 'string') {\n vizPanelKey = event.payload.panelId;\n }\n });\n\n function withFocusedPanel(scene: IndexScene, fn: (vizPanel: VizPanel) => void) {\n return () => {\n const vizPanel = sceneGraph.findObject(scene, (o) => o.state.key === vizPanelKey && o.isActive);\n if (vizPanel && vizPanel instanceof VizPanel) {\n fn(vizPanel);\n return;\n }\n };\n }\n\n function withAllPanels(scene: IndexScene, fn: (vizPanel: VizPanel) => void) {\n return () => {\n const vizPanels = sceneGraph.findAllObjects(scene, (o) => o instanceof VizPanel && o.isActive);\n vizPanels.forEach((vizPanel) => {\n if (vizPanel && vizPanel instanceof VizPanel) {\n fn(vizPanel);\n }\n });\n };\n }\n\n // Toggle legend\n keybindings.addBinding({\n key: 'p l',\n onTrigger: withFocusedPanel(scene, toggleVizPanelLegend),\n });\n\n // Toggle all legend\n keybindings.addBinding({\n key: 'a l',\n onTrigger: withAllPanels(scene, toggleVizPanelLegend),\n });\n\n // Go to Explore for panel\n keybindings.addBinding({\n key: 'p x',\n onTrigger: withFocusedPanel(scene, async (vizPanel: VizPanel) => {\n const url = getExploreLink(vizPanel);\n if (url) {\n locationService.push(url);\n }\n }),\n });\n\n // Copy time range\n keybindings.addBinding({\n key: 't c',\n onTrigger: () => {\n const timeRange = sceneGraph.getTimeRange(scene);\n setWindowGrafanaSceneContext(timeRange);\n appEvents.publish(new CopyTimeEvent());\n },\n });\n\n // Paste time range\n keybindings.addBinding({\n key: 't v',\n onTrigger: () => {\n const event = new PasteTimeEvent({ updateUrl: false });\n scene.publishEvent(event);\n appEvents.publish(event);\n },\n });\n\n // Refresh\n keybindings.addBinding({\n key: 'd r',\n onTrigger: () => sceneGraph.getTimeRange(scene).onRefresh(),\n });\n\n // Zoom out\n keybindings.addBinding({\n key: 't z',\n onTrigger: () => {\n handleZoomOut(scene);\n },\n });\n\n // Zoom out alias\n keybindings.addBinding({\n key: 'ctrl+z',\n onTrigger: () => {\n handleZoomOut(scene);\n },\n });\n\n // Relative -> Absolute time range\n keybindings.addBinding({\n key: 't a',\n onTrigger: () => {\n const timePicker = getTimePicker(scene);\n timePicker?.toAbsolute();\n },\n });\n\n keybindings.addBinding({\n key: 't left',\n onTrigger: () => {\n handleTimeRangeShift(scene, 'left');\n },\n });\n keybindings.addBinding({\n key: 't right',\n onTrigger: () => {\n handleTimeRangeShift(scene, 'right');\n },\n });\n return () => {\n keybindings.removeAll();\n panelAttentionSubscription.unsubscribe();\n };\n}\n\nfunction handleZoomOut(scene: IndexScene) {\n const timePicker = getTimePicker(scene);\n timePicker?.onZoom();\n}\n\nfunction handleTimeRangeShift(scene: IndexScene, direction: 'left' | 'right') {\n const timePicker = getTimePicker(scene);\n\n if (!timePicker) {\n return;\n }\n\n if (direction === 'left') {\n timePicker.onMoveBackward();\n }\n if (direction === 'right') {\n timePicker.onMoveForward();\n }\n}\n\nexport function toggleVizPanelLegend(vizPanel: VizPanel): void {\n const options = vizPanel.state.options;\n if (hasLegendOptions(options) && typeof options.legend.showLegend === 'boolean') {\n vizPanel.onOptionsChange({\n legend: {\n showLegend: options.legend.showLegend ? false : true,\n },\n });\n }\n}\n\nfunction hasLegendOptions(optionsWithLegend: unknown): optionsWithLegend is OptionsWithLegend {\n return optionsWithLegend != null && typeof optionsWithLegend === 'object' && 'legend' in optionsWithLegend;\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\nexport class CopyTimeEvent extends BusEventBase {\n static type = 'copy-time';\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\ninterface PasteTimeEventPayload {\n updateUrl?: boolean;\n timeRange?: string;\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/types/events.ts\n// @todo export from core grafana\nexport class PasteTimeEvent extends BusEventWithPayload {\n static type = 'paste-time';\n}\n\n/**\n * Adds the scene object to the global window state so that templateSrv in core can interpolate strings using the scene interpolation engine with the scene as scope.\n * This is needed for old datasources that call templateSrv.replace without passing scopedVars. For example in DataSourceAPI.metricFindQuery.\n *\n * This is also used from TimeSrv to access scene time range.\n *\n * @todo delete after https://github.com/grafana/scenes/pull/999 is available\n */\nexport function setWindowGrafanaSceneContext(activeScene: SceneObject) {\n const prevScene = (window as any).__grafanaSceneContext;\n\n (window as any).__grafanaSceneContext = activeScene;\n\n return () => {\n if ((window as any).__grafanaSceneContext === activeScene) {\n (window as any).__grafanaSceneContext = prevScene;\n }\n };\n}\n\n// taken from /Users/galen/projects/grafana/grafana/public/app/core/utils/timePicker.ts\ntype CopiedTimeRangeResult = { range: RawTimeRange; isError: false } | { range: string; isError: true };\n// modified to narrow types from clipboard\nexport async function getCopiedTimeRange(): Promise {\n const raw = await navigator.clipboard.readText();\n let unknownRange: unknown;\n\n try {\n unknownRange = JSON.parse(raw);\n const range = narrowTimeRange(unknownRange);\n if (range) {\n return { isError: false, range };\n }\n } catch (e) {}\n return { range: raw, isError: true };\n}\n","import React from 'react';\nimport { useStyles2, useTheme2 } from '@grafana/ui';\nimport SVG from 'react-inlinesvg';\nimport { GrafanaTheme2, locationUtil } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport const NoLokiSplash = () => {\n const styles = useStyles2(getStyles);\n const theme = useTheme2();\n return (\n
\n
\n \n
\n
\n

Welcome to Grafana Logs Drilldown

\n\n

\n We noticed there is no Loki datasource configured.\n
\n Add a{' '}\n \n Loki datasource\n {' '}\n to view logs.\n

\n\n
\n\n

\n Click{' '}\n \n here\n {' '}\n to learn more...\n

\n
\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n graphicContainer: css({\n display: 'flex',\n justifyContent: 'center',\n margin: '0 auto',\n width: '200px',\n height: '250px',\n padding: theme.spacing(1),\n [theme.breakpoints.up('md')]: {\n alignSelf: 'flex-end',\n width: '300px',\n height: 'auto',\n padding: theme.spacing(1),\n },\n [theme.breakpoints.up('lg')]: {\n alignSelf: 'flex-end',\n width: '400px',\n height: 'auto',\n padding: theme.spacing(1),\n },\n }),\n\n text: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n }),\n title: css({\n marginBottom: '1.5rem',\n }),\n wrap: css({\n [theme.breakpoints.up('md')]: {\n margin: '4rem auto auto auto',\n flexDirection: 'row',\n },\n padding: '2rem',\n margin: '0 auto auto auto',\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n }),\n };\n};\n","import React from 'react';\n\nimport { AdHocVariableFilter, AppEvents, AppPluginMeta, rangeUtil } from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n AdHocFilterWithLabels,\n CustomVariable,\n DataSourceVariable,\n SceneComponentProps,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneRefreshPicker,\n SceneTimePicker,\n SceneTimeRange,\n SceneTimeRangeLike,\n SceneTimeRangeState,\n SceneVariableSet,\n} from '@grafana/scenes';\nimport {\n AppliedPattern,\n AdHocFiltersWithLabelsAndMeta,\n EXPLORATION_DS,\n MIXED_FORMAT_EXPR,\n PENDING_FIELDS_EXPR,\n PENDING_METADATA_EXPR,\n VAR_DATASOURCE,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_LOGS_FORMAT,\n VAR_METADATA,\n VAR_PATTERNS,\n} from 'services/variables';\n\nimport { addLastUsedDataSourceToStorage, getLastUsedDataSourceFromStorage } from 'services/store';\nimport { ServiceScene } from '../ServiceScene/ServiceScene';\nimport {\n CONTROLS_VARS_DATASOURCE,\n CONTROLS_VARS_FIELDS,\n CONTROLS_VARS_FIELDS_COMBINED,\n CONTROLS_VARS_FIRST_ROW_KEY,\n CONTROLS_VARS_LABELS,\n CONTROLS_VARS_METADATA_ROW_KEY,\n CONTROLS_VARS_REFRESH,\n CONTROLS_VARS_TIMEPICKER,\n CONTROLS_VARS_TOOLBAR,\n LayoutScene,\n} from './LayoutScene';\nimport { getDrilldownSlug, PageSlugs } from '../../services/routing';\nimport { ServiceSelectionScene } from '../ServiceSelectionScene/ServiceSelectionScene';\nimport { LoadingPlaceholder } from '@grafana/ui';\nimport { config, getAppEvents, locationService } from '@grafana/runtime';\nimport {\n onAddCustomAdHocValue,\n onAddCustomFieldValue,\n renderLevelsFilter,\n renderLogQLFieldFilters,\n renderLogQLLabelFilters,\n renderLogQLLineFilter,\n renderLogQLMetadataFilters,\n} from 'services/query';\nimport { VariableHide } from '@grafana/schema';\nimport { CustomConstantVariable } from '../../services/CustomConstantVariable';\nimport {\n getDataSourceVariable,\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getMetadataVariable,\n getPatternsVariable,\n getUrlParamNameForVariable,\n} from '../../services/variableGetters';\nimport { ToolbarScene } from './ToolbarScene';\nimport { DEFAULT_TIME_RANGE, OptionalRouteMatch } from '../Pages';\nimport { plugin } from '../../module';\nimport { JsonData } from '../AppConfig/AppConfig';\nimport { reportAppInteraction } from '../../services/analytics';\nimport { getDetectedFieldValuesTagValuesProvider, getLabelsTagValuesProvider } from '../../services/TagValuesProviders';\nimport { logger } from '../../services/logger';\nimport { getFieldsKeysProvider, getLabelsTagKeysProvider } from '../../services/TagKeysProviders';\nimport { getLokiDatasource } from '../../services/scenes';\nimport { ShowLogsButtonScene } from './ShowLogsButtonScene';\nimport { CustomVariableValueSelectors } from './CustomVariableValueSelectors';\nimport { getCopiedTimeRange, PasteTimeEvent, setupKeyboardShortcuts } from '../../services/keyboardShortcuts';\nimport { LokiDatasource } from '../../services/lokiQuery';\nimport { lineFilterOperators, operators } from '../../services/operators';\nimport { operatorFunction } from '../../services/variableHelpers';\nimport { FilterOp } from '../../services/filterTypes';\nimport { areArraysEqual } from '../../services/comparison';\nimport { isFilterMetadata } from '../../services/filters';\nimport { getFieldsTagValuesExpression } from '../../services/expressions';\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\nimport { renderPatternFilters } from '../../services/renderPatternFilters';\nimport { NoLokiSplash } from '../NoLokiSplash';\n\nexport const showLogsButtonSceneKey = 'showLogsButtonScene';\n\nexport interface IndexSceneState extends SceneObjectState {\n // contentScene is the scene that is displayed in the main body of the index scene - it can be either the service selection or service scene\n contentScene?: SceneObject;\n controls: SceneObject[];\n body?: LayoutScene;\n initialFilters?: AdHocVariableFilter[];\n patterns?: AppliedPattern[];\n routeMatch?: OptionalRouteMatch;\n ds?: LokiDatasource;\n}\n\nexport class IndexScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['patterns'] });\n\n public constructor(state: Partial) {\n const { variablesScene, unsub } = getVariableSet(\n getLastUsedDataSourceFromStorage() ?? 'grafanacloud-logs',\n state.initialFilters\n );\n\n const controls: SceneObject[] = [\n new SceneFlexLayout({\n key: CONTROLS_VARS_FIRST_ROW_KEY,\n direction: 'row',\n children: [\n new SceneFlexItem({\n body: new CustomVariableValueSelectors({\n key: CONTROLS_VARS_LABELS,\n layout: 'vertical',\n include: [VAR_LABELS],\n }),\n }),\n new ShowLogsButtonScene({\n key: showLogsButtonSceneKey,\n disabled: true,\n }),\n ],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_METADATA_ROW_KEY,\n layout: 'vertical',\n include: [VAR_METADATA],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_FIELDS,\n layout: 'vertical',\n include: [VAR_FIELDS],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_DATASOURCE,\n layout: 'horizontal',\n include: [VAR_DATASOURCE],\n }),\n new CustomVariableValueSelectors({\n key: CONTROLS_VARS_FIELDS_COMBINED,\n layout: 'vertical',\n include: [VAR_FIELDS_AND_METADATA],\n }),\n new SceneTimePicker({ key: CONTROLS_VARS_TIMEPICKER }),\n new SceneRefreshPicker({ key: CONTROLS_VARS_REFRESH }),\n ];\n\n if (getDrilldownSlug() === 'explore' && config.featureToggles.exploreLogsAggregatedMetrics) {\n controls.push(\n new ToolbarScene({\n key: CONTROLS_VARS_TOOLBAR,\n isOpen: false,\n })\n );\n }\n\n super({\n $timeRange: state.$timeRange ?? new SceneTimeRange({}),\n $variables: state.$variables ?? variablesScene,\n controls: state.controls ?? controls,\n // Need to clear patterns state when the class in constructed\n patterns: [],\n ...state,\n body: new LayoutScene({}),\n });\n\n this._subs.add(unsub);\n this.addActivationHandler(this.onActivate.bind(this));\n\n getLokiDatasource(this).then((ds) => {\n this.setState({ ds });\n });\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n\n const dsVar = getDataSourceVariable(model);\n if (!dsVar.state.options.length) {\n return ;\n }\n\n if (body) {\n return ;\n }\n\n return ;\n };\n\n public onActivate() {\n const stateUpdate: Partial = {};\n this.setVariableProviders();\n\n // Show \"show logs\" button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: false });\n\n if (!this.state.contentScene) {\n stateUpdate.contentScene = getContentScene(this.state.routeMatch?.params.breakdownLabel);\n }\n this.setTagProviders();\n this.setState(stateUpdate);\n\n this.updatePatterns(this.state, getPatternsVariable(this));\n this.resetVariablesIfNotInUrl(getFieldsVariable(this), getUrlParamNameForVariable(VAR_FIELDS));\n this.resetVariablesIfNotInUrl(getLevelsVariable(this), getUrlParamNameForVariable(VAR_LEVELS));\n\n this._subs.add(\n this.subscribeToState((newState) => {\n this.updatePatterns(newState, getPatternsVariable(this));\n })\n );\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n this._subs.add(timeRange.subscribeToState(this.limitMaxInterval(timeRange)));\n this._subs.add(this.subscribeToEvent(PasteTimeEvent, this.subscribeToPasteTimeEvent));\n\n const fieldFilters = getFieldsVariable(this).state.filters;\n const metadataFilters = getMetadataVariable(this).state.filters;\n\n const fieldsAndMetadataVariable = getFieldsAndMetadataVariable(this);\n\n // Sync fields in query variables to support existing urls\n fieldsAndMetadataVariable.updateFilters([...metadataFilters, ...fieldFilters]);\n\n // Update the fields/metadata filters when the combined variable is changed in the variable UI.\n this._subs.add(fieldsAndMetadataVariable.subscribeToState(this.subscribeToCombinedFieldsVariable));\n\n const clearKeyBindings = setupKeyboardShortcuts(this);\n\n return () => {\n clearKeyBindings();\n };\n }\n\n private subscribeToCombinedFieldsVariable = (\n newState: AdHocFiltersVariable['state'],\n prevState?: AdHocFiltersVariable['state']\n ) => {\n if (!areArraysEqual(newState.filters, prevState?.filters)) {\n const metadataFilters = newState.filters.filter((f: AdHocFiltersWithLabelsAndMeta) => isFilterMetadata(f));\n const fieldFilters = newState.filters.filter((f: AdHocFiltersWithLabelsAndMeta) => !isFilterMetadata(f));\n\n getFieldsVariable(this).updateFilters(fieldFilters);\n getMetadataVariable(this).updateFilters(metadataFilters);\n }\n };\n\n private setTagProviders() {\n this.setLabelsProviders();\n }\n\n private setLabelsProviders() {\n const labelsVar = getLabelsVariable(this);\n\n labelsVar._getOperators = () => operatorFunction(labelsVar);\n\n labelsVar.setState({\n getTagKeysProvider: getLabelsTagKeysProvider,\n getTagValuesProvider: getLabelsTagValuesProvider,\n });\n }\n\n private subscribeToPasteTimeEvent = async () => {\n const copiedRange = await getCopiedTimeRange();\n\n if (copiedRange.isError) {\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this);\n const to = typeof copiedRange.range.to === 'string' ? copiedRange.range.to : undefined;\n const from = typeof copiedRange.range.from === 'string' ? copiedRange.range.from : undefined;\n const newRange = rangeUtil.convertRawToRange(copiedRange.range);\n\n if (timeRange && newRange) {\n timeRange.setState({\n value: newRange,\n to,\n from,\n });\n } else {\n logger.error(new Error('Invalid time range from clipboard'), {\n msg: 'Invalid time range from clipboard',\n sceneTimeRange: typeof timeRange,\n to: to ?? '',\n from: from ?? '',\n });\n }\n };\n\n /**\n * If user selects a time range longer then the max configured interval, show toast and set the previous time range.\n * @param timeRange\n * @private\n */\n private limitMaxInterval(timeRange: SceneTimeRangeLike) {\n return (newState: SceneTimeRangeState, prevState: SceneTimeRangeState) => {\n const { jsonData } = plugin.meta as AppPluginMeta;\n if (jsonData?.interval) {\n try {\n const maxInterval = rangeUtil.intervalToSeconds(jsonData?.interval ?? '');\n if (!maxInterval) {\n return;\n }\n const timeRangeInterval = newState.value.to.diff(newState.value.from, 'seconds');\n if (timeRangeInterval > maxInterval) {\n const prevInterval = prevState.value.to.diff(prevState.value.from, 'seconds');\n if (timeRangeInterval <= prevInterval) {\n timeRange.setState({\n value: prevState.value,\n from: prevState.from,\n to: prevState.to,\n });\n } else {\n const defaultRange = new SceneTimeRange(DEFAULT_TIME_RANGE);\n timeRange.setState({\n value: defaultRange.state.value,\n from: defaultRange.state.from,\n to: defaultRange.state.to,\n });\n }\n\n const appEvents = getAppEvents();\n appEvents.publish({\n type: AppEvents.alertWarning.name,\n payload: [`Time range interval exceeds maximum interval configured by the administrator.`],\n });\n\n reportAppInteraction('all', 'interval_too_long', {\n attempted_duration_seconds: timeRangeInterval,\n configured_max_interval: maxInterval,\n });\n }\n } catch (e) {\n console.error(e);\n }\n }\n };\n }\n\n private setVariableProviders() {\n const levelsVariable = getLevelsVariable(this);\n const fieldsCombinedVariable = getFieldsAndMetadataVariable(this);\n\n fieldsCombinedVariable._getOperators = () => operatorFunction(fieldsCombinedVariable);\n\n levelsVariable.setState({\n getTagValuesProvider: this.getLevelsTagValuesProvider(),\n getTagKeysProvider: this.getLevelsTagKeysProvider(),\n });\n\n fieldsCombinedVariable.setState({\n getTagKeysProvider: this.getCombinedFieldsTagKeysProvider(),\n getTagValuesProvider: this.getCombinedFieldsTagValuesProvider(),\n });\n }\n\n /**\n * Get tag keys (label names) for the combined fields variable\n */\n private getCombinedFieldsTagKeysProvider() {\n return (variable: AdHocFiltersVariable, currentKey: string | null) => {\n // Current key seems to always be null, I think it's only supported for other variable types that allow editing the key without first removing the value/operator?\n const metadataVar = getMetadataVariable(this);\n const fieldVar = getFieldsVariable(this);\n\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_FIELDS_AND_METADATA);\n\n const metadataFilters = metadataVar.state.filters.filter((f) => f.key !== currentKey);\n const fieldFilters = fieldVar.state.filters.filter((f) => f.key !== currentKey);\n const otherFiltersString = this.renderVariableFilters(VAR_FIELDS, fieldFilters);\n const otherMetadataString = this.renderVariableFilters(VAR_METADATA, metadataFilters);\n const expr = uninterpolatedExpression\n .replace(PENDING_FIELDS_EXPR, otherFiltersString)\n .replace(PENDING_METADATA_EXPR, otherMetadataString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getFieldsKeysProvider({\n expr: interpolated,\n sceneRef: this,\n timeRange: sceneGraph.getTimeRange(this).state.value,\n variableType: VAR_FIELDS_AND_METADATA,\n });\n };\n }\n\n /**\n * Get tag values (label values) for combined fields variable\n */\n private getCombinedFieldsTagValuesProvider() {\n return (variable: AdHocFiltersVariable, filter: AdHocFilterWithLabels) => {\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_FIELDS_AND_METADATA);\n const metadataVar = getMetadataVariable(this);\n const fieldVar = getFieldsVariable(this);\n\n const metadataFilters = metadataVar.state.filters.filter(\n (f) => f.key !== filter.key && isOperatorInclusive(f.operator)\n );\n const fieldFilters = fieldVar.state.filters.filter(\n (f) => f.key !== filter.key && isOperatorInclusive(f.operator)\n );\n\n const otherFiltersString = this.renderVariableFilters(VAR_FIELDS, fieldFilters);\n const otherMetadataString = this.renderVariableFilters(VAR_METADATA, metadataFilters);\n\n const expr = uninterpolatedExpression\n .replace(PENDING_FIELDS_EXPR, otherFiltersString)\n .replace(PENDING_METADATA_EXPR, otherMetadataString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getDetectedFieldValuesTagValuesProvider(\n filter,\n variable,\n interpolated,\n this,\n sceneGraph.getTimeRange(this).state.value,\n VAR_FIELDS_AND_METADATA\n );\n };\n }\n\n /**\n * Get tag keys (label names) for levels variable\n */\n private getLevelsTagKeysProvider() {\n return (variable: AdHocFiltersVariable, currentKey: string | null) => {\n // Current key seems to always be null, I think it's only supported for other variable types that allow editing the key without first removing the value/operator?\n const filters = variable.state.filters.filter((f) => f.key !== currentKey);\n const otherFiltersString = this.renderVariableFilters(VAR_LEVELS, filters);\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_LEVELS);\n const expr = uninterpolatedExpression.replace(PENDING_FIELDS_EXPR, otherFiltersString);\n const interpolated = sceneGraph.interpolate(this, expr);\n return getFieldsKeysProvider({\n expr: interpolated,\n sceneRef: this,\n timeRange: sceneGraph.getTimeRange(this).state.value,\n variableType: VAR_LEVELS,\n });\n };\n }\n\n /**\n * Get tag values (label values) for levels variable\n */\n private getLevelsTagValuesProvider() {\n return (variable: AdHocFiltersVariable, filter: AdHocFilterWithLabels) => {\n // Don't add equals operations to the query, the user might want to select more than one value\n const filters = variable.state.filters.filter((f) => f.key !== filter.key && f.operator === FilterOp.Equal);\n const otherFiltersString = this.renderVariableFilters(VAR_LEVELS, filters);\n const uninterpolatedExpression = getFieldsTagValuesExpression(VAR_LEVELS);\n const expr = uninterpolatedExpression.replace(PENDING_FIELDS_EXPR, otherFiltersString);\n const interpolated = sceneGraph.interpolate(this, expr);\n\n return getDetectedFieldValuesTagValuesProvider(\n filter,\n variable,\n interpolated,\n this,\n sceneGraph.getTimeRange(this).state.value,\n VAR_LEVELS\n );\n };\n }\n\n private renderVariableFilters(\n variableType: typeof VAR_FIELDS | typeof VAR_METADATA | typeof VAR_LEVELS,\n filters: AdHocFilterWithLabels[]\n ) {\n if (variableType === VAR_FIELDS) {\n return renderLogQLFieldFilters(filters);\n } else if (variableType === VAR_METADATA) {\n return renderLogQLMetadataFilters(filters);\n } else if (variableType === VAR_LEVELS) {\n return renderLogQLMetadataFilters(filters);\n } else {\n const error = new Error('getFieldsTagValuesProvider only supports fields, metadata, and levels');\n logger.error(error);\n throw error;\n }\n }\n\n /**\n * @todo why do we need to manually sync fields and levels, but not other ad hoc variables?\n * @param variable\n * @param urlParamName\n * @private\n */\n private resetVariablesIfNotInUrl(variable: AdHocFiltersVariable, urlParamName: string) {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const filtersFromUrl = search.get(urlParamName);\n\n // If the filters aren't in the URL, then they're coming from the cache, set the state to sync with url\n if (filtersFromUrl === null) {\n variable.setState({ filters: [] });\n }\n }\n\n private updatePatterns(newState: IndexSceneState, patternsVariable: CustomVariable) {\n const patternsLine = renderPatternFilters(newState.patterns ?? []);\n patternsVariable.changeValueTo(patternsLine);\n }\n\n getUrlState() {\n return {\n patterns: JSON.stringify(this.state.patterns),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n\n if (values.patterns && typeof values.patterns === 'string') {\n stateUpdate.patterns = JSON.parse(values.patterns) as AppliedPattern[];\n }\n\n this.setState(stateUpdate);\n }\n}\n\nfunction getContentScene(drillDownLabel?: string) {\n const slug = getDrilldownSlug();\n if (slug === PageSlugs.explore) {\n return new ServiceSelectionScene({});\n }\n\n return new ServiceScene({\n drillDownLabel,\n });\n}\n\nfunction getVariableSet(initialDatasourceUid: string, initialFilters?: AdHocVariableFilter[]) {\n const labelVariable = new AdHocFiltersVariable({\n name: VAR_LABELS,\n datasource: EXPLORATION_DS,\n layout: 'combobox',\n label: 'Labels',\n allowCustomValue: true,\n filters: initialFilters ?? [],\n expressionBuilder: renderLogQLLabelFilters,\n hide: VariableHide.dontHide,\n key: 'adhoc_service_filter',\n onAddCustomValue: onAddCustomAdHocValue,\n });\n\n labelVariable._getOperators = function () {\n return operators;\n };\n\n const fieldsVariable = new AdHocFiltersVariable({\n name: VAR_FIELDS,\n label: 'Detected fields',\n applyMode: 'manual',\n layout: 'combobox',\n expressionBuilder: renderLogQLFieldFilters,\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n });\n\n fieldsVariable._getOperators = () => {\n return operators;\n };\n\n const metadataVariable = new AdHocFiltersVariable({\n name: VAR_METADATA,\n label: 'Metadata',\n applyMode: 'manual',\n layout: 'combobox',\n expressionBuilder: (filters: AdHocFilterWithLabels[]) => renderLogQLMetadataFilters(filters),\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n });\n\n metadataVariable._getOperators = () => {\n return operators;\n };\n\n /**\n * Not used in interpolation, used as \"proxy\" variable that routes filters added in the variable UI\n * to the fields and metadata variables which are interpolated but not present in the UI.\n *\n * Not saved in the URL state, as on init we pull the values from the fields/metadata variables\n */\n const fieldsAndMetadataVariable = new AdHocFiltersVariable({\n name: VAR_FIELDS_AND_METADATA,\n label: 'Fields',\n applyMode: 'manual',\n layout: 'combobox',\n hide: VariableHide.hideVariable,\n allowCustomValue: true,\n onAddCustomValue: onAddCustomFieldValue,\n skipUrlSync: true,\n });\n\n const levelsVariable = new AdHocFiltersVariable({\n name: VAR_LEVELS,\n label: 'Error levels',\n applyMode: 'manual',\n layout: 'vertical',\n expressionBuilder: renderLevelsFilter,\n hide: VariableHide.hideVariable,\n supportsMultiValueOperators: true,\n });\n\n const lineFiltersVariable = new AdHocFiltersVariable({\n name: VAR_LINE_FILTERS,\n hide: VariableHide.hideVariable,\n getTagKeysProvider: () => Promise.resolve({ replace: true, values: [] }),\n getTagValuesProvider: () => Promise.resolve({ replace: true, values: [] }),\n expressionBuilder: renderLogQLLineFilter,\n layout: 'horizontal',\n });\n\n lineFiltersVariable._getOperators = () => {\n return lineFilterOperators;\n };\n\n const dsVariable = new DataSourceVariable({\n name: VAR_DATASOURCE,\n label: 'Data source',\n value: initialDatasourceUid,\n pluginId: 'loki',\n });\n\n const unsub = dsVariable.subscribeToState((newState) => {\n const dsValue = `${newState.value}`;\n newState.value && addLastUsedDataSourceToStorage(dsValue);\n });\n\n return {\n variablesScene: new SceneVariableSet({\n variables: [\n dsVariable,\n labelVariable,\n fieldsVariable,\n levelsVariable,\n metadataVariable,\n fieldsAndMetadataVariable,\n new CustomVariable({\n name: VAR_PATTERNS,\n value: '',\n hide: VariableHide.hideVariable,\n }),\n new AdHocFiltersVariable({\n name: VAR_LINE_FILTER,\n hide: VariableHide.hideVariable,\n expressionBuilder: renderLogQLLineFilter,\n }),\n lineFiltersVariable,\n\n // This variable is a hack to get logs context working, this variable should never be used or updated\n new CustomConstantVariable({\n name: VAR_LOGS_FORMAT,\n value: MIXED_FORMAT_EXPR,\n skipUrlSync: true,\n hide: VariableHide.hideVariable,\n options: [{ value: MIXED_FORMAT_EXPR, label: MIXED_FORMAT_EXPR }],\n }),\n ],\n }),\n unsub,\n };\n}\n","import {\n ControlsLabel,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableValueChangedEvent,\n} from '@grafana/scenes';\nimport React from 'react';\nimport { getLevelsVariable } from '../../services/variableGetters';\nimport { MetricFindValue, SelectableValue } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { Icon, MultiSelect, useStyles2 } from '@grafana/ui';\nimport { LEVEL_VARIABLE_VALUE } from '../../services/variables';\nimport { FilterOp } from '../../services/filterTypes';\nimport { testIds } from '../../services/testIds';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ntype ChipOption = MetricFindValue & { selected?: boolean };\nexport interface LevelsVariableSceneState extends SceneObjectState {\n options?: ChipOption[];\n isLoading: boolean;\n visible: boolean;\n isOpen: boolean;\n}\nexport const LEVELS_VARIABLE_SCENE_KEY = 'levels-var-custom-renderer';\nexport class LevelsVariableScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ ...state, isLoading: false, visible: false, key: LEVELS_VARIABLE_SCENE_KEY, isOpen: false });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.onFilterChange();\n\n this._subs.add(\n getLevelsVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.onFilterChange();\n })\n );\n }\n\n public onFilterChange() {\n const levelsVar = getLevelsVariable(this);\n this.setState({\n options: levelsVar.state.filters.map((filter) => ({\n text: filter.valueLabels?.[0] ?? filter.value,\n selected: true,\n value: filter.value,\n })),\n });\n }\n\n getTagValues = () => {\n this.setState({ isLoading: true });\n const levelsVar = getLevelsVariable(this);\n const levelsKeys = levelsVar?.state?.getTagValuesProvider?.(\n levelsVar,\n levelsVar.state.filters[0] ?? { key: LEVEL_VARIABLE_VALUE }\n );\n levelsKeys?.then((response) => {\n if (Array.isArray(response.values)) {\n this.setState({\n isLoading: false,\n options: response.values.map((value) => {\n return {\n text: value.text,\n value: value.value ?? value.text,\n selected: levelsVar.state.filters.some((filter) => filter.value === value.text),\n };\n }),\n });\n }\n });\n };\n\n updateFilters = (skipPublish: boolean, forcePublish?: boolean) => {\n const levelsVar = getLevelsVariable(this);\n const filterOptions = this.state.options?.filter((opt) => opt.selected);\n\n levelsVar.updateFilters(\n filterOptions?.map((filterOpt) => ({\n key: LEVEL_VARIABLE_VALUE,\n operator: FilterOp.Equal,\n value: filterOpt.text,\n })) ?? [],\n { skipPublish, forcePublish }\n );\n };\n\n onChangeOptions = (options: SelectableValue[]) => {\n // Save current url to history before the filter change\n addCurrentUrlToHistory();\n\n this.setState({\n options: this.state.options?.map((value) => {\n if (options.some((opt) => opt.value === value.value)) {\n return { ...value, selected: true };\n }\n return { ...value, selected: false };\n }),\n });\n\n if (!this.state.isOpen) {\n this.updateFilters(false);\n } else {\n this.updateFilters(true);\n }\n };\n\n openSelect = (isOpen: boolean) => {\n this.setState({ isOpen });\n };\n\n onCloseMenu = () => {\n this.openSelect(false);\n // Update filters and run queries on close\n this.updateFilters(false, true);\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { options, isLoading, visible, isOpen } = model.useState();\n const styles = useStyles2(getStyles);\n const levelsVar = getLevelsVariable(model);\n levelsVar.useState();\n\n if (!visible) {\n return null;\n }\n\n return (\n
\n \n }\n placeholder={'All levels'}\n className={styles.control}\n onChange={model.onChangeOptions}\n onCloseMenu={() => model.onCloseMenu()}\n onOpenMenu={model.getTagValues}\n onFocus={() => model.openSelect(true)}\n menuShouldPortal={true}\n isOpen={isOpen}\n isLoading={isLoading}\n isClearable={true}\n blurInputOnSelect={false}\n closeMenuOnSelect={false}\n openMenuOnFocus={true}\n showAllSelectedWhenOpen={true}\n hideSelectedOptions={false}\n value={options?.filter((v) => v.selected)}\n options={options?.map((val) => ({\n value: val.value,\n label: val.text,\n }))}\n />\n
\n );\n };\n}\nexport function syncLevelsVariable(sceneRef: SceneObject) {\n const levelsVariableScene = sceneGraph.findObject(sceneRef, (obj) => obj instanceof LevelsVariableScene);\n if (levelsVariableScene instanceof LevelsVariableScene) {\n levelsVariableScene.onFilterChange();\n }\n}\n\nconst getStyles = () => ({\n control: css({\n flex: '1',\n }),\n wrapper: css({\n flex: '0 0 auto',\n whiteSpace: 'nowrap',\n }),\n});\n","import { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { LineFilterEditor } from '../ServiceScene/LineFilter/LineFilterEditor';\nimport React, { ChangeEvent, KeyboardEvent, useState } from 'react';\nimport { IconButton, useStyles2 } from '@grafana/ui';\nimport { LineFilterCaseSensitive } from '../../services/filterTypes';\nimport { RegexInputValue } from '../ServiceScene/LineFilter/RegexIconButton';\n\nexport interface LineFilterProps {\n exclusive: boolean;\n lineFilter: string;\n caseSensitive: boolean;\n regex: boolean;\n setExclusive: (exclusive: boolean) => void;\n onInputChange: (e: ChangeEvent) => void;\n onCaseSensitiveToggle: (caseSensitive: LineFilterCaseSensitive) => void;\n onRegexToggle: (regex: RegexInputValue) => void;\n updateFilter: (lineFilter: string, debounced: boolean) => void;\n handleEnter: (e: KeyboardEvent, lineFilter: string) => void;\n onSubmitLineFilter?: () => void;\n onClearLineFilter?: () => void;\n}\n\nexport function LineFilterVariable({ onClick, props }: { onClick: () => void; props: LineFilterProps }) {\n const [focus, setFocus] = useState(false);\n const styles = useStyles2(getLineFilterStyles);\n return (\n <>\n \n
\n Line filter\n \n
\n \n \n {focus && (\n setFocus(false)}\n name={'table-collapse-all'}\n />\n )}\n \n
\n \n );\n}\n\nconst getLineFilterStyles = (theme: GrafanaTheme2) => ({\n titleWrap: css({\n display: 'flex',\n fontSize: theme.typography.bodySmall.fontSize,\n marginBottom: theme.spacing(0.5),\n gap: theme.spacing(1),\n }),\n collapseWrap: css({\n display: 'flex',\n }),\n collapseBtn: css({\n marginLeft: theme.spacing(1),\n }),\n});\n","import { AdHocFilterWithLabels, SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent, KeyboardEvent } from 'react';\nimport { getLineFiltersVariable } from '../../services/variableGetters';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../services/filterTypes';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { debounce } from 'lodash';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useStyles2 } from '@grafana/ui';\nimport { LineFilterProps, LineFilterVariable } from './LineFilterVariable';\nimport { addCurrentUrlToHistory } from '../../services/navigate';\n\ninterface LineFilterRendererState extends SceneObjectState {}\n\n/**\n * The scene for the submitted line filter that is rendered up top with the other variables.\n * @todo refactor into new directory with other custom variable renderers and/or layout scenes\n */\nexport class LineFilterVariablesScene extends SceneObjectBase {\n static Component = ({ model }: SceneComponentProps) => {\n const lineFilterVar = getLineFiltersVariable(model);\n const { filters } = lineFilterVar.useState();\n const styles = useStyles2(getStyles);\n sortLineFilters(filters);\n\n if (!filters.length) {\n return null;\n }\n\n return (\n
\n {filters.map((filter) => {\n const props: LineFilterProps = {\n lineFilter: filter.value,\n regex: filter.operator === LineFilterOp.regex || filter.operator === LineFilterOp.negativeRegex,\n caseSensitive: filter.key === LineFilterCaseSensitive.caseSensitive,\n exclusive: model.isFilterExclusive(filter),\n handleEnter: (e, lineFilter) => model.handleEnter(e, filter.value, filter),\n setExclusive: () => model.onToggleExclusive(filter),\n updateFilter: (lineFilter, debounced) =>\n model.updateFilter(\n filter,\n {\n ...filter,\n value: lineFilter,\n },\n debounced\n ),\n onRegexToggle: () => model.onRegexToggle(filter),\n onInputChange: (e) => model.onInputChange(e, filter),\n onCaseSensitiveToggle: () => model.onCaseSensitiveToggle(filter),\n };\n return model.removeFilter(filter)} props={props} />;\n })}\n
\n );\n };\n /**\n * Submit on enter\n */\n handleEnter = (e: KeyboardEvent, lineFilter: string, filter: AdHocFilterWithLabels) => {\n if (e.key === 'Enter') {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n addCurrentUrlToHistory();\n this.updateVariableLineFilter(filter, { ...filter, value: lineFilter });\n }\n };\n\n isFilterExclusive({ operator }: AdHocFilterWithLabels): boolean {\n return operator === LineFilterOp.negativeMatch || operator === LineFilterOp.negativeRegex;\n }\n\n /**\n * Updates filter operator when user toggles regex\n */\n onRegexToggle = (filter: AdHocFilterWithLabels) => {\n let newOperator: LineFilterOp;\n // Set value to scene state\n switch (filter.operator) {\n case LineFilterOp.match: {\n newOperator = LineFilterOp.regex;\n break;\n }\n case LineFilterOp.negativeMatch: {\n newOperator = LineFilterOp.negativeRegex;\n break;\n }\n case LineFilterOp.regex: {\n newOperator = LineFilterOp.match;\n break;\n }\n case LineFilterOp.negativeRegex: {\n newOperator = LineFilterOp.negativeMatch;\n break;\n }\n default: {\n throw new Error('Invalid operator!');\n }\n }\n\n this.updateFilter(filter, { ...filter, operator: newOperator }, false);\n };\n\n /**\n * Updates filter operator when user toggles exclusion\n */\n onToggleExclusive = (filter: AdHocFilterWithLabels) => {\n let newOperator: string;\n switch (filter.operator) {\n case LineFilterOp.match: {\n newOperator = LineFilterOp.negativeMatch;\n break;\n }\n case LineFilterOp.negativeMatch: {\n newOperator = LineFilterOp.match;\n break;\n }\n case LineFilterOp.regex: {\n newOperator = LineFilterOp.negativeRegex;\n break;\n }\n case LineFilterOp.negativeRegex: {\n newOperator = LineFilterOp.regex;\n break;\n }\n default: {\n throw new Error('Invalid operator!');\n }\n }\n\n this.updateFilter(filter, { ...filter, operator: newOperator }, false);\n };\n\n /**\n * Updates filter key when user toggles case sensitivity\n */\n onCaseSensitiveToggle = (filter: AdHocFilterWithLabels) => {\n const caseSensitive =\n filter.key === LineFilterCaseSensitive.caseSensitive\n ? LineFilterCaseSensitive.caseInsensitive\n : LineFilterCaseSensitive.caseSensitive;\n this.updateFilter(filter, { ...filter, key: caseSensitive }, false);\n };\n\n /**\n * Updates existing line filter ad-hoc variable filter\n */\n updateFilter(existingFilter: AdHocFilterWithLabels, filterUpdate: AdHocFilterWithLabels, debounced = true) {\n if (debounced) {\n // We want to update the UI right away, which uses the filter state as the UI state, but we don't want to execute the query immediately\n this.updateVariableLineFilter(existingFilter, filterUpdate, true);\n // Run the debounce to force the event emit, as the prior setState will have already set the filterExpression, which will otherwise prevent the emit of the event which will trigger the query\n this.updateVariableDebounced(existingFilter, filterUpdate, false, true);\n } else {\n this.updateVariableLineFilter(existingFilter, filterUpdate);\n }\n }\n\n /**\n * Line filter input onChange helper method\n */\n onInputChange = (e: ChangeEvent, filter: AdHocFilterWithLabels) => {\n this.updateFilter(filter, { ...filter, value: e.target.value }, true);\n };\n\n /**\n * Remove a filter, will trigger query\n */\n removeFilter = (filter: AdHocFilterWithLabels) => {\n addCurrentUrlToHistory();\n const variable = getLineFiltersVariable(this);\n const otherFilters = variable.state.filters.filter(\n (f) => f.keyLabel !== undefined && f.keyLabel !== filter.keyLabel\n );\n\n variable.setState({\n filters: otherFilters,\n });\n };\n\n /**\n * Update existing line filter ad-hoc variable\n */\n private updateVariableLineFilter = (\n existingFilter: AdHocFilterWithLabels,\n filterUpdate: AdHocFilterWithLabels,\n skipPublish = false,\n forcePublish = false\n ) => {\n const variable = getLineFiltersVariable(this);\n const otherFilters = variable.state.filters.filter(\n (f) => f.keyLabel !== undefined && f.keyLabel !== existingFilter.keyLabel\n );\n\n variable.updateFilters(\n [\n {\n keyLabel: existingFilter.keyLabel,\n key: filterUpdate.key,\n operator: filterUpdate.operator,\n value: filterUpdate.value,\n },\n ...otherFilters,\n ],\n { skipPublish, forcePublish }\n );\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.search_string_in_variables_changed,\n {\n searchQueryLength: existingFilter.value.length,\n containsLevel: existingFilter.value.toLowerCase().includes('level'),\n operator: filterUpdate.operator,\n caseSensitive: filterUpdate.key,\n }\n );\n };\n\n /**\n * Debounce line-filter ad-hoc variable update\n */\n private updateVariableDebounced = debounce(\n (\n existingFilter: AdHocFilterWithLabels,\n filterUpdate: AdHocFilterWithLabels,\n skipPublish = false,\n forcePublish = false\n ) => {\n this.updateVariableLineFilter(existingFilter, filterUpdate, skipPublish, forcePublish);\n },\n 1000\n );\n}\n\n/**\n * Sort line filters by keyLabel, i.e. the order the line filter was added\n */\nexport function sortLineFilters(filters: AdHocFilterWithLabels[]) {\n filters.sort((a, b) => parseInt(a.keyLabel ?? '0', 10) - parseInt(b.keyLabel ?? '0', 10));\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n lineFiltersWrap: css({\n label: 'lineFiltersWrap',\n display: 'flex',\n flexWrap: 'wrap',\n gap: `${theme.spacing(0.25)} ${theme.spacing(2)}`,\n }),\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LinkButton, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { getDrillDownIndexLink } from '../../services/navigate';\nimport { getLabelsVariable } from '../../services/variableGetters';\nimport { testIds } from '../../services/testIds';\n\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\n\nexport interface ShowLogsButtonSceneState extends SceneObjectState {\n disabled?: boolean;\n hidden?: boolean;\n}\nexport class ShowLogsButtonScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const labelsVar = getLabelsVariable(this);\n const hasPositiveFilter = labelsVar.state.filters.some((f) => isOperatorInclusive(f.operator));\n this.setState({\n disabled: !hasPositiveFilter,\n });\n\n labelsVar.subscribeToState((newState) => {\n const hasPositiveFilter = newState.filters.some((f) => isOperatorInclusive(f.operator));\n this.setState({\n disabled: !hasPositiveFilter,\n });\n });\n }\n\n getLink = () => {\n const labelsVar = getLabelsVariable(this);\n const positiveFilter = labelsVar.state.filters.find((f) => isOperatorInclusive(f.operator));\n\n if (positiveFilter) {\n return getDrillDownIndexLink(positiveFilter.key, positiveFilter.value);\n }\n\n return '';\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { disabled, hidden } = model.useState();\n const styles = useStyles2(getStyles);\n\n if (hidden === true) {\n return null;\n }\n\n const link = model.getLink();\n\n return (\n \n Show logs\n \n );\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n button: css({\n [theme.breakpoints.down('lg')]: {\n alignSelf: 'flex-end',\n },\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(1),\n alignSelf: 'flex-start',\n },\n\n alignSelf: 'flex-start',\n marginTop: '22px',\n }),\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Dropdown, Switch, ToolbarButton, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { config } from '@grafana/runtime';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { AGGREGATED_METRIC_START_DATE } from '../ServiceSelectionScene/ServiceSelectionScene';\nimport pluginJson from '../../plugin.json';\nimport { testIds } from '../../services/testIds';\nconst AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY = `${pluginJson.id}.serviceSelection.aggregatedMetrics`;\n\nexport interface ToolbarSceneState extends SceneObjectState {\n isOpen: boolean;\n options: {\n aggregatedMetrics: {\n active: boolean;\n userOverride: boolean;\n disabled: boolean;\n };\n };\n}\nexport class ToolbarScene extends SceneObjectBase {\n constructor(state: Partial) {\n const userOverride = localStorage.getItem(AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY);\n const active = config.featureToggles.exploreLogsAggregatedMetrics && userOverride !== 'false';\n\n super({\n isOpen: false,\n options: {\n aggregatedMetrics: {\n active: active ?? false,\n userOverride: userOverride === 'true' ?? false,\n disabled: false,\n },\n },\n ...state,\n });\n }\n\n public toggleAggregatedMetricsOverride = () => {\n const active = !this.state.options.aggregatedMetrics.active;\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_selection,\n USER_EVENTS_ACTIONS.service_selection.aggregated_metrics_toggled,\n {\n enabled: active,\n }\n );\n\n localStorage.setItem(AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY, active.toString());\n\n this.setState({\n options: {\n aggregatedMetrics: {\n active,\n disabled: this.state.options.aggregatedMetrics.disabled,\n userOverride: active,\n },\n },\n });\n };\n\n public onToggleOpen = (isOpen: boolean) => {\n this.setState({ isOpen });\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { isOpen, options } = model.useState();\n const styles = useStyles2(getStyles);\n\n const renderPopover = () => {\n return (\n
evt.stopPropagation()}>\n
Query options
\n
\n \n Aggregated metrics\n
\n \n \n \n
\n \n );\n };\n\n if (options.aggregatedMetrics) {\n return (\n \n \n \n );\n }\n\n return <>;\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n popover: css({\n display: 'flex',\n padding: theme.spacing(2),\n flexDirection: 'column',\n background: theme.colors.background.primary,\n boxShadow: theme.shadows.z3,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n zIndex: 1,\n marginRight: theme.spacing(2),\n }),\n heading: css({\n fontWeight: theme.typography.fontWeightMedium,\n paddingBottom: theme.spacing(2),\n }),\n options: css({\n display: 'grid',\n gridTemplateColumns: '1fr 50px',\n rowGap: theme.spacing(1),\n columnGap: theme.spacing(2),\n alignItems: 'center',\n }),\n };\n}\n","import {\n EmbeddedScene,\n SceneAppPage,\n SceneAppPageLike,\n SceneFlexLayout,\n SceneRouteMatch,\n SceneTimeRange,\n} from '@grafana/scenes';\nimport {\n CHILD_ROUTE_DEFINITIONS,\n ChildDrilldownSlugs,\n DRILLDOWN_URL_KEYS,\n extractValuesFromRoute,\n PageSlugs,\n ParentDrilldownSlugs,\n ROUTE_DEFINITIONS,\n ROUTES,\n SERVICE_URL_KEYS,\n SUB_ROUTES,\n ValueSlugs,\n} from '../services/routing';\nimport { PageLayoutType, urlUtil } from '@grafana/data';\nimport { IndexScene } from './IndexScene/IndexScene';\nimport { navigateToIndex } from '../services/navigate';\nimport { logger } from '../services/logger';\nimport { capitalizeFirstLetter } from '../services/text';\nimport { PLUGIN_BASE_URL, prefixRoute } from '../services/plugin';\n\nexport type RouteProps = { labelName: string; labelValue: string; breakdownLabel?: string };\nexport type RouteMatch = SceneRouteMatch;\ntype Optional = Pick, K> & Omit;\nexport type OptionalRouteProps = Optional;\nexport type OptionalRouteMatch = SceneRouteMatch;\n\nexport const DEFAULT_TIME_RANGE = { from: 'now-15m', to: 'now' };\nfunction getServicesScene(routeMatch: OptionalRouteMatch) {\n return new EmbeddedScene({\n body: new IndexScene({\n $timeRange: new SceneTimeRange(DEFAULT_TIME_RANGE),\n routeMatch,\n }),\n });\n}\n\n// Index page\nexport function makeIndexPage() {\n return new SceneAppPage({\n // Top level breadcrumb\n title: 'Grafana Logs Drilldown',\n url: prefixRoute(PageSlugs.explore),\n layout: PageLayoutType.Custom,\n preserveUrlKeys: SERVICE_URL_KEYS,\n routePath: `${PageSlugs.explore}/*`,\n getScene: (routeMatch) => getServicesScene(routeMatch),\n drilldowns: [\n {\n routePath: ROUTE_DEFINITIONS.logs,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.logs),\n defaultRoute: true,\n },\n {\n routePath: ROUTE_DEFINITIONS.labels,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.labels),\n },\n {\n routePath: ROUTE_DEFINITIONS.patterns,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.patterns),\n },\n {\n routePath: ROUTE_DEFINITIONS.fields,\n getPage: (routeMatch, parent) => makeBreakdownPage(routeMatch, parent, PageSlugs.fields),\n },\n {\n routePath: CHILD_ROUTE_DEFINITIONS.label,\n getPage: (routeMatch, parent) => makeBreakdownValuePage(routeMatch, parent, ValueSlugs.label),\n },\n {\n routePath: CHILD_ROUTE_DEFINITIONS.field,\n getPage: (routeMatch: RouteMatch, parent) => makeBreakdownValuePage(routeMatch, parent, ValueSlugs.field),\n },\n {\n routePath: '*',\n getPage: () => makeRedirectPage(),\n },\n ],\n });\n}\n\n// Redirect page back to index\nexport function makeRedirectPage() {\n return new SceneAppPage({\n title: '',\n url: urlUtil.renderUrl(PLUGIN_BASE_URL, undefined),\n getScene: makeEmptyScene(),\n hideFromBreadcrumbs: true,\n routePath: '*',\n $behaviors: [\n () => {\n navigateToIndex();\n },\n ],\n });\n}\n\nfunction makeEmptyScene(): (routeMatch: SceneRouteMatch) => EmbeddedScene {\n return () =>\n new EmbeddedScene({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [],\n }),\n });\n}\n\nexport function makeBreakdownPage(\n routeMatch: RouteMatch,\n parent: SceneAppPageLike,\n slug: ParentDrilldownSlugs\n): SceneAppPage {\n const { labelName, labelValue } = extractValuesFromRoute(routeMatch);\n return new SceneAppPage({\n title: capitalizeFirstLetter(slug),\n layout: PageLayoutType.Custom,\n url: ROUTES[slug](labelValue, labelName),\n routePath: ROUTE_DEFINITIONS[slug],\n preserveUrlKeys: DRILLDOWN_URL_KEYS,\n getParentPage: () => parent,\n getScene: (routeMatch) => getServicesScene(routeMatch),\n });\n}\n\nexport function makeBreakdownValuePage(\n routeMatch: RouteMatch,\n parent: SceneAppPageLike,\n slug: ChildDrilldownSlugs\n): SceneAppPage {\n const { labelName, labelValue, breakdownLabel } = extractValuesFromRoute(routeMatch);\n\n if (!breakdownLabel) {\n const e = new Error('Breakdown value missing!');\n logger.error(e, {\n msg: 'makeBreakdownValuePage: Breakdown value missing!',\n labelName,\n labelValue,\n breakdownLabel: breakdownLabel ?? '',\n });\n throw e;\n }\n\n return new SceneAppPage({\n title: capitalizeFirstLetter(breakdownLabel),\n layout: PageLayoutType.Custom,\n url: SUB_ROUTES[slug](labelValue, labelName, breakdownLabel),\n routePath: CHILD_ROUTE_DEFINITIONS[slug],\n preserveUrlKeys: DRILLDOWN_URL_KEYS,\n getParentPage: () => parent,\n getScene: (routeMatch) => getServicesScene(routeMatch),\n });\n}\n","import React from 'react';\n\nimport { toURLRange, urlUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { sceneGraph } from '@grafana/scenes';\nimport { ToolbarButton } from '@grafana/ui';\n\nimport { getDataSource, getQueryExpr } from 'services/scenes';\nimport { testIds } from 'services/testIds';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { USER_EVENTS_ACTIONS, USER_EVENTS_PAGES, reportAppInteraction } from 'services/analytics';\nimport { getDisplayedFields, getLogsVisualizationType } from 'services/store';\nimport { unknownToStrings } from '../../services/narrowing';\nimport { DATAPLANE_LABELS_NAME } from '../../services/logsFrame';\ninterface GoToExploreButtonState {\n exploration: IndexScene;\n}\n\nexport const GoToExploreButton = ({ exploration }: GoToExploreButtonState) => {\n const onClick = () => {\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.open_in_explore_clicked\n );\n onExploreLinkClick(exploration, undefined, true);\n };\n\n return (\n \n Open in Explore\n \n );\n};\n\nexport const onExploreLinkClick = (indexScene: IndexScene, expr?: string, open = false) => {\n if (!expr) {\n expr = getQueryExpr(indexScene);\n }\n\n expr = expr.replace(/\\s+/g, ' ').trimEnd();\n\n const datasource = getDataSource(indexScene);\n const timeRange = sceneGraph.getTimeRange(indexScene).state.value;\n const displayedFields = getDisplayedFields(indexScene);\n const visualisationType = getLogsVisualizationType();\n const columns = getUrlColumns();\n const exploreState = JSON.stringify({\n ['loki-explore']: {\n range: toURLRange(timeRange.raw),\n queries: [{ refId: 'logs', expr, datasource }],\n panelsState: {\n logs: {\n displayedFields,\n visualisationType,\n columns,\n labelFieldName: visualisationType === 'table' ? DATAPLANE_LABELS_NAME : undefined,\n },\n },\n datasource,\n },\n });\n const subUrl = config.appSubUrl ?? '';\n const link = urlUtil.renderUrl(`${subUrl}/explore`, { panes: exploreState, schemaVersion: 1 });\n if (open) {\n window.open(link, '_blank');\n }\n\n return link;\n};\n\nfunction getUrlColumns() {\n const params = new URLSearchParams(window.location.search);\n const urlColumns = params.get('urlColumns');\n if (urlColumns) {\n try {\n const columns = unknownToStrings(JSON.parse(urlColumns));\n let columnsParam: Record = {};\n for (const key in columns) {\n columnsParam[key] = columns[key];\n }\n return columnsParam;\n } catch (e) {\n console.error(e);\n }\n }\n return undefined;\n}\n","import { DataFrame, FieldConfig, FieldConfigSource, TimeRange } from '@grafana/data';\nimport { usePluginLinks } from '@grafana/runtime';\nimport {\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { IconButton } from '@grafana/ui';\nimport React from 'react';\nimport { ExtensionPoints } from 'services/extensions/links';\nimport { findObjectOfType, getLokiDatasource } from 'services/scenes';\n\nimport LokiLogo from '../../../img/logo.svg';\nimport { LokiDatasource, LokiQuery } from '../../../services/lokiQuery';\n\nexport interface AddToInvestigationButtonState extends SceneObjectState {\n frame?: DataFrame;\n labelName?: string;\n fieldName?: string;\n ds?: LokiDatasource;\n context?: ExtensionContext;\n queries: LokiQuery[];\n type?: 'timeseries' | 'logs' | undefined;\n}\n\ntype ExtensionContext = {\n timeRange: TimeRange;\n queries: LokiQuery[];\n datasource: DataSourceRef;\n origin: string;\n url: string;\n type: string;\n title: string;\n id: string;\n logoPath: string;\n note?: string;\n drillDownLabel?: string;\n fieldConfig?: FieldConfigSource;\n};\n\nexport class AddToInvestigationButton extends SceneObjectBase {\n constructor(state: Omit) {\n super({ ...state, queries: [] });\n this.addActivationHandler(this.onActivate);\n }\n\n private onActivate = () => {\n getLokiDatasource(this).then((ds) => {\n this.setState({ ds });\n });\n\n this._subs.add(\n this.subscribeToState((newState, prevState) => {\n if (!this.state.queries.length) {\n this.getQueries();\n }\n\n if (!this.state.context && this.state.queries.length) {\n this.getContext();\n }\n })\n );\n };\n\n private getQueries = () => {\n const data = sceneGraph.getData(this);\n const queryRunner = findObjectOfType(data, (o) => o instanceof SceneQueryRunner, SceneQueryRunner);\n\n if (queryRunner) {\n const filter = this.state.frame ? getFilter(this.state.frame) : null;\n const queries = queryRunner.state.queries.map((q) => ({\n ...q,\n expr: sceneGraph.interpolate(queryRunner, q.expr),\n legendFormat: filter?.name ? `{{ ${filter.name} }}` : sceneGraph.interpolate(queryRunner, q.legendFormat),\n datasource: q.datasource ?? undefined,\n }));\n\n if (JSON.stringify(queries) !== JSON.stringify(this.state.queries)) {\n this.setState({ queries });\n }\n }\n };\n\n private getFieldConfig = () => {\n const panel = findObjectOfType(this, (o) => o instanceof VizPanel, VizPanel);\n const data = sceneGraph.getData(this);\n const frames = data?.state.data?.series;\n let fieldConfig = panel?.state.fieldConfig;\n if (fieldConfig && frames?.length) {\n for (const frame of frames) {\n for (const field of frame.fields) {\n const configKeys = Object.keys(field.config);\n const properties = configKeys.map((key) => ({\n id: key,\n value: field.config[key as keyof FieldConfig],\n }));\n\n // check if the override already exists\n const existingOverride = fieldConfig.overrides.find(\n (o) =>\n o.matcher.options === (field.config.displayNameFromDS ?? field.config.displayName ?? field.name) &&\n o.matcher.id === 'byName'\n );\n if (!existingOverride) {\n // add as first override\n fieldConfig.overrides.unshift({\n matcher: {\n id: 'byName',\n options: field.config.displayNameFromDS ?? field.config.displayName ?? field.name,\n },\n properties,\n });\n }\n\n if (existingOverride && JSON.stringify(existingOverride.properties) !== JSON.stringify(properties)) {\n existingOverride.properties = properties;\n }\n }\n }\n }\n return fieldConfig;\n };\n\n private getContext = () => {\n const fieldConfig = this.getFieldConfig();\n const { queries, ds, labelName, fieldName, type } = this.state;\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (!timeRange || !queries || !ds?.uid) {\n return;\n }\n const ctx = {\n origin: 'Grafana Logs Drilldown',\n type: type ?? 'timeseries',\n queries,\n timeRange: { ...timeRange.state.value },\n datasource: { uid: ds.uid },\n url: window.location.href,\n id: `${JSON.stringify(queries)}${labelName}${fieldName}`,\n title: `${labelName}${fieldName ? ` > ${fieldName}` : ''}`,\n logoPath: LokiLogo,\n drillDownLabel: fieldName,\n fieldConfig: fieldConfig,\n };\n if (JSON.stringify(ctx) !== JSON.stringify(this.state.context)) {\n this.setState({ context: ctx });\n }\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { context } = model.useState();\n const { links } = usePluginLinks({ extensionPointId: ExtensionPoints.MetricInvestigation, context });\n\n return (\n <>\n {links\n .filter((link) => link.pluginId === 'grafana-investigations-app' && link.onClick)\n .map((link) => (\n {\n if (link.onClick) {\n link.onClick(e);\n }\n }}\n />\n ))}\n \n );\n };\n}\n\nconst getFilter = (frame: DataFrame) => {\n const filterNameAndValueObj = frame.fields[1]?.labels ?? {};\n if (Object.keys(filterNameAndValueObj).length !== 1) {\n return;\n }\n const name = Object.keys(filterNameAndValueObj)[0];\n return { name, value: filterNameAndValueObj[name] };\n};\n","import { DataFrame, GrafanaTheme2, PanelMenuItem, PluginExtensionLink } from '@grafana/data';\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n VizPanelMenu,\n} from '@grafana/scenes';\nimport React from 'react';\nimport { onExploreLinkClick } from '../ServiceScene/GoToExploreButton';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { findObjectOfType, getQueryRunnerFromChildren } from '../../services/scenes';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { logger } from '../../services/logger';\nimport { AddToInvestigationButton } from '../ServiceScene/Breakdowns/AddToInvestigationButton';\n// Certain imports are not available in the dependant package, but can be if the plugin is running in a different Grafana version.\n// We need both imports to support Grafana v11 and v12.\n// @ts-expect-error\nimport { getObservablePluginLinks, getPluginLinkExtensions } from '@grafana/runtime';\nimport { ExtensionPoints } from '../../services/extensions/links';\nimport { setLevelColorOverrides } from '../../services/panel';\nimport { setPanelOption } from '../../services/store';\nimport { FieldsAggregatedBreakdownScene } from '../ServiceScene/Breakdowns/FieldsAggregatedBreakdownScene';\nimport { setValueSummaryHeight } from '../ServiceScene/Breakdowns/Panels/ValueSummary';\nimport { FieldValuesBreakdownScene } from '../ServiceScene/Breakdowns/FieldValuesBreakdownScene';\nimport { LabelValuesBreakdownScene } from '../ServiceScene/Breakdowns/LabelValuesBreakdownScene';\nimport { css } from '@emotion/css';\nimport { firstValueFrom } from 'rxjs';\n\nconst ADD_TO_INVESTIGATION_MENU_TEXT = 'Add to investigation';\nconst ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT = 'investigations_divider'; // Text won't be visible\nconst ADD_TO_INVESTIGATION_MENU_GROUP_TEXT = 'Investigations';\n\nexport enum AvgFieldPanelType {\n 'timeseries' = 'timeseries',\n 'histogram' = 'histogram',\n}\n\nexport enum CollapsablePanelText {\n collapsed = 'Collapse',\n expanded = 'Expand',\n}\n\ninterface InvestigationOptions {\n labelName?: string;\n fieldName?: string;\n frame?: DataFrame;\n type?: 'timeseries' | 'logs';\n getLabelName?: () => string;\n}\n\ninterface PanelMenuState extends SceneObjectState {\n body?: VizPanelMenu;\n addInvestigationsLink?: boolean;\n investigationsButton?: AddToInvestigationButton;\n panelType?: AvgFieldPanelType;\n\n investigationOptions?: InvestigationOptions;\n}\n\n/**\n * @todo the VizPanelMenu interface is overly restrictive, doesn't allow any member functions on this class, so everything is currently inlined\n */\nexport class PanelMenu extends SceneObjectBase implements VizPanelMenu, SceneObject {\n constructor(state: Partial) {\n super({ ...state, addInvestigationsLink: state.addInvestigationsLink ?? true });\n this.addActivationHandler(() => {\n // Navigation options (all panels)\n const items: PanelMenuItem[] = [\n {\n text: 'Navigation',\n type: 'group',\n },\n {\n text: 'Explore',\n iconClassName: 'compass',\n href: getExploreLink(this),\n onClick: () => onExploreLinkClickTracking(),\n shortcut: 'p x',\n },\n ];\n\n let viz;\n try {\n viz = sceneGraph.getAncestor(this, VizPanel);\n } catch (e) {\n // If we can't find the viz panel, we can't add the Explore item. Currently the case for logs table.\n this.setState({\n body: new VizPanelMenu({\n items,\n }),\n });\n return;\n }\n\n this.setState({\n investigationsButton: new AddToInvestigationButton({\n labelName: this.state.investigationOptions?.getLabelName\n ? this.state.investigationOptions?.getLabelName()\n : this.state.investigationOptions?.labelName,\n fieldName: this.state.investigationOptions?.fieldName,\n frame: this.state.investigationOptions?.frame,\n type: this.state.investigationOptions?.type,\n }),\n });\n\n if (this.state.addInvestigationsLink) {\n // @todo rewrite the AddToExplorationButton\n // Manually activate scene\n this.state.investigationsButton?.activate();\n }\n\n // Visualization options\n if (this.state.panelType || viz?.state.collapsible) {\n addVisualizationHeader(items, this);\n }\n\n if (viz?.state.collapsible) {\n addCollapsableItem(items, this);\n }\n\n if (this.state.panelType) {\n addHistogramItem(items, this);\n }\n\n this.setState({\n body: new VizPanelMenu({\n items,\n }),\n });\n\n this._subs.add(\n this.state.investigationsButton?.subscribeToState(async () => {\n await subscribeToAddToInvestigation(this);\n })\n );\n });\n }\n\n addItem(item: PanelMenuItem): void {\n if (this.state.body) {\n this.state.body.addItem(item);\n }\n }\n setItems(items: PanelMenuItem[]): void {\n if (this.state.body) {\n this.state.body.setItems(items);\n }\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n\n if (body) {\n return ;\n }\n\n return <>;\n };\n}\n\nfunction addVisualizationHeader(items: PanelMenuItem[], sceneRef: PanelMenu) {\n items.push({\n text: '',\n type: 'divider',\n });\n items.push({\n text: 'Visualization',\n type: 'group',\n });\n}\n\nfunction addCollapsableItem(items: PanelMenuItem[], menu: PanelMenu) {\n const viz = sceneGraph.getAncestor(menu, VizPanel);\n items.push({\n text: viz.state.collapsed ? CollapsablePanelText.expanded : CollapsablePanelText.collapsed,\n iconClassName: viz.state.collapsed ? 'table-collapse-all' : 'table-expand-all',\n onClick: () => {\n const newCollapsableState = viz.state.collapsed ? CollapsablePanelText.expanded : CollapsablePanelText.collapsed;\n\n // Update the viz\n const vizPanelFlexLayout = sceneGraph.getAncestor(menu, SceneFlexLayout);\n setValueSummaryHeight(vizPanelFlexLayout, newCollapsableState);\n\n // Set state and update local storage\n viz.setState({\n collapsed: !viz.state.collapsed,\n });\n setPanelOption('collapsed', newCollapsableState);\n },\n });\n}\n\nfunction addHistogramItem(items: PanelMenuItem[], sceneRef: PanelMenu) {\n items.push({\n text: sceneRef.state.panelType !== AvgFieldPanelType.histogram ? 'Histogram' : 'Time series',\n iconClassName: sceneRef.state.panelType !== AvgFieldPanelType.histogram ? 'graph-bar' : 'chart-line',\n\n onClick: () => {\n const gridItem = sceneGraph.getAncestor(sceneRef, SceneCSSGridItem);\n const viz = sceneGraph.getAncestor(sceneRef, VizPanel).clone();\n const $data = sceneGraph.getData(sceneRef).clone();\n const menu = sceneRef.clone();\n const headerActions = Array.isArray(viz.state.headerActions)\n ? viz.state.headerActions.map((o) => o.clone())\n : viz.state.headerActions;\n let body;\n\n if (sceneRef.state.panelType !== AvgFieldPanelType.histogram) {\n body = PanelBuilders.timeseries().setOverrides(setLevelColorOverrides);\n } else {\n body = PanelBuilders.histogram();\n }\n\n gridItem.setState({\n body: body.setMenu(menu).setTitle(viz.state.title).setHeaderActions(headerActions).setData($data).build(),\n });\n\n const newPanelType =\n sceneRef.state.panelType !== AvgFieldPanelType.timeseries\n ? AvgFieldPanelType.timeseries\n : AvgFieldPanelType.histogram;\n setPanelOption('panelType', newPanelType);\n menu.setState({ panelType: newPanelType });\n\n const fieldsAggregatedBreakdownScene = findObjectOfType(\n gridItem,\n (o) => o instanceof FieldsAggregatedBreakdownScene,\n FieldsAggregatedBreakdownScene\n );\n if (fieldsAggregatedBreakdownScene) {\n fieldsAggregatedBreakdownScene.rebuildAvgFields();\n }\n\n onSwitchVizTypeTracking(newPanelType);\n },\n });\n}\n\nexport const getExploreLink = (sceneRef: SceneObject) => {\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n const $data = sceneGraph.getData(sceneRef);\n let queryRunner = $data instanceof SceneQueryRunner ? $data : getQueryRunnerFromChildren($data)[0];\n\n // If we don't have a query runner, then our panel is within a SceneCSSGridItem, we need to get the query runner from there\n if (!queryRunner) {\n const breakdownScene = sceneGraph.findObject(\n sceneRef,\n (o) => o instanceof FieldValuesBreakdownScene || o instanceof LabelValuesBreakdownScene\n );\n if (breakdownScene) {\n const queryProvider = sceneGraph.getData(breakdownScene);\n\n if (queryProvider instanceof SceneQueryRunner) {\n queryRunner = queryProvider;\n } else {\n queryRunner = getQueryRunnerFromChildren(queryProvider)[0];\n }\n } else {\n logger.error(new Error('Unable to locate query runner!'), {\n msg: 'PanelMenu - getExploreLink: Unable to locate query runner!',\n });\n }\n }\n const uninterpolatedExpr: string | undefined = queryRunner.state.queries[0].expr;\n const expr = sceneGraph.interpolate(sceneRef, uninterpolatedExpr);\n\n return onExploreLinkClick(indexScene, expr);\n};\n\nconst onExploreLinkClickTracking = () => {\n reportAppInteraction(USER_EVENTS_PAGES.all, USER_EVENTS_ACTIONS.all.open_in_explore_menu_clicked);\n};\n\nconst onSwitchVizTypeTracking = (newVizType: AvgFieldPanelType) => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.change_viz_type, {\n newVizType,\n });\n};\n\nconst getInvestigationLink = async (addToInvestigation: AddToInvestigationButton) => {\n const extensionPointId = ExtensionPoints.MetricInvestigation;\n const context = addToInvestigation.state.context;\n\n // `getPluginLinkExtensions` is removed in Grafana v12\n if (getPluginLinkExtensions !== undefined) {\n const links = getPluginLinkExtensions({\n extensionPointId,\n context,\n });\n\n return links.extensions[0];\n }\n\n // `getObservablePluginLinks` is introduced in Grafana v12\n if (getObservablePluginLinks !== undefined) {\n const links: PluginExtensionLink[] = await firstValueFrom(\n getObservablePluginLinks({\n extensionPointId,\n context,\n })\n );\n\n return links[0];\n }\n\n return undefined;\n};\n\nasync function subscribeToAddToInvestigation(exploreLogsVizPanelMenu: PanelMenu) {\n const addToInvestigationButton = exploreLogsVizPanelMenu.state.investigationsButton;\n if (addToInvestigationButton) {\n const link = await getInvestigationLink(addToInvestigationButton);\n\n const existingMenuItems = exploreLogsVizPanelMenu.state.body?.state.items ?? [];\n\n const existingAddToExplorationLink = existingMenuItems.find((item) => item.text === ADD_TO_INVESTIGATION_MENU_TEXT);\n\n if (link) {\n if (!existingAddToExplorationLink) {\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT,\n type: 'divider',\n });\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_GROUP_TEXT,\n type: 'group',\n });\n exploreLogsVizPanelMenu.state.body?.addItem({\n text: ADD_TO_INVESTIGATION_MENU_TEXT,\n iconClassName: 'plus-square',\n onClick: (e) => link.onClick && link.onClick(e),\n });\n } else {\n if (existingAddToExplorationLink) {\n exploreLogsVizPanelMenu.state.body?.setItems(\n existingMenuItems.filter(\n (item) =>\n [\n ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT,\n ADD_TO_INVESTIGATION_MENU_GROUP_TEXT,\n ADD_TO_INVESTIGATION_MENU_TEXT,\n ].includes(item.text) === false\n )\n );\n }\n }\n }\n }\n}\n\nexport const getPanelWrapperStyles = (theme: GrafanaTheme2) => {\n return {\n panelWrapper: css({\n width: '100%',\n height: '100%',\n label: 'panel-wrapper',\n position: 'absolute',\n display: 'flex',\n }),\n };\n};\n","import React from 'react';\n\nimport { AdHocVariableFilter, BusEventBase, DataFrame } from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n SceneComponentProps,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n} from '@grafana/scenes';\nimport { VariableHide } from '@grafana/schema';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport {\n LEVEL_VARIABLE_VALUE,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_LABELS,\n VAR_LABELS_REPLICA,\n VAR_LEVELS,\n VAR_METADATA,\n} from 'services/variables';\nimport { FilterButton } from 'Components/FilterButton';\nimport { getDetectedLabelsFrame } from '../ServiceScene';\nimport { getParserForField } from '../../../services/fields';\nimport {\n getAdHocFiltersVariable,\n getFieldsAndMetadataVariable,\n getValueFromAdHocVariableFilter,\n} from '../../../services/variableGetters';\nimport { FilterOp, NumericFilterOp } from '../../../services/filterTypes';\n\nimport { addToFavorites } from '../../../services/favorites';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { logger } from '../../../services/logger';\nimport { isFilterMetadata } from '../../../services/filters';\nimport { addCurrentUrlToHistory } from '../../../services/navigate';\n\nexport interface AddToFiltersButtonState extends SceneObjectState {\n frame: DataFrame;\n variableName: InterpolatedFilterType;\n hideExclude?: boolean;\n isIncluded?: boolean;\n isExcluded?: boolean;\n}\n\nexport class AddFilterEvent extends BusEventBase {\n constructor(\n public source: 'legend' | 'filterButton' | 'variable',\n public operator: FilterType | NumericFilterType,\n public key: string,\n public value?: string\n ) {\n super();\n }\n public static type = 'add-filter';\n}\n\nexport class ClearFilterEvent extends BusEventBase {\n constructor(public key: string, public value?: string, public operator?: FilterType) {\n super();\n }\n public static type = 'add-filter';\n}\n\nexport type NumericFilterType = NumericFilterOp.gt | NumericFilterOp.gte | NumericFilterOp.lt | NumericFilterOp.lte;\n\n/**\n * Filter types:\n * - include/exclude: add a negative or positive filter\n * - clear: remove filter if exists\n * - toggle: if the filter does not exist, add as include; if exists, remove\n */\nexport type FilterType = 'include' | 'clear' | 'exclude' | 'toggle';\n\nexport function addAdHocFilter(filter: AdHocVariableFilter, scene: SceneObject, variableType: InterpolatedFilterType) {\n const type: FilterType = filter.operator === '=' ? 'include' : 'exclude';\n addToFilters(filter.key, filter.value, type, scene, variableType);\n}\n\nexport type InterpolatedFilterType = typeof VAR_LABELS | typeof VAR_FIELDS | typeof VAR_LEVELS | typeof VAR_METADATA;\nexport type UIVariableFilterType = typeof VAR_LEVELS | typeof VAR_FIELDS_AND_METADATA;\nexport type AdHocFilterTypes = InterpolatedFilterType | typeof VAR_LABELS_REPLICA | typeof VAR_FIELDS_AND_METADATA;\n\nexport function clearFilters(\n key: string,\n scene: SceneObject,\n variableType: InterpolatedFilterType,\n value?: string,\n operator?: FilterType\n) {\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let filters = variable.state.filters.filter((filter) => {\n const fieldValue = getValueFromAdHocVariableFilter(variableType, filter);\n if (value && operator) {\n return !(filter.key === key && fieldValue.value === value && filter.operator === operator);\n }\n if (value) {\n return !(filter.key === key && fieldValue.value === value);\n }\n if (operator) {\n return !(filter.key === key && filter.operator === operator);\n }\n\n return !(filter.key === key);\n });\n\n scene.publishEvent(new ClearFilterEvent(key, value, operator), true);\n\n variable.setState({\n filters,\n });\n}\n\ntype OperatorType = 'greater' | 'lesser';\nconst getNumericOperatorType = (op: NumericFilterType | string): OperatorType | undefined => {\n if (op === FilterOp.gt || op === FilterOp.gte) {\n return 'greater';\n }\n if (op === FilterOp.lt || op === FilterOp.lte) {\n return 'lesser';\n }\n return undefined;\n};\n\nexport function removeNumericFilter(\n key: string,\n scene: SceneObject,\n operator?: NumericFilterType,\n variableType?: InterpolatedFilterType\n) {\n if (!variableType) {\n variableType = resolveVariableTypeForField(key, scene);\n }\n const variable = getUIAdHocVariable(variableType, key, scene);\n const operatorType = operator ? getNumericOperatorType(operator) : undefined;\n\n let filters = variable.state.filters.filter((filter) => {\n return !(\n filter.key === key &&\n (getNumericOperatorType(filter.operator) === operatorType || filter.operator === FilterOp.NotEqual)\n );\n });\n\n variable.setState({\n filters,\n });\n}\n\nexport function addNumericFilter(\n key: string,\n value: string,\n operator: NumericFilterType,\n scene: SceneObject,\n variableType?: InterpolatedFilterType\n) {\n const operatorType = getNumericOperatorType(operator);\n\n if (!variableType) {\n variableType = resolveVariableTypeForField(key, scene);\n }\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let valueObject: string | undefined = undefined;\n if (variableType === VAR_FIELDS) {\n valueObject = JSON.stringify({\n value,\n parser: getParserForField(key, scene),\n });\n }\n\n let filters = variable.state.filters.filter((filter) => {\n return !(\n filter.key === key &&\n (getNumericOperatorType(filter.operator) === operatorType || filter.operator === FilterOp.NotEqual)\n );\n });\n\n filters = [\n ...filters,\n {\n key,\n operator: operator,\n value: valueObject ? valueObject : value,\n valueLabels: [value],\n },\n ];\n\n variable.setState({\n filters,\n });\n\n scene.publishEvent(new AddFilterEvent('filterButton', operator, key, value), true);\n}\n\n/**\n * Helper for buttons in the UI\n * toggles an ad hoc filter to a given variable type\n */\nexport function addToFilters(\n key: string,\n value: string,\n operator: FilterType,\n scene: SceneObject,\n variableType: InterpolatedFilterType\n) {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n addCurrentUrlToHistory();\n\n if (variableType === VAR_LABELS) {\n addToFavorites(key, value, scene);\n }\n\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n let valueObject: string | undefined = undefined;\n let valueLabel = value;\n if (variableType === VAR_FIELDS) {\n valueObject = JSON.stringify({\n value,\n parser: getParserForField(key, scene),\n });\n } else if (variableType === VAR_LEVELS && operator === 'exclude') {\n valueLabel = `!${value}`;\n }\n\n // If the filter exists, filter it\n let filters = variable.state.filters.filter((filter) => {\n const fieldValue = getValueFromAdHocVariableFilter(variableType, filter);\n\n // if we're including, we want to remove all filters that have this key\n if (operator === 'include') {\n return !(filter.key === key && filter.operator === FilterOp.NotEqual);\n }\n if (operator === 'exclude') {\n return !(filter.key === key && filter.operator === FilterOp.Equal);\n }\n\n return !(filter.key === key && fieldValue.value === value);\n });\n\n const filterExists = filters.length !== variable.state.filters.length;\n\n if (operator === 'include' || operator === 'exclude' || (!filterExists && operator === 'toggle')) {\n filters = [\n ...filters,\n {\n key,\n operator: operator === 'exclude' ? FilterOp.NotEqual : FilterOp.Equal,\n value: valueObject ? valueObject : value,\n valueLabels: [valueLabel],\n },\n ];\n }\n\n // Variable needs to be updated before event is published!\n variable.setState({\n filters,\n });\n\n scene.publishEvent(new AddFilterEvent('filterButton', operator, key, value), true);\n}\n\nexport function replaceFilter(\n key: string,\n value: string,\n operator: Extract,\n scene: SceneObject,\n variableType: InterpolatedFilterType\n) {\n const variable = getUIAdHocVariable(variableType, key, scene);\n\n variable.setState({\n filters: [\n {\n key,\n operator: operator === 'exclude' ? FilterOp.NotEqual : FilterOp.Equal,\n value,\n },\n ],\n hide: VariableHide.hideLabel,\n });\n}\n\nexport function validateVariableNameForField(field: string, variableName: InterpolatedFilterType) {\n // Special case: If the key is LEVEL_VARIABLE_VALUE, we need to use the VAR_FIELDS.\n if (field === LEVEL_VARIABLE_VALUE) {\n return VAR_LEVELS;\n }\n return variableName;\n}\n\nfunction resolveVariableTypeForField(field: string, scene: SceneObject): InterpolatedFilterType {\n const indexedLabel = getDetectedLabelsFrame(scene)?.fields?.find((label) => label.name === field);\n return indexedLabel ? VAR_LABELS : VAR_FIELDS;\n}\n\nexport class AddToFiltersButton extends SceneObjectBase {\n constructor(state: AddToFiltersButtonState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const filter = getFilter(this.state.frame);\n if (filter) {\n const variable = getUIAdHocVariable(this.state.variableName, filter.name, this);\n this.setFilterState(variable);\n\n this._subs.add(\n variable.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setFilterState(variable);\n }\n })\n );\n }\n }\n\n private setFilterState(variable: AdHocFiltersVariable) {\n const filter = getFilter(this.state.frame);\n if (!filter) {\n this.setState({\n isIncluded: false,\n isExcluded: false,\n });\n return;\n }\n\n // Check if the filter is already there\n const filterInSelectedFilters = variable.state.filters.find((f) => {\n const isMetadata = isFilterMetadata(filter);\n const value = getValueFromAdHocVariableFilter(isMetadata ? VAR_METADATA : VAR_FIELDS, f);\n return f.key === filter.name && value.value === filter.value;\n });\n\n if (!filterInSelectedFilters) {\n this.setState({\n isIncluded: false,\n isExcluded: false,\n });\n return;\n }\n\n this.setState({\n isIncluded: filterInSelectedFilters.operator === FilterOp.Equal,\n isExcluded: filterInSelectedFilters.operator === FilterOp.NotEqual,\n });\n }\n\n public onClick = (type: FilterType) => {\n const filter = getFilter(this.state.frame);\n if (!filter) {\n return;\n }\n\n addToFilters(filter.name, filter.value, type, this, this.state.variableName);\n const variable = getUIAdHocVariable(this.state.variableName, filter.name, this);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.add_to_filters_in_breakdown_clicked,\n {\n filterType: this.state.variableName,\n key: filter.name,\n action: type,\n filtersLength: variable?.state.filters.length || 0,\n }\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { hideExclude, isExcluded, isIncluded } = model.useState();\n return (\n model.onClick('include')}\n onClear={() => model.onClick('clear')}\n onExclude={() => model.onClick('exclude')}\n hideExclude={hideExclude}\n />\n );\n };\n}\n\nconst getFilter = (frame: DataFrame) => {\n // current filter name and value is format {name: value}\n const filterNameAndValueObj = frame.fields[1]?.labels ?? {};\n // Sanity check - filter should have only one key-value pair\n if (Object.keys(filterNameAndValueObj).length !== 1) {\n logger.warn('getFilter: unexpected empty labels');\n return;\n }\n const name = Object.keys(filterNameAndValueObj)[0];\n const value = filterNameAndValueObj[name];\n return { name, value };\n};\n\nconst getUIAdHocVariable = (variableType: InterpolatedFilterType, key: string, scene: SceneObject) => {\n return variableType === VAR_FIELDS || variableType === VAR_METADATA\n ? getFieldsAndMetadataVariable(scene)\n : getAdHocFiltersVariable(validateVariableNameForField(key, variableType), scene);\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent } from 'react';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { SearchInput } from './SearchInput';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport { BusEventBase } from '@grafana/data';\nimport { logger } from '../../../services/logger';\n\nexport class BreakdownSearchReset extends BusEventBase {\n public static type = 'breakdown-search-reset';\n}\n\nexport interface BreakdownSearchSceneState extends SceneObjectState {\n filter?: string;\n}\n\nconst recentFilters: Record = {};\n\nexport class BreakdownSearchScene extends SceneObjectBase {\n private cacheKey: string;\n constructor(cacheKey: string) {\n super({\n filter: recentFilters[cacheKey] ?? '',\n });\n this.cacheKey = cacheKey;\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { filter } = model.useState();\n return (\n \n );\n };\n\n public onValueFilterChange = (event: ChangeEvent) => {\n this.setState({ filter: event.target.value });\n this.filterValues(event.target.value);\n };\n\n public clearValueFilter = () => {\n this.setState({ filter: '' });\n this.filterValues('');\n };\n\n public reset = () => {\n this.setState({ filter: '' });\n recentFilters[this.cacheKey] = '';\n };\n\n private filterValues(filter: string) {\n const breakdownScene = sceneGraph.findObject(\n this,\n (o) => o instanceof LabelBreakdownScene || o instanceof FieldsBreakdownScene\n );\n if (breakdownScene instanceof LabelBreakdownScene || breakdownScene instanceof FieldsBreakdownScene) {\n recentFilters[this.cacheKey] = filter;\n const byFrameRepeater = sceneGraph.findDescendents(breakdownScene, ByFrameRepeater);\n byFrameRepeater?.forEach((child) => {\n if (child.state.body.isActive) {\n child.filterByString(filter);\n }\n });\n } else {\n logger.warn('unable to find Breakdown scene', {\n typeofBody: typeof breakdownScene,\n filter,\n });\n }\n }\n}\n","import React from 'react';\n\nimport { DataFrame, LoadingState, PanelData } from '@grafana/data';\nimport {\n SceneByFrameRepeater,\n SceneComponentProps,\n SceneDataTransformer,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneLayout,\n SceneObjectBase,\n SceneObjectState,\n SceneReactObject,\n VizPanel,\n} from '@grafana/scenes';\nimport { sortSeries } from 'services/sorting';\nimport { fuzzySearch } from '../../../services/search';\nimport { getLabelValue } from './SortByScene';\nimport { Alert, Button } from '@grafana/ui';\nimport { css } from '@emotion/css';\nimport { BreakdownSearchReset } from './BreakdownSearchScene';\nimport { map, Observable } from 'rxjs';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { VALUE_SUMMARY_PANEL_KEY } from './Panels/ValueSummary';\nimport { logger } from '../../../services/logger';\n\ninterface ByFrameRepeaterState extends SceneObjectState {\n body: SceneLayout;\n getLayoutChild(frame: DataFrame, frameIndex: number): SceneFlexItem;\n}\n\ntype FrameFilterCallback = (frame: DataFrame) => boolean;\ntype FrameIterateCallback = (frames: DataFrame[], seriesIndex: number) => void;\n\nexport class ByFrameRepeater extends SceneObjectBase {\n private unfilteredChildren: SceneFlexItem[] = [];\n private sortBy: string;\n private direction: string;\n private sortedSeries: DataFrame[] = [];\n private getFilter: () => string;\n public constructor({\n sortBy,\n direction,\n getFilter,\n ...state\n }: ByFrameRepeaterState & { sortBy: string; direction: string; getFilter: () => string }) {\n super(state);\n\n this.sortBy = sortBy;\n this.direction = direction;\n this.getFilter = getFilter;\n\n this.addActivationHandler(() => {\n const data = sceneGraph.getData(this);\n\n this._subs.add(\n data.subscribeToState((data, prevData) => {\n if (\n data.data?.state === LoadingState.Done ||\n (data.data?.state === LoadingState.Streaming &&\n data.data.series.length > (prevData.data?.series.length ?? 0))\n ) {\n this.performRepeat(data.data);\n }\n })\n );\n\n if (data.state.data) {\n this.performRepeat(data.state.data);\n }\n });\n }\n\n public sort = (sortBy: string, direction: string) => {\n const data = sceneGraph.getData(this);\n this.sortBy = sortBy;\n this.direction = direction;\n if (data.state.data) {\n this.performRepeat(data.state.data);\n }\n };\n\n private performRepeat(data: PanelData) {\n const newChildren: SceneFlexItem[] = [];\n const sortedSeries = sortSeries(data.series, this.sortBy, this.direction);\n\n for (let seriesIndex = 0; seriesIndex < sortedSeries.length; seriesIndex++) {\n const layoutChild = this.state.getLayoutChild(sortedSeries[seriesIndex], seriesIndex);\n newChildren.push(layoutChild);\n }\n\n this.sortedSeries = sortedSeries;\n this.unfilteredChildren = newChildren;\n\n if (this.getFilter()) {\n this.state.body.setState({ children: [] });\n this.filterByString(this.getFilter());\n } else {\n this.state.body.setState({ children: newChildren });\n }\n }\n\n public iterateFrames = (callback: FrameIterateCallback) => {\n const data = sceneGraph.getData(this).state.data;\n if (!data) {\n return;\n }\n for (let seriesIndex = 0; seriesIndex < this.sortedSeries.length; seriesIndex++) {\n callback(this.sortedSeries, seriesIndex);\n }\n };\n\n filterByString = (filter: string) => {\n let haystack: string[] = [];\n\n this.iterateFrames((frames, seriesIndex) => {\n const labelValue = getLabelValue(frames[seriesIndex]);\n haystack.push(labelValue);\n });\n fuzzySearch(haystack, filter, (data) => {\n if (data && data[0]) {\n // We got search results\n this.filterFrames((frame: DataFrame) => {\n const label = getLabelValue(frame);\n return data[0].includes(label);\n });\n } else {\n // reset search\n this.filterFrames(() => true);\n }\n\n this.filterSummaryChart(data);\n });\n };\n\n /**\n * Filters the summary panel rendered above the breakdown panels by adding a transformation to the panel\n * @param data\n * @private\n */\n private filterSummaryChart(data: string[][]) {\n const layoutSwitcher = sceneGraph.getAncestor(this, LayoutSwitcher);\n\n if (layoutSwitcher) {\n const singleGraphParent = sceneGraph.findAllObjects(\n layoutSwitcher,\n (obj) => obj.isActive && obj.state.key === VALUE_SUMMARY_PANEL_KEY\n );\n if (singleGraphParent[0] instanceof SceneFlexLayout) {\n const panel = sceneGraph.findDescendents(singleGraphParent[0], VizPanel)[0];\n if (panel instanceof VizPanel) {\n panel.setState({\n $data: new SceneDataTransformer({\n transformations: [() => limitFramesByName(data[0])],\n }),\n });\n } else {\n logger.warn('filterSummaryChart: VizPanel not found', { typeofPanel: typeof panel });\n }\n } else {\n logger.warn('filterSummaryChart: SceneFlexItem not found', { typeofGraphParent: typeof singleGraphParent });\n }\n }\n }\n\n public filterFrames = (filterFn: FrameFilterCallback) => {\n const newChildren: SceneFlexItem[] = [];\n this.iterateFrames((frames, seriesIndex) => {\n if (filterFn(frames[seriesIndex])) {\n newChildren.push(this.unfilteredChildren[seriesIndex]);\n }\n });\n\n if (newChildren.length === 0) {\n const filter = this.getFilter();\n this.state.body.setState({ children: [buildNoResultsScene(filter, this.clearFilter)] });\n } else {\n this.state.body.setState({ children: newChildren });\n }\n };\n\n public clearFilter = () => {\n this.publishEvent(new BreakdownSearchReset(), true);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n return ;\n };\n}\n\nfunction buildNoResultsScene(filter: string, clearFilter: () => void) {\n return new SceneFlexLayout({\n direction: 'row',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: (\n
\n \n No values found matching “{filter}”\n \n \n
\n ),\n }),\n }),\n ],\n });\n}\n\nconst styles = {\n alertContainer: css({\n flexGrow: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }),\n noResultsAlert: css({\n minWidth: '30vw',\n flexGrow: 0,\n }),\n clearButton: css({\n marginLeft: '1.5rem',\n }),\n};\n\nexport function limitFramesByName(matches: string[]) {\n return (source: Observable) => {\n return source.pipe(\n map((frames) => {\n if (!matches || !matches.length) {\n return frames;\n }\n let newFrames: DataFrame[] = [];\n frames.forEach((f) => {\n const label = getLabelValue(f);\n if (matches.includes(label)) {\n newFrames.push(f);\n }\n });\n return newFrames;\n })\n );\n };\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrotError } from '../../GrotError';\nimport { Alert } from '@grafana/ui';\nimport React from 'react';\nimport { emptyStateStyles } from './FieldsBreakdownScene';\n\nexport interface EmptyLayoutSceneState extends SceneObjectState {\n type: 'fields' | 'labels';\n}\n\nexport class EmptyLayoutScene extends SceneObjectBase {\n public static Component({ model }: SceneComponentProps) {\n const { type } = model.useState();\n return (\n \n \n We did not find any {type} for the given timerange. Please{' '}\n \n let us know\n {' '}\n if you think this is a mistake.\n \n \n );\n }\n}\n","import { css } from '@emotion/css';\nimport React, { useState } from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { Select, useStyles2, InlineField, Icon, ActionMeta, InputActionMeta } from '@grafana/ui';\nimport { testIds } from '../../../services/testIds';\nimport { VariableValueOption } from '@grafana/scenes';\n\nimport { wrapWildcardSearch } from '../../../services/query';\n\ntype Props = {\n options: VariableValueOption[];\n value?: T;\n onChange: (label: T | undefined) => void;\n label: string;\n};\n\nexport type AsyncFieldSelectorProps = {\n selectOption: (value: string) => void;\n isLoading: boolean;\n initialFilter: SelectableValue;\n} & Props;\n\nexport function FieldSelector({ options, value, onChange, label }: Props) {\n const styles = useStyles2(getStyles);\n const [selected, setSelected] = useState(false);\n\n const selectableOptions: SelectableValue[] = options.map((option) => {\n return {\n label: option.label,\n value: option.value,\n };\n });\n return (\n \n setSelected(true)}\n onCloseMenu={() => setSelected(false)}\n onChange={(selected: SelectableValue) => onChange(selected.value)}\n className={styles.select}\n prefix={selected ? undefined : }\n />\n \n );\n}\n\nexport function ServiceFieldSelector({\n options,\n value,\n onChange,\n label,\n selectOption,\n isLoading,\n initialFilter,\n}: AsyncFieldSelectorProps) {\n const styles = useStyles2(getStyles);\n const [selected, setSelected] = useState(false);\n const [customOption, setCustomOption] = useState>(initialFilter);\n\n const selectableOptions: SelectableValue[] = options.map((option) => {\n return {\n label: option.label,\n value: option.value,\n };\n });\n const allOptions =\n customOption && value && customOption.value?.includes(value)\n ? [customOption, ...selectableOptions]\n : selectableOptions;\n\n const selectedOption = allOptions?.find((opt) => opt.value === value);\n\n return (\n \n setSelected(true)}\n onCloseMenu={() => setSelected(false)}\n allowCustomValue={true}\n prefix={selected || selectedOption?.__isNew__ ? undefined : }\n onChange={(value: SelectableValue, actionMeta: ActionMeta) => {\n // Custom added value\n if (value?.__isNew__ || value?.icon) {\n setCustomOption({ ...value, icon: 'filter' });\n return onChange(value.value);\n }\n\n // If the user clears the search\n if (actionMeta.action === 'clear') {\n return onChange('');\n }\n\n // Select the service is the value is not a custom filter\n if (actionMeta.action === 'select-option' && value.value && !value.__isNew__) {\n selectOption(value.value);\n }\n }}\n onInputChange={(value: string | undefined, actionMeta: InputActionMeta) => {\n // Grafana/grafana doesn't have types from react-select, but we need the prevInput to add custom value when user clicks off with active search string\n const meta = actionMeta as InputActionMeta & { prevInputValue: string };\n\n // The user is typing\n if (meta.action === 'input-change') {\n return onChange(value);\n }\n\n // the user closed the menu, with text in search box\n if (meta.action === 'menu-close' && meta.prevInputValue) {\n setCustomOption({\n value: wrapWildcardSearch(meta.prevInputValue),\n label: meta.prevInputValue,\n icon: 'filter',\n __isNew__: true,\n });\n return onChange(meta.prevInputValue);\n }\n }}\n />\n \n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n input: css({\n marginBottom: 0,\n }),\n select: css({\n maxWidth: theme.spacing(64),\n minWidth: theme.spacing(20),\n }),\n selectWrapper: css({\n label: 'field-selector-select-wrapper',\n maxWidth: theme.spacing(62.5),\n minWidth: theme.spacing(20),\n marginRight: theme.spacing.x1,\n marginBottom: 0,\n }),\n serviceSceneSelectWrapper: css({\n label: 'service-select-wrapper',\n maxWidth: theme.spacing(62.5),\n minWidth: theme.spacing(20),\n marginRight: theme.spacing.x1,\n marginBottom: 0,\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneReactObject,\n} from '@grafana/scenes';\nimport { buildDataQuery, renderLogQLFieldFilters, renderLogQLMetadataFilters } from '../../../services/query';\nimport { getSortByPreference } from '../../../services/store';\nimport { DataQueryError, LoadingState } from '@grafana/data';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { getQueryRunner } from '../../../services/panel';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { Alert, DrawStyle, LoadingPlaceholder, useStyles2 } from '@grafana/ui';\nimport {\n buildFieldsQueryString,\n getFilterBreakdownValueScene,\n getParserForField,\n getParserFromFieldsFilters,\n} from '../../../services/fields';\nimport { getLabelValue } from './SortByScene';\nimport { ParserType, VAR_FIELDS, VAR_METADATA } from '../../../services/variables';\nimport React from 'react';\nimport { FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS, FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport { getDetectedFieldsFrame } from '../ServiceScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport {\n getFieldGroupByVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../../services/variableGetters';\nimport { LokiQuery } from '../../../services/lokiQuery';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { ValueSummaryPanelScene } from './Panels/ValueSummary';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { logger } from '../../../services/logger';\n\nexport interface FieldValuesBreakdownSceneState extends SceneObjectState {\n body?: (LayoutSwitcher & SceneObject) | (SceneReactObject & SceneObject);\n $data?: SceneDataProvider;\n}\n\nexport class FieldValuesBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n if (body instanceof LayoutSwitcher) {\n return <>{body && };\n }\n\n return <>;\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n\n private getTagKey() {\n const groupByVariable = getFieldGroupByVariable(this);\n return String(groupByVariable.state.value);\n }\n\n onActivate() {\n const query = this.buildQuery();\n\n // Set query runner\n this.setState({\n body: this.build(query),\n $data: this.buildQueryRunner(),\n });\n\n // Subscribe to data query changes\n this._subs.add(\n this.state.$data?.subscribeToState((newState) => {\n this.onValuesDataQueryChange(newState, query);\n })\n );\n\n this.runQuery();\n this.setSubscriptions();\n }\n\n private buildQueryRunner() {\n const query = this.buildQuery();\n return getQueryRunner([query], { runQueriesMode: 'manual' });\n }\n\n /**\n * Builds the LokiQuery for the value breakdown\n */\n private buildQuery() {\n const tagKey = this.getTagKey();\n const fieldsVariable = getFieldsVariable(this);\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const queryString = buildFieldsQueryString(tagKey, fieldsVariable, detectedFieldsFrame);\n // Manually interpolate query so we don't pollute the variable interpolation for other queries\n const { variableName, filterExpression } = this.removeFieldLabelFromVariableInterpolation();\n const expression = sceneGraph.interpolate(this, queryString.replace(`$\\{${variableName}}`, filterExpression));\n\n return buildDataQuery(expression, { legendFormat: `{{${tagKey}}}`, refId: tagKey });\n }\n\n /**\n * Sets activation subscriptions\n */\n private setSubscriptions() {\n // Subscribe to time range changes\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n // Run query on time range change\n this.runQuery();\n })\n );\n\n // VARIABLE SUBS\n // Subscribe to line filter changes\n this._subs.add(\n getLineFiltersVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to pattern filter changes\n this._subs.add(\n getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to labels variable changes\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to levels variable changes\n this._subs.add(\n getLevelsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n const { parser } = this.getParserForThisField();\n\n if (parser !== 'structuredMetadata') {\n this.setFieldParserSubscriptions();\n } else {\n this.setMetadataParserSubscriptions();\n }\n }\n\n /**\n * Subscribe to variables for metadata breakdowns\n */\n private setMetadataParserSubscriptions() {\n const key = this.getTagKey();\n // Subscribe to any fields change and run the query without change\n this._subs.add(\n getFieldsVariable(this).subscribeToState(async (newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n this._subs.add(\n getMetadataVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => f.key !== key),\n prevState.filters.filter((f) => f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Subscribe to variables for field breakdowns\n */\n private setFieldParserSubscriptions() {\n const key = this.getTagKey();\n // Subscribe to any metadata change and run the query without alteration\n this._subs.add(\n getMetadataVariable(this).subscribeToState(async (newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n // Subscribe to fields variable, run the query if the change wasn't for this label\n this._subs.add(\n getFieldsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => f.key !== key),\n prevState.filters.filter((f) => f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Rebuild the query before running.\n * If so update the query with the new parser and set the parser to state.\n */\n private rebuildQuery() {\n const query = this.buildQuery();\n this.getSceneQueryRunner()?.setState({\n queries: [query],\n });\n }\n\n /**\n * Run the field values breakdown query.\n * Generates the filterExpression excluding all filters with a key that matches the label.\n */\n private runQuery() {\n // Update the filters to exclude the current value so all options are displayed to the user\n this.rebuildQuery();\n const queryRunner = this.getSceneQueryRunner();\n queryRunner?.runQueries();\n }\n\n /**\n * Returns the query runner\n */\n private getSceneQueryRunner() {\n if (this.state.$data) {\n const queryRunners = sceneGraph.findDescendents(this.state.$data, SceneQueryRunner);\n if (queryRunners.length !== 1) {\n const error = new Error('Unable to find query runner in value breakdown!');\n logger.error(error, { msg: 'FieldValuesBreakdownScene: Unable to find query runner in value breakdown!' });\n throw error;\n }\n\n return queryRunners[0];\n }\n logger.warn('FieldValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!');\n return undefined;\n }\n\n /**\n * Sets the expression builder to exclude the current field label\n */\n private removeFieldLabelFromVariableInterpolation() {\n const tagKey = this.getTagKey();\n let filterExpression;\n let variableName: typeof VAR_FIELDS | typeof VAR_METADATA;\n\n // We want the parser for this field, we only need to exclude keys for the variable type that matches this value breakdown\n const parser = this.getQueryParser();\n if (parser === 'structuredMetadata') {\n const metadataVar = getMetadataVariable(this);\n variableName = VAR_METADATA;\n filterExpression = renderLogQLMetadataFilters(metadataVar.state.filters, [tagKey]);\n } else {\n variableName = VAR_FIELDS;\n const fieldsVar = getFieldsVariable(this);\n filterExpression = renderLogQLFieldFilters(fieldsVar.state.filters, [tagKey]);\n }\n\n return { filterExpression, variableName };\n }\n\n /**\n * Actions to run when the value breakdown query response is received.\n */\n private onValuesDataQueryChange(newState: SceneDataState, query: LokiQuery) {\n if (newState.data?.state === LoadingState.Done) {\n if (this.state.body instanceof SceneReactObject) {\n this.setState({\n body: this.build(query),\n });\n }\n }\n if (newState.data?.state === LoadingState.Error) {\n this.setErrorState(newState.data.errors);\n }\n }\n\n /**\n * Sets the error body state\n */\n private setErrorState(errors: DataQueryError[] | undefined) {\n this.setState({\n body: new SceneReactObject({\n reactNode: (\n \n {errors?.map((err, key) => (\n
\n {err.status && (\n <>\n Status: {err.status}
\n \n )}\n {err.message && (\n <>\n Message: {err.message}
\n \n )}\n {err.traceId && (\n <>\n TraceId: {err.traceId}\n \n )}\n
\n ))}\n
\n ),\n }),\n });\n }\n\n /**\n * Builds the layout switcher\n */\n private build(query: LokiQuery) {\n const { optionValue, parser } = this.getParserForThisField();\n const { sortBy, direction } = getSortByPreference('fields', DEFAULT_SORT_BY, 'desc');\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n const getFilter = () => fieldsBreakdownScene.state.search.state.filter ?? '';\n\n return new LayoutSwitcher({\n options: [\n { value: 'single', label: 'Single' },\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n // Single\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new SceneFlexItem({\n minHeight: 300,\n body: PanelBuilders.timeseries()\n .setTitle(optionValue)\n .setShowMenuAlways(true)\n .setMenu(new PanelMenu({}))\n .build(),\n }),\n ],\n }),\n\n // Grid\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new ValueSummaryPanelScene({ title: optionValue, type: 'field', tagKey: this.getTagKey() }),\n new SceneReactObject({\n reactNode: ,\n }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n isLazy: true,\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n query?.expr.includes('count_over_time') ? DrawStyle.Bars : DrawStyle.Line,\n parser === 'structuredMetadata' ? VAR_METADATA : VAR_FIELDS,\n sceneGraph.getAncestor(this, FieldsBreakdownScene).state.sort,\n optionValue\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n\n // Rows\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({\n reactNode: ,\n }),\n new ValueSummaryPanelScene({ title: optionValue, type: 'field', tagKey: this.getTagKey() }),\n new SceneReactObject({\n reactNode: ,\n }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n isLazy: true,\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n query?.expr.includes('count_over_time') ? DrawStyle.Bars : DrawStyle.Line,\n parser === 'structuredMetadata' ? VAR_METADATA : VAR_FIELDS,\n sceneGraph.getAncestor(this, FieldsBreakdownScene).state.sort,\n optionValue\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n ],\n });\n }\n\n /**\n * Gets the parser for the value breakdown\n */\n private getParserForThisField() {\n const groupByVariable = getFieldGroupByVariable(this);\n const optionValue = String(groupByVariable.state.value);\n const parserForThisField = getParserForField(optionValue, this);\n return { optionValue, parser: parserForThisField };\n }\n\n /**\n * Gets the parser needed for fields variables\n */\n private getParserForFields() {\n return getParserFromFieldsFilters(getFieldsVariable(this));\n }\n\n /**\n * Gets the parser needed to run a query for the field variable and the breakdown field\n */\n private getQueryParser(): ParserType {\n const { parser } = this.getParserForThisField();\n const parserForFields = this.getParserForFields();\n\n // If the parser needed to parse this field matches the parser needed to parse the fields\n if (parser === parserForFields) {\n return parserForFields;\n }\n // If there is no parser in the detected_fields frame for this field, let's play it safe and return mixed\n if (parser === undefined) {\n return 'mixed';\n }\n // If the parser for the breakdown field is metadata, return the parser for fields\n if (parser === 'structuredMetadata') {\n return parserForFields;\n }\n // if the parser for fields is metadata, return parser for the breakdown field\n if (parserForFields === 'structuredMetadata') {\n return parser;\n }\n return 'mixed';\n }\n}\n","import {\n PanelBuilders,\n QueryRunnerState,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { ALL_VARIABLE_VALUE, DetectedFieldType, ParserType } from '../../../services/variables';\nimport { buildDataQuery } from '../../../services/query';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS, FieldsBreakdownScene } from './FieldsBreakdownScene';\nimport {\n getDetectedFieldsFrame,\n getDetectedFieldsFrameFromQueryRunnerState,\n getDetectedFieldsNamesFromQueryRunnerState,\n getDetectedFieldsParsersFromQueryRunnerState,\n ServiceScene,\n} from '../ServiceScene';\nimport React from 'react';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport { ValueSlugs } from '../../../services/routing';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport {\n buildFieldsQueryString,\n extractParserFromArray,\n getDetectedFieldType,\n isAvgField,\n} from '../../../services/fields';\nimport {\n getFieldGroupByVariable,\n getFieldsVariable,\n getValueFromFieldsFilter,\n} from '../../../services/variableGetters';\nimport { AvgFieldPanelType, getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { logger } from '../../../services/logger';\nimport { getPanelOption } from '../../../services/store';\nimport { MAX_NUMBER_OF_TIME_SERIES } from './TimeSeriesLimit';\n\nexport interface FieldsAggregatedBreakdownSceneState extends SceneObjectState {\n body?: LayoutSwitcher;\n}\n\nexport class FieldsAggregatedBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onDetectedFieldsChange = (newState: QueryRunnerState) => {\n if (newState.data?.state === LoadingState.Done) {\n //@todo cardinality looks wrong in API response\n this.updateChildren(newState);\n }\n };\n\n private updateChildren(newState: QueryRunnerState, newParser: ParserType | undefined = undefined) {\n const detectedFieldsFrame = getDetectedFieldsFrameFromQueryRunnerState(newState);\n const newNamesField = getDetectedFieldsNamesFromQueryRunnerState(newState);\n const newParsersField = getDetectedFieldsParsersFromQueryRunnerState(newState);\n const cardinalityMap = this.calculateCardinalityMap(newState);\n\n // Iterate through all the layouts\n this.state.body?.state.layouts.forEach((layout) => {\n if (layout instanceof SceneCSSGridLayout) {\n // populate set of new list of fields\n const newFieldsSet = new Set(newNamesField?.values);\n const updatedChildren = layout.state.children as SceneCSSGridItem[];\n\n // Iterate through all the existing panels\n for (let i = 0; i < updatedChildren.length; i++) {\n const gridItem = layout.state.children[i];\n if (gridItem instanceof SceneCSSGridItem) {\n const panel = gridItem.state.body;\n if (panel instanceof VizPanel) {\n if (newParser) {\n const index = newNamesField?.values.indexOf(panel.state.title);\n const existingParser = index && index !== -1 ? newParsersField?.values[index] : undefined;\n\n // If a new field filter was added that updated the parsers, we'll need to rebuild the query\n if (existingParser !== newParser) {\n const fieldType = getDetectedFieldType(panel.state.title, detectedFieldsFrame);\n const dataTransformer = this.getQueryRunnerForPanel(\n panel.state.title,\n detectedFieldsFrame,\n fieldType\n );\n panel.setState({\n $data: dataTransformer,\n });\n }\n }\n\n if (newFieldsSet.has(panel.state.title)) {\n // If the new response has this field, delete it from the set, but leave it in the layout\n newFieldsSet.delete(panel.state.title);\n } else {\n // Otherwise if the panel doesn't exist in the response, delete it from the layout\n updatedChildren.splice(i, 1);\n // And make sure to update the index, or we'll skip the next one\n i--;\n }\n } else {\n logger.warn('panel is not VizPanel!');\n }\n } else {\n logger.warn('gridItem is not SceneCSSGridItem');\n }\n }\n\n const fieldsToAdd = Array.from(newFieldsSet);\n const options = fieldsToAdd.map((fieldName) => fieldName);\n\n updatedChildren.push(...this.buildChildren(options));\n updatedChildren.sort(this.sortChildren(cardinalityMap));\n\n updatedChildren.map((child) => {\n this.subscribeToPanel(child);\n });\n\n layout.setState({\n children: updatedChildren,\n });\n } else {\n logger.warn('Layout is not SceneCSSGridLayout');\n }\n });\n }\n\n private sortChildren(cardinalityMap: Map) {\n return (a: SceneCSSGridItem, b: SceneCSSGridItem) => {\n const aPanel = a.state.body as VizPanel;\n const bPanel = b.state.body as VizPanel;\n const aCardinality = cardinalityMap.get(aPanel.state.title) ?? 0;\n const bCardinality = cardinalityMap.get(bPanel.state.title) ?? 0;\n return bCardinality - aCardinality;\n };\n }\n\n private calculateCardinalityMap(newState?: QueryRunnerState) {\n const detectedFieldsFrame = getDetectedFieldsFrameFromQueryRunnerState(newState);\n const cardinalityMap = new Map();\n if (detectedFieldsFrame?.length) {\n for (let i = 0; i < detectedFieldsFrame?.length; i++) {\n const name: string = detectedFieldsFrame.fields[0].values[i];\n const cardinality: number = detectedFieldsFrame.fields[1].values[i];\n cardinalityMap.set(name, cardinality);\n }\n }\n return cardinalityMap;\n }\n\n onActivate() {\n this.setState({\n body: this.build(),\n });\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n if (serviceScene.state.fieldsCount === undefined) {\n this.updateFieldCount();\n }\n\n this._subs.add(serviceScene.state.$detectedFieldsData?.subscribeToState(this.onDetectedFieldsChange));\n this._subs.add(this.subscribeToFieldsVar());\n }\n\n private subscribeToFieldsVar() {\n const fieldsVar = getFieldsVariable(this);\n\n return fieldsVar.subscribeToState((newState, prevState) => {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const newParsers = newState.filters.map((f) => getValueFromFieldsFilter(f).parser);\n const oldParsers = prevState.filters.map((f) => getValueFromFieldsFilter(f).parser);\n\n const newParser = extractParserFromArray(newParsers);\n const oldParser = extractParserFromArray(oldParsers);\n\n if (newParser !== oldParser) {\n const detectedFieldsState = serviceScene.state.$detectedFieldsData?.state;\n if (detectedFieldsState) {\n this.updateChildren(detectedFieldsState, newParser);\n }\n }\n });\n }\n\n public build() {\n const groupByVariable = getFieldGroupByVariable(this);\n const options = groupByVariable.state.options.map((opt) => String(opt.value));\n\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n fieldsBreakdownScene.state.search.reset();\n\n const children = this.buildChildren(options);\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const cardinalityMap = this.calculateCardinalityMap(serviceScene.state.$detectedFieldsData?.state);\n children.sort(this.sortChildren(cardinalityMap));\n const childrenClones = children.map((child) => child.clone());\n\n // We must subscribe to the data providers for all children after the clone, or we'll see bugs in the row layout\n [...children, ...childrenClones].map((child) => {\n this.subscribeToPanel(child);\n });\n\n return new LayoutSwitcher({\n options: [\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneCSSGridLayout({\n templateColumns: FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: children,\n isLazy: true,\n }),\n new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: childrenClones,\n isLazy: true,\n }),\n ],\n });\n }\n\n private subscribeToPanel(child: SceneCSSGridItem) {\n const panel = child.state.body as VizPanel | undefined;\n if (panel) {\n this._subs.add(\n panel?.state.$data?.getResultsStream().subscribe((result) => {\n if (result.data.errors && result.data.errors.length > 0) {\n child.setState({ isHidden: true });\n this.updateFieldCount();\n }\n })\n );\n }\n }\n\n public rebuildAvgFields() {\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const activeLayout = this.getActiveGridLayouts();\n const children: SceneCSSGridItem[] = [];\n const panelType =\n getPanelOption('panelType', [AvgFieldPanelType.histogram, AvgFieldPanelType.timeseries]) ??\n AvgFieldPanelType.timeseries;\n\n activeLayout?.state.children.forEach((child) => {\n if (child instanceof SceneCSSGridItem && !child.state.isHidden) {\n const panels = sceneGraph.findDescendents(child, VizPanel);\n if (panels.length) {\n // Will only be one panel as a child of CSSGridItem\n const panel = panels[0];\n const labelName = panel.state.title;\n const fieldType = getDetectedFieldType(labelName, detectedFieldsFrame);\n if (isAvgField(fieldType)) {\n const newChild = this.buildChild(labelName, detectedFieldsFrame, panelType);\n if (newChild) {\n children.push(newChild);\n }\n } else {\n children.push(child);\n }\n }\n }\n });\n\n if (children.length) {\n activeLayout?.setState({\n children,\n });\n }\n }\n\n private buildChildren(options: string[]): SceneCSSGridItem[] {\n const children: SceneCSSGridItem[] = [];\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n const panelType =\n getPanelOption('panelType', [AvgFieldPanelType.timeseries, AvgFieldPanelType.histogram]) ??\n AvgFieldPanelType.timeseries;\n for (const option of options) {\n if (option === ALL_VARIABLE_VALUE || !option) {\n continue;\n }\n\n const child = this.buildChild(option, detectedFieldsFrame, panelType);\n if (child) {\n children.push(child);\n }\n }\n return children;\n }\n\n private buildChild(labelName: string, detectedFieldsFrame: DataFrame | undefined, panelType?: AvgFieldPanelType) {\n if (labelName === ALL_VARIABLE_VALUE || !labelName) {\n return;\n }\n\n const fieldType = getDetectedFieldType(labelName, detectedFieldsFrame);\n const dataTransformer = this.getQueryRunnerForPanel(labelName, detectedFieldsFrame, fieldType);\n let body;\n\n const headerActions = [];\n if (!isAvgField(fieldType)) {\n body = PanelBuilders.timeseries()\n .setTitle(labelName)\n .setData(dataTransformer)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: labelName } }))\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setOverrides(setLevelColorOverrides);\n headerActions.push(new SelectLabelActionScene({ labelName: String(labelName), fieldType: ValueSlugs.field }));\n } else {\n if (panelType === 'histogram') {\n body = PanelBuilders.histogram();\n } else {\n body = PanelBuilders.timeseries();\n }\n body\n .setTitle(labelName)\n .setData(dataTransformer)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: labelName }, panelType }));\n headerActions.push(\n new SelectLabelActionScene({\n labelName: String(labelName),\n hideValueDrilldown: true,\n fieldType: ValueSlugs.field,\n })\n );\n }\n body.setHeaderActions(headerActions);\n body.setSeriesLimit(MAX_NUMBER_OF_TIME_SERIES);\n body.setShowMenuAlways(true);\n\n const viz = body.build();\n return new SceneCSSGridItem({\n body: viz,\n });\n }\n\n private getQueryRunnerForPanel(\n optionValue: string,\n detectedFieldsFrame: DataFrame | undefined,\n fieldType?: DetectedFieldType\n ) {\n const fieldsVariable = getFieldsVariable(this);\n const queryString = buildFieldsQueryString(optionValue, fieldsVariable, detectedFieldsFrame);\n const query = buildDataQuery(queryString, {\n legendFormat: isAvgField(fieldType) ? optionValue : `{{${optionValue}}}`,\n refId: optionValue,\n });\n\n return getQueryRunner([query]);\n }\n\n private getActiveGridLayouts() {\n return (this.state.body?.state.layouts.find((l) => l.isActive) ?? this.state.body?.state.layouts[0]) as\n | SceneCSSGridLayout\n | undefined;\n }\n\n private updateFieldCount() {\n const activeLayout = this.getActiveGridLayouts();\n const activeLayoutChildren = activeLayout?.state.children as SceneCSSGridItem[] | undefined;\n const activePanels = activeLayoutChildren?.filter((child) => !child.state.isHidden);\n\n const fieldsBreakdownScene = sceneGraph.getAncestor(this, FieldsBreakdownScene);\n fieldsBreakdownScene.state.changeFieldCount?.(activePanels?.length ?? 0);\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { DataFrame, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n VariableDependencyConfig,\n VariableValueOption,\n} from '@grafana/scenes';\nimport { useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getSortByPreference } from 'services/store';\nimport { ALL_VARIABLE_VALUE, VAR_FIELD_GROUP_BY, VAR_LABELS } from 'services/variables';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { CustomConstantVariable, CustomConstantVariableState } from '../../../services/CustomConstantVariable';\nimport { navigateToValueBreakdown } from '../../../services/navigate';\nimport { checkPrimaryLabel, getPrimaryLabelFromUrl, ValueSlugs } from '../../../services/routing';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { IndexScene } from '../../IndexScene/IndexScene';\nimport { getDetectedFieldsFrame, ServiceScene } from '../ServiceScene';\nimport { BreakdownSearchReset, BreakdownSearchScene } from './BreakdownSearchScene';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { FieldsAggregatedBreakdownScene } from './FieldsAggregatedBreakdownScene';\nimport { FieldSelector } from './FieldSelector';\nimport { FieldValuesBreakdownScene } from './FieldValuesBreakdownScene';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { SortByScene, SortCriteriaChanged } from './SortByScene';\nimport { StatusWrapper } from './StatusWrapper';\nimport { getFieldOptions } from 'services/filters';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { getFieldGroupByVariable, getLabelsVariable } from '../../../services/variableGetters';\nimport { NoMatchingLabelsScene } from './NoMatchingLabelsScene';\nimport { clearVariables, getVariablesThatCanBeCleared } from '../../../services/variableHelpers';\n\nexport const averageFields = ['duration', 'count', 'total', 'bytes'];\nexport const FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS = 'repeat(auto-fit, minmax(400px, 1fr))';\n\nexport interface FieldsBreakdownSceneState extends SceneObjectState {\n body?:\n | (NoMatchingLabelsScene & SceneObject)\n | (FieldsAggregatedBreakdownScene & SceneObject)\n | (FieldValuesBreakdownScene & SceneObject)\n | (EmptyLayoutScene & SceneObject);\n search: BreakdownSearchScene;\n sort: SortByScene;\n value?: string;\n loading?: boolean;\n error?: string;\n blockingMessage?: string;\n changeFieldCount?: (n: number) => void;\n}\n\nexport class FieldsBreakdownScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_LABELS],\n });\n\n constructor(state: Partial & { options?: VariableValueOption[]; value?: string }) {\n super({\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [\n new CustomConstantVariable({\n name: VAR_FIELD_GROUP_BY,\n defaultToAll: false,\n includeAll: true,\n value: state.value ?? ALL_VARIABLE_VALUE,\n options: state.options ?? [],\n }),\n ],\n }),\n loading: true,\n sort: new SortByScene({ target: 'fields' }),\n search: new BreakdownSearchScene('fields'),\n value: state.value ?? ALL_VARIABLE_VALUE,\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n const groupByVariable = getFieldGroupByVariable(this);\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n this.setState({\n loading: serviceScene.state.$detectedLabelsData?.state.data?.state !== LoadingState.Done,\n });\n\n // Subscriptions\n this._subs.add(\n this.subscribeToEvent(BreakdownSearchReset, () => {\n this.state.search.clearValueFilter();\n })\n );\n this._subs.add(this.subscribeToEvent(SortCriteriaChanged, this.handleSortByChange));\n this._subs.add(groupByVariable.subscribeToState(this.variableChanged));\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n const variable = getFieldGroupByVariable(this);\n let { labelName } = getPrimaryLabelFromUrl();\n\n const newService = newState.filters.find((filter) => filter.key === labelName);\n const prevService = prevState.filters.find((filter) => filter.key === labelName);\n\n // If the user changes the primary label\n if (variable.state.value === ALL_VARIABLE_VALUE && newService !== prevService) {\n this.setState({\n loading: true,\n body: undefined,\n });\n }\n })\n );\n\n this._subs.add(\n serviceScene.state.$detectedFieldsData?.subscribeToState(\n (newState: QueryRunnerState, oldState: QueryRunnerState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (newState.data.series?.[0]) {\n this.updateOptions(newState.data.series?.[0]);\n }\n }\n }\n )\n );\n\n const detectedFieldsFrame = getDetectedFieldsFrame(this);\n // Need to update labels with current state\n if (detectedFieldsFrame) {\n this.updateOptions(detectedFieldsFrame);\n }\n\n checkPrimaryLabel(this);\n }\n\n private variableChanged = (newState: CustomConstantVariableState, oldState: CustomConstantVariableState) => {\n if (\n newState.value !== oldState.value ||\n !areArraysEqual(newState.options, oldState.options) ||\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene ||\n this.state.body instanceof NoMatchingLabelsScene\n ) {\n this.updateBody(newState);\n }\n };\n\n private updateOptions(dataFrame: DataFrame) {\n if (!dataFrame || !dataFrame.length) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n let body;\n if (variablesToClear.length > 1) {\n this.state.changeFieldCount?.(0);\n body = new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) });\n } else {\n body = new EmptyLayoutScene({ type: 'fields' });\n }\n this.setState({\n loading: false,\n body,\n });\n return;\n }\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const variable = getFieldGroupByVariable(this);\n variable.setState({\n options: getFieldOptions(dataFrame.fields[0].values.map((v) => String(v))),\n loading: false,\n value: serviceScene.state.drillDownLabel ?? ALL_VARIABLE_VALUE,\n });\n this.setState({\n loading: false,\n });\n }\n\n private handleSortByChange = (event: SortCriteriaChanged) => {\n if (event.target !== 'fields') {\n return;\n }\n\n const body = this.state.body;\n if (body instanceof FieldValuesBreakdownScene && body.state.body instanceof LayoutSwitcher) {\n body.state.body?.state.layouts.forEach((layout) => {\n const byFrameRepeater = sceneGraph.findDescendents(body, ByFrameRepeater);\n byFrameRepeater.forEach((r) => r.sort(event.sortBy, event.direction));\n });\n }\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.value_breakdown_sort_change,\n {\n target: 'fields',\n criteria: event.sortBy,\n direction: event.direction,\n }\n );\n };\n\n private updateBody(newState: CustomConstantVariableState) {\n const fieldsVariable = getFieldGroupByVariable(this);\n\n // We get the labels from the service scene, if we don't have them yet, assume we're loading\n if (!fieldsVariable.state.options || !fieldsVariable.state.options.length) {\n return;\n }\n\n const stateUpdate: Partial = {};\n\n if (fieldsVariable.state.options && fieldsVariable.state.options.length <= 1) {\n // If there's 1 or fewer fields build the empty or clear layout UI\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n if (variablesToClear.length > 1) {\n this.state.changeFieldCount?.(0);\n stateUpdate.body = new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) });\n } else {\n stateUpdate.body = new EmptyLayoutScene({ type: 'fields' });\n }\n } else {\n // Otherwise update the body, but don't re-instantiate if it's already the right class\n if (newState.value === ALL_VARIABLE_VALUE && this.state.body instanceof FieldValuesBreakdownScene) {\n stateUpdate.body = new FieldsAggregatedBreakdownScene({});\n } else if (newState.value !== ALL_VARIABLE_VALUE && this.state.body instanceof FieldsAggregatedBreakdownScene) {\n stateUpdate.body = new FieldValuesBreakdownScene({});\n } else if (\n // If the body hasn't been created, or the no-data views are active, we want to replace and render the correct scene\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene ||\n this.state.body instanceof NoMatchingLabelsScene\n ) {\n stateUpdate.body =\n newState.value === ALL_VARIABLE_VALUE\n ? new FieldsAggregatedBreakdownScene({})\n : new FieldValuesBreakdownScene({});\n }\n }\n\n this.setState(stateUpdate);\n }\n public onFieldSelectorChange = (value?: string) => {\n if (!value) {\n return;\n }\n\n const variable = getFieldGroupByVariable(this);\n const { sortBy, direction } = getSortByPreference('fields', DEFAULT_SORT_BY, 'desc');\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.select_field_in_breakdown_clicked,\n {\n field: value,\n previousField: variable.getValueText(),\n view: 'fields',\n sortBy,\n sortByDirection: direction,\n }\n );\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n navigateToValueBreakdown(ValueSlugs.field, value, serviceScene);\n };\n\n public static LabelsMenu = ({ model }: SceneComponentProps) => {\n const { body, loading, search } = model.useState();\n const styles = useStyles2(getStyles);\n const variable = getFieldGroupByVariable(model);\n const { options, value } = variable.useState();\n return (\n
\n {body instanceof FieldsAggregatedBreakdownScene && }\n {body instanceof FieldValuesBreakdownScene && }\n {body instanceof FieldValuesBreakdownScene && }\n {!loading && options.length > 1 && (\n \n )}\n
\n );\n };\n public static ValuesMenu = ({ model }: SceneComponentProps) => {\n const { loading, sort } = model.useState();\n const styles = useStyles2(getStyles);\n const variable = getFieldGroupByVariable(model);\n const { value } = variable.useState();\n return (\n
\n {!loading && value !== ALL_VARIABLE_VALUE && (\n <>\n \n \n )}\n
\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n \n {body instanceof FieldsAggregatedBreakdownScene && model && }\n
{body && }
\n
\n
\n );\n };\n}\n\nexport const emptyStateStyles = {\n link: css({\n textDecoration: 'underline',\n }),\n button: css({\n marginLeft: '1.5rem',\n }),\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n labelsMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n justifyContent: 'space-between',\n flexDirection: 'row-reverse',\n gap: theme.spacing(2),\n }),\n valuesMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n flexDirection: 'row',\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n SceneDataProvider,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VariableValueOption,\n VizPanel,\n} from '@grafana/scenes';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { ALL_VARIABLE_VALUE, LEVEL_VARIABLE_VALUE } from '../../../services/variables';\nimport React from 'react';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport { ValueSlugs } from '../../../services/routing';\nimport { buildLabelsQuery, LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS } from '../../../services/labels';\nimport { getFieldsVariable, getLabelGroupByVariable } from '../../../services/variableGetters';\nimport { ServiceScene } from '../ServiceScene';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { MAX_NUMBER_OF_TIME_SERIES } from './TimeSeriesLimit';\n\nexport interface LabelsAggregatedBreakdownSceneState extends SceneObjectState {\n body?: LayoutSwitcher;\n}\n\nexport class LabelsAggregatedBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const fields = getFieldsVariable(this);\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const $detectedLabels = serviceScene.state.$detectedLabelsData;\n\n // If the body hasn't been built yet, build it\n if (!this.state.body) {\n this.setState({\n body: this.build(),\n });\n }\n // Otherwise if we have the detected labels done loading, update the body\n else if ($detectedLabels?.state.data?.state === LoadingState.Done) {\n this.update($detectedLabels?.state.data.series[0]);\n }\n\n this._subs.add(\n $detectedLabels?.subscribeToState((newState, prevState) => {\n if (newState.data?.state === LoadingState.Done) {\n this.update(newState.data.series[0]);\n }\n })\n );\n\n this._subs.add(\n fields.subscribeToState(() => {\n this.updateQueriesOnFieldsVariableChange();\n })\n );\n }\n\n private updateQueriesOnFieldsVariableChange = () => {\n this.state.body?.state.layouts.forEach((layoutObj) => {\n const layout = layoutObj as SceneCSSGridLayout;\n // Iterate through the existing panels\n for (let i = 0; i < layout.state.children.length; i++) {\n const { panel, title } = this.getPanelByIndex(layout, i);\n const queryRunner: SceneDataProvider | SceneQueryRunner | undefined = panel.state.$data;\n const query = buildLabelsQuery(this, title, title);\n\n // Don't update if query didn't change\n if (queryRunner instanceof SceneQueryRunner) {\n if (query.expr === queryRunner?.state.queries?.[0]?.expr) {\n break;\n }\n }\n\n panel.setState({\n $data: getQueryRunner([query]),\n });\n }\n });\n };\n\n private getPanelByIndex(layout: SceneCSSGridLayout, i: number) {\n const gridItem = layout.state.children[i] as SceneCSSGridItem;\n const panel = gridItem.state.body as VizPanel;\n\n const title = panel.state.title;\n return { panel, title };\n }\n\n private update(detectedLabelsFrame: DataFrame) {\n const variable = getLabelGroupByVariable(this);\n const newLabels = variable.state.options.filter((opt) => opt.value !== ALL_VARIABLE_VALUE).map((opt) => opt.label);\n\n this.state.body?.state.layouts.forEach((layoutObj) => {\n let existingLabels = [];\n const layout = layoutObj as SceneCSSGridLayout;\n const newLabelsSet = new Set(newLabels);\n const updatedChildren = layout.state.children as SceneCSSGridItem[];\n\n for (let i = 0; i < updatedChildren.length; i++) {\n const { title } = this.getPanelByIndex(layout, i);\n\n if (newLabelsSet.has(title)) {\n // If the new response has this field, delete it from the set, but leave it in the layout\n newLabelsSet.delete(title);\n } else {\n // Otherwise if the panel doesn't exist in the response, delete it from the layout\n updatedChildren.splice(i, 1);\n // And make sure to update the index, or we'll skip the next one\n i--;\n }\n existingLabels.push(title);\n }\n\n const labelsToAdd = Array.from(newLabelsSet);\n\n const options = labelsToAdd.map((fieldName) => {\n return {\n label: fieldName,\n value: fieldName,\n };\n });\n\n updatedChildren.push(...this.buildChildren(options));\n\n const cardinalityMap = this.calculateCardinalityMap(detectedLabelsFrame);\n updatedChildren.sort(this.sortChildren(cardinalityMap));\n\n layout.setState({\n children: updatedChildren,\n });\n });\n }\n\n private calculateCardinalityMap(detectedLabels?: DataFrame) {\n const cardinalityMap = new Map();\n if (detectedLabels?.length) {\n for (let i = 0; i < detectedLabels?.fields.length; i++) {\n const name: string = detectedLabels.fields[i].name;\n const cardinality: number = detectedLabels.fields[i].values[0];\n cardinalityMap.set(name, cardinality);\n }\n }\n return cardinalityMap;\n }\n\n private build(): LayoutSwitcher {\n const variable = getLabelGroupByVariable(this);\n const labelBreakdownScene = sceneGraph.getAncestor(this, LabelBreakdownScene);\n labelBreakdownScene.state.search.reset();\n\n const children = this.buildChildren(variable.state.options);\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const $detectedLabels = serviceScene.state.$detectedLabelsData;\n if ($detectedLabels?.state.data?.state === LoadingState.Done) {\n const cardinalityMap = this.calculateCardinalityMap($detectedLabels?.state.data.series[0]);\n children.sort(this.sortChildren(cardinalityMap));\n }\n\n const childrenClones = children.map((child) => child.clone());\n\n return new LayoutSwitcher({\n options: [\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: children,\n }),\n new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: '1fr',\n autoRows: '200px',\n children: childrenClones,\n }),\n ],\n });\n }\n\n private buildChildren(options: VariableValueOption[]) {\n const children: SceneCSSGridItem[] = [];\n for (const option of options) {\n const { value } = option;\n const optionValue = String(value);\n if (value === ALL_VARIABLE_VALUE || !value) {\n continue;\n }\n const query = buildLabelsQuery(this, String(option.value), String(option.value));\n const queryRunner = getQueryRunner([query]);\n\n children.push(\n new SceneCSSGridItem({\n body: PanelBuilders.timeseries()\n .setTitle(optionValue)\n .setData(queryRunner)\n .setHeaderActions([new SelectLabelActionScene({ labelName: optionValue, fieldType: ValueSlugs.label })])\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setHoverHeader(false)\n .setShowMenuAlways(true)\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({ investigationOptions: { labelName: optionValue } }))\n .setSeriesLimit(MAX_NUMBER_OF_TIME_SERIES)\n .build(),\n })\n );\n }\n return children;\n }\n\n private sortChildren(cardinalityMap: Map) {\n return (a: SceneCSSGridItem, b: SceneCSSGridItem) => {\n const aPanel = a.state.body as VizPanel;\n const bPanel = b.state.body as VizPanel;\n if (aPanel.state.title === LEVEL_VARIABLE_VALUE) {\n return -1;\n }\n if (bPanel.state.title === LEVEL_VARIABLE_VALUE) {\n return 1;\n }\n const aCardinality = cardinalityMap.get(aPanel.state.title) ?? 0;\n const bCardinality = cardinalityMap.get(bPanel.state.title) ?? 0;\n return bCardinality - aCardinality;\n };\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { AdHocVariableFilter, DataFrame, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n SceneVariableState,\n VariableDependencyConfig,\n VariableValueOption,\n} from '@grafana/scenes';\nimport { Alert, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { checkPrimaryLabel, getPrimaryLabelFromUrl, ValueSlugs } from 'services/routing';\nimport { ALL_VARIABLE_VALUE, SERVICE_NAME, SERVICE_UI_LABEL, VAR_LABEL_GROUP_BY, VAR_LABELS } from 'services/variables';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { FieldSelector } from './FieldSelector';\nimport { StatusWrapper } from './StatusWrapper';\nimport { getLabelOptions } from 'services/filters';\nimport { BreakdownSearchReset, BreakdownSearchScene } from './BreakdownSearchScene';\nimport { getSortByPreference } from 'services/store';\nimport { SortByScene, SortCriteriaChanged } from './SortByScene';\nimport { getDetectedLabelsFrame, ServiceScene } from '../ServiceScene';\nimport { CustomConstantVariable, CustomConstantVariableState } from '../../../services/CustomConstantVariable';\nimport { navigateToValueBreakdown } from '../../../services/navigate';\nimport { areArraysEqual } from '../../../services/comparison';\nimport { LabelValuesBreakdownScene } from './LabelValuesBreakdownScene';\nimport { LabelsAggregatedBreakdownScene } from './LabelsAggregatedBreakdownScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { getLabelGroupByVariable, getLabelsVariable } from '../../../services/variableGetters';\n\nexport interface LabelBreakdownSceneState extends SceneObjectState {\n body?: SceneObject;\n search: BreakdownSearchScene;\n sort: SortByScene;\n loading?: boolean;\n error?: boolean;\n blockingMessage?: string;\n // We have to store the value in state because scenes doesn't allow variables that don't have options. We need to hold on to this until the API call getting values is done, and then reset the state\n value?: string;\n}\n\nexport class LabelBreakdownScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_LABELS],\n });\n\n // Labels/options can be passed in when instantiated, but should ONLY exist on the state of the variable\n constructor(state: Partial & { options?: VariableValueOption[]; value?: string }) {\n super({\n ...state,\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [\n new CustomConstantVariable({\n name: VAR_LABEL_GROUP_BY,\n defaultToAll: false,\n includeAll: true,\n value: state.value ?? ALL_VARIABLE_VALUE,\n options: state.options ?? [],\n }),\n ],\n }),\n loading: true,\n sort: new SortByScene({ target: 'labels' }),\n search: new BreakdownSearchScene('labels'),\n value: state.value,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const groupByVariable = getLabelGroupByVariable(this);\n\n this.setState({\n loading: serviceScene.state.$detectedLabelsData?.state.data?.state !== LoadingState.Done,\n error: serviceScene.state.$detectedLabelsData?.state.data?.state === LoadingState.Error,\n });\n\n this._subs.add(\n this.subscribeToEvent(BreakdownSearchReset, () => {\n this.state.search.clearValueFilter();\n })\n );\n this._subs.add(this.subscribeToEvent(SortCriteriaChanged, this.handleSortByChange));\n\n this._subs.add(serviceScene.state.$detectedLabelsData?.subscribeToState(this.onDetectedLabelsDataChange));\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState((newState, prevState) => {\n this.onLabelsVariableChange(newState, prevState);\n })\n );\n\n this._subs.add(\n groupByVariable.subscribeToState((newState, prevState) => {\n this.onGroupByVariableChange(newState, prevState);\n })\n );\n\n const detectedLabelsFrame = getDetectedLabelsFrame(this);\n // Need to update labels with current state\n if (detectedLabelsFrame) {\n this.updateOptions(detectedLabelsFrame);\n }\n\n checkPrimaryLabel(this);\n }\n\n private onGroupByVariableChange(newState: CustomConstantVariableState, prevState: CustomConstantVariableState) {\n // If the aggregation value changed, or the body is not yet defined\n if (\n newState.value !== prevState.value ||\n !areArraysEqual(newState.options, prevState.options) ||\n this.state.body === undefined ||\n this.state.body instanceof EmptyLayoutScene\n ) {\n this.updateBody();\n }\n }\n\n private onLabelsVariableChange(\n newState: SceneVariableState & { filters: AdHocVariableFilter[] },\n prevState: SceneVariableState & { filters: AdHocVariableFilter[] }\n ) {\n let { labelName } = getPrimaryLabelFromUrl();\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const variable = getLabelGroupByVariable(this);\n const newPrimaryLabel = newState.filters.find((filter) => filter.key === labelName);\n const prevPrimaryLabel = prevState.filters.find((filter) => filter.key === labelName);\n\n // If the user changes the service\n if (variable.state.value === ALL_VARIABLE_VALUE && newPrimaryLabel !== prevPrimaryLabel) {\n this.setState({\n loading: true,\n body: undefined,\n error: undefined,\n });\n }\n }\n\n /**\n * Pull the detected_labels from our service scene, update the variable when they change\n * @param newState\n * @param prevState\n */\n private onDetectedLabelsDataChange = (newState: QueryRunnerState, prevState: QueryRunnerState) => {\n if (\n newState.data?.state === LoadingState.Done &&\n newState.data.series?.[0] &&\n !areArraysEqual(newState.data.series?.[0]?.fields, prevState.data?.series?.[0]?.fields)\n ) {\n this.updateOptions(newState.data.series?.[0]);\n } else if (newState.data?.state === LoadingState.Done) {\n // we got a new response, but nothing changed, just need to clear loading\n const variable = getLabelGroupByVariable(this);\n variable.setState({\n loading: false,\n });\n }\n };\n\n private handleSortByChange = (event: SortCriteriaChanged) => {\n if (event.target !== 'labels') {\n return;\n }\n const body = this.state.body;\n if (body instanceof LabelValuesBreakdownScene) {\n const byFrameRepeaters = sceneGraph.findDescendents(body, ByFrameRepeater);\n byFrameRepeaters.forEach((layout) => {\n layout.sort(event.sortBy, event.direction);\n });\n }\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.value_breakdown_sort_change,\n {\n target: 'labels',\n criteria: event.sortBy,\n direction: event.direction,\n }\n );\n };\n\n private updateOptions(detectedLabels: DataFrame | undefined) {\n if (!detectedLabels || !detectedLabels.length) {\n this.setState({\n loading: false,\n body: new EmptyLayoutScene({ type: 'labels' }),\n });\n return;\n }\n const variable = getLabelGroupByVariable(this);\n const options = getLabelOptions(detectedLabels.fields.map((label) => label.name));\n\n variable.setState({\n loading: false,\n options,\n value: this.state.value ?? ALL_VARIABLE_VALUE,\n });\n }\n\n private updateBody() {\n const variable = getLabelGroupByVariable(this);\n // We get the labels from the service scene, if we don't have them yet, assume we're loading\n if (!variable.state.options || !variable.state.options.length) {\n return;\n }\n\n const stateUpdate: Partial = {\n loading: false,\n blockingMessage: undefined,\n error: false,\n };\n\n if (variable.hasAllValue() && this.state.body instanceof LabelValuesBreakdownScene) {\n stateUpdate.body = new LabelsAggregatedBreakdownScene({});\n } else if (!variable.hasAllValue() && this.state.body instanceof LabelsAggregatedBreakdownScene) {\n stateUpdate.body = new LabelValuesBreakdownScene({});\n } else if (this.state.body === undefined) {\n if (variable.state.options.length > 0) {\n stateUpdate.body = variable.hasAllValue()\n ? new LabelsAggregatedBreakdownScene({})\n : new LabelValuesBreakdownScene({});\n } else {\n stateUpdate.body = new EmptyLayoutScene({ type: 'labels' });\n }\n } else if (this.state.body instanceof EmptyLayoutScene) {\n if (variable.state.options.length > 0) {\n stateUpdate.body = variable.hasAllValue()\n ? new LabelsAggregatedBreakdownScene({})\n : new LabelValuesBreakdownScene({});\n }\n }\n\n this.setState({ ...stateUpdate });\n }\n\n public onChange = (value?: string) => {\n if (!value) {\n return;\n }\n\n const variable = getLabelGroupByVariable(this);\n variable.changeValueTo(value);\n\n const { sortBy, direction } = getSortByPreference('labels', DEFAULT_SORT_BY, 'desc');\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.select_field_in_breakdown_clicked,\n {\n label: value,\n previousLabel: variable.getValueText(),\n view: 'labels',\n sortBy,\n sortByDirection: direction,\n }\n );\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n navigateToValueBreakdown(ValueSlugs.label, value, serviceScene);\n };\n\n public static LabelsMenu = ({ model }: SceneComponentProps) => {\n const { body, loading, search } = model.useState();\n const variable = getLabelGroupByVariable(model);\n const { options, value } = variable.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n {body instanceof LabelValuesBreakdownScene && }\n {body instanceof LabelsAggregatedBreakdownScene && }\n {body instanceof LabelValuesBreakdownScene && }\n {!loading && options.length > 0 && (\n \n )}\n
\n );\n };\n\n public static ValuesMenu = ({ model }: SceneComponentProps) => {\n const { loading, sort } = model.useState();\n const variable = getLabelGroupByVariable(model);\n const { value } = variable.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n {!loading && value !== ALL_VARIABLE_VALUE && (\n <>\n \n \n )}\n
\n );\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage, error } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n
\n \n {error && (\n \n The labels are not available at this moment. Try using a different time range or check again later.\n \n )}\n\n {body instanceof LabelsAggregatedBreakdownScene && model && }\n\n
{body && }
\n
\n
\n );\n };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n labelsMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n justifyContent: 'space-between',\n flexDirection: 'row-reverse',\n gap: theme.spacing(2),\n }),\n valuesMenuWrapper: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n flexDirection: 'row',\n }),\n };\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneReactObject,\n} from '@grafana/scenes';\nimport { LayoutSwitcher } from './LayoutSwitcher';\nimport { getLabelValue } from './SortByScene';\nimport { DrawStyle, LoadingPlaceholder, StackingMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLevelColorOverrides } from '../../../services/panel';\nimport { getSortByPreference } from '../../../services/store';\nimport { AppEvents, DataQueryError, LoadingState } from '@grafana/data';\nimport { ByFrameRepeater } from './ByFrameRepeater';\nimport { getFilterBreakdownValueScene } from '../../../services/fields';\nimport {\n ALL_VARIABLE_VALUE,\n LEVEL_VARIABLE_VALUE,\n VAR_LABEL_GROUP_BY_EXPR,\n VAR_LABELS,\n VAR_LEVELS,\n} from '../../../services/variables';\nimport React from 'react';\nimport { LabelBreakdownScene } from './LabelBreakdownScene';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\nimport { buildLabelsQuery, LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS } from '../../../services/labels';\nimport { getAppEvents } from '@grafana/runtime';\nimport {\n getFieldsVariable,\n getLabelGroupByVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../../services/variableGetters';\nimport { getPanelWrapperStyles, PanelMenu } from '../../Panels/PanelMenu';\nimport { NoMatchingLabelsScene } from './NoMatchingLabelsScene';\nimport { EmptyLayoutScene } from './EmptyLayoutScene';\nimport { IndexScene } from '../../IndexScene/IndexScene';\nimport { clearVariables, getVariablesThatCanBeCleared } from '../../../services/variableHelpers';\nimport { ValueSummaryPanelScene } from './Panels/ValueSummary';\nimport { renderLevelsFilter, renderLogQLLabelFilters } from '../../../services/query';\nimport { logger } from '../../../services/logger';\nimport { areArraysEqual } from '../../../services/comparison';\n\ntype DisplayError = DataQueryError & { displayed: boolean };\ntype DisplayErrors = Record;\n\nexport interface LabelValueBreakdownSceneState extends SceneObjectState {\n body?: (LayoutSwitcher & SceneObject) | (NoMatchingLabelsScene & SceneObject) | (EmptyLayoutScene & SceneObject);\n $data?: SceneDataProvider;\n errors: DisplayErrors;\n}\n\nexport class LabelValuesBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n ...state,\n errors: {},\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.setState({\n $data: this.buildQueryRunner(),\n body: this.build(),\n });\n\n // Run query on activate\n this.runQuery();\n this.setSubscriptions();\n }\n\n private buildQueryRunner() {\n const query = this.buildQuery();\n return getQueryRunner([query], { runQueriesMode: 'manual' });\n }\n\n private buildQuery() {\n const query = buildLabelsQuery(this, VAR_LABEL_GROUP_BY_EXPR, String(getLabelGroupByVariable(this).state.value));\n // Manually interpolate query so we don't pollute the variable interpolation for other queries\n const { variableName, filterExpression } = this.removeValueLabelFromVariableInterpolation();\n query.expr = query.expr.replace(`$\\{${variableName}}`, filterExpression);\n return query;\n }\n\n /**\n * Set variable & event subscriptions\n */\n private setSubscriptions() {\n // QUERY RUNNER SUBS\n // Subscribe to value breakdown state\n this._subs.add(\n this.state.$data?.subscribeToState((newState, prevState) => {\n this.onValuesDataQueryChange(newState);\n })\n );\n\n // VARIABLE SUBS\n // Subscribe to label change via dropdown\n this._subs.add(\n getLabelGroupByVariable(this).subscribeToState((newState) => {\n if (newState.value === ALL_VARIABLE_VALUE) {\n this.setState({\n $data: undefined,\n body: undefined,\n });\n }\n })\n );\n\n // Subscribe to time range changes\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n // Run query on time range change\n this.runQuery();\n })\n );\n\n this._subs.add(\n getFieldsVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n // Check to see if the new field filter changes the parser, if so rebuild the query\n this.runQuery();\n }\n })\n );\n\n // Subscribe to fields variable changes\n this._subs.add(\n getMetadataVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to line filter variable changes\n this._subs.add(\n getLineFiltersVariable(this).subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runQuery();\n }\n })\n );\n\n // Subscribe to pattern variable changes\n this._subs.add(\n getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.runQuery();\n }\n })\n );\n\n const key = this.getTagKey();\n\n this._subs.add(\n getLabelsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => key === LEVEL_VARIABLE_VALUE && f.key !== key),\n prevState.filters.filter((f) => key === LEVEL_VARIABLE_VALUE && f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n\n this._subs.add(\n getLevelsVariable(this).subscribeToState(async (newState, prevState) => {\n if (\n !areArraysEqual(\n newState.filters.filter((f) => key !== LEVEL_VARIABLE_VALUE && f.key !== key),\n prevState.filters.filter((f) => key !== LEVEL_VARIABLE_VALUE && f.key !== key)\n )\n ) {\n this.runQuery();\n }\n })\n );\n }\n\n /**\n * Since we run this query manually, we want to rebuild it before every execution\n */\n private rebuildQuery() {\n // Rebuild the query\n this.getSceneQueryRunner()?.setState({\n queries: [this.buildQuery()],\n });\n }\n\n /**\n * Run the label values breakdown query.\n * Generates the filterExpression excluding all filters with a key that matches the label.\n */\n private runQuery() {\n this.rebuildQuery();\n const queryRunner = this.getSceneQueryRunner();\n queryRunner?.runQueries();\n }\n\n /**\n * Helper method that grabs the SceneQueryRunner for the label value breakdown query.\n */\n private getSceneQueryRunner() {\n if (this.state.$data) {\n const queryRunners = sceneGraph.findDescendents(this.state.$data, SceneQueryRunner);\n if (queryRunners.length !== 1) {\n const error = new Error('Unable to find query runner in value breakdown!');\n logger.error(error, { msg: 'LabelValuesBreakdownScene: Unable to find query runner in value breakdown!' });\n throw error;\n }\n\n return queryRunners[0];\n }\n logger.warn('LabelValuesBreakdownScene: Query is attempting to execute, but query runner is undefined!');\n return undefined;\n }\n\n /**\n * Generates the filterExpression for the label value query and saves it to state.\n * We have to manually generate the filterExpression as we want to exclude every filter for the target variable that matches the key used in this value breakdown.\n * e.g. in the \"cluster\" breakdown, we don't want to execute this query containing a cluster filter, or users will only be able to include a single value.\n */\n private removeValueLabelFromVariableInterpolation() {\n const tagKey = this.getTagKey();\n let filterExpression;\n let variableName: typeof VAR_LEVELS | typeof VAR_LABELS;\n\n if (tagKey === LEVEL_VARIABLE_VALUE) {\n const levelsVar = getLevelsVariable(this);\n variableName = VAR_LEVELS;\n filterExpression = renderLevelsFilter(levelsVar.state.filters, [tagKey]);\n } else {\n const labelsVar = getLabelsVariable(this);\n variableName = VAR_LABELS;\n filterExpression = renderLogQLLabelFilters(labelsVar.state.filters, [tagKey]);\n }\n\n return { filterExpression, variableName };\n }\n\n /**\n * Helper method to get the key/label name from the variable on the parent scene\n */\n private getTagKey() {\n const variable = getLabelGroupByVariable(this);\n return String(variable.state.value);\n }\n\n /**\n * Actions to run when the value breakdown query response is received.\n */\n private onValuesDataQueryChange(newState: SceneDataState) {\n // Set empty states\n this.setEmptyStates(newState);\n\n // Set error states\n this.setErrorStates(newState);\n }\n\n /**\n * Sets the error body state\n */\n private setErrorStates(newState: SceneDataState) {\n // If panels have errors\n if (newState?.data?.errors && newState.data?.state !== LoadingState.Done) {\n const errors: DisplayErrors = this.state.errors;\n newState?.data?.errors.forEach((err) => {\n const errorIndex = `${err.status}_${err.traceId}_${err.message}`;\n if (errors[errorIndex] === undefined) {\n errors[errorIndex] = { ...err, displayed: false };\n }\n });\n this.setState({\n errors,\n });\n\n this.showErrorToast(this.state.errors);\n }\n }\n\n /**\n * Sets the empty body state\n */\n private setEmptyStates(newState: SceneDataState) {\n if (newState.data?.state === LoadingState.Done) {\n if (newState.data.series.length > 0 && !(this.state.body instanceof LayoutSwitcher)) {\n this.setState({\n body: this.build(),\n });\n } else if (newState.data.series.length === 0) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n if (variablesToClear.length > 1) {\n this.setState({\n body: new NoMatchingLabelsScene({ clearCallback: () => clearVariables(this) }),\n });\n } else {\n this.setState({\n body: new EmptyLayoutScene({ type: 'fields' }),\n });\n }\n }\n }\n }\n\n /**\n * Returns the active layout from the layout switcher\n */\n private getActiveLayout(): SceneFlexLayout | undefined {\n const layoutSwitcher = this.state.body;\n if (layoutSwitcher instanceof LayoutSwitcher) {\n const activeLayout = layoutSwitcher?.state.layouts.find((layout) => layout.isActive);\n if (activeLayout instanceof SceneFlexLayout) {\n return activeLayout;\n }\n }\n return undefined;\n }\n\n /**\n * Returns a boolean when the active layout is empty\n */\n private activeLayoutContainsNoPanels(): boolean {\n const activeLayout = this.getActiveLayout();\n if (activeLayout) {\n const byFrameRepeaters = sceneGraph.findDescendents(activeLayout, ByFrameRepeater);\n return byFrameRepeaters.some((repeater) => {\n const child = repeater.state.body.state.children[0];\n return child instanceof SceneFlexItem || child instanceof SceneReactObject;\n });\n }\n\n return false;\n }\n\n /**\n * Builds the layout switcher\n */\n private build(): LayoutSwitcher {\n const variable = getLabelGroupByVariable(this);\n const variableState = variable.state;\n const tagKey = String(variableState?.value);\n const labelBreakdownScene = sceneGraph.getAncestor(this, LabelBreakdownScene);\n\n let bodyOpts = PanelBuilders.timeseries();\n bodyOpts = bodyOpts\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setShowMenuAlways(true)\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({}))\n .setTitle(tagKey);\n\n const body = bodyOpts.build();\n\n const { sortBy, direction } = getSortByPreference('labels', DEFAULT_SORT_BY, 'desc');\n\n const getFilter = () => labelBreakdownScene.state.search.state.filter ?? '';\n\n return new LayoutSwitcher({\n options: [\n { value: 'single', label: 'Single' },\n { value: 'grid', label: 'Grid' },\n { value: 'rows', label: 'Rows' },\n ],\n active: 'grid',\n layouts: [\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new SceneFlexItem({\n minHeight: 300,\n body,\n }),\n ],\n }),\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new ValueSummaryPanelScene({ title: tagKey, levelColor: true, tagKey: this.getTagKey(), type: 'label' }),\n new SceneReactObject({ reactNode: }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n isLazy: true,\n templateColumns: LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS,\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n DrawStyle.Bars,\n VAR_LABELS,\n sceneGraph.getAncestor(this, LabelBreakdownScene).state.sort,\n tagKey\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneReactObject({ reactNode: }),\n new ValueSummaryPanelScene({ title: tagKey, levelColor: true, tagKey: this.getTagKey(), type: 'label' }),\n new SceneReactObject({ reactNode: }),\n new ByFrameRepeater({\n body: new SceneCSSGridLayout({\n templateColumns: '1fr',\n autoRows: '200px',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n reactNode: ,\n }),\n }),\n ],\n }),\n getLayoutChild: getFilterBreakdownValueScene(\n getLabelValue,\n DrawStyle.Bars,\n VAR_LABELS,\n sceneGraph.getAncestor(this, LabelBreakdownScene).state.sort,\n tagKey\n ),\n sortBy,\n direction,\n getFilter,\n }),\n ],\n }),\n ],\n });\n }\n\n private showErrorToast(errors: DisplayErrors) {\n const appEvents = getAppEvents();\n\n // Make sure we only display each error once\n let errorArray: DisplayError[] = [];\n for (const err in errors) {\n const displayError = errors[err];\n if (!displayError.displayed) {\n errorArray.push(displayError);\n displayError.displayed = true;\n }\n }\n\n if (errorArray.length) {\n // If we don't have any panels the error message will replace the loading state, we want to set it as displayed but not render the toast\n if (!this.activeLayoutContainsNoPanels()) {\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: errorArray?.map((err, key) => this.renderError(key, err)),\n });\n }\n this.setState({\n errors,\n });\n }\n }\n\n private renderError(key: number, err: DataQueryError) {\n return (\n
\n {err.status && (\n <>\n Status: {err.status}
\n \n )}\n {err.message && (\n <>\n Message: {err.message}
\n \n )}\n {err.traceId && (\n <>\n TraceId: {err.traceId}\n \n )}\n
\n );\n }\n\n public static Selector({ model }: SceneComponentProps) {\n const { body } = model.useState();\n return <>{body && body instanceof LayoutSwitcher && };\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return {body && };\n }\n\n return ;\n };\n}\n","import React from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { SceneComponentProps, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Field, RadioButtonGroup, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getDrilldownSlug } from '../../../services/routing';\nimport { css } from '@emotion/css';\nimport { setSceneLayout, getSceneLayout } from 'services/store';\n\nexport interface LayoutSwitcherState extends SceneObjectState {\n active: LayoutType;\n layouts: SceneObject[];\n options: Array>;\n}\n\nexport type LayoutType = 'single' | 'grid' | 'rows';\n\nexport enum LayoutTypeEnum {\n single = 'single',\n grid = 'grid',\n rows = 'rows',\n}\n\nexport class LayoutSwitcher extends SceneObjectBase {\n public static Selector = LayoutSwitcherComponent;\n constructor(state: LayoutSwitcherState) {\n super({\n ...state,\n active: state.active ?? 'grid',\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public isTopLevelLayoutType = () => {\n // Top layouts do not have 'single' layout type\n const isTopLevel = this.state.options.every((o) => o.value !== LayoutTypeEnum.single);\n return isTopLevel;\n };\n\n public updateLayout = () => {\n const layout = getSceneLayout();\n if (layout) {\n if (layout === LayoutTypeEnum.single && this.isTopLevelLayoutType()) {\n // top level layouts do not have single layout type default to grid\n this.setState({ active: LayoutTypeEnum.grid });\n } else {\n this.setState({\n active:\n layout === LayoutTypeEnum.grid || layout === LayoutTypeEnum.rows || layout === LayoutTypeEnum.single\n ? layout\n : LayoutTypeEnum.grid,\n });\n }\n }\n };\n\n public onLayoutChange = (active: LayoutType) => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.layout_type_changed, {\n layout: active,\n view: getDrilldownSlug(),\n });\n setSceneLayout(active);\n this.setState({ active });\n };\n\n public onActivate = () => {\n this.updateLayout();\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { layouts, options, active } = model.useState();\n\n const index = options.findIndex((o) => o.value === active);\n if (index === -1) {\n return null;\n }\n\n const layout = layouts[index];\n\n return ;\n };\n}\n\nfunction LayoutSwitcherComponent({ model }: { model: LayoutSwitcher }) {\n const { active, options } = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n \n \n \n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n field: css({\n marginBottom: 0,\n }),\n };\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrotError } from '../../GrotError';\nimport { Alert, Button } from '@grafana/ui';\nimport React from 'react';\nimport { emptyStateStyles } from './FieldsBreakdownScene';\n\nexport interface ClearFiltersLayoutSceneState extends SceneObjectState {\n clearCallback: () => void;\n}\nexport class NoMatchingLabelsScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const { clearCallback } = model.useState();\n return (\n \n \n No labels match these filters.{' '}\n {' '}\n \n \n );\n };\n}\n","import {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneComponentProps,\n SceneDataProvider,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { CollapsablePanelText, PanelMenu } from '../../../Panels/PanelMenu';\nimport { DrawStyle, PanelContext, SeriesVisibilityChangeMode, StackingMode } from '@grafana/ui';\nimport {\n setLevelColorOverrides,\n syncFieldsValueSummaryVisibleSeries,\n syncLabelsValueSummaryVisibleSeries,\n syncLevelsVisibleSeries,\n} from '../../../../services/panel';\nimport { getPanelOption, setPanelOption } from '../../../../services/store';\nimport React from 'react';\nimport {\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getMetadataVariable,\n} from '../../../../services/variableGetters';\nimport { toggleLevelFromFilter } from '../../../../services/levels';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../../../services/analytics';\nimport { DataFrame, LoadingState } from '@grafana/data';\nimport { LEVEL_VARIABLE_VALUE } from '../../../../services/variables';\nimport { logger } from '../../../../services/logger';\nimport { FilterType } from '../AddToFiltersButton';\nimport { toggleFieldFromFilter, toggleLabelFromFilter } from '../../../../services/labels';\n\nconst SUMMARY_PANEL_SERIES_LIMIT = 100;\n\ninterface ValueSummaryPanelSceneState extends SceneObjectState {\n body?: SceneFlexLayout;\n title: string;\n levelColor?: boolean;\n tagKey: string;\n type: 'field' | 'label';\n}\nexport class ValueSummaryPanelScene extends SceneObjectBase {\n constructor(state: ValueSummaryPanelSceneState) {\n super(state);\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n if (body) {\n return (\n
\n \n
\n );\n }\n\n return null;\n };\n\n onActivate() {\n const collapsed =\n getPanelOption('collapsed', [CollapsablePanelText.collapsed, CollapsablePanelText.expanded]) ??\n CollapsablePanelText.expanded;\n const viz = buildValueSummaryPanel(this.state.title, { levelColor: this.state.levelColor });\n const height = getValueSummaryHeight(collapsed);\n\n viz.setState({\n extendPanelContext: (_, context) => this.extendTimeSeriesLegendBus(context),\n });\n\n this.setState({\n body: new SceneFlexLayout({\n key: VALUE_SUMMARY_PANEL_KEY,\n minHeight: height,\n height: height,\n maxHeight: height,\n wrap: 'nowrap',\n children: [\n new SceneFlexItem({\n body: viz,\n }),\n ],\n }),\n });\n\n this._subs.add(\n viz.subscribeToState((newState, prevState) => {\n if (newState.collapsed !== prevState.collapsed) {\n const vizPanelFlexLayout = sceneGraph.getAncestor(viz, SceneFlexLayout);\n setValueSummaryHeight(\n vizPanelFlexLayout,\n newState.collapsed ? CollapsablePanelText.collapsed : CollapsablePanelText.expanded\n );\n setPanelOption(\n 'collapsed',\n newState.collapsed ? CollapsablePanelText.collapsed : CollapsablePanelText.expanded\n );\n }\n })\n );\n }\n\n /**\n * Syncs legend with labels\n */\n private extendTimeSeriesLegendBus = (context: PanelContext) => {\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n const key = this.state.tagKey;\n\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n\n if (!(panel instanceof VizPanel)) {\n throw new Error('Cannot find VizPanel');\n }\n\n this.initLegendOptions(dataFrame, key, panel);\n\n if (this.state.type === 'label') {\n this._subs.add(this.getLabelsVariableLegendSyncSubscription(key));\n } else {\n this._subs.add(this.getFieldsVariableLegendSyncSubscription(key, getFieldsVariable(this)));\n this._subs.add(this.getFieldsVariableLegendSyncSubscription(key, getMetadataVariable(this)));\n }\n\n this._subs.add(this.getQuerySubscription(key, $data, panel));\n\n context.onToggleSeriesVisibility = (value: string, mode: SeriesVisibilityChangeMode) => {\n let action: FilterType;\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n action = toggleLevelFromFilter(value, this);\n } else {\n action = toggleLabelFromFilter(key, value, this);\n }\n } else {\n action = toggleFieldFromFilter(key, value, this);\n }\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.label_in_panel_summary_clicked,\n {\n label: value,\n action,\n }\n );\n };\n };\n\n /**\n * Sync legend with current dataframe\n */\n private initLegendOptions(dataFrame: DataFrame[] | undefined, key: string, panel: VizPanel<{}, {}>) {\n if (dataFrame) {\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n syncLevelsVisibleSeries(panel, dataFrame, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n } else {\n syncFieldsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n }\n }\n\n /**\n * Sync visible series on dataframe update\n */\n private getQuerySubscription(key: string, $data: SceneDataProvider, panel: VizPanel<{}, {}>) {\n return $data.subscribeToState((newState, prevState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (this.state.type === 'label') {\n if (key === LEVEL_VARIABLE_VALUE) {\n syncLevelsVisibleSeries(panel, newState.data.series, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, newState.data.series, this);\n }\n } else {\n syncFieldsValueSummaryVisibleSeries(key, panel, newState.data.series, this);\n }\n }\n });\n }\n\n private getFieldsVariableLegendSyncSubscription(key: string, variable: AdHocFiltersVariable) {\n return variable?.subscribeToState(() => {\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n if (!(panel instanceof VizPanel)) {\n throw new Error('ValueSummary - getFieldsVariableLegendSyncSubscription: Cannot find VizPanel');\n }\n\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n\n if (!dataFrame) {\n logger.warn('ValueSummary - getFieldsVariableLegendSyncSubscription: missing dataframe!');\n return;\n }\n\n syncFieldsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n });\n }\n\n /**\n * Returns value subscription for labels\n */\n private getLabelsVariableLegendSyncSubscription(key: string) {\n const isLevel = key === LEVEL_VARIABLE_VALUE;\n const variable = isLevel ? getLevelsVariable(this) : getLabelsVariable(this);\n return variable?.subscribeToState(() => {\n const sceneFlexItem = this.state.body?.state.children[0];\n if (!(sceneFlexItem instanceof SceneFlexItem)) {\n throw new Error('Cannot find sceneFlexItem');\n }\n const panel = sceneFlexItem.state.body;\n if (!(panel instanceof VizPanel)) {\n throw new Error('ValueSummary - getLabelsVariableLegendSyncSubscription: Cannot find VizPanel');\n }\n\n const $data = sceneGraph.getData(this);\n const dataFrame = $data.state.data?.series;\n\n if (!dataFrame) {\n logger.warn('ValueSummary - getLabelsVariableLegendSyncSubscription: missing dataframe!');\n return;\n }\n\n if (isLevel) {\n syncLevelsVisibleSeries(panel, dataFrame, this);\n } else {\n syncLabelsValueSummaryVisibleSeries(key, panel, dataFrame, this);\n }\n });\n }\n}\n\nexport function setValueSummaryHeight(vizPanelFlexLayout: SceneFlexLayout, collapsableState: CollapsablePanelText) {\n const height = getValueSummaryHeight(collapsableState);\n vizPanelFlexLayout.setState({\n minHeight: height,\n height: height,\n maxHeight: height,\n });\n}\n\nfunction getValueSummaryHeight(collapsableState: CollapsablePanelText) {\n return collapsableState === CollapsablePanelText.collapsed ? 35 : 300;\n}\n\nfunction buildValueSummaryPanel(title: string, options?: { levelColor?: boolean }): VizPanel {\n const collapsed =\n getPanelOption('collapsed', [CollapsablePanelText.collapsed, CollapsablePanelText.expanded]) ??\n CollapsablePanelText.expanded;\n\n const body = PanelBuilders.timeseries()\n .setTitle(title)\n .setMenu(new PanelMenu({}))\n .setCollapsible(true)\n .setCollapsed(collapsed === CollapsablePanelText.collapsed)\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setShowMenuAlways(true)\n .setSeriesLimit(SUMMARY_PANEL_SERIES_LIMIT);\n\n if (options?.levelColor) {\n body.setOverrides(setLevelColorOverrides);\n }\n return body.build();\n}\n\nexport const VALUE_SUMMARY_PANEL_KEY = 'value_summary_panel';\n","import { css } from '@emotion/css';\nimport { Icon, IconButton, Input, useStyles2 } from '@grafana/ui';\nimport React, { HTMLProps } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\n\ninterface Props extends Omit, 'width' | 'prefix'> {\n onClear?: () => void;\n suffix?: React.ReactNode;\n prefix?: React.ReactNode;\n}\n\nexport const SearchInput = ({ value, onChange, placeholder, onClear, suffix, ...rest }: Props) => {\n const styles = useStyles2(getStyles);\n return (\n \n {onClear && value ? (\n \n ) : undefined}\n {suffix && suffix}\n \n }\n prefix={}\n placeholder={placeholder}\n {...rest}\n />\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n suffixWrapper: css({\n gap: theme.spacing(0.5),\n display: 'inline-flex',\n }),\n clearIcon: css({\n cursor: 'pointer',\n }),\n});\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, ClickOutsideWrapper, Field, FieldSet, Input, Label, Select, Stack, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { SelectLabelActionScene } from './SelectLabelActionScene';\nimport {\n addNumericFilter,\n removeNumericFilter,\n validateVariableNameForField,\n InterpolatedFilterType,\n} from './AddToFiltersButton';\nimport { FilterOp } from '../../../services/filterTypes';\nimport { getAdHocFiltersVariable, getValueFromFieldsFilter } from '../../../services/variableGetters';\nimport { logger } from '../../../services/logger';\nimport { testIds } from '../../../services/testIds';\n\nexport interface NumericFilterPopoverSceneState extends SceneObjectState {\n labelName: string;\n variableType: InterpolatedFilterType;\n gt?: number;\n gte?: boolean;\n lt?: number;\n lte?: boolean;\n fieldType: 'float' | 'duration' | 'bytes';\n hasExistingFilter?: boolean;\n}\n\nexport type NumericFilterPopoverSceneStateTotal =\n | (NumericFilterPopoverSceneState & FloatTypes)\n | (NumericFilterPopoverSceneState & DurationTypes)\n | (NumericFilterPopoverSceneState & ByteTypes);\n\nenum DisplayDurationUnits {\n ns = 'ns',\n us = 'µs',\n ms = 'ms',\n s = 's',\n m = 'm',\n h = 'h',\n}\n\nexport const validDurationValues: { [key in DisplayDurationUnits]: string[] } = {\n [DisplayDurationUnits.ns]: ['ns'],\n [DisplayDurationUnits.us]: ['µs', 'us'],\n [DisplayDurationUnits.ms]: ['ms'],\n [DisplayDurationUnits.s]: ['s'],\n [DisplayDurationUnits.m]: ['m'],\n [DisplayDurationUnits.h]: ['h'],\n};\n\nenum DisplayByteUnits {\n B = 'B',\n KB = 'KB',\n MB = 'MB',\n GB = 'GB',\n TB = 'TB',\n}\n\nexport enum ValidByteUnitValues {\n B = 'B',\n KB = 'KB',\n MB = 'MB',\n GB = 'GB',\n TB = 'TB',\n\n // Not selectable in the UI, but valid from link extensions\n kB = 'kB',\n KiB = 'KiB',\n MiB = 'MiB',\n GiB = 'GiB',\n TiB = 'TiB',\n}\n\ninterface FloatUnitTypes {\n ltu: '';\n gtu: '';\n}\n\ninterface FloatTypes extends FloatUnitTypes {\n fieldType: 'float';\n}\n\ninterface DurationUnitTypes {\n ltu: DisplayDurationUnits;\n gtu: DisplayDurationUnits;\n}\n\ninterface DurationTypes extends DurationUnitTypes {\n fieldType: 'duration';\n}\n\ninterface ByteUnitTypes {\n ltu: DisplayByteUnits;\n gtu: DisplayByteUnits;\n}\n\ninterface ByteTypes extends ByteUnitTypes {\n fieldType: 'bytes';\n}\n\nexport class NumericFilterPopoverScene extends SceneObjectBase {\n constructor(state: Omit) {\n let units: FloatUnitTypes | DurationUnitTypes | ByteUnitTypes;\n const fieldType: 'float' | 'bytes' | 'duration' = state.fieldType;\n if (fieldType === 'bytes') {\n units = { ltu: DisplayByteUnits.B, gtu: DisplayByteUnits.B };\n } else if (fieldType === 'duration') {\n units = { ltu: DisplayDurationUnits.s, gtu: DisplayDurationUnits.s };\n } else if (fieldType === 'float') {\n units = { ltu: '', gtu: '' };\n } else {\n throw new Error(`field type incorrectly defined: ${fieldType}`);\n }\n\n // @todo - how to avoid type assertion?\n super({ ...state, ...units } as NumericFilterPopoverSceneStateTotal);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n // get existing values if they exist\n const variable = getAdHocFiltersVariable(\n validateVariableNameForField(this.state.labelName, this.state.variableType),\n this\n );\n const filters = variable.state.filters.filter((f) => f.key === this.state.labelName);\n const gtFilter = filters.find((f) => f.operator === FilterOp.gte || f.operator === FilterOp.gt);\n const ltFilter = filters.find((f) => f.operator === FilterOp.lte || f.operator === FilterOp.lt);\n let stateUpdate: Partial = {};\n\n if (this.state.fieldType === 'duration' || this.state.fieldType === 'bytes') {\n if (gtFilter) {\n const extractedValue = extractValueFromString(getValueFromFieldsFilter(gtFilter).value, this.state.fieldType);\n\n if (extractedValue) {\n stateUpdate.gt = extractedValue.value;\n stateUpdate.gtu = extractedValue.unit;\n stateUpdate.gte = gtFilter.operator === FilterOp.gte;\n }\n }\n\n if (ltFilter) {\n const extractedValue = extractValueFromString(getValueFromFieldsFilter(ltFilter).value, this.state.fieldType);\n\n if (extractedValue) {\n stateUpdate.lt = extractedValue.value;\n stateUpdate.ltu = extractedValue.unit;\n stateUpdate.lte = ltFilter.operator === FilterOp.lte;\n }\n }\n } else {\n // Floats have no unit\n if (gtFilter) {\n const extractedValue = getValueFromFieldsFilter(gtFilter).value;\n stateUpdate.gt = Number(extractedValue);\n stateUpdate.gtu = '';\n stateUpdate.gte = gtFilter.operator === FilterOp.gte;\n }\n if (ltFilter) {\n const extractedValue = getValueFromFieldsFilter(ltFilter).value;\n stateUpdate.lt = Number(extractedValue);\n stateUpdate.ltu = '';\n stateUpdate.lte = ltFilter.operator === FilterOp.lte;\n }\n }\n\n if (Object.keys(stateUpdate).length !== 0) {\n stateUpdate.hasExistingFilter = true;\n }\n\n this.setState(stateUpdate);\n }\n\n onSubmit() {\n // \"0\" values break byte queries see https://github.com/grafana/loki/issues/14993, for now we remove the filter when a 0 value is entered to prevent breakage\n // numeric values can only be fields or metadata variable\n if (this.state.gt) {\n addNumericFilter(\n this.state.labelName,\n this.state.gt.toString() + this.state.gtu,\n this.state.gte ? FilterOp.gte : FilterOp.gt,\n this,\n this.state.variableType\n );\n } else {\n removeNumericFilter(\n this.state.labelName,\n this,\n this.state.gte ? FilterOp.gte : FilterOp.gt,\n this.state.variableType\n );\n }\n\n if (this.state.lt) {\n addNumericFilter(\n this.state.labelName,\n this.state.lt.toString() + this.state.ltu,\n this.state.lte ? FilterOp.lte : FilterOp.lt,\n this,\n this.state.variableType\n );\n } else {\n removeNumericFilter(\n this.state.labelName,\n this,\n this.state.lte ? FilterOp.lte : FilterOp.lt,\n this.state.variableType\n );\n }\n\n const selectLabelActionScene = sceneGraph.getAncestor(this, SelectLabelActionScene);\n selectLabelActionScene.togglePopover();\n }\n onInputKeydown = (e: React.KeyboardEvent) => {\n const formDisabled = this.state.gt === undefined && this.state.lt === undefined;\n if (e.key === 'Enter' && !formDisabled) {\n this.onSubmit();\n }\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const popoverStyles = useStyles2(getPopoverStyles);\n const { labelName, gt, lt, gte, lte, gtu, ltu, fieldType, hasExistingFilter } = model.useState();\n const subTitle = fieldType !== 'float' && fieldType !== labelName ? `(${fieldType})` : undefined;\n\n const selectLabelActionScene = sceneGraph.getAncestor(model, SelectLabelActionScene);\n const formDisabled = gt === undefined && lt === undefined;\n\n return (\n selectLabelActionScene.togglePopover()}>\n \n
\n
\n {labelName} {subTitle}\n
\n\n
\n {/* greater than */}\n
\n \n \n className={popoverStyles.card.inclusiveInput}\n menuShouldPortal={false}\n value={gte !== undefined ? gte.toString() : 'false'}\n options={[\n { label: 'Greater than', value: 'false' },\n { label: 'Greater than or equal', value: 'true' },\n ]}\n onChange={(value) => model.setState({ gte: value.value === 'true' })}\n />\n \n \n {\n model.setState({\n gt: e.currentTarget.value !== '' ? Number(e.currentTarget.value) : undefined,\n });\n }}\n className={popoverStyles.card.numberInput}\n value={gt}\n type={'number'}\n />\n \n {fieldType !== 'float' && (\n \n )}\n
\n\n {/* less than */}\n
\n \n \n className={popoverStyles.card.inclusiveInput}\n menuShouldPortal={false}\n value={lte !== undefined ? lte.toString() : 'false'}\n options={[\n { label: 'Less than', value: 'false' },\n { label: 'Less than or equal', value: 'true' },\n ]}\n onChange={(value) => model.setState({ lte: value.value === 'true' })}\n />\n \n \n \n model.setState({ lt: e.currentTarget.value !== '' ? Number(e.currentTarget.value) : undefined })\n }\n className={popoverStyles.card.numberInput}\n value={lt}\n type={'number'}\n />\n \n {fieldType !== 'float' && (\n \n )}\n
\n
\n\n {/* buttons */}\n
\n {hasExistingFilter && (\n {\n model.setState({\n gt: undefined,\n lt: undefined,\n });\n model.onSubmit();\n }}\n size={'sm'}\n variant={'destructive'}\n fill={'outline'}\n >\n Remove\n \n )}\n model.onSubmit()}\n size={'sm'}\n variant={'primary'}\n fill={'outline'}\n type={'submit'}\n >\n Add\n \n\n selectLabelActionScene.togglePopover()}\n size={'sm'}\n variant={'secondary'}\n fill={'outline'}\n >\n Cancel\n \n
\n
\n
\n
\n );\n };\n}\n\nexport function extractValueFromString(\n inputString: string,\n inputType: 'bytes' | 'duration'\n): { value: number; unit: DisplayByteUnits | DisplayDurationUnits } | undefined {\n if (inputType === 'duration') {\n const durationValues = Object.values(DisplayDurationUnits);\n\n // Check the end of the filter value for a unit that exactly matches\n const durationValue = durationValues.find((durationValue) => {\n const durationValueLength = durationValue.length;\n return inputString.slice(durationValueLength * -1) === durationValue;\n });\n\n if (durationValue) {\n const value = Number(inputString.replace(durationValue, ''));\n if (!isNaN(value)) {\n return {\n unit: durationValue,\n value: value,\n };\n }\n }\n }\n\n if (inputType === 'bytes') {\n const bytesValues = Object.values(DisplayByteUnits)\n // must be sorted from longest to shortest\n .sort((a, b) => b.length - a.length);\n\n // Check the end of the filter value for a unit that exactly matches\n const bytesValue = bytesValues.find((bytesValue) => {\n const byteValueLength = bytesValue.length;\n return inputString.slice(byteValueLength * -1) === bytesValue;\n });\n\n if (bytesValue) {\n const value = Number(inputString.replace(bytesValue, ''));\n if (!isNaN(value)) {\n return {\n unit: bytesValue,\n value: value,\n };\n }\n }\n }\n\n return undefined;\n}\n\nfunction getUnitOptions(\n fieldType: 'duration' | 'bytes'\n): Array> {\n if (fieldType === 'duration') {\n const keys = Object.keys(DisplayDurationUnits) as Array;\n return keys.map((key) => {\n return {\n text: key,\n value: DisplayDurationUnits[key],\n label: key,\n };\n });\n }\n\n if (fieldType === 'bytes') {\n const keys = Object.keys(DisplayByteUnits) as Array;\n return keys.map((key) => {\n return {\n text: key,\n value: DisplayByteUnits[key],\n label: key,\n };\n });\n }\n\n const error = new Error(`invalid field type: ${fieldType}`);\n logger.error(error, { msg: 'getUnitOptions, invalid field type' });\n throw error;\n}\n\nconst getPopoverStyles = (theme: GrafanaTheme2) => ({\n card: {\n buttons: css({\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n gap: theme.spacing(1.5),\n marginTop: theme.spacing(1),\n }),\n inclusiveInput: css({\n minWidth: '185px',\n }),\n selectInput: css({\n minWidth: '65px',\n }),\n numberInput: css({\n width: '75px',\n }),\n fieldWrap: css({\n display: 'flex',\n flexDirection: 'column',\n paddingTop: theme.spacing(2),\n paddingBottom: 0,\n }),\n field: css({\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n }),\n inclusiveField: css({\n marginRight: theme.spacing(1),\n }),\n unitFieldLabel: css({\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(1.5),\n }),\n numberFieldLabel: css({\n width: '100px',\n }),\n switchFieldLabel: css({\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(1),\n }),\n fieldset: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n marginBottom: 0,\n }),\n title: css({}),\n body: css({\n padding: theme.spacing(2),\n }),\n p: css({\n maxWidth: 300,\n }),\n },\n});\n","import {\n AdHocFiltersVariable,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { getDetectedFieldsFrame, getLogsPanelFrame, ServiceScene } from '../ServiceScene';\nimport { getValueBreakdownLink } from '../../../services/navigate';\nimport { getPrimaryLabelFromUrl, ValueSlugs } from '../../../services/routing';\nimport {\n Button,\n ButtonGroup,\n ButtonSelect,\n IconButton,\n LinkButton,\n Popover,\n PopoverController,\n useStyles2,\n} from '@grafana/ui';\nimport React, { useRef } from 'react';\nimport { addToFilters, clearFilters, InterpolatedFilterType } from './AddToFiltersButton';\nimport { EMPTY_VARIABLE_VALUE, LEVEL_VARIABLE_VALUE, VAR_FIELDS } from '../../../services/variables';\nimport { AdHocVariableFilter, Field, GrafanaTheme2, Labels, LoadingState, SelectableValue } from '@grafana/data';\nimport {\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getValueFromAdHocVariableFilter,\n getValueFromFieldsFilter,\n} from '../../../services/variableGetters';\nimport { FilterOp } from '../../../services/filterTypes';\nimport { LokiQuery } from '../../../services/lokiQuery';\nimport { css } from '@emotion/css';\nimport { rest } from 'lodash';\nimport { NumericFilterPopoverScene } from './NumericFilterPopoverScene';\nimport { getDetectedFieldType } from '../../../services/fields';\nimport { logger } from '../../../services/logger';\nimport { testIds } from '../../../services/testIds';\nimport { findObjectOfType } from '../../../services/scenes';\nimport { syncLevelsVariable } from '../../IndexScene/LevelsVariableScene';\n\ninterface SelectLabelActionSceneState extends SceneObjectState {\n labelName: string;\n fieldType: ValueSlugs;\n hideValueDrilldown?: boolean;\n hasSparseFilters?: boolean;\n hasNumericFilters?: boolean;\n selectedValue?: SelectableValue;\n popover?: NumericFilterPopoverScene;\n showPopover: boolean;\n}\n\nconst INCLUDE_VALUE = 'Include';\nconst EXCLUDE_VALUE = 'Exclude';\nconst NUMERIC_FILTER_VALUE = 'Add to filter';\n\nexport class SelectLabelActionScene extends SceneObjectBase {\n constructor(state: Omit) {\n super({ ...state, showPopover: false });\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onChange(value: SelectableValue) {\n const variable = this.getVariable();\n const variableName = variable.state.name as InterpolatedFilterType;\n const existingFilter = this.getExistingFilter(variable);\n const fieldValue = getValueFromAdHocVariableFilter(variableName, existingFilter);\n const isIncluded = existingFilter?.operator === FilterOp.NotEqual && fieldValue.value === EMPTY_VARIABLE_VALUE;\n\n if (isIncluded && value.value === INCLUDE_VALUE) {\n this.clearFilter(variableName);\n } else if (value.value === INCLUDE_VALUE) {\n this.onClickExcludeEmpty(variableName);\n } else if (value.value === EXCLUDE_VALUE) {\n this.onClickIncludeEmpty(variableName);\n } else if (value.value === NUMERIC_FILTER_VALUE) {\n this.onClickNumericFilter(variableName);\n }\n\n this.setState({\n selectedValue: value,\n });\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const {\n hideValueDrilldown,\n labelName,\n hasSparseFilters,\n hasNumericFilters,\n selectedValue,\n popover,\n showPopover,\n fieldType,\n } = model.useState();\n const variable = model.getVariable();\n const variableName = variable.useState().name as InterpolatedFilterType;\n const existingFilter = model.getExistingFilter(variable);\n const fieldValue = getValueFromAdHocVariableFilter(variableName, existingFilter);\n const styles = useStyles2(getStyles);\n const popoverRef = useRef(null);\n const filterButtonDisabled =\n fieldType === ValueSlugs.label &&\n variable.state.name === VAR_FIELDS &&\n variable.state.filters.filter((f) => f.key !== labelName && f.operator === FilterOp.Equal).length === 0;\n\n const isIncluded = existingFilter?.operator === FilterOp.NotEqual && fieldValue.value === EMPTY_VARIABLE_VALUE;\n const hasOtherFilter = !!existingFilter;\n\n const selectedOptionValue =\n selectedValue?.value ?? (isIncluded ? INCLUDE_VALUE : hasNumericFilters ? NUMERIC_FILTER_VALUE : INCLUDE_VALUE);\n\n const hasExistingNumericFilter = existingFilter?.operator\n ? [FilterOp.gte, FilterOp.gt, FilterOp.lte, FilterOp.lt].includes(existingFilter.operator)\n : false;\n const numericSelected = selectedOptionValue === NUMERIC_FILTER_VALUE || hasExistingNumericFilter;\n const includeSelected = selectedOptionValue === INCLUDE_VALUE && !numericSelected;\n\n const sparseIncludeOption: SelectableValue = {\n value: INCLUDE_VALUE,\n component: () => (\n \n ),\n };\n const sparseExcludeOption: SelectableValue = {\n value: EXCLUDE_VALUE,\n component: () => ,\n };\n const numericFilterOption: SelectableValue = {\n value: NUMERIC_FILTER_VALUE,\n component: () => (\n 30`} />\n ),\n };\n\n const options: Array> = [];\n if (hasNumericFilters) {\n options.push(numericFilterOption);\n }\n\n if (hasSparseFilters) {\n if (!hasExistingNumericFilter) {\n options.push(sparseIncludeOption);\n }\n\n options.push(sparseExcludeOption);\n }\n\n const defaultOption = isIncluded\n ? sparseIncludeOption\n : hasNumericFilters\n ? numericFilterOption\n : sparseIncludeOption;\n\n return (\n <>\n {hasOtherFilter && (\n model.clearFilters(variableName)}\n />\n )}\n {(hasNumericFilters || hasSparseFilters) && (\n <>\n \n model.onChange(selectedValue ?? defaultOption)}\n size={'sm'}\n fill={'outline'}\n variant={'secondary'}\n >\n {selectedValue?.value ?? defaultOption.value}\n \n {\n model.onChange(value);\n }}\n />\n \n \n )}\n {hideValueDrilldown !== true && (\n \n Select\n \n )}\n\n {popover && (\n }>\n {(showPopper, hidePopper, popperProps) => {\n const blurFocusProps = {\n onBlur: hidePopper,\n onFocus: showPopper,\n };\n\n return (\n <>\n {popoverRef.current && (\n <>\n \n \n )}\n \n );\n }}\n \n )}\n \n );\n };\n\n private getExistingFilter(variable?: AdHocFiltersVariable): AdHocVariableFilter | undefined {\n let { labelName } = getPrimaryLabelFromUrl();\n if (this.state.labelName !== labelName) {\n return variable?.state.filters.find((filter) => {\n return filter.key === this.state.labelName;\n });\n }\n\n return undefined;\n }\n\n public onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n\n this._subs.add(\n sceneGraph.getData(this).subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n\n this._subs.add(\n serviceScene.state.$data?.subscribeToState((newLogsPanelState) => {\n if (newLogsPanelState.data?.state === LoadingState.Done) {\n this.calculateSparsity();\n }\n })\n );\n }\n })\n );\n }\n\n public onClickNumericFilter = (variableType: InterpolatedFilterType) => {\n const detectedFieldFrame = getDetectedFieldsFrame(this);\n const fieldType = getDetectedFieldType(this.state.labelName, detectedFieldFrame);\n\n if (!fieldType || fieldType === 'string' || fieldType === 'boolean' || fieldType === 'int') {\n const error = new Error(`Incorrect field type: ${fieldType}`);\n logger.error(error, { msg: `onClickNumericFilter invalid field type ${fieldType}` });\n throw error;\n }\n\n this.setState({\n popover: new NumericFilterPopoverScene({ labelName: this.state.labelName, variableType, fieldType }),\n });\n this.togglePopover();\n };\n\n public getViewValuesLink = () => {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n return getValueBreakdownLink(this.state.fieldType, this.state.labelName, serviceScene);\n };\n\n public onClickExcludeEmpty = (variableType: InterpolatedFilterType) => {\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'exclude', this, variableType);\n };\n\n public onClickIncludeEmpty = (variableType: InterpolatedFilterType) => {\n // If json do we want != '{}'?\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'include', this, variableType);\n };\n\n public clearFilter = (variableType: InterpolatedFilterType) => {\n addToFilters(this.state.labelName, EMPTY_VARIABLE_VALUE, 'clear', this, variableType);\n };\n\n public clearFilters = (variableType: InterpolatedFilterType) => {\n clearFilters(this.state.labelName, this, variableType);\n if (this.state.labelName === LEVEL_VARIABLE_VALUE) {\n syncLevelsVariable(this);\n }\n };\n\n public togglePopover() {\n this.setState({\n showPopover: !this.state.showPopover,\n });\n }\n\n private calculateSparsity() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const logsPanelData = getLogsPanelFrame(serviceScene.state.$data?.state.data);\n const labels: Field | undefined = logsPanelData?.fields.find((field) => field.name === 'labels');\n\n const data = sceneGraph.getData(this);\n const queryRunner = findObjectOfType(data, (o) => o instanceof SceneQueryRunner, SceneQueryRunner);\n if (queryRunner) {\n const queries = queryRunner.state.queries;\n const query = queries[0] as LokiQuery | undefined;\n if (query?.expr.includes('avg_over_time')) {\n this.setState({\n hasNumericFilters: true,\n });\n }\n }\n\n if (!labels || !logsPanelData) {\n this.setState({\n hasSparseFilters: false,\n });\n return;\n }\n const variable = this.getVariable();\n // iterate through all the labels on the log panel query result and count how many times this exists\n const logLinesWithLabelCount = labels.values.reduce((acc, labels) => {\n if (labels?.[this.state.labelName]) {\n acc++;\n }\n return acc;\n }, 0);\n\n const panel = sceneGraph.getAncestor(this, VizPanel);\n if (logLinesWithLabelCount !== undefined && logsPanelData.length > 0) {\n const percentage = ((logLinesWithLabelCount / logsPanelData.length) * 100).toLocaleString();\n const description = `${this.state.labelName} exists on ${percentage}% of ${logsPanelData.length} sampled log lines`;\n\n // Update the desc\n panel.setState({\n description,\n });\n } else {\n panel.setState({\n description: undefined,\n });\n }\n\n // Only show for sparse fields and existing include and exclude filters, which will match an empty string in the value\n const existingFilter = this.getExistingFilter(variable);\n const existingFilterValue =\n existingFilter && variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(existingFilter) : undefined;\n\n if (logLinesWithLabelCount < logsPanelData.length || existingFilterValue?.value === EMPTY_VARIABLE_VALUE) {\n this.setState({\n hasSparseFilters: true,\n });\n } else {\n this.setState({\n hasSparseFilters: false,\n });\n }\n }\n\n private getVariable() {\n if (this.state.fieldType === ValueSlugs.field) {\n return getFieldsVariable(this);\n } else if (this.state.labelName === LEVEL_VARIABLE_VALUE) {\n return getLevelsVariable(this);\n } else {\n return getLabelsVariable(this);\n }\n }\n}\n\nfunction SelectableValueComponent(props: { text: string; selected: boolean }) {\n const styles = useStyles2(getSelectableValueComponentStyles);\n return (\n \n {props.selected && }\n {props.text}\n \n );\n}\n\nconst getSelectableValueComponentStyles = (theme: GrafanaTheme2) => {\n return {\n selected: css({\n label: 'selectable-value-selected',\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: '4px',\n height: 'calc(100% - 8px)',\n width: '2px',\n backgroundColor: theme.colors.warning.main,\n },\n }),\n description: css({\n textAlign: 'left',\n fontSize: theme.typography.pxToRem(12),\n }),\n };\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n popover: css({\n borderRadius: theme.shape.radius.default,\n boxShadow: theme.shadows.z3,\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n }),\n description: css({\n textAlign: 'left',\n fontSize: theme.typography.pxToRem(12),\n }),\n buttonSelect: css({\n border: `1px solid ${theme.colors.border.strong}`,\n borderLeft: 'none',\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n padding: 1,\n height: '24px',\n }),\n };\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { BusEventBase, DataFrame, FieldReducerInfo, ReducerID, SelectableValue, fieldReducers } from '@grafana/data';\nimport { getLabelValueFromDataFrame } from 'services/levels';\nimport { InlineField, Select } from '@grafana/ui';\nimport { getSortByPreference, setSortByPreference } from 'services/store';\nimport { testIds } from '../../../services/testIds';\nimport { DEFAULT_SORT_BY } from '../../../services/sorting';\n\nexport type SortBy = 'changepoint' | 'outliers' | ReducerID | '';\nexport type SortDirection = 'asc' | 'desc';\nexport interface SortBySceneState extends SceneObjectState {\n target: 'fields' | 'labels';\n sortBy: SortBy;\n direction: SortDirection;\n}\n\nexport class SortCriteriaChanged extends BusEventBase {\n constructor(public target: 'fields' | 'labels', public sortBy: string, public direction: string) {\n super();\n }\n public static type = 'sort-criteria-changed';\n}\n\nexport class SortByScene extends SceneObjectBase {\n public sortingOptions: Array<{ label: string; options: SelectableValue }> = [\n {\n label: '',\n options: [\n {\n value: 'changepoint',\n label: 'Most relevant',\n description: 'Smart ordering of graphs based on the most significant spikes in the data',\n },\n {\n value: 'outliers',\n label: 'Outlying values',\n description: 'Order by the amount of outlying values in the data',\n },\n {\n value: ReducerID.stdDev,\n label: 'Widest spread',\n description: 'Sort graphs by deviation from the average value',\n },\n {\n value: 'alphabetical',\n label: 'Name',\n description: 'Alphabetical order',\n },\n {\n value: ReducerID.sum,\n label: 'Count',\n description: 'Sort graphs by total number of logs',\n },\n {\n value: ReducerID.max,\n label: 'Highest spike',\n description: 'Sort graphs by the highest values (max)',\n },\n {\n value: ReducerID.min,\n label: 'Lowest dip',\n description: 'Sort graphs by the smallest values (min)',\n },\n ],\n },\n {\n label: 'Percentiles',\n options: [...fieldReducers.selectOptions([], filterReducerOptions).options],\n },\n ];\n\n constructor(state: Pick) {\n const { sortBy, direction } = getSortByPreference(state.target, DEFAULT_SORT_BY, 'desc');\n super({\n target: state.target,\n sortBy,\n direction,\n });\n }\n\n public onCriteriaChange = (criteria: SelectableValue) => {\n if (!criteria.value) {\n return;\n }\n this.setState({ sortBy: criteria.value });\n setSortByPreference(this.state.target, criteria.value, this.state.direction);\n this.publishEvent(new SortCriteriaChanged(this.state.target, criteria.value, this.state.direction), true);\n };\n\n public onDirectionChange = (direction: SelectableValue) => {\n if (!direction.value) {\n return;\n }\n this.setState({ direction: direction.value });\n setSortByPreference(this.state.target, this.state.sortBy, direction.value);\n this.publishEvent(new SortCriteriaChanged(this.state.target, this.state.sortBy, direction.value), true);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { sortBy, direction } = model.useState();\n const group = model.sortingOptions.find((group) =>\n group.options.find((option: SelectableValue) => option.value === sortBy)\n );\n const sortByValue: SelectableValue | undefined = group?.options.find(\n (option: SelectableValue) => option.value === sortBy\n );\n return (\n <>\n \n \n \n \n \n \n \n );\n };\n}\n\nconst ENABLED_PERCENTILES = ['p10', 'p25', 'p75', 'p90', 'p99'];\nfunction filterReducerOptions(ext: FieldReducerInfo) {\n if (ext.id >= 'p1' && ext.id <= 'p99') {\n return ENABLED_PERCENTILES.includes(ext.id);\n }\n return false;\n}\n\nexport function getLabelValue(frame: DataFrame) {\n return getLabelValueFromDataFrame(frame) ?? 'No labels';\n}\n","import { css } from '@emotion/css';\nimport React, { ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { LoadingPlaceholder, useStyles2 } from '@grafana/ui';\n\ntype Props = {\n blockingMessage?: string;\n isLoading?: boolean;\n children?: ReactNode;\n};\n\nexport function StatusWrapper({ blockingMessage, isLoading, children }: Props) {\n const styles = useStyles2(getStyles);\n\n if (isLoading && !blockingMessage) {\n blockingMessage = 'Loading...';\n }\n\n if (isLoading) {\n return ;\n }\n\n if (!blockingMessage) {\n return <>{children};\n }\n\n return
{blockingMessage}
;\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n statusMessage: css({\n fontStyle: 'italic',\n marginTop: theme.spacing(7),\n textAlign: 'center',\n }),\n };\n}\n","export const MAX_NUMBER_OF_TIME_SERIES = 20;\n","import { GrafanaTheme2 } from '@grafana/data';\n\n// from /grafana/grafana/packages/grafana-ui/src/themes/mixins.ts\nexport function getFocusStyles(theme: GrafanaTheme2) {\n return {\n outline: '2px dotted transparent',\n outlineOffset: '2px',\n boxShadow: `0 0 0 2px ${theme.colors.background.canvas}, 0 0 0px 4px ${theme.colors.primary.main}`,\n transitionTimingFunction: `cubic-bezier(0.19, 1, 0.22, 1)`,\n transitionDuration: '0.2s',\n transitionProperty: 'outline, outline-offset, box-shadow',\n };\n}\n\nexport function getMouseFocusStyles(theme: GrafanaTheme2) {\n return {\n outline: 'none',\n boxShadow: `none`,\n };\n}\n\nexport function getIconButtonBefore(hoverSize: number, theme: GrafanaTheme2) {\n return {\n zIndex: '-1',\n position: 'absolute',\n opacity: '0',\n width: `${hoverSize}px`,\n height: `${hoverSize}px`,\n borderRadius: theme.shape.radius.default,\n content: '\"\"',\n [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n transitionDuration: '0.2s',\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\n transitionProperty: 'opacity',\n },\n };\n}\n","import { IconButtonVariant, Tooltip, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { colorManipulator, GrafanaTheme2 } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { getFocusStyles, getIconButtonBefore, getMouseFocusStyles } from '../../../services/mixins';\n\nexport type RegexInputValue = 'regex' | 'match';\ninterface Props {\n onRegexToggle: (state: RegexInputValue) => void;\n regex: boolean;\n}\n\nexport const RegexIconButton = (props: Props) => {\n const theme = useTheme2();\n const fill = props.regex ? theme.colors.text.maxContrast : theme.colors.text.disabled;\n const styles = getStyles(theme);\n const description = `${props.regex ? 'Disable' : 'Enable'} regex`;\n\n return (\n \n props.onRegexToggle(props.regex ? 'match' : 'regex')}\n className={cx(styles.button, props.regex ? styles.active : null)}\n aria-label={description}\n >\n \n \n .*\n \n \n \n \n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, variant: IconButtonVariant = 'secondary') => {\n const hoverSize = 16 + theme.spacing.gridSize;\n\n return {\n button: css({\n zIndex: 0,\n position: 'relative',\n margin: `0 ${theme.spacing.x0_5} 0 ${theme.spacing.x0_5}`,\n boxShadow: 'none',\n border: 'none',\n display: 'inline-flex',\n background: 'transparent',\n justifyContent: 'center',\n alignItems: 'center',\n padding: 0,\n color: theme.colors.text.primary,\n\n '&:before': {\n ...getIconButtonBefore(hoverSize, theme),\n position: 'absolute',\n },\n\n '&:hover': {\n '&:before': {\n backgroundColor:\n variant === 'secondary'\n ? theme.colors.action.hover\n : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n },\n\n '&:focus, &:focus-visible': getFocusStyles(theme),\n '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n }),\n active: css({\n '&:before': {\n backgroundColor:\n variant === 'secondary' ? theme.colors.action.hover : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n '&:hover': {\n '&:before': {\n backgroundColor: 'none',\n opacity: 0,\n },\n },\n }),\n };\n};\n","import { IconButtonVariant, Tooltip, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { colorManipulator, GrafanaTheme2 } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { getFocusStyles, getIconButtonBefore, getMouseFocusStyles } from '../../../services/mixins';\nimport { LineFilterCaseSensitive } from '../../../services/filterTypes';\n\ninterface Props {\n onCaseSensitiveToggle: (state: LineFilterCaseSensitive) => void;\n caseSensitive: boolean;\n}\n\nexport const LineFilterCaseSensitivityButton = (props: Props) => {\n const theme = useTheme2();\n const fill = props.caseSensitive ? theme.colors.text.maxContrast : theme.colors.text.disabled;\n const styles = getStyles(theme);\n const description = `${props.caseSensitive ? 'Disable' : 'Enable'} case match`;\n\n return (\n \n \n props.onCaseSensitiveToggle(\n props.caseSensitive ? LineFilterCaseSensitive.caseInsensitive : LineFilterCaseSensitive.caseSensitive\n )\n }\n className={cx(styles.button, props.caseSensitive ? styles.active : null)}\n aria-label={description}\n >\n \n \n Aa\n \n \n \n \n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, variant: IconButtonVariant = 'secondary') => {\n const hoverSize = 16 + theme.spacing.gridSize;\n\n return {\n button: css({\n zIndex: 0,\n position: 'relative',\n margin: `0 ${theme.spacing.x0_5} 0 ${theme.spacing.x0_5}`,\n boxShadow: 'none',\n border: 'none',\n display: 'inline-flex',\n background: 'transparent',\n justifyContent: 'center',\n alignItems: 'center',\n padding: 0,\n color: theme.colors.text.primary,\n\n '&:before': {\n ...getIconButtonBefore(hoverSize, theme),\n position: 'absolute',\n },\n\n '&:hover': {\n '&:before': {\n backgroundColor:\n variant === 'secondary'\n ? theme.colors.action.hover\n : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n },\n\n '&:focus, &:focus-visible': getFocusStyles(theme),\n '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n }),\n active: css({\n '&:before': {\n backgroundColor:\n variant === 'secondary' ? theme.colors.action.hover : colorManipulator.alpha(theme.colors.text.primary, 0.12),\n opacity: 1,\n },\n '&:hover': {\n '&:before': {\n backgroundColor: 'none',\n opacity: 0,\n },\n },\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport { Icon, IconButton, Input, Tooltip, useStyles2 } from '@grafana/ui';\nimport React, { HTMLProps, useCallback, useEffect, useState } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { narrowErrorMessage } from '../../../services/narrowing';\n\ninterface Props extends Omit, 'width' | 'prefix' | 'invalid' | 'onInvalid'> {\n onClear?: () => void;\n suffix?: React.ReactNode;\n prefix?: React.ReactNode;\n width?: number;\n regex: boolean;\n value: string;\n}\n\nlet re2JS: typeof import('re2js').RE2JS | undefined | null = undefined;\n\nexport const LineFilterInput = ({ value, onChange, placeholder, onClear, suffix, width, regex, ...rest }: Props) => {\n const styles = useStyles2(getStyles);\n const [invalid, setInvalid] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n\n const validate = useCallback(\n (value: string) => {\n // Do we have a value that can be validated? Check this first before attempting to load the package.\n if (!value || !regex) {\n setErrorMessage('');\n setInvalid(false);\n return;\n }\n\n if (re2JS === undefined) {\n load().then(() => validate(value));\n return;\n }\n\n try {\n re2JS?.compile(value);\n setInvalid(false);\n setErrorMessage('');\n } catch (e) {\n const msg = narrowErrorMessage(e);\n setInvalid(true);\n if (msg) {\n setErrorMessage(msg);\n }\n }\n },\n [regex]\n );\n\n useEffect(() => {\n validate(value);\n }, [validate, value]);\n\n return (\n \n \n {onClear && value ? (\n \n ) : undefined}\n {suffix && suffix}\n \n }\n prefix={}\n placeholder={placeholder}\n {...rest}\n />\n \n );\n};\n\nconst load = async () => {\n re2JS = null;\n re2JS = (await import('re2js')).RE2JS;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n suffixWrapper: css({\n gap: theme.spacing(0.5),\n display: 'inline-flex',\n }),\n clearIcon: css({\n cursor: 'pointer',\n }),\n});\n","import React, { useEffect, useState } from 'react';\nimport { RegexIconButton } from './RegexIconButton';\nimport { Button, Field, Select, useStyles2 } from '@grafana/ui';\nimport { testIds } from '../../../services/testIds';\nimport { css, cx } from '@emotion/css';\nimport { LineFilterCaseSensitivityButton } from './LineFilterCaseSensitivityButton';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { LineFilterInput } from '../Breakdowns/LineFilterInput';\nimport { LineFilterProps } from '../../IndexScene/LineFilterVariable';\n\nexport interface LineFilterEditorProps extends LineFilterProps {\n focus: boolean;\n setFocus: (focus: boolean) => void;\n type: 'variable' | 'editor';\n}\n\nconst INITIAL_INPUT_WIDTH = 30;\n\nexport function LineFilterEditor({\n exclusive,\n lineFilter,\n caseSensitive,\n setExclusive,\n regex,\n onInputChange,\n onCaseSensitiveToggle,\n onRegexToggle,\n handleEnter,\n onSubmitLineFilter,\n onClearLineFilter,\n focus,\n setFocus,\n type,\n}: LineFilterEditorProps) {\n const styles = useStyles2((theme) => getStyles(theme, type));\n const [width, setWidth] = useState(INITIAL_INPUT_WIDTH);\n\n function resize(content?: string) {\n // The input width roughly corresponds to char count\n const width = Math.max(content?.length ?? 0, INITIAL_INPUT_WIDTH);\n // We add a few extra because the buttons are absolutely positioned within the input width\n setWidth(width + 9);\n }\n\n useEffect(() => {\n resize(lineFilter);\n }, [lineFilter, focus]);\n\n return (\n
\n {!onSubmitLineFilter && (\n setExclusive(!exclusive)}\n />\n )}\n \n setFocus(true)}\n data-testid={testIds.exploreServiceDetails.searchLogs}\n value={lineFilter ?? ''}\n className={cx(onSubmitLineFilter ? styles.inputNoBorderRight : undefined, styles.input)}\n onChange={onInputChange}\n suffix={\n \n \n \n \n }\n prefix={null}\n placeholder=\"Search in log lines\"\n onClear={onClearLineFilter}\n onKeyUp={(e) => {\n handleEnter(e, lineFilter);\n resize(lineFilter);\n }}\n />\n \n {onSubmitLineFilter && (\n \n {\n setExclusive(false);\n onSubmitLineFilter();\n }}\n className={styles.includeButton}\n variant={'secondary'}\n fill={'outline'}\n disabled={!lineFilter}\n >\n Include\n \n {\n setExclusive(true);\n onSubmitLineFilter();\n }}\n className={styles.excludeButton}\n variant={'secondary'}\n fill={'outline'}\n disabled={!lineFilter}\n >\n Exclude\n \n \n )}\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2, type: 'variable' | 'editor') => ({\n inputNoBorderRight: css({\n input: {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n }),\n suffix: css({\n display: 'inline-flex',\n gap: theme.spacing(0.5),\n }),\n removeBtn: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n }),\n buttonWrap: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderLeft: 'none',\n borderRadius: 0,\n borderRight: 'none',\n '&[disabled]': {\n borderRight: 'none',\n },\n }),\n excludeButton: css({\n borderRadius: `0 ${theme.shape.radius.default} ${theme.shape.radius.default} 0`,\n borderLeft: 'none',\n '&[disabled]': {\n borderLeft: 'none',\n },\n }),\n submit: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n }),\n select: css({\n label: 'line-filter-exclusion',\n marginLeft: 0,\n paddingLeft: 0,\n height: 'auto',\n borderBottomRightRadius: '0',\n borderTopRightRadius: '0',\n borderRight: 'none',\n minHeight: '30px',\n minWidth: '95px',\n maxWidth: '95px',\n outline: 'none',\n }),\n wrapper: css({\n display: 'flex',\n width: '100%',\n }),\n input: css({\n label: 'line-filter-input-wrapper',\n minWidth: '200px',\n\n // Keeps the input from overflowing container on resize\n maxWidth: type === 'editor' ? 'calc(100vw - 198px)' : 'calc(100vw - 288px)',\n\n input: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n fontFamily: 'monospace',\n fontSize: theme.typography.bodySmall.fontSize,\n width: '100%',\n },\n }),\n exclusiveBtn: css({\n marginRight: '1rem',\n }),\n field: css({\n label: 'field',\n flex: '0 1 auto',\n marginBottom: 0,\n }),\n});\n","import { css } from '@emotion/css';\nimport { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, InlineField, RadioButtonGroup, Tooltip, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { getLogOption, LogsVisualizationType, setLogOption } from 'services/store';\nimport { LogsListScene } from './LogsListScene';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { LogsPanelHeaderActions } from '../Table/LogsHeaderActions';\nimport { GrafanaTheme2, LogsSortOrder } from '@grafana/data';\nimport { LogsPanelScene } from './LogsPanelScene';\nimport { locationService } from '@grafana/runtime';\nimport { narrowLogsSortOrder } from '../../services/narrowing';\nimport { logger } from '../../services/logger';\n\ninterface LogOptionsState extends SceneObjectState {\n visualizationType: LogsVisualizationType;\n onChangeVisualizationType: (type: LogsVisualizationType) => void;\n}\n\n/**\n * The options rendered in the logs panel header\n */\nexport class LogOptionsScene extends SceneObjectBase {\n static Component = LogOptionsRenderer;\n\n constructor(state: LogOptionsState) {\n super({\n ...state,\n });\n }\n\n handleWrapLinesChange = (type: boolean) => {\n this.getLogsPanelScene().setState({ wrapLogMessage: type });\n setLogOption('wrapLogMessage', type);\n this.getLogsListScene().setLogsVizOption({ wrapLogMessage: type });\n this.getLogsListScene().setLogsVizOption({ prettifyLogMessage: type });\n };\n\n onChangeLogsSortOrder = (sortOrder: LogsSortOrder) => {\n this.getLogsPanelScene().setState({ sortOrder: sortOrder });\n setLogOption('sortOrder', sortOrder);\n this.getLogsListScene().setLogsVizOption({ sortOrder: sortOrder });\n };\n\n getLogsListScene = () => {\n return sceneGraph.getAncestor(this, LogsListScene);\n };\n\n getLogsPanelScene = () => {\n return sceneGraph.getAncestor(this, LogsPanelScene);\n };\n\n clearDisplayedFields = () => {\n const parentScene = this.getLogsListScene();\n parentScene.clearDisplayedFields();\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_clear_displayed_fields\n );\n };\n}\n\nfunction LogOptionsRenderer({ model }: SceneComponentProps) {\n const { onChangeVisualizationType, visualizationType } = model.useState();\n const { wrapLogMessage, sortOrder } = model.getLogsPanelScene().useState();\n const { displayedFields } = model.getLogsListScene().useState();\n const styles = useStyles2(getStyles);\n const wrapLines = wrapLogMessage ?? false;\n\n return (\n
\n {displayedFields.length > 0 && (\n \n \n \n )}\n \n \n \n\n \n \n \n \n
\n );\n}\n\nexport function getLogsPanelSortOrderFromStore() {\n return getLogOption('sortOrder', LogsSortOrder.Descending) as LogsSortOrder;\n}\n\nexport function getLogsPanelSortOrderFromURL() {\n // Since sort order is used to execute queries before the logs panel is instantiated, the scene url state will never influence the query\n // Hacking this for now to manually check the URL search params to override local storage state if set\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const sortOrder = search.get('sortOrder');\n\n try {\n if (typeof sortOrder === 'string') {\n const decodedSortOrder = narrowLogsSortOrder(JSON.parse(sortOrder));\n if (decodedSortOrder) {\n return decodedSortOrder;\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogOptionsScene(getLogsPanelSortOrderFromURL): unable to parse sortOrder' });\n }\n\n return false;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n container: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.5),\n }),\n buttonGroupWrapper: css({\n margin: 0,\n alignItems: 'center',\n }),\n});\n","import React, { createContext, ReactNode, useCallback, useContext, useEffect, useState } from 'react';\nimport { ActiveFieldMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { getBodyName, getTimeName, LogsFrame } from '../../../services/logsFrame';\nimport { logger } from '../../../services/logger';\n\nimport { PLUGIN_ID } from '../../../services/plugin';\nimport { NarrowingError, narrowRecordStringNumber } from '../../../services/narrowing';\n\nconst tableColumnCustomWidths = `${PLUGIN_ID}.tableColumnWidths`;\n\ntype TableColumnsContextType = {\n // the current list of labels from the dataframe combined with UI metadata\n columns: FieldNameMetaStore;\n // The active search results\n filteredColumns?: FieldNameMetaStore;\n // Update the column state\n setColumns(newColumns: FieldNameMetaStore): void;\n // Update search state\n setFilteredColumns(newColumns?: FieldNameMetaStore): void;\n // WIP - sets the visibility of the drawer right now\n visible: boolean;\n setVisible: (v: boolean) => void;\n bodyState: LogLineState;\n setBodyState: (s: LogLineState) => void;\n clearSelectedLine: () => void;\n setColumnWidthMap(map: Record): void;\n columnWidthMap: Record;\n};\n\nexport enum LogLineState {\n text = 'text',\n labels = 'labels',\n auto = 'auto',\n}\n\nconst TableColumnsContext = createContext({\n columnWidthMap: {},\n setColumnWidthMap: () => {},\n columns: {},\n filteredColumns: {},\n setColumns: () => {},\n setFilteredColumns: () => {},\n setVisible: () => false,\n visible: false,\n bodyState: LogLineState.auto,\n setBodyState: () => {},\n clearSelectedLine: () => {},\n});\n\nfunction setDefaultColumns(\n columns: FieldNameMetaStore,\n handleSetColumns: (newColumns: FieldNameMetaStore) => void,\n logsFrame: LogsFrame\n) {\n const pendingColumns = { ...columns };\n\n pendingColumns[getTimeName(logsFrame)] = {\n index: 0,\n active: true,\n type: 'TIME_FIELD',\n percentOfLinesWithLabel: 100,\n cardinality: Infinity,\n };\n pendingColumns[getBodyName(logsFrame)] = {\n index: 1,\n active: true,\n type: 'BODY_FIELD',\n percentOfLinesWithLabel: 100,\n cardinality: Infinity,\n };\n handleSetColumns(pendingColumns);\n}\n\nfunction getColumnWidthsFromLocalStorage(): Record {\n let initialColumnWidths = {};\n const existingWidths = localStorage.getItem(tableColumnCustomWidths);\n if (existingWidths) {\n try {\n initialColumnWidths = narrowRecordStringNumber(JSON.parse(existingWidths));\n if (initialColumnWidths === false) {\n logger.error(\n new NarrowingError('getColumnWidthsFromLocalStorage: unable to validate values in local storage'),\n { msg: 'NarrowingError: error parsing table column widths from local storage' }\n );\n }\n return initialColumnWidths;\n } catch (e) {\n logger.error(e, { msg: 'error parsing table column widths from local storage' });\n }\n }\n return initialColumnWidths;\n}\n\nexport const TableColumnContextProvider = ({\n children,\n initialColumns,\n logsFrame,\n setUrlColumns,\n clearSelectedLine,\n setUrlTableBodyState,\n urlTableBodyState,\n showColumnManagementDrawer,\n isColumnManagementActive,\n}: {\n children: ReactNode;\n initialColumns: FieldNameMetaStore;\n logsFrame: LogsFrame;\n setUrlColumns: (columns: string[]) => void;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n urlTableBodyState?: LogLineState;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}) => {\n const [columns, setColumns] = useState(removeExtraColumns(initialColumns));\n const [bodyState, setBodyState] = useState(urlTableBodyState ?? LogLineState.auto);\n const [filteredColumns, setFilteredColumns] = useState(undefined);\n\n const initialColumnWidths = getColumnWidthsFromLocalStorage();\n const [columnWidthMap, setColumnWidthMapState] = useState>(initialColumnWidths);\n const setColumnWidthMap = (map: Record) => {\n localStorage.setItem(tableColumnCustomWidths, JSON.stringify(map));\n setColumnWidthMapState(map);\n };\n\n const getActiveColumns = (columns: FieldNameMetaStore): string[] => {\n let activeColumns: string[] = [];\n Object.keys(columns).forEach((fieldName) => {\n if (columns[fieldName].active && columns[fieldName].index !== undefined) {\n activeColumns.push(fieldName);\n }\n });\n activeColumns.sort((a, b) => {\n // Typescript doesn't seem to know that the indicies we picked in the loop above are only for ActiveFieldMeta, so we're forced to assert\n const colA: ActiveFieldMeta = columns[a] as ActiveFieldMeta;\n const colB: ActiveFieldMeta = columns[b] as ActiveFieldMeta;\n return colA.index - colB.index;\n });\n return activeColumns;\n };\n\n const handleSetColumns = useCallback(\n (newColumns: FieldNameMetaStore) => {\n if (newColumns) {\n const columns = removeExtraColumns(newColumns);\n\n setColumns(columns);\n\n // Sync react state update with scenes url management\n setUrlColumns(getActiveColumns(columns));\n }\n },\n [setUrlColumns]\n );\n\n const handleSetBodyState = useCallback(\n (logLineState: LogLineState) => {\n setBodyState(logLineState);\n\n // Sync change with url state\n setUrlTableBodyState(logLineState);\n },\n [setUrlTableBodyState]\n );\n\n const handleClearSelectedLine = () => {\n clearSelectedLine();\n };\n\n const handleSetVisible = useCallback(\n (isVisible: boolean) => {\n showColumnManagementDrawer(isVisible);\n },\n [showColumnManagementDrawer]\n );\n\n // When the parent component recalculates new columns on dataframe change, we need to update or the column UI will be stale!\n useEffect(() => {\n if (initialColumns) {\n handleSetColumns(initialColumns);\n }\n }, [initialColumns, handleSetColumns]);\n\n // When the columns are updated, we need to check if nothing is selected so we can set the default\n useEffect(() => {\n const activeColumns = getDefaultColumns(columns, logsFrame);\n if (activeColumns?.length) {\n const activeFields = Object.keys(columns).filter((col) => columns[col].active);\n\n // If we're missing all fields, the user must have removed the last column, let's revert back to the default state\n if (activeFields.length === 0) {\n setDefaultColumns(columns, handleSetColumns, logsFrame);\n }\n\n // Reset any local search state\n setFilteredColumns(undefined);\n }\n }, [columns, logsFrame, setFilteredColumns, handleSetColumns]);\n\n return (\n \n {children}\n \n );\n};\n/**\n * Filter out fields that shouldn't be exposed in the UI\n * @param columns\n */\nconst removeExtraColumns = (columns: FieldNameMetaStore): FieldNameMetaStore => {\n // Remove label Types\n if ('labelTypes' in columns) {\n const { labelTypes, ...columnsToSet }: FieldNameMetaStore = {\n ...columns,\n };\n return columnsToSet;\n }\n return columns;\n};\n\nfunction getDefaultColumns(pendingLabelState: FieldNameMetaStore, logsFrame: LogsFrame) {\n if (!logsFrame) {\n logger.warn('missing dataframe, cannot set url state');\n return;\n }\n // Get all active columns and sort by index\n const newColumnsArray = Object.keys(pendingLabelState)\n // Only include active filters\n .filter((key) => pendingLabelState[key]?.active)\n .sort((a, b) => {\n const pa = pendingLabelState[a];\n const pb = pendingLabelState[b];\n if (pa.index !== undefined && pb.index !== undefined) {\n return pa.index - pb.index; // sort by index\n }\n return 0;\n });\n\n const timeField = logsFrame.timeField;\n const bodyField = logsFrame.bodyField;\n\n if ((timeField && bodyField) || newColumnsArray.length) {\n const defaultColumns = [];\n if (timeField?.name) {\n defaultColumns.push(timeField.name);\n }\n if (bodyField?.name) {\n defaultColumns.push(bodyField.name);\n }\n\n // Update url state\n return newColumnsArray.length ? newColumnsArray : defaultColumns;\n }\n\n return [];\n}\n\nexport const useTableColumnContext = () => {\n return useContext(TableColumnsContext);\n};\n","import React, { createContext, ReactNode, useCallback, useContext, useState } from 'react';\n\nexport type CellIndex = {\n fieldName?: string;\n // If the field contains labels (like log line), we need to know which field (line) and which label (e.g. level)\n subFieldName?: string;\n index: number | null;\n numberOfMenuItems?: number;\n};\n\ntype TableCellContextType = {\n cellIndex: CellIndex;\n setActiveCellIndex(cellIndex: CellIndex): void;\n};\n\nconst TableCellContext = createContext({\n cellIndex: { index: null, numberOfMenuItems: 3 },\n setActiveCellIndex: (cellIndex: CellIndex) => false,\n});\n\nexport const TableCellContextProvider = ({ children }: { children: ReactNode }) => {\n const [cellActive, setCellActive] = useState({ index: null });\n\n const handleCellActive = useCallback((cellIndex: CellIndex) => {\n setCellActive(cellIndex);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useTableCellContext = () => {\n return useContext(TableCellContext);\n};\n","import React, { createContext, ReactNode, useCallback, useContext, useState } from 'react';\n\ntype TableHeaderContextType = {\n isHeaderMenuActive: boolean;\n setHeaderMenuActive: (isHeaderMenuActive: boolean) => void;\n};\n\nconst TableHeaderContext = createContext({\n isHeaderMenuActive: false,\n setHeaderMenuActive: (isHeaderMenuActive: boolean) => false,\n});\n\nexport const TableHeaderContextProvider = ({ children }: { children: ReactNode }) => {\n const [isHeaderMenuActive, setHeaderMenuActive] = useState(false);\n\n const handleisHeaderMenuActive = useCallback((isHeaderMenuActive: boolean) => {\n setHeaderMenuActive(isHeaderMenuActive);\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useTableHeaderContext = () => {\n return useContext(TableHeaderContext);\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Field, Input, useTheme2 } from '@grafana/ui';\n\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { reportInteraction } from '@grafana/runtime';\nimport { debouncedFuzzySearch } from '../../../services/search';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n searchWrap: css({\n padding: `${theme.spacing(0.4)} 0 ${theme.spacing(0.4)} ${theme.spacing(0.4)}`,\n }),\n };\n}\n\ninterface LogsColumnSearchProps {\n searchValue: string;\n setSearchValue: (value: string) => void;\n}\nexport function LogsColumnSearch({ searchValue, setSearchValue }: LogsColumnSearchProps) {\n const { columns, setFilteredColumns } = useTableColumnContext();\n\n // uFuzzy search dispatcher, adds any matches to the local state\n const dispatcher = (data: string[][]) => {\n const matches = data[0];\n let newColumnsWithMeta: FieldNameMetaStore = {};\n let numberOfResults = 0;\n matches.forEach((match) => {\n if (match in columns) {\n newColumnsWithMeta[match] = columns[match];\n numberOfResults++;\n }\n });\n setFilteredColumns(newColumnsWithMeta);\n searchFilterEvent(numberOfResults);\n };\n\n // uFuzzy search\n const search = (needle: string) => {\n debouncedFuzzySearch(Object.keys(columns), needle, dispatcher);\n };\n\n // onChange handler for search input\n const onSearchInputChange = (e: React.FormEvent) => {\n const value = e.currentTarget?.value;\n setSearchValue(value);\n if (value) {\n search(value);\n } else {\n // If the search input is empty, reset the local search state.\n setFilteredColumns(undefined);\n }\n };\n\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n \n \n \n );\n}\n\nfunction searchFilterEvent(searchResultCount: number) {\n reportInteraction('grafana_logs_app_table_text_search_result_count', {\n resultCount: searchResultCount,\n });\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n empty: css({\n marginBottom: theme.spacing(2),\n marginLeft: theme.spacing(1.75),\n fontSize: theme.typography.fontSize,\n }),\n };\n}\n\nexport function LogsTableEmptyFields() {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return
No fields
;\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Checkbox, Icon, useTheme2 } from '@grafana/ui';\n\nimport { FieldNameMeta } from '../TableTypes';\n\nexport function LogsTableNavField(props: {\n label: string;\n onChange: () => void;\n labels: Record;\n draggable?: boolean;\n showCount?: boolean;\n setColumnWidthMap?: (map: Record) => void;\n columnWidthMap?: Record;\n}): React.JSX.Element | null {\n const theme = useTheme2();\n const styles = getStyles(theme);\n\n if (props.labels[props.label]) {\n return (\n <>\n
\n \n {props.showCount && (\n
\n
{props.labels[props.label]?.percentOfLinesWithLabel}%
\n
\n {props.labels[props.label]?.cardinality}{' '}\n {props.labels[props.label]?.cardinality === 1 ? 'value' : 'values'}\n
\n
\n )}\n {props.columnWidthMap && props.setColumnWidthMap && props.columnWidthMap?.[props.label] !== undefined && (\n {\n const { [props.label]: omit, ...map } = { ...props.columnWidthMap };\n props.setColumnWidthMap?.(map);\n }}\n title={'Clear column width override'}\n className={styles.customWidthWrap}\n >\n Reset column width\n \n
\n )}\n \n {props.draggable && (\n \n )}\n \n );\n }\n\n return null;\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n dragIcon: css({\n cursor: 'drag',\n marginLeft: theme.spacing(1),\n opacity: 0.4,\n }),\n labelCount: css({\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n appearance: 'none',\n background: 'none',\n border: 'none',\n fontSize: theme.typography.pxToRem(11),\n opacity: 0.6,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'self-end',\n }),\n contentWrap: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n }),\n customWidthWrap: css({\n fontSize: theme.typography.bodySmall.fontSize,\n cursor: 'pointer',\n }),\n // Hide text that overflows, had to select elements within the Checkbox component, so this is a bit fragile\n checkboxLabel: css({\n '> span': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n display: 'block',\n maxWidth: '100%',\n },\n }),\n };\n}\n","import React, { ReactElement } from 'react';\nimport { DragDropContext, Draggable, DraggableProvided, Droppable, DropResult } from '@hello-pangea/dnd';\nimport { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { FieldNameMeta, FieldNameMetaStore } from '../TableTypes';\n\nimport { LogsTableEmptyFields } from './LogsTableEmptyFields';\nimport { LogsTableNavField } from './LogsTableNavField';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\n\nexport function getLogsFieldsStyles(theme: GrafanaTheme2) {\n return {\n wrap: css({\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n display: 'flex',\n background: theme.colors.background.primary,\n }),\n dragging: css({\n background: theme.colors.background.secondary,\n }),\n columnWrapper: css({\n marginBottom: theme.spacing(1.5),\n // need some space or the outline of the checkbox is cut off\n paddingLeft: theme.spacing(0.5),\n }),\n };\n}\n\nfunction sortLabels(labels: Record) {\n return (a: string, b: string) => {\n const la = labels[a];\n const lb = labels[b];\n\n // Sort by index\n if (la.index != null && lb.index != null) {\n return la.index - lb.index;\n }\n\n // otherwise do not sort\n return 0;\n };\n}\n\nexport const LogsTableActiveFields = (props: {\n labels: Record;\n valueFilter: (value: string) => boolean;\n toggleColumn: (columnName: string) => void;\n reorderColumn: (cols: FieldNameMetaStore, sourceIndex: number, destinationIndex: number) => void;\n id: string;\n}): ReactElement => {\n const { columnWidthMap, setColumnWidthMap } = useTableColumnContext();\n const { reorderColumn, labels, valueFilter, toggleColumn } = props;\n const theme = useTheme2();\n const { columns } = useTableColumnContext();\n const styles = getLogsFieldsStyles(theme);\n const labelKeys = Object.keys(labels).filter((labelName) => valueFilter(labelName));\n\n const onDragEnd = (result: DropResult) => {\n if (!result.destination) {\n return;\n }\n reorderColumn(columns, result.source.index, result.destination.index);\n };\n\n const renderTitle = (labelName: string) => {\n const label = labels[labelName];\n if (label) {\n return `${labelName} appears in ${label?.percentOfLinesWithLabel}% of log lines`;\n }\n\n return undefined;\n };\n\n if (labelKeys.length) {\n return (\n \n \n {(provided) => (\n
\n {labelKeys.sort(sortLabels(labels)).map((labelName, index) => (\n \n {(provided: DraggableProvided, snapshot) => (\n \n toggleColumn(labelName)}\n labels={labels}\n draggable={true}\n />\n
\n )}\n \n ))}\n {provided.placeholder}\n \n )}\n
\n
\n );\n }\n\n return ;\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { FieldNameMeta } from '../TableTypes';\n\nimport { LogsTableEmptyFields } from './LogsTableEmptyFields';\nimport { LogsTableNavField } from './LogsTableNavField';\n\nconst collator = new Intl.Collator(undefined, { sensitivity: 'base' });\n\nfunction getLogsFieldsStyles(theme: GrafanaTheme2) {\n return {\n wrap: css({\n marginTop: theme.spacing(0.25),\n marginBottom: theme.spacing(0.25),\n display: 'flex',\n background: theme.colors.background.primary,\n borderBottom: `1px solid ${theme.colors.background.canvas}`,\n }),\n dragging: css({\n background: theme.colors.background.secondary,\n }),\n columnWrapper: css({\n marginBottom: theme.spacing(1.5),\n // need some space or the outline of the checkbox is cut off\n paddingLeft: theme.spacing(0.5),\n }),\n };\n}\n\nfunction sortLabels(labels: Record) {\n return (a: string, b: string) => {\n const la = labels[a];\n const lb = labels[b];\n\n // ...sort by type and alphabetically\n if (la != null && lb != null) {\n return (\n Number(lb.type === 'TIME_FIELD') - Number(la.type === 'TIME_FIELD') ||\n Number(lb.type === 'BODY_FIELD') - Number(la.type === 'BODY_FIELD') ||\n collator.compare(a, b)\n );\n }\n\n // otherwise do not sort\n return 0;\n };\n}\n\nexport const LogsTableAvailableFields = (props: {\n labels: Record;\n valueFilter: (value: string) => boolean;\n toggleColumn: (columnName: string) => void;\n}): React.ReactElement => {\n const { labels, valueFilter, toggleColumn } = props;\n const theme = useTheme2();\n const styles = getLogsFieldsStyles(theme);\n const labelKeys = Object.keys(labels).filter((labelName) => valueFilter(labelName));\n if (labelKeys.length) {\n // Otherwise show list with a hardcoded order\n return (\n
\n {labelKeys.sort(sortLabels(labels)).map((labelName) => (\n \n toggleColumn(labelName)}\n labels={labels}\n />\n
\n ))}\n \n );\n }\n\n return ;\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { LogsTableActiveFields } from 'Components/Table/ColumnSelection/LogsTableActiveFields';\nimport { LogsTableAvailableFields } from 'Components/Table/ColumnSelection/LogsTableAvailableFields';\n\nimport { FieldNameMeta, FieldNameMetaStore } from '../TableTypes';\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n sidebarWrap: css({\n overflowY: 'scroll',\n height: 'calc(100% - 50px)',\n /* Hide scrollbar for Chrome, Safari, and Opera */\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n /* Hide scrollbar for Firefox */\n scrollbarWidth: 'none',\n }),\n columnHeaderButton: css({\n appearance: 'none',\n background: 'none',\n border: 'none',\n fontSize: theme.typography.pxToRem(11),\n }),\n columnHeader: css({\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: theme.typography.h6.fontSize,\n background: theme.colors.background.secondary,\n position: 'sticky',\n top: 0,\n left: 0,\n paddingTop: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75),\n paddingBottom: theme.spacing(0.75),\n paddingLeft: theme.spacing(1.5),\n zIndex: 3,\n marginBottom: theme.spacing(2),\n }),\n };\n}\n\nexport const LogsTableMultiSelect = (props: {\n toggleColumn: (columnName: string) => void;\n filteredColumnsWithMeta: Record | undefined;\n columnsWithMeta: Record;\n clear: () => void;\n reorderColumn: (cols: FieldNameMetaStore, oldIndex: number, newIndex: number) => void;\n}) => {\n const theme = useTheme2();\n const styles = getStyles(theme);\n\n return (\n
\n {/* Sidebar columns */}\n <>\n
\n Selected fields\n \n
\n props.columnsWithMeta[value]?.active ?? false}\n id={'selected-fields'}\n />\n\n
Fields
\n !props.columnsWithMeta[value]?.active}\n />\n \n
\n );\n};\n","import React, { useState } from 'react';\n\nimport { ClickOutsideWrapper } from '@grafana/ui';\n\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { LogsColumnSearch } from 'Components/Table/ColumnSelection/LogsColumnSearch';\nimport { LogsTableMultiSelect } from 'Components/Table/ColumnSelection/LogsTableMultiSelect';\n\nimport { FieldNameMetaStore } from '../TableTypes';\nimport { reportInteraction } from '@grafana/runtime';\nimport { logger } from '../../../services/logger';\n\nexport function getReorderColumn(setColumns: (cols: FieldNameMetaStore) => void) {\n return (columns: FieldNameMetaStore, sourceIndex: number, destinationIndex: number) => {\n if (sourceIndex === destinationIndex) {\n return;\n }\n\n const pendingLabelState = { ...columns };\n const keys = Object.keys(pendingLabelState)\n .filter((key) => pendingLabelState[key].active)\n .map((key) => ({\n fieldName: key,\n index: pendingLabelState[key].index ?? 0,\n }))\n .sort((a, b) => a.index - b.index);\n\n const [source] = keys.splice(sourceIndex, 1);\n keys.splice(destinationIndex, 0, source);\n\n keys\n .filter((key) => key !== undefined)\n .forEach((key, index) => {\n pendingLabelState[key.fieldName].index = index;\n });\n\n // Set local state\n setColumns(pendingLabelState);\n };\n}\n\nfunction logError(columnName: string, columns: FieldNameMetaStore) {\n let logContext;\n try {\n logContext = {\n columns: JSON.stringify(columns),\n columnName: columnName,\n };\n } catch (e) {\n logContext = {\n msg: 'Table: ColumnSelectionDrawerWrap failed to encode context',\n columnName: columnName,\n };\n }\n logger.warn('failed to get column', logContext);\n}\n\nexport function ColumnSelectionDrawerWrap() {\n const { columns, setColumns, setVisible, filteredColumns, setFilteredColumns } = useTableColumnContext();\n const [searchValue, setSearchValue] = useState('');\n const toggleColumn = (columnName: string) => {\n if (!columns || !(columnName in columns)) {\n logError(columnName, columns);\n return;\n }\n\n const length = Object.keys(columns).filter((c) => columns[c].active).length;\n const isActive = !columns[columnName].active ? true : undefined;\n\n let pendingLabelState: FieldNameMetaStore;\n if (isActive) {\n pendingLabelState = {\n ...columns,\n [columnName]: {\n ...columns[columnName],\n active: isActive,\n index: length,\n },\n };\n } else {\n pendingLabelState = {\n ...columns,\n [columnName]: {\n ...columns[columnName],\n active: false,\n index: undefined,\n },\n };\n }\n\n // Analytics\n columnFilterEvent(columnName);\n\n // Set local state\n setColumns(pendingLabelState);\n\n // If user is currently filtering, update filtered state\n if (filteredColumns) {\n const active = !filteredColumns[columnName]?.active;\n let pendingFilteredLabelState: FieldNameMetaStore;\n if (active) {\n pendingFilteredLabelState = {\n ...filteredColumns,\n [columnName]: {\n ...filteredColumns[columnName],\n active: active,\n index: length,\n },\n };\n } else {\n pendingFilteredLabelState = {\n ...filteredColumns,\n [columnName]: {\n ...filteredColumns[columnName],\n active: false,\n index: undefined,\n },\n };\n }\n\n setFilteredColumns(pendingFilteredLabelState);\n setSearchValue('');\n }\n };\n\n const reorderColumn = getReorderColumn(setColumns);\n\n const clearSelection = () => {\n const pendingLabelState = { ...columns };\n let index = 0;\n Object.keys(pendingLabelState).forEach((key) => {\n const isDefaultField =\n pendingLabelState[key].type === 'BODY_FIELD' || pendingLabelState[key].type === 'TIME_FIELD';\n // after reset the only active fields are the special time and body fields\n pendingLabelState[key].active = isDefaultField;\n // reset the index\n pendingLabelState[key].index = isDefaultField ? index++ : undefined;\n });\n\n setColumns(pendingLabelState);\n setFilteredColumns(pendingLabelState);\n setSearchValue('');\n };\n\n // Tracking event for filtering columns\n function columnFilterEvent(columnName: string) {\n if (columns) {\n const newState = !columns[columnName]?.active;\n const priorActiveCount = Object.keys(columns).filter((column) => columns[column]?.active)?.length;\n const event = {\n columnAction: newState ? 'add' : 'remove',\n columnCount: newState ? priorActiveCount + 1 : priorActiveCount - 1,\n };\n reportInteraction('grafana_logs_app_table_column_filter_clicked', event);\n }\n }\n\n return (\n {\n setVisible(false);\n setFilteredColumns(columns);\n setSearchValue('');\n }}\n useCapture={true}\n >\n \n \n \n );\n}\n","import React, { PropsWithChildren } from 'react';\nimport { css, cx } from '@emotion/css';\n\nimport { Field, GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\n\ninterface DefaultCellWrapComponentProps {}\n\ninterface Props extends PropsWithChildren {\n rowIndex: number;\n field: Field;\n onClick?: () => void;\n onMouseIn?: () => void;\n onMouseOut?: () => void;\n}\n\nconst getStyles = (theme: GrafanaTheme2, bgColor?: string, numberOfMenuItems?: number) => ({\n active: css({\n // Save 20px for context menu\n height: `calc(${100}% + 36px)`,\n zIndex: theme.zIndex.tooltip,\n background: 'transparent',\n }),\n wrap: css({\n position: 'absolute',\n overflowX: 'hidden',\n whiteSpace: 'nowrap',\n width: '100%',\n height: '100%',\n left: 0,\n top: 0,\n margin: 'auto',\n background: bgColor ?? 'transparent',\n }),\n});\n\nexport const DefaultCellWrapComponent = (props: Props) => {\n return (\n \n {props.children}\n \n );\n};\n\nconst CellWrapInnerComponent = (props: Props) => {\n const theme = useTheme2();\n const cellState = useTableCellContext();\n const styles = getStyles(theme, undefined, cellState.cellIndex?.numberOfMenuItems);\n\n return (\n \n {props.children}\n \n );\n};\n","import React, { createContext, ReactNode, useContext } from 'react';\nimport { LogsFrame } from '../../../services/logsFrame';\nimport { AdHocVariableFilter, TimeRange } from '@grafana/data';\nimport { SelectedTableRow } from '../LogLineCellComponent';\n\nexport type Label = { name: string; values: string[]; indexed: boolean };\n\nexport type QueryContextType = {\n logsFrame: LogsFrame | null;\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n};\n\nexport const initialState = {\n logsFrame: null,\n addFilter: (filter: AdHocVariableFilter) => {},\n timeRange: undefined,\n selectedLine: undefined,\n};\n\nexport const QueryContext = createContext(initialState);\n\nexport const QueryContextProvider = ({\n children,\n logsFrame,\n addFilter,\n selectedLine,\n timeRange,\n}: {\n children: ReactNode;\n logsFrame: LogsFrame;\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport const useQueryContext = () => {\n return useContext(QueryContext);\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { Icon, useTheme2 } from '@grafana/ui';\nimport { useQueryContext } from './Context/QueryContext';\n\nimport { FilterOp } from '../../services/filterTypes';\n\ninterface Props {\n fieldType?: 'derived';\n label: string;\n value: string;\n showColumn?: () => void;\n links?: LinkModel[];\n pillType: 'logPill' | 'column';\n}\n\nconst getStyles = (theme: GrafanaTheme2, pillType: 'logPill' | 'column') => ({\n menu: css({\n position: 'relative',\n paddingRight: '5px',\n display: 'flex',\n minWidth: '60px',\n justifyContent: 'flex-start',\n }),\n menuItemsWrap: css({\n boxShadow: theme.shadows.z3,\n display: 'flex',\n background: theme.colors.background.secondary,\n padding: '5px 0',\n marginLeft: pillType === 'column' ? '5px' : undefined,\n }),\n menuItem: css({\n overflow: 'auto',\n textOverflow: 'ellipsis',\n cursor: 'pointer',\n paddingLeft: '5px',\n paddingRight: '5px',\n display: 'flex',\n alignItems: 'center',\n }),\n});\n\nexport const CellContextMenu = (props: Props) => {\n const theme = useTheme2();\n const styles = getStyles(theme, props.pillType);\n const { addFilter } = useQueryContext();\n\n return (\n \n \n {props.fieldType !== 'derived' && (\n <>\n {\n addFilter({\n key: props.label,\n value: props.value,\n operator: FilterOp.Equal,\n });\n }}\n >\n \n \n {\n addFilter({\n key: props.label,\n value: props.value,\n operator: FilterOp.NotEqual,\n });\n }}\n >\n \n \n \n )}\n\n {props.showColumn && (\n
\n \n \n \n \n
\n )}\n\n {props.links &&\n props.links.map((link) => {\n return (\n {\n window.open(link.href, '_blank');\n }}\n key={link.href}\n >\n \n \n );\n })}\n
\n
\n );\n};\n","export const LEVEL_NAME = 'detected_level';\nexport const DEFAULT_URL_COLUMNS = ['timestamp', 'body', 'Time', 'Line'];\n","import React, { ReactElement } from 'react';\nimport { css, cx } from '@emotion/css';\n\nimport { Field, FieldType, GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { CellContextMenu } from 'Components/Table/CellContextMenu';\nimport { getFieldMappings } from 'Components/Table/Table';\nimport { LEVEL_NAME } from './constants';\n\ninterface DefaultPillProps {\n label: string;\n showColumns?: () => void;\n value: string | unknown | ReactElement;\n rowIndex: number;\n field: Field;\n}\n\nconst getStyles = (theme: GrafanaTheme2, levelColor?: string) => ({\n activePillWrap: css({}),\n pillWrap: css({\n width: '100%',\n }),\n pill: css({\n border: `1px solid ${theme.colors.border.weak}`,\n '&:hover': {\n border: `1px solid ${theme.colors.border.strong}`,\n },\n marginRight: '5px',\n marginTop: '4px',\n marginLeft: '5px',\n padding: '2px 5px',\n position: 'relative',\n display: 'inline-flex',\n flexDirection: 'row-reverse',\n backgroundColor: 'transparent',\n\n paddingLeft: levelColor ? `${theme.spacing(0.75)}` : `2px`,\n\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n height: '100%',\n width: `${theme.spacing(0.25)}`,\n backgroundColor: levelColor,\n },\n }),\n menu: css({\n width: '100%',\n }),\n menuItem: css({\n overflow: 'auto',\n textOverflow: 'ellipsis',\n }),\n menuItemText: css({\n width: '65px',\n display: 'inline-block',\n }),\n});\nexport const DefaultPill = (props: DefaultPillProps) => {\n const { label, value } = props;\n const theme = useTheme2();\n const { cellIndex } = useTableCellContext();\n let levelColor;\n\n if (label === LEVEL_NAME) {\n const mappings = getFieldMappings().options;\n if (typeof value === 'string' && value in mappings) {\n levelColor = mappings[value].color;\n }\n }\n\n const isPillActive = cellIndex.index === props.rowIndex && props.field.name === cellIndex.fieldName;\n\n const styles = getStyles(theme, levelColor);\n return (\n
\n {!!value && (\n <>\n \n <>{value}\n \n {isPillActive && typeof value === 'string' && props.field.type !== FieldType.time && (\n \n )}\n \n )}\n
\n );\n};\n","import { ClipboardButton, IconButton, Modal, useTheme2 } from '@grafana/ui';\nimport React, { useCallback, useState } from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { testIds } from '../../services/testIds';\nimport { generateLogShortlink } from 'services/text';\n\nexport const getStyles = (theme: GrafanaTheme2, bgColor?: string) => ({\n clipboardButton: css({\n padding: 0,\n height: '100%',\n lineHeight: '1',\n width: '20px',\n }),\n inspectButton: css({\n display: 'inline-flex',\n verticalAlign: 'middle',\n margin: 0,\n overflow: 'hidden',\n borderRadius: '5px',\n }),\n iconWrapper: css({\n height: '35px',\n position: 'sticky',\n left: 0,\n display: 'flex',\n background: theme.colors.background.secondary,\n padding: `0 ${theme.spacing(0.5)}`,\n zIndex: 1,\n boxShadow: theme.shadows.z2,\n }),\n inspect: css({\n padding: '5px 3px',\n\n '&:hover': {\n color: theme.colors.text.link,\n cursor: 'pointer',\n },\n }),\n});\nexport function LineActionIcons(props: { rowIndex: number; value: unknown }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n const { logsFrame, timeRange } = useQueryContext();\n const logId = logsFrame?.idField?.values[props.rowIndex];\n const lineValue = logsFrame?.bodyField.values[props.rowIndex];\n const [isInspecting, setIsInspecting] = useState(false);\n const getText = useCallback(() => {\n if (timeRange) {\n return generateLogShortlink('selectedLine', { id: logId, row: props.rowIndex }, timeRange);\n }\n return '';\n }, [logId, props.rowIndex, timeRange]);\n return (\n <>\n
\n
\n setIsInspecting(true)}\n tabIndex={0}\n />\n
\n
\n \n
\n
\n <>\n {isInspecting && (\n setIsInspecting(false)} isOpen={true} title=\"Inspect value\">\n
{lineValue}
\n \n props.value as string}>\n Copy to Clipboard\n \n \n
\n )}\n \n \n );\n}\n","import React, { ReactElement } from 'react';\nimport { Row } from 'react-table';\nimport { css } from '@emotion/css';\n\nimport { FieldType, formattedValueToString, GrafanaTheme2 } from '@grafana/data';\nimport { CustomCellRendererProps, DataLinksContextMenu, getCellLinks, useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { DefaultCellWrapComponent } from 'Components/Table/DefaultCellWrapComponent';\nimport { DefaultPill } from 'Components/Table/DefaultPill';\nimport { LineActionIcons } from 'Components/Table/LineActionIcons';\n\nconst getStyles = (theme: GrafanaTheme2, fieldType?: FieldType) => ({\n flexWrap: css({\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: fieldType === FieldType.number ? 'row-reverse' : 'row',\n textAlign: fieldType === FieldType.number ? 'right' : 'left',\n }),\n content: css({\n position: 'relative',\n overflow: 'hidden',\n display: 'flex',\n height: '100%',\n }),\n linkWrapper: css({\n color: theme.colors.text.link,\n marginTop: '7px',\n marginLeft: '7px',\n '&:hover': {\n textDecoration: 'underline',\n },\n }),\n});\n\ninterface DefaultCellComponentCustomProps {\n fieldIndex: number;\n}\nexport const DefaultCellComponent = (props: CustomCellRendererProps & DefaultCellComponentCustomProps) => {\n let value = props.value;\n const field = props.field;\n const displayValue = field.display!(value);\n const theme = useTheme2();\n const styles = getStyles(theme, props.field.type);\n const { setVisible } = useTableColumnContext();\n const { cellIndex, setActiveCellIndex } = useTableCellContext();\n\n // We don't get back the full react.table row here, but the calling function only uses the index, which are in `CustomCellRendererProps`\n const row = { index: props.rowIndex } as Row;\n const hasLinks = Boolean(getCellLinks(props.field, row)?.length);\n\n if (value === null) {\n return <>;\n }\n\n if (React.isValidElement(props.value)) {\n value = props.value;\n } else if (typeof value === 'object') {\n value = JSON.stringify(props.value);\n } else {\n value = formattedValueToString(displayValue);\n }\n\n const renderValue = (value: string | unknown | ReactElement, label: string) => {\n return (\n setVisible(true)}\n label={label}\n value={value}\n />\n );\n };\n\n return (\n {\n if (props.rowIndex === cellIndex.index && props.field.name === cellIndex.fieldName) {\n return setActiveCellIndex({ index: null });\n }\n return setActiveCellIndex({ index: props.rowIndex, fieldName: props.field.name, numberOfMenuItems: 3 });\n }}\n field={props.field}\n rowIndex={props.rowIndex}\n >\n
\n {props.fieldIndex === 0 && }\n
\n\n {!hasLinks && renderValue(value, field.name)}\n\n {hasLinks && field.getLinks && (\n getCellLinks(field, row) ?? []}>\n {(api) => {\n if (api.openMenu) {\n return (\n
\n <>{value}\n
\n );\n } else {\n return (\n
\n <>{value}\n
\n );\n }\n }}\n
\n )}\n
\n \n );\n};\n","import React, { useMemo } from 'react';\nimport { Row } from 'react-table';\nimport { css, cx } from '@emotion/css';\n\nimport { DataFrame, Field, FieldType, getLinksSupplier, GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { getCellLinks, useTheme2 } from '@grafana/ui';\n\nimport { useTableCellContext } from 'Components/Table/Context/TableCellContext';\nimport { CellContextMenu } from 'Components/Table/CellContextMenu';\nimport { getFieldMappings } from 'Components/Table/Table';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { LEVEL_NAME } from './constants';\n\ninterface LogLinePillProps {\n originalField?: Field;\n field?: Field;\n columns: FieldNameMetaStore;\n label: string;\n showColumns: () => void;\n rowIndex: number;\n frame: DataFrame;\n originalFrame: DataFrame | undefined;\n isDerivedField: boolean;\n value: string;\n}\n\nconst getStyles = (theme: GrafanaTheme2, levelColor?: string) => ({\n pill: css({\n flex: '0 1 auto',\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n padding: `${theme.spacing(0.25)} ${theme.spacing(0.25)}`,\n position: 'relative',\n display: 'inline-flex',\n flexDirection: 'column',\n marginTop: theme.spacing(0.5),\n }),\n activePill: css({}),\n valueWrap: css({\n border: `1px solid ${theme.colors.background.secondary}`,\n boxShadow: `-2px 2px 5px 0px ${theme.colors.background.secondary}`,\n backgroundColor: 'transparent',\n cursor: 'pointer',\n position: 'relative',\n\n paddingRight: `${theme.spacing(0.5)}`,\n paddingLeft: levelColor ? `${theme.spacing(0.75)}` : `${theme.spacing(0.5)}`,\n\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n height: '100%',\n width: `${theme.spacing(0.25)}`,\n backgroundColor: levelColor,\n },\n\n '&:hover': {\n border: `1px solid ${theme.colors.border.strong}`,\n },\n }),\n});\n\nfunction LogLinePillValue(props: {\n fieldType?: 'derived';\n onClick: () => void;\n label: string;\n value: string;\n menuActive: boolean;\n onClickAdd: () => void;\n links?: LinkModel[];\n}) {\n const theme = useTheme2();\n\n let levelColor;\n if (props.label === LEVEL_NAME) {\n const mappings = getFieldMappings().options;\n if (props.value in mappings) {\n levelColor = mappings[props.value].color;\n }\n }\n\n const styles = getStyles(theme, levelColor);\n\n return (\n \n \n {props.label}={props.value}\n \n {props.menuActive && (\n \n )}\n \n );\n}\n\nexport const LogLinePill = (props: LogLinePillProps) => {\n const { label } = props;\n const { cellIndex, setActiveCellIndex } = useTableCellContext();\n const { columns, setColumns } = useTableColumnContext();\n const value = props.value;\n const templateSrv = getTemplateSrv();\n const replace = useMemo(() => templateSrv.replace.bind(templateSrv), [templateSrv]);\n\n // Need untransformed frame for links?\n const field = props.field;\n\n if (!field || field?.type === FieldType.other) {\n return null;\n }\n const row = { index: props.rowIndex } as Row;\n\n if (props.originalField && props.isDerivedField && props.originalFrame) {\n props.originalField.getLinks = getLinksSupplier(props.originalFrame, props.originalField, {}, replace);\n }\n\n const links = props.originalField && getCellLinks(props.originalField, row);\n\n /**\n * This Could be moved?\n * Callback called by the pill context menu\n * @param fieldName\n */\n const addFieldToColumns = (fieldName: string) => {\n const pendingColumns = { ...columns };\n\n const length = Object.keys(columns).filter((c) => columns[c].active).length;\n if (pendingColumns[fieldName].active) {\n pendingColumns[fieldName] = {\n ...pendingColumns[fieldName],\n active: false,\n index: undefined,\n };\n } else {\n pendingColumns[fieldName] = {\n ...pendingColumns[fieldName],\n active: true,\n index: length,\n };\n }\n\n setColumns(pendingColumns);\n };\n\n return (\n {\n if (\n props.rowIndex === cellIndex.index &&\n field.name === cellIndex.fieldName &&\n label === cellIndex.subFieldName\n ) {\n return setActiveCellIndex({ index: null });\n }\n\n return setActiveCellIndex({\n index: props.rowIndex,\n fieldName: field.name,\n subFieldName: label,\n numberOfMenuItems: props.isDerivedField ? 2 : 3,\n });\n }}\n menuActive={\n cellIndex.index === props.rowIndex && cellIndex.fieldName === field.name && cellIndex.subFieldName === label\n }\n fieldType={props.isDerivedField ? 'derived' : undefined}\n label={label}\n value={value}\n onClickAdd={() => addFieldToColumns(label)}\n links={links}\n />\n );\n};\n","import { Icon, useTheme2 } from '@grafana/ui';\nimport React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n scroller: css`\n position: absolute;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 20px;\n top: 32px;\n margin-top: -24px;\n // For some reason clicking on this button causes text to be selected in the following row\n user-select: none;\n `,\n scrollLeft: css`\n cursor: pointer;\n background: ${theme.colors.background.primary};\n\n &:hover {\n background: ${theme.colors.background.secondary};\n }\n `,\n scrollRight: css`\n cursor: pointer;\n background: ${theme.colors.background.primary};\n\n &:hover {\n background: ${theme.colors.background.secondary};\n }\n `,\n});\n\nconst stopScroll = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n left: id.current?.scrollLeft,\n });\n};\n\nconst goLeft = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n};\n\nconst goRight = (id: React.MutableRefObject) => {\n id?.current?.scrollTo({\n top: 0,\n left: id.current.scrollWidth,\n behavior: 'smooth',\n });\n};\n\nexport function Scroller({ scrollerRef: ref }: { scrollerRef: React.MutableRefObject }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n
\n goLeft(ref)} onPointerUp={() => stopScroll(ref)} className={styles.scrollLeft}>\n \n \n goRight(ref)} onPointerUp={() => stopScroll(ref)} className={styles.scrollRight}>\n \n \n
\n );\n}\n","import React from 'react';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\nimport { testIds } from '../../services/testIds';\n\nexport function RawLogLineText(props: { value: unknown }) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n return (\n
\n <>{props.value}\n
\n );\n}\n\nexport const getStyles = (theme: GrafanaTheme2, bgColor?: string) => ({\n rawLogLine: css({\n fontFamily: theme.typography.fontFamilyMonospace,\n height: '35px',\n lineHeight: '35px',\n paddingRight: theme.spacing(1.5),\n paddingLeft: theme.spacing(1),\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n});\n","import React, { useRef, useState } from 'react';\nimport { ScrollSyncPane } from 'react-scroll-sync';\n\nimport { FieldType, formattedValueToString, GrafanaTheme2, Labels } from '@grafana/data';\nimport { CustomCellRendererProps, useTheme2 } from '@grafana/ui';\n\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { LogLineState, useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { DefaultCellWrapComponent } from 'Components/Table/DefaultCellWrapComponent';\nimport { LogLinePill } from 'Components/Table/LogLinePill';\nimport { Scroller } from 'Components/Table/Scroller';\nimport { css } from '@emotion/css';\nimport { LineActionIcons } from 'Components/Table/LineActionIcons';\nimport { RawLogLineText } from 'Components/Table/RawLogLineText';\nimport { getBodyName } from '../../services/logsFrame';\nimport { LEVEL_NAME } from './constants';\n\nexport type SelectedTableRow = {\n row: number;\n id: string;\n};\n\ninterface Props extends CustomCellRendererProps {\n labels: Labels;\n fieldIndex: number;\n}\nexport const LogLineCellComponent = (props: Props) => {\n let value = props.value;\n const field = props.field;\n const displayValue = field.display!(value);\n const theme = useTheme2();\n const styles = getStyles(theme);\n const { columns, setVisible, bodyState } = useTableColumnContext();\n const { logsFrame } = useQueryContext();\n const [isHover, setIsHover] = useState(false);\n const ref = useRef(null);\n\n if (React.isValidElement(props.value)) {\n value = props.value;\n } else if (typeof value === 'object') {\n value = JSON.stringify(props.value);\n } else {\n value = formattedValueToString(displayValue);\n }\n\n /**\n * Render labels as log line pills\n * @param labels Label[]\n */\n const renderLabels = (labels: Labels) => {\n const columnLabelNames = Object.keys(columns);\n const labelNames = columnLabelNames\n .filter((name) => name !== getBodyName(logsFrame))\n .sort((a, b) => {\n // Sort level first\n if (a === LEVEL_NAME) {\n return -1;\n }\n if (b === LEVEL_NAME) {\n return 1;\n }\n // Then sort links\n if (columns[a].type === 'LINK_FIELD') {\n return -1;\n }\n if (columns[b].type === 'LINK_FIELD') {\n return 1;\n }\n\n // Finally sort fields by cardinality descending\n return columns[a].cardinality > columns[b].cardinality ? -1 : 1;\n });\n\n const filteredLabels = labelNames.filter(\n (label) =>\n // Not already visible in another column\n !columns[label].active &&\n // And the cardinality is greater than 1\n columns[label].cardinality > 1\n );\n\n return filteredLabels\n .map((label) => {\n const labelValue = labels[label];\n const untransformedField = logsFrame?.raw?.fields.find((field) => field.name === label);\n const rawValue = field?.values[props.rowIndex];\n const isDerived = !labelValue && !!rawValue;\n\n // If we have a label value, the field is not derived\n if (labelValue) {\n return (\n setVisible(true)}\n key={label}\n label={label}\n isDerivedField={false}\n value={labelValue}\n />\n );\n }\n\n // Otherwise, the field might be derived\n if (isDerived && untransformedField?.name) {\n const untransformedValue = untransformedField?.values[props.rowIndex];\n if (untransformedField?.type === FieldType.string && untransformedValue) {\n return (\n setVisible(true)}\n key={untransformedField.name}\n label={untransformedField.name}\n isDerivedField={true}\n />\n );\n }\n }\n\n return null;\n })\n .filter((v) => v);\n };\n\n const labels = renderLabels(props.labels);\n const isAuto = bodyState === LogLineState.auto;\n const hasLabels = labels.length > 0;\n\n return (\n {\n setIsHover(true);\n }}\n onMouseOut={() => {\n setIsHover(false);\n }}\n rowIndex={props.rowIndex}\n field={props.field}\n >\n \n
\n {/* First Field gets the icons */}\n {props.fieldIndex === 0 && }\n {/* Labels */}\n {isAuto && hasLabels && <>{labels}}\n {bodyState === LogLineState.labels && hasLabels && <>{labels}}\n {bodyState === LogLineState.labels && !hasLabels && }\n\n {/* Raw log line*/}\n {isAuto && !hasLabels && }\n {bodyState === LogLineState.text && }\n\n {isHover && }\n
\n
\n \n );\n};\n\nexport const getStyles = (theme: GrafanaTheme2) => ({\n content: css`\n white-space: nowrap;\n overflow-x: auto;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n padding-right: 30px;\n display: flex;\n align-items: flex-start;\n height: 100%;\n &::-webkit-scrollbar {\n display: none; /* Chrome, Safari and Opera */\n }\n\n &:after {\n pointer-events: none;\n content: '';\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n // Fade out text in last 10px to background color to add affordance to horiziontal scroll\n background: linear-gradient(to right, transparent calc(100% - 10px), ${theme.colors.background.primary});\n }\n `,\n});\n","import React, { PropsWithChildren, useRef } from 'react';\nimport { css } from '@emotion/css';\n\nimport { Field, GrafanaTheme2 } from '@grafana/data';\nimport { ClickOutsideWrapper, IconButton, Popover, useTheme2 } from '@grafana/ui';\n\nimport { useTableHeaderContext } from 'Components/Table/Context/TableHeaderContext';\nimport { useQueryContext } from './Context/QueryContext';\nimport { getBodyName } from '../../services/logsFrame';\nimport { LogLineState, useTableColumnContext } from './Context/TableColumnsContext';\n\nexport interface LogsTableHeaderProps extends PropsWithChildren {\n fieldIndex: number;\n}\n//@todo delete when released in Grafana core\nexport interface CustomHeaderRendererProps {\n field: Field;\n defaultContent: React.ReactNode;\n}\n\nconst getStyles = (theme: GrafanaTheme2, isFirstColumn: boolean, isLine: boolean) => ({\n logLineButton: css({\n marginLeft: '5px',\n }),\n tableHeaderMenu: css({\n label: 'tableHeaderMenu',\n width: '100%',\n minWidth: '250px',\n height: '100%',\n maxHeight: '400px',\n backgroundColor: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(2),\n margin: theme.spacing(1, 0),\n boxShadow: theme.shadows.z3,\n borderRadius: theme.shape.radius.default,\n }),\n leftAlign: css({\n label: 'left-align',\n display: 'flex',\n width: 'calc(100% - 20px)',\n }),\n clearButton: css({\n marginLeft: '5px',\n }),\n rightAlign: css({\n label: 'right-align',\n display: 'flex',\n marginRight: '5px',\n }),\n wrapper: css({\n label: 'wrapper',\n display: 'flex',\n marginLeft: isFirstColumn ? '56px' : '6px',\n // Body has extra padding then other columns\n width: isLine ? 'calc(100% + 6px)' : '100%',\n\n // Hack to show a visible resize indicator, despite 6px of padding on the header in grafana/table\n borderRight: `1px solid ${theme.colors.border.weak}`,\n marginRight: '-6px',\n }),\n defaultContentWrapper: css({\n borderLeft: isFirstColumn ? `1px solid ${theme.colors.border.weak}` : 'none',\n marginLeft: isFirstColumn ? '-6px' : 0,\n paddingLeft: isFirstColumn ? '12px' : 0,\n display: 'flex',\n }),\n});\n\nexport const LogsTableHeader = (props: LogsTableHeaderProps) => {\n const { setHeaderMenuActive, isHeaderMenuActive } = useTableHeaderContext();\n const { logsFrame } = useQueryContext();\n const referenceElement = useRef(null);\n const theme = useTheme2();\n const styles = getStyles(theme, props.fieldIndex === 0, props.field.name === getBodyName(logsFrame));\n const { columnWidthMap, setColumnWidthMap, setBodyState, bodyState } = useTableColumnContext();\n const isBodyField = props.field.name === getBodyName(logsFrame);\n\n const onLogTextToggle = () => {\n setBodyState(bodyState === LogLineState.text ? LogLineState.labels : LogLineState.text);\n };\n\n return (\n \n \n {props.defaultContent}\n {columnWidthMap && setColumnWidthMap && columnWidthMap?.[props.field.name] !== undefined && (\n {\n const { [props.field.name]: omit, ...map } = { ...columnWidthMap };\n setColumnWidthMap?.(map);\n }}\n />\n )}\n {isBodyField && (\n <>\n {bodyState === LogLineState.text ? (\n \n ) : (\n \n )}\n \n )}\n \n \n {\n setHeaderMenuActive(!isHeaderMenuActive);\n }}\n name={'ellipsis-v'}\n />\n \n\n {referenceElement.current && (\n //@ts-ignore\n setHeaderMenuActive(false)} useCapture={true}>\n
{props.children}
\n \n }\n referenceElement={referenceElement.current}\n />\n )}\n
\n );\n};\n","import { LogsTableHeader, LogsTableHeaderProps } from 'Components/Table/LogsTableHeader';\nimport { FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useTableHeaderContext } from 'Components/Table/Context/TableHeaderContext';\nimport { LogLineState, useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { Icon } from '@grafana/ui';\nimport React, { useCallback } from 'react';\nimport { Field } from '@grafana/data';\nimport { getBodyName } from '../../services/logsFrame';\nimport { css, cx } from '@emotion/css';\nimport { useQueryContext } from './Context/QueryContext';\n\nexport function LogsTableHeaderWrap(props: {\n headerProps: LogsTableHeaderProps;\n openColumnManagementDrawer: () => void;\n\n // Moves the current column forward or backward one index\n slideLeft?: (cols: FieldNameMetaStore) => void;\n slideRight?: (cols: FieldNameMetaStore) => void;\n\n autoColumnWidths?: () => void;\n}) {\n const { setHeaderMenuActive } = useTableHeaderContext();\n const { columns, setColumns, bodyState, setBodyState } = useTableColumnContext();\n const { logsFrame } = useQueryContext();\n const styles = getStyles();\n\n const hideColumn = useCallback(\n (field: Field) => {\n const pendingColumnState = { ...columns };\n\n const columnsThatNeedIndexUpdate = Object.keys(pendingColumnState)\n .filter((col) => {\n const columnIndex = pendingColumnState[col].index;\n const fieldIndex = pendingColumnState[field.name].index;\n return pendingColumnState[col].active && fieldIndex && columnIndex && columnIndex > fieldIndex;\n })\n .map((cols) => pendingColumnState[cols]);\n\n columnsThatNeedIndexUpdate.forEach((col) => {\n if (col.index !== undefined) {\n col.index--;\n }\n });\n\n pendingColumnState[field.name].active = false;\n pendingColumnState[field.name].index = undefined;\n setColumns(pendingColumnState);\n },\n [columns, setColumns]\n );\n\n const isBodyField = props.headerProps.field.name === getBodyName(logsFrame);\n\n return (\n \n
\n {\n props.openColumnManagementDrawer();\n setHeaderMenuActive(false);\n }}\n >\n \n Manage columns\n \n
\n \n {props.slideLeft && (\n \n )}\n {props.slideRight && (\n \n )}\n {isBodyField && (\n
\n {\n if (bodyState === LogLineState.text) {\n setBodyState(LogLineState.labels);\n } else {\n setBodyState(LogLineState.text);\n }\n }}\n >\n {bodyState === LogLineState.text ? (\n \n ) : (\n \n )}\n\n {bodyState === LogLineState.text ? 'Show labels' : 'Show log text'}\n \n
\n )}\n\n {props.autoColumnWidths && (\n \n )}\n
\n );\n}\n\nconst getStyles = () => {\n return {\n reverse: css({\n transform: 'scaleX(-1)',\n }),\n link: css({\n paddingTop: '5px',\n paddingBottom: '5px',\n }),\n icon: css({\n marginRight: '10px',\n }),\n linkWrap: css({}),\n };\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ScrollSync } from 'react-scroll-sync';\nimport { css } from '@emotion/css';\nimport { lastValueFrom } from 'rxjs';\n\nimport {\n applyFieldOverrides,\n CustomTransformOperator,\n DataFrame,\n DataFrameType,\n DataTransformerConfig,\n Field,\n FieldType,\n FieldWithIndex,\n Labels,\n MappingType,\n transformDataFrame,\n ValueMap,\n} from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { TableCellHeight, TableColoredBackgroundCellOptions } from '@grafana/schema';\nimport { Drawer, Table as GrafanaTable, TableCellDisplayMode, TableCustomCellOptions, useTheme2 } from '@grafana/ui';\n\nimport { TableCellContextProvider } from 'Components/Table/Context/TableCellContext';\nimport { useTableColumnContext } from 'Components/Table/Context/TableColumnsContext';\nimport { TableHeaderContextProvider } from 'Components/Table/Context/TableHeaderContext';\nimport {\n ColumnSelectionDrawerWrap,\n getReorderColumn,\n} from 'Components/Table/ColumnSelection/ColumnSelectionDrawerWrap';\nimport { DefaultCellComponent } from 'Components/Table/DefaultCellComponent';\nimport { LogLineCellComponent } from 'Components/Table/LogLineCellComponent';\nimport { CustomHeaderRendererProps } from 'Components/Table/LogsTableHeader';\nimport { FieldName, FieldNameMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { guessLogsFieldTypeForValue } from 'Components/Table/TableWrap';\nimport { LogsTableHeaderWrap } from 'Components/Table/LogsTableHeaderWrap';\nimport { getBodyName, getIdName, getTimeName, LogsFrame } from '../../services/logsFrame';\nimport { useQueryContext } from './Context/QueryContext';\nimport { testIds } from '../../services/testIds';\nimport { debounce } from 'lodash';\n\ninterface Props {\n height: number;\n timeZone: string;\n logsFrame: LogsFrame;\n width: number;\n labels: Labels[];\n}\n\nconst getStyles = () => ({\n section: css({\n position: 'relative',\n }),\n tableWrap: css({\n '.cellActions': {\n // Hacky but without inspect turned on the table will change the width of the row on hover, but we don't want the default icons to show\n display: 'none !important',\n },\n }),\n});\n\nfunction TableAndContext(props: {\n data: DataFrame;\n height: number;\n width: number;\n selectedLine?: number;\n logsFrame: LogsFrame;\n onResize: (fieldDisplayName: string, width: number) => void;\n}) {\n return (\n \n );\n}\n\nexport const Table = (props: Props) => {\n const { height, timeZone, logsFrame, width, labels } = props;\n const theme = useTheme2();\n const styles = getStyles();\n\n const [tableFrame, setTableFrame] = useState(undefined);\n const {\n columns,\n visible,\n setVisible,\n setFilteredColumns,\n setColumns,\n clearSelectedLine,\n columnWidthMap,\n setColumnWidthMap,\n } = useTableColumnContext();\n\n const { selectedLine } = useQueryContext();\n\n // Create a local state for selected line so we can clear the state tied to the URL\n const [localSelectedLine] = useState(selectedLine);\n\n const reorderColumn = getReorderColumn(setColumns);\n\n const templateSrv = getTemplateSrv();\n const replace = useMemo(() => templateSrv.replace.bind(templateSrv), [templateSrv]);\n\n const prepareTableFrame = useCallback(\n (frame: DataFrame): DataFrame => {\n if (!frame.length) {\n return frame;\n }\n\n const [frameWithOverrides] = applyFieldOverrides({\n data: [frame],\n timeZone: timeZone,\n theme: theme,\n replaceVariables: replace,\n fieldConfig: {\n defaults: {\n custom: {},\n },\n overrides: [],\n },\n });\n\n // `getLinks` and `applyFieldOverrides` are taken from TableContainer.tsx\n for (const [index, field] of frameWithOverrides.fields.entries()) {\n // If it's a string, then try to guess for a better type for numeric support in viz\n field.type =\n field.type === FieldType.string ? guessLogsFieldTypeForField(field) ?? FieldType.string : field.type;\n\n field.config = {\n ...field.config,\n\n custom: {\n inspect: true,\n filterable: true, // This sets the columns to be filterable\n headerComponent: (props: CustomHeaderRendererProps) => (\n \n setVisible(true)}\n slideLeft={\n index !== 0 ? (cols: FieldNameMetaStore) => reorderColumn(cols, index, index - 1) : undefined\n }\n slideRight={\n index !== frame.fields.length - 1\n ? (cols: FieldNameMetaStore) => reorderColumn(cols, index, index + 1)\n : undefined\n }\n autoColumnWidths={\n Object.keys(columnWidthMap).length > 0\n ? () => {\n setColumnWidthMap({});\n }\n : undefined\n }\n />\n \n ),\n width:\n columnWidthMap[field.name] ??\n getInitialFieldWidth(field, index, columns, width, frameWithOverrides.fields.length, logsFrame),\n cellOptions: getTableCellOptions(field, index, labels, logsFrame),\n ...field.config.custom,\n },\n // This sets the individual field value as filterable\n // filterable: isFieldFilterable(field, logsFrame?.bodyField.name ?? '', logsFrame?.timeField.name ?? ''),\n filterable: true,\n };\n }\n\n return frameWithOverrides;\n },\n // This function is building the table dataframe that will be transformed, even though the components within the dataframe (cells, headers) can mutate the dataframe!\n // If we try to update the dataframe whenever the columns are changed (which are rebuilt using this dataframe after being transformed), react will infinitely update frame -> columns -> frame -> ...\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [timeZone, theme, labels, width, replace, setVisible, columnWidthMap]\n );\n\n // prepare dataFrame\n useEffect(() => {\n const prepare = async () => {\n const transformations: Array = getExtractFieldsTransform(\n logsFrame.raw\n );\n\n let labelFilters = buildColumnsWithMeta(columns);\n\n const labelFiltersTransform = getOrganizeFieldsTransform(labelFilters);\n if (labelFiltersTransform) {\n transformations.push(labelFiltersTransform);\n } else {\n const specialFields = {\n time: logsFrame.timeField,\n body: logsFrame.bodyField,\n extraFields: logsFrame.extraFields,\n };\n if (specialFields && specialFields.body !== undefined && specialFields.time !== undefined) {\n transformations.push(\n getDefaultStateOrganizeFieldsTransform(\n specialFields as {\n time: FieldWithIndex;\n body: FieldWithIndex;\n }\n )\n );\n }\n }\n\n if (transformations.length > 0) {\n const transformedDataFrame: DataFrame[] = await lastValueFrom(\n // @ts-ignore\n transformDataFrame(transformations, [logsFrame.raw])\n );\n const tableFrame = prepareTableFrame(transformedDataFrame[0]);\n setTableFrame(tableFrame);\n } else {\n setTableFrame(prepareTableFrame(logsFrame.raw));\n }\n };\n prepare();\n }, [logsFrame.raw, logsFrame.bodyField, logsFrame.timeField, logsFrame.extraFields, prepareTableFrame, columns]);\n\n // Clear selected line from URL so it doesn't pollute future queries\n useEffect(() => {\n if (localSelectedLine && selectedLine) {\n clearSelectedLine();\n return;\n }\n }, [localSelectedLine, clearSelectedLine, selectedLine]);\n\n const idField = logsFrame.raw.fields.find((field) => field.name === getIdName(logsFrame));\n const lineIndex = idField?.values.findIndex((v) => v === localSelectedLine?.id);\n const cleanLineIndex = lineIndex && lineIndex !== -1 ? lineIndex : undefined;\n\n if (!tableFrame) {\n return <>;\n }\n\n const onResize = (fieldDisplayName: string, width: number) => {\n const key = Object.keys(columns)\n .filter((key) => columns[key].active)\n .find((key) => key === fieldDisplayName);\n\n if (key && width > 0) {\n const map = { ...columnWidthMap };\n map[key] = width;\n setColumnWidthMap(map);\n }\n };\n\n return (\n
\n {visible && (\n {\n setVisible(false);\n setFilteredColumns(columns);\n }}\n >\n \n \n )}\n\n
\n \n \n \n \n \n
\n
\n );\n};\n\nfunction getDefaultStateOrganizeFieldsTransform(specialFields: { time: FieldWithIndex; body: FieldWithIndex }) {\n return {\n id: 'organize',\n options: {\n indexByName: {\n [specialFields.time.name]: 0,\n [specialFields.body.name]: 1,\n },\n includeByName: {\n [specialFields.body.name]: true,\n [specialFields.time.name]: true,\n },\n },\n };\n}\n\nfunction guessLogsFieldTypeForField(field: Field): FieldType | undefined {\n // 1. Use the column name to guess\n if (field.name) {\n const name = field.name.toLowerCase();\n if (name === 'date' || name === 'time') {\n return FieldType.time;\n }\n }\n\n // 2. Check the first non-null value\n for (let i = 0; i < field.values.length; i++) {\n const v = field.values[i];\n if (v != null) {\n return guessLogsFieldTypeForValue(v);\n }\n }\n\n // Could not find anything\n return undefined;\n}\n\nexport const getFieldMappings = (): ValueMap => {\n return {\n options: {\n critical: {\n color: '#705da0',\n index: 0,\n },\n crit: {\n color: '#705da0',\n index: 1,\n },\n error: {\n color: '#e24d42',\n index: 2,\n },\n err: {\n color: '#e24d42',\n index: 3,\n },\n eror: {\n color: '#e24d42',\n index: 4,\n },\n warning: {\n color: '#FF9900',\n index: 5,\n },\n warn: {\n color: '#FF9900',\n index: 6,\n },\n info: {\n color: '#7eb26d',\n index: 7,\n },\n debug: {\n color: '#1f78c1',\n index: 8,\n },\n trace: {\n color: '#6ed0e0',\n index: 9,\n },\n },\n type: MappingType.ValueToText,\n };\n};\n\nfunction buildColumnsWithMeta(columnsWithMeta: Record) {\n // Create object of label filters to include columns selected by the user\n let labelFilters: Record = {};\n Object.keys(columnsWithMeta)\n .filter((key) => columnsWithMeta[key].active)\n .forEach((key) => {\n const index = columnsWithMeta[key].index;\n // Index should always be defined for any active column\n if (index !== undefined) {\n labelFilters[key] = index;\n }\n });\n\n return labelFilters;\n}\n\nfunction getOrganizeFieldsTransform(labelFilters: Record) {\n let labelFiltersInclude: Record = {};\n\n for (const key in labelFilters) {\n labelFiltersInclude[key] = true;\n }\n\n if (Object.keys(labelFilters).length > 0) {\n return {\n id: 'organize',\n options: {\n indexByName: labelFilters,\n includeByName: labelFiltersInclude,\n },\n };\n }\n return null;\n}\n\nexport function getExtractFieldsTransform(dataFrame: DataFrame) {\n return dataFrame.fields\n .filter((field: Field & { typeInfo?: { frame: string } }) => {\n const isFieldLokiLabels =\n field.typeInfo?.frame === 'json.RawMessage' &&\n field.name === 'labels' &&\n dataFrame?.meta?.type !== DataFrameType.LogLines;\n const isFieldDataplaneLabels =\n field.name === 'labels' && field.type === FieldType.other && dataFrame?.meta?.type === DataFrameType.LogLines;\n return isFieldLokiLabels || isFieldDataplaneLabels;\n })\n .flatMap((field: Field) => {\n return [\n {\n id: 'extractFields',\n options: {\n format: 'json',\n keepTime: false,\n replace: false,\n source: field.name,\n },\n },\n ];\n });\n}\n\nfunction getTableCellOptions(\n field: Field,\n fieldIndex: number,\n labels: Labels[],\n logsFrame: LogsFrame\n): TableCustomCellOptions | TableColoredBackgroundCellOptions {\n if (field.name === getBodyName(logsFrame)) {\n return {\n cellComponent: (props) => (\n \n ),\n type: TableCellDisplayMode.Custom,\n };\n }\n\n return {\n cellComponent: (props) => ,\n type: TableCellDisplayMode.Custom,\n };\n}\n\nfunction getInitialFieldWidth(\n field: Field,\n fieldIndex: number,\n columns: FieldNameMetaStore,\n tableWidth: number,\n numberOfFields: number,\n logsFrame: LogsFrame\n): number | undefined {\n const minWidth = 90;\n\n // Columns shouldn't take more than half the available space, unless there are only 2 columns\n const maxWidth = numberOfFields <= 2 ? tableWidth : Math.min(tableWidth / 2);\n\n // First field gets icons, and a little extra width\n const extraPadding = fieldIndex === 0 ? 50 : 0;\n\n // Time fields have consistent widths\n if (field.type === FieldType.time) {\n return 200 + extraPadding;\n }\n\n const columnMeta = columns[field.name];\n\n if (columnMeta === undefined) {\n return undefined;\n }\n\n const maxLength = Math.max(columnMeta.maxLength ?? 0, field.name.length);\n\n if (columnMeta.maxLength) {\n // Super rough estimate, about 6.5px per char, and 95px for some space for the header icons (remember when sorted a new icon is added to the table header).\n // I guess to be a little tighter we could only add the extra padding IF the field name is longer then the longest value\n return Math.min(Math.max(maxLength * 6.5 + 95 + extraPadding, minWidth + extraPadding), maxWidth);\n }\n\n if (field.name === getBodyName(logsFrame)) {\n return undefined;\n }\n\n // Just derived fields, which should have uniform length\n return Math.min(\n Math.max((field.values?.[0]?.length ?? 80) * 6.5 + 95 + extraPadding, minWidth + extraPadding),\n maxWidth\n );\n}\n","import React, { useCallback, useState } from 'react';\nimport { css } from '@emotion/css';\n\nimport { DataFrame, FieldType, FieldWithIndex, getTimeZone, guessFieldTypeFromValue, Labels } from '@grafana/data';\n\nimport { LogLineState, TableColumnContextProvider } from 'Components/Table/Context/TableColumnsContext';\nimport { Table } from 'Components/Table/Table';\nimport { FieldNameMeta, FieldNameMetaStore } from 'Components/Table/TableTypes';\nimport { useQueryContext } from 'Components/Table/Context/QueryContext';\nimport { useResizeObserver } from '@react-aria/utils';\n\nexport type SpecialFieldsType = {\n time: FieldWithIndex;\n body: FieldWithIndex;\n extraFields: FieldWithIndex[];\n};\n\n// matches common ISO 8601\nconst iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3,})?(?:Z|[-+]\\d{2}:?\\d{2})$/;\n\ninterface TableWrapProps {\n urlColumns: string[];\n urlTableBodyState?: LogLineState;\n setUrlColumns: (columns: string[]) => void;\n panelWrap: React.RefObject;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}\n\nconst getStyles = () => ({\n section: css({\n position: 'relative',\n }),\n});\n\nexport const TableWrap = (props: TableWrapProps) => {\n const { logsFrame } = useQueryContext();\n\n const [panelWrapSize, setPanelWrapSize] = useState({ width: 0, height: 0 });\n\n // Table needs to be positioned absolutely, passing in reference wrapping panelChrome from parent\n useResizeObserver({\n ref: props.panelWrap,\n onResize: () => {\n const element = props.panelWrap.current;\n if (element) {\n if (panelWrapSize.width !== element.clientWidth || panelWrapSize.height !== element.clientHeight) {\n setPanelWrapSize({\n width: element.clientWidth,\n height: element.clientHeight,\n });\n }\n }\n },\n });\n\n const styles = getStyles();\n const timeZone = getTimeZone();\n\n // This function is called when we want to grab the column names that are currently stored in the URL.\n // So instead we have to grab the current columns directly from the URL.\n const getColumnsFromProps = useCallback(\n (fieldNames: FieldNameMetaStore) => {\n const previouslySelected = props.urlColumns;\n if (previouslySelected?.length) {\n Object.values(previouslySelected).forEach((key, index) => {\n if (fieldNames[key]) {\n fieldNames[key].active = true;\n fieldNames[key].index = index;\n }\n });\n }\n\n return fieldNames;\n },\n [props.urlColumns]\n );\n\n // If the data frame is empty, there's nothing to viz, it could mean the user has unselected all columns\n if (!logsFrame || !logsFrame.raw.length) {\n return null;\n }\n\n const labels = logsFrame.getLogFrameLabelsAsLabels() ?? [];\n const numberOfLogLines = logsFrame ? logsFrame.raw.length : 0;\n\n // If we have labels and log lines\n let pendingLabelState = mapLabelsToInitialState(logsFrame.raw, labels);\n const specialFields = {\n time: logsFrame.timeField,\n body: logsFrame.bodyField,\n extraFields: logsFrame.extraFields,\n };\n\n // Normalize the other fields\n if (specialFields) {\n addSpecialLabelsState(\n [specialFields.time, specialFields.body, ...specialFields.extraFields],\n pendingLabelState,\n numberOfLogLines\n );\n\n pendingLabelState = getColumnsFromProps(pendingLabelState);\n\n // Get all active columns\n const active = Object.keys(pendingLabelState).filter((key) => pendingLabelState[key].active);\n\n // If nothing is selected, then select the default columns\n setSpecialFieldMeta(active, specialFields, pendingLabelState);\n }\n\n return (\n
\n \n \n \n
\n );\n};\n\nconst normalize = (value: number, total: number): number => {\n return Math.ceil((100 * value) / total);\n};\n\ntype labelName = string;\ntype labelValue = string;\n\nexport function getCardinalityMapFromLabels(labels: Labels[]) {\n const cardinalityMap = new Map; maxLength: number }>();\n labels.forEach((fieldLabels) => {\n const labelNames = Object.keys(fieldLabels);\n labelNames.forEach((labelName) => {\n if (cardinalityMap.has(labelName)) {\n const setObj = cardinalityMap.get(labelName);\n const values = setObj?.valueSet;\n const maxLength = setObj?.maxLength;\n\n if (values && !values?.has(fieldLabels[labelName])) {\n values?.add(fieldLabels[labelName]);\n if (maxLength && fieldLabels[labelName].length > maxLength) {\n cardinalityMap.set(labelName, { maxLength: fieldLabels[labelName].length, valueSet: values });\n }\n }\n } else {\n cardinalityMap.set(labelName, {\n maxLength: fieldLabels[labelName].length,\n valueSet: new Set([fieldLabels[labelName]]),\n });\n }\n });\n });\n\n return cardinalityMap;\n}\n\n/**\n * Guess the field type of the value\n * @param value\n */\nexport function guessLogsFieldTypeForValue(value: string) {\n let fieldType = guessFieldTypeFromValue(value);\n const isISO8601 = fieldType === 'string' && iso8601Regex.test(value);\n if (isISO8601) {\n fieldType = FieldType.time;\n }\n return fieldType;\n}\n\nfunction mapLabelsToInitialState(dataFrame: DataFrame, labels: Labels[]) {\n let pendingLabelState: FieldNameMetaStore = {};\n\n // Use a map to dedupe labels and count their occurrences in the logs\n const labelMap = new Map();\n const cardinality = getCardinalityMapFromLabels(labels);\n const numberOfLogLines = dataFrame ? dataFrame.length : 0;\n\n if (labels?.length && numberOfLogLines) {\n // Iterate through all of Labels\n labels.forEach((labels: Labels) => {\n const labelsArray = Object.keys(labels);\n // Iterate through the label values\n labelsArray.forEach((label) => {\n const cardinalityMap = cardinality.get(label);\n const cardinalityCount = cardinalityMap?.valueSet?.size ?? 0;\n // If it's already in our map, increment the count\n if (labelMap.has(label)) {\n const value = labelMap.get(label);\n\n if (value) {\n if (value?.active) {\n labelMap.set(label, {\n percentOfLinesWithLabel: value.percentOfLinesWithLabel + 1,\n active: true,\n index: value.index,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n } else {\n labelMap.set(label, {\n percentOfLinesWithLabel: value.percentOfLinesWithLabel + 1,\n active: false,\n index: undefined,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n }\n }\n // Otherwise add it\n } else {\n labelMap.set(label, {\n percentOfLinesWithLabel: 1,\n active: false,\n index: undefined,\n cardinality: cardinalityCount,\n maxLength: cardinalityMap?.maxLength,\n });\n }\n });\n });\n\n // Converting the map to an object\n pendingLabelState = Object.fromEntries(labelMap);\n\n // Convert count to percent of log lines\n Object.keys(pendingLabelState).forEach((key) => {\n pendingLabelState[key].percentOfLinesWithLabel = normalize(\n pendingLabelState[key].percentOfLinesWithLabel,\n numberOfLogLines\n );\n });\n }\n return pendingLabelState;\n}\n\n/**\n * Add special fields like time and body\n * @param specialFieldArray\n * @param pendingLabelState\n * @param numberOfLogLines\n */\nfunction addSpecialLabelsState(\n specialFieldArray: Array,\n pendingLabelState: FieldNameMetaStore,\n numberOfLogLines: number\n) {\n specialFieldArray.forEach((field) => {\n if (!field) {\n return;\n }\n const isActive = pendingLabelState[field.name]?.active;\n const index = pendingLabelState[field.name]?.index;\n if (isActive && index !== undefined) {\n pendingLabelState[field.name] = {\n percentOfLinesWithLabel: normalize(\n field.values.filter((value) => value !== null && value !== undefined).length,\n numberOfLogLines\n ),\n active: true,\n index: index,\n cardinality: numberOfLogLines,\n };\n } else {\n pendingLabelState[field.name] = {\n percentOfLinesWithLabel: normalize(\n field.values.filter((value) => value !== null && value !== undefined).length,\n numberOfLogLines\n ),\n active: false,\n index: undefined,\n cardinality: numberOfLogLines,\n };\n }\n });\n\n return pendingLabelState;\n}\n\nfunction setSpecialFieldMeta(\n active: string[],\n specialFields: SpecialFieldsType,\n pendingLabelState: FieldNameMetaStore\n) {\n // If no fields are visible, set defaults\n if (active.length === 0) {\n if (specialFields.body?.name) {\n pendingLabelState[specialFields.body?.name].active = true;\n pendingLabelState[specialFields.body?.name].index = 1;\n }\n if (specialFields.time?.name) {\n pendingLabelState[specialFields.time?.name].active = true;\n pendingLabelState[specialFields.time?.name].index = 0;\n }\n }\n\n if (specialFields.time?.name && specialFields.body?.name) {\n pendingLabelState[specialFields.body?.name].type = 'BODY_FIELD';\n pendingLabelState[specialFields.time?.name].type = 'TIME_FIELD';\n }\n\n if (specialFields.extraFields.length) {\n specialFields.extraFields.forEach((field) => {\n const hasLinks = field.config.links?.length;\n if (hasLinks) {\n pendingLabelState[field.name].type = 'LINK_FIELD';\n }\n });\n }\n}\n","import React from 'react';\n\nimport { TableWrap } from 'Components/Table/TableWrap';\nimport { AdHocVariableFilter, DataFrame, TimeRange } from '@grafana/data';\nimport { QueryContextProvider } from 'Components/Table/Context/QueryContext';\nimport { parseLogsFrame } from '../../services/logsFrame';\nimport { SelectedTableRow } from './LogLineCellComponent';\nimport { LogLineState } from './Context/TableColumnsContext';\n\ninterface TableProviderProps {\n dataFrame: DataFrame;\n setUrlColumns: (columns: string[]) => void;\n urlColumns: string[];\n addFilter: (filter: AdHocVariableFilter) => void;\n selectedLine?: SelectedTableRow;\n timeRange?: TimeRange;\n panelWrap: React.RefObject;\n clearSelectedLine: () => void;\n setUrlTableBodyState: (logLineState: LogLineState) => void;\n urlTableBodyState?: LogLineState;\n showColumnManagementDrawer: (isActive: boolean) => void;\n isColumnManagementActive: boolean;\n}\n\nexport const TableProvider = ({\n dataFrame,\n setUrlColumns,\n urlColumns,\n addFilter,\n selectedLine,\n timeRange,\n panelWrap,\n clearSelectedLine,\n setUrlTableBodyState,\n urlTableBodyState,\n showColumnManagementDrawer,\n isColumnManagementActive,\n}: TableProviderProps) => {\n if (!dataFrame) {\n return null;\n }\n\n const logsFrame = parseLogsFrame(dataFrame);\n if (!logsFrame) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LogsListScene } from './LogsListScene';\nimport { AdHocVariableFilter, GrafanaTheme2 } from '@grafana/data';\nimport { locationService } from '@grafana/runtime';\nimport { TableProvider } from '../Table/TableProvider';\nimport React, { useRef } from 'react';\nimport { Button, PanelChrome, useStyles2 } from '@grafana/ui';\nimport { LogsPanelHeaderActions } from '../Table/LogsHeaderActions';\nimport { css } from '@emotion/css';\nimport { addAdHocFilter } from './Breakdowns/AddToFiltersButton';\nimport { areArraysStrictlyEqual } from '../../services/comparison';\nimport { getLogsPanelFrame } from './ServiceScene';\nimport { getVariableForLabel } from '../../services/fields';\nimport { PanelMenu } from '../Panels/PanelMenu';\nimport { setDisplayedFields } from '../../services/store';\nimport { LogLineState } from '../Table/Context/TableColumnsContext';\nimport { DEFAULT_URL_COLUMNS } from '../Table/constants';\nimport { narrowStringsArray } from 'services/narrowing';\n\nlet defaultUrlColumns = DEFAULT_URL_COLUMNS;\n\ninterface LogsTableSceneState extends SceneObjectState {\n menu?: PanelMenu;\n isColumnManagementActive: boolean;\n}\nexport class LogsTableScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ ...state, isColumnManagementActive: false });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public showColumnManagementDrawer = (isActive: boolean) => {\n this.setState({\n isColumnManagementActive: isActive,\n });\n };\n\n public onActivate() {\n this.setState({\n menu: new PanelMenu({ addInvestigationsLink: false }),\n });\n this.onActivateSyncDisplayedFieldsWithUrlColumns();\n }\n\n private getParentScene() {\n return sceneGraph.getAncestor(this, LogsListScene);\n }\n\n // on activate sync displayed fields with url columns\n onActivateSyncDisplayedFieldsWithUrlColumns = () => {\n const searchParams = new URLSearchParams(locationService.getLocation().search);\n const urlColumnsParam = searchParams.get('urlColumns');\n const urlColumnsUrl = narrowStringsArray(urlColumnsParam);\n const parentModel = this.getParentScene();\n // Sync from url\n defaultUrlColumns = urlColumnsUrl\n ? this.urlHasDefaultUrlColumns(urlColumnsUrl)\n ? this.updateDefaultUrlColumns(urlColumnsUrl)\n : defaultUrlColumns\n : defaultUrlColumns;\n defaultUrlColumns = defaultUrlColumns.length > 0 ? defaultUrlColumns : defaultUrlColumns;\n parentModel.setState({\n urlColumns: Array.from(new Set([...defaultUrlColumns, ...parentModel.state.displayedFields])),\n });\n };\n\n // setUrlColumns update displayed fields in the parent scene\n updateDisplayedFields = (urlColumns: string[]) => {\n const parentModel = this.getParentScene();\n // Remove any default columns that are no longer in urlColumns, if the user has un-selected the default columns\n defaultUrlColumns = this.updateDefaultUrlColumns(urlColumns);\n\n // Remove any default urlColumn for displayedFields\n const newDisplayedFields = Array.from(new Set([...(urlColumns || [])])).filter(\n (field) => !defaultUrlColumns.includes(field)\n );\n // sync state displayedFields for LogsPanelScene\n parentModel.setState({\n displayedFields: newDisplayedFields,\n });\n // sync LocalStorage displayedFields for Go to explore\n setDisplayedFields(this, parentModel.state.displayedFields);\n };\n\n // check if url has default columns initially there are none so we need to keep default values\n urlHasDefaultUrlColumns = (urlColumns: string[]) => {\n return defaultUrlColumns.some((col) => urlColumns.includes(col));\n };\n\n // update defaultUrlColumns and match order\n updateDefaultUrlColumns = (urlColumns: string[]) => {\n defaultUrlColumns = defaultUrlColumns.reduce((acc, col) => {\n // return the column in the same index position as urlColumns\n if (urlColumns.includes(col)) {\n const urlIndex = urlColumns.indexOf(col);\n acc[urlIndex] = col;\n }\n return acc;\n }, []);\n\n return defaultUrlColumns;\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n // Get state from parent model\n const parentModel = sceneGraph.getAncestor(model, LogsListScene);\n const { data } = sceneGraph.getData(model).useState();\n const { selectedLine, urlColumns, visualizationType, tableLogLineState } = parentModel.useState();\n const { menu, isColumnManagementActive } = model.useState();\n\n // Get time range\n const timeRange = sceneGraph.getTimeRange(model);\n const { value: timeRangeValue } = timeRange.useState();\n\n const dataFrame = getLogsPanelFrame(data);\n\n // Define callback function to update filters in react\n const addFilter = (filter: AdHocVariableFilter) => {\n const variableType = getVariableForLabel(dataFrame, filter.key, model);\n addAdHocFilter(filter, parentModel, variableType);\n };\n\n // Get reference to panel wrapper so table knows how much space it can use to render\n const panelWrap = useRef(null);\n\n // Define callback function to update url columns in react\n const setUrlColumns = (urlColumns: string[]) => {\n if (!areArraysStrictlyEqual(urlColumns, parentModel.state.urlColumns)) {\n parentModel.setState({ urlColumns });\n // sync table urlColumns with log panel displayed fields\n model.updateDisplayedFields(urlColumns);\n }\n };\n\n const setUrlTableBodyState = (logLineState: LogLineState) => {\n parentModel.setState({ tableLogLineState: logLineState });\n };\n\n const clearSelectedLine = () => {\n if (parentModel.state.selectedLine) {\n parentModel.clearSelectedLine();\n }\n };\n\n return (\n
\n {/* @ts-expect-error todo: fix this when https://github.com/grafana/grafana/issues/103486 is done*/}\n : undefined}\n showMenuAlways={true}\n actions={\n <>\n \n \n \n }\n >\n {dataFrame && (\n \n )}\n \n
\n );\n };\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n panelWrapper: css({\n width: '100%',\n height: '100%',\n label: 'panel-wrapper-table',\n }),\n});\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport debounce from 'lodash/debounce';\nimport { ChangeEvent, KeyboardEvent, useState } from 'react';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getLineFiltersVariable, getLineFilterVariable } from '../../../services/variableGetters';\nimport {\n getLineFilterCase,\n getLineFilterExclusive,\n getLineFilterRegex,\n setLineFilterCase,\n setLineFilterExclusive,\n setLineFilterRegex,\n} from '../../../services/store';\nimport { RegexInputValue } from './RegexIconButton';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../../services/filterTypes';\nimport { LineFilterEditor } from './LineFilterEditor';\nimport { addCurrentUrlToHistory } from '../../../services/navigate';\n\ninterface LineFilterState extends SceneObjectState {\n lineFilter: string;\n caseSensitive: boolean;\n regex: boolean;\n exclusive: boolean;\n}\n\n/**\n * The line filter scene used in the logs tab\n */\nexport class LineFilterScene extends SceneObjectBase {\n static Component = LineFilterComponent;\n\n /**\n * Sets default regex/sensitivity/exclusivity state from local storage\n */\n constructor(state?: Partial) {\n super({\n lineFilter: state?.lineFilter ?? '',\n caseSensitive: state?.caseSensitive ?? getLineFilterCase(false),\n regex: state?.regex ?? getLineFilterRegex(false),\n exclusive: state?.exclusive ?? getLineFilterExclusive(false),\n ...state,\n });\n this.addActivationHandler(this.onActivate);\n }\n\n /**\n * Set initial state on activation\n */\n private onActivate = () => {\n const filter = this.getFilter();\n\n if (!filter) {\n return;\n }\n\n this.setState({\n lineFilter: filter.value,\n regex: filter.operator === LineFilterOp.regex || filter.operator === LineFilterOp.negativeRegex,\n caseSensitive: filter.key === LineFilterCaseSensitive.caseSensitive,\n exclusive: filter.operator === LineFilterOp.negativeMatch || filter.operator === LineFilterOp.negativeRegex,\n });\n\n return () => {\n // This won't clear the variable as the URL won't have time to sync, but it does prevent changes to the variable that haven't yet been synced with this scene state\n this.clearFilter();\n };\n };\n\n /**\n * Clear filter variable\n */\n private clearVariable() {\n const variable = getLineFilterVariable(this);\n variable.updateFilters([], {\n skipPublish: true,\n });\n this.setState({\n lineFilter: '',\n });\n }\n /**\n * Returns operator from current state\n */\n private getOperator(): LineFilterOp {\n if (this.state.regex && this.state.exclusive) {\n return LineFilterOp.negativeRegex;\n }\n if (this.state.regex && !this.state.exclusive) {\n return LineFilterOp.regex;\n }\n if (!this.state.regex && this.state.exclusive) {\n return LineFilterOp.negativeMatch;\n }\n if (!this.state.regex && !this.state.exclusive) {\n return LineFilterOp.match;\n }\n\n throw new Error('getOperator: failed to determine operation');\n }\n\n /**\n * Since there is no \"key\" for line-filters in logQL that will map to the key of the ad-hoc filter, we currently use the key to store the case sensitivity state\n * Note: This is technically a non-standard implementation (hack) of the ad-hoc variable, we should look into adding metadata to the ad-hoc variables in scenes\n * However the behavior of the ad-hoc variable lines up well with our use-case, we want case sensitivity state to be saved in the URL and to trigger query updates.\n * Since we use a custom renderer, this should be fine, but a source of tech-debt nonetheless.\n */\n private getFilterKey() {\n return this.state.caseSensitive ? LineFilterCaseSensitive.caseSensitive : LineFilterCaseSensitive.caseInsensitive;\n }\n\n /**\n * Returns the current ad-hoc variable filter\n */\n private getFilter() {\n const lineFilterVariable = getLineFilterVariable(this);\n return lineFilterVariable.state.filters[0];\n }\n\n /**\n * Clears filter input and clears debounce queue\n */\n clearFilter = () => {\n this.updateVariableDebounced.cancel();\n this.updateFilter('', false);\n };\n\n /**\n * Updates line filter state\n * Note: Updating/debouncing the queries onChange was removed to prevent people from accidentally hammering loki while writing line filters (particularly regex)\n * The code has been left in for now as we discussed adding an \"edit\" mode with a dedicated logs panel with a smaller line limit to let users debug the results as they type\n */\n updateFilter(lineFilter: string, debounced = true) {\n this.updateInputState(lineFilter);\n if (debounced) {\n this.updateVariableDebounced(lineFilter);\n } else {\n this.updateVariable(lineFilter);\n }\n }\n\n updateInputState(lineFilter: string) {\n this.setState({\n lineFilter,\n });\n }\n\n /**\n * Update exclusive state, triggers re-query without debounce\n */\n onToggleExclusive = (exclusive: boolean) => {\n setLineFilterExclusive(exclusive);\n this.setState({\n exclusive,\n });\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Moves the filter to the \"global\" line-filter ad-hoc variable after flushing the debounce queue.\n * Clears the state of the local ad-hoc variable.\n */\n onSubmitLineFilter = () => {\n addCurrentUrlToHistory();\n this.updateFilter(this.state.lineFilter, false);\n // Flush any debounced updates before grabbing the filter. Important that this happens before getFilter is called!\n this.updateVariableDebounced.flush();\n\n const lineFiltersVariable = getLineFiltersVariable(this);\n const existingFilters = lineFiltersVariable.state.filters;\n const thisFilter = this.getFilter();\n\n lineFiltersVariable.updateFilters([...existingFilters, thisFilter]);\n this.clearVariable();\n };\n\n /**\n * Passes the input value to the updateFilter method\n */\n handleChange = (e: ChangeEvent) => {\n this.updateInputState(e.target.value);\n };\n\n /**\n * Submits on enter\n */\n handleEnter = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && this.state.lineFilter) {\n this.onSubmitLineFilter();\n }\n };\n\n /**\n * Sets local state and triggers query on case sensitivity toggle\n */\n onCaseSensitiveToggle = (newState: LineFilterCaseSensitive) => {\n const caseSensitive = newState === LineFilterCaseSensitive.caseSensitive;\n\n // Set value to scene state\n this.setState({\n caseSensitive,\n });\n\n // Set value in local storage\n setLineFilterCase(caseSensitive);\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Sets local state and triggers query on regex toggle\n */\n onRegexToggle = (newState: RegexInputValue) => {\n const regex = newState === 'regex';\n\n // Set value to scene state\n this.setState({\n regex,\n });\n\n // Set value in local storage\n setLineFilterRegex(regex);\n\n this.updateFilter(this.state.lineFilter, false);\n };\n\n /**\n * Instance variable reference to debounced update method\n */\n updateVariableDebounced = debounce((search: string) => {\n this.updateVariable(search);\n }, 1000);\n\n /**\n * Updates the ad-hoc variable from local state and triggers a query.\n * Sends analytics event.\n */\n updateVariable = (search: string) => {\n this.updateVariableDebounced.flush();\n const variable = getLineFilterVariable(this);\n const variables = getLineFiltersVariable(this);\n const filter = {\n key: this.getFilterKey(),\n // The keyLabel is used to sort line filters by order added.\n keyLabel: variables.state.filters.length.toString(),\n operator: this.getOperator(),\n value: search,\n };\n\n variable.updateFilters([filter]);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.search_string_in_logs_changed,\n {\n searchQueryLength: search.length,\n containsLevel: search.toLowerCase().includes('level'),\n operator: filter.operator,\n caseSensitive: filter.key,\n }\n );\n };\n}\n\nfunction LineFilterComponent({ model }: SceneComponentProps) {\n const { lineFilter, caseSensitive, regex, exclusive } = model.useState();\n const [focus, setFocus] = useState(false);\n return LineFilterEditor({\n exclusive,\n lineFilter,\n caseSensitive,\n regex,\n onSubmitLineFilter: model.onSubmitLineFilter,\n handleEnter: model.handleEnter,\n onInputChange: model.handleChange,\n updateFilter: model.updateFilter,\n onCaseSensitiveToggle: model.onCaseSensitiveToggle,\n onRegexToggle: model.onRegexToggle,\n setExclusive: model.onToggleExclusive,\n onClearLineFilter: model.clearFilter,\n focus,\n setFocus,\n type: 'editor',\n });\n}\n","import React from 'react';\n\nimport {\n SceneComponentProps,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneTimeRangeLike,\n} from '@grafana/scenes';\nimport { SelectedTableRow } from '../Table/LogLineCellComponent';\nimport { LogsTableScene } from './LogsTableScene';\nimport { css } from '@emotion/css';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { locationService } from '@grafana/runtime';\nimport { LogsPanelScene } from './LogsPanelScene';\nimport {\n getDisplayedFields,\n getLogsVisualizationType,\n LogsVisualizationType,\n setLogsVisualizationType,\n} from 'services/store';\nimport { logger } from '../../services/logger';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { narrowLogsVisualizationType, narrowSelectedTableRow, unknownToStrings } from '../../services/narrowing';\nimport { LogLineState } from '../Table/Context/TableColumnsContext';\nimport { LineFilterScene } from './LineFilter/LineFilterScene';\n\nexport interface LogsListSceneState extends SceneObjectState {\n loading?: boolean;\n panel?: SceneFlexLayout;\n visualizationType: LogsVisualizationType;\n urlColumns?: string[];\n tableLogLineState?: LogLineState;\n selectedLine?: SelectedTableRow;\n $timeRange?: SceneTimeRangeLike;\n displayedFields: string[];\n lineFilter?: string;\n}\n\nexport class LogsListScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: ['urlColumns', 'selectedLine', 'visualizationType', 'displayedFields', 'tableLogLineState'],\n });\n private logsPanelScene?: LogsPanelScene = undefined;\n constructor(state: Partial) {\n super({\n ...state,\n visualizationType: getLogsVisualizationType(),\n displayedFields: [],\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n getUrlState() {\n const urlColumns = this.state.urlColumns ?? [];\n const selectedLine = this.state.selectedLine;\n const visualizationType = this.state.visualizationType;\n const displayedFields = this.state.displayedFields ?? getDisplayedFields(this) ?? [];\n return {\n urlColumns: JSON.stringify(urlColumns),\n selectedLine: JSON.stringify(selectedLine),\n visualizationType: JSON.stringify(visualizationType),\n displayedFields: JSON.stringify(displayedFields),\n tableLogLineState: JSON.stringify(this.state.tableLogLineState),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n try {\n if (typeof values.urlColumns === 'string') {\n const decodedUrlColumns: string[] = unknownToStrings(JSON.parse(values.urlColumns));\n if (decodedUrlColumns !== this.state.urlColumns) {\n stateUpdate.urlColumns = decodedUrlColumns;\n }\n }\n if (typeof values.selectedLine === 'string') {\n const unknownTableRow = narrowSelectedTableRow(JSON.parse(values.selectedLine));\n if (unknownTableRow) {\n const decodedSelectedTableRow: SelectedTableRow = unknownTableRow;\n if (decodedSelectedTableRow !== this.state.selectedLine) {\n stateUpdate.selectedLine = decodedSelectedTableRow;\n }\n }\n }\n if (typeof values.visualizationType === 'string') {\n const decodedVisualizationType = narrowLogsVisualizationType(JSON.parse(values.visualizationType));\n if (decodedVisualizationType && decodedVisualizationType !== this.state.visualizationType) {\n stateUpdate.visualizationType = decodedVisualizationType;\n }\n }\n if (typeof values.displayedFields === 'string') {\n const displayedFields = unknownToStrings(JSON.parse(values.displayedFields));\n if (displayedFields && displayedFields.length) {\n stateUpdate.displayedFields = displayedFields;\n }\n }\n if (typeof values.tableLogLineState === 'string') {\n const tableLogLineState = JSON.parse(values.tableLogLineState);\n if (tableLogLineState === LogLineState.labels || tableLogLineState === LogLineState.text) {\n stateUpdate.tableLogLineState = tableLogLineState;\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogsListScene: updateFromUrl unexpected error' });\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState(stateUpdate);\n }\n }\n\n clearSelectedLine() {\n this.setState({\n selectedLine: undefined,\n });\n }\n\n clearDisplayedFields = () => {\n this.setState({ displayedFields: [] });\n if (this.logsPanelScene) {\n this.logsPanelScene.clearDisplayedFields();\n }\n };\n\n public onActivate() {\n const searchParams = new URLSearchParams(locationService.getLocation().search);\n this.setStateFromUrl(searchParams);\n\n if (!this.state.panel) {\n this.updateLogsPanel();\n }\n\n this._subs.add(\n this.subscribeToState((newState, prevState) => {\n if (newState.visualizationType !== prevState.visualizationType) {\n this.updateLogsPanel();\n }\n })\n );\n }\n\n private setStateFromUrl(searchParams: URLSearchParams) {\n const selectedLineUrl = searchParams.get('selectedLine');\n const urlColumnsUrl = searchParams.get('urlColumns');\n const vizTypeUrl = searchParams.get('visualizationType');\n const displayedFieldsUrl = searchParams.get('displayedFields') ?? JSON.stringify(getDisplayedFields(this));\n const tableLogLineState = searchParams.get('tableLogLineState');\n\n this.updateFromUrl({\n selectedLine: selectedLineUrl,\n urlColumns: urlColumnsUrl,\n vizType: vizTypeUrl,\n displayedFields: displayedFieldsUrl,\n tableLogLineState,\n });\n }\n\n public setLogsVizOption = (options: Partial = {}) => {\n if (this.logsPanelScene) {\n this.logsPanelScene.setLogsVizOption(options);\n }\n };\n\n public updateLogsPanel = () => {\n this.setState({\n panel: this.getVizPanel(),\n });\n\n // Subscribe to line filter state so we can pass the current filter between different viz\n if (this.state.panel) {\n const lineFilterScenes = sceneGraph.findDescendents(this.state.panel, LineFilterScene);\n if (lineFilterScenes.length) {\n const lineFilterScene = lineFilterScenes[0];\n this._subs.add(\n lineFilterScene.subscribeToState((newState, prevState) => {\n if (newState.lineFilter !== prevState.lineFilter) {\n this.setState({\n lineFilter: newState.lineFilter,\n });\n }\n })\n );\n }\n }\n };\n\n public setVisualizationType = (type: LogsVisualizationType) => {\n this.setState({\n visualizationType: type,\n });\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_visualization_toggle,\n {\n visualisationType: type,\n }\n );\n setLogsVisualizationType(type);\n };\n\n private getVizPanel() {\n this.logsPanelScene = new LogsPanelScene({});\n\n return new SceneFlexLayout({\n direction: 'column',\n children:\n this.state.visualizationType === 'logs'\n ? [\n new SceneFlexLayout({\n children: [\n new SceneFlexItem({\n body: new LineFilterScene({ lineFilter: this.state.lineFilter }),\n xSizing: 'fill',\n }),\n ],\n }),\n new SceneFlexItem({\n height: 'calc(100vh - 220px)',\n body: this.logsPanelScene,\n }),\n ]\n : [\n new SceneFlexItem({\n body: new LineFilterScene({ lineFilter: this.state.lineFilter }),\n xSizing: 'fill',\n }),\n new SceneFlexItem({\n height: 'calc(100vh - 220px)',\n body: new LogsTableScene({}),\n }),\n ],\n });\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { panel } = model.useState();\n\n if (!panel) {\n return;\n }\n\n return (\n
\n \n
\n );\n };\n}\n\nconst styles = {\n panelWrapper: css({\n // Hack to select internal div\n 'section > div[class$=\"panel-content\"]': css({\n // A components withing the Logs viz sets contain, which creates a new containing block that is not body which breaks the popover menu\n contain: 'none',\n // Prevent overflow from spilling out of parent container\n overflow: 'auto',\n }),\n }),\n};\n","import { LogRowModel } from '@grafana/data';\nimport { IconButton } from '@grafana/ui';\nimport React, { MouseEvent, useCallback, useEffect, useState } from 'react';\n\ninterface Props {\n onClick(event: MouseEvent, row?: LogRowModel): void;\n}\n\nexport const CopyLinkButton = ({ onClick }: Props) => {\n const [copied, setCopied] = useState(false);\n\n useEffect(() => {\n let timeoutId: ReturnType;\n\n if (copied) {\n timeoutId = setTimeout(() => {\n setCopied(false);\n }, 2000);\n }\n\n return () => {\n clearTimeout(timeoutId);\n };\n }, [copied]);\n\n const handleClick = useCallback(\n (event: MouseEvent, row?: LogRowModel) => {\n onClick(event, row);\n setCopied(true);\n },\n [onClick]\n );\n\n return (\n \n );\n};\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\nimport { Button } from '@grafana/ui';\n\ninterface Props {\n clearFilters(): void;\n error: string;\n}\n\nexport const LogsPanelError = ({ clearFilters, error }: Props) => {\n return (\n \n
\n

{error}

\n \n
\n
\n );\n};\n","import {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { DataFrame, getValueFormat, LoadingState, LogRowModel, PanelData } from '@grafana/data';\nimport { getLogOption, getLogsVolumeOption, setDisplayedFields } from '../../services/store';\nimport React, { MouseEvent } from 'react';\nimport { LogsListScene } from './LogsListScene';\nimport { LoadingPlaceholder, useStyles2 } from '@grafana/ui';\nimport { addToFilters, FilterType } from './Breakdowns/AddToFiltersButton';\nimport { getVariableForLabel } from '../../services/fields';\nimport { VAR_FIELDS, VAR_LABELS, VAR_LEVELS, VAR_METADATA } from '../../services/variables';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport {\n getAdHocFiltersVariable,\n getLineFiltersVariable,\n getValueFromFieldsFilter,\n} from '../../services/variableGetters';\nimport { copyText, generateLogShortlink, resolveRowTimeRangeForSharing } from 'services/text';\nimport { CopyLinkButton } from './CopyLinkButton';\nimport { getLogsPanelSortOrderFromStore, LogOptionsScene } from './LogOptionsScene';\nimport { LogsVolumePanel, logsVolumePanelKey } from './LogsVolumePanel';\nimport { getPanelWrapperStyles, PanelMenu } from '../Panels/PanelMenu';\nimport { ServiceScene } from './ServiceScene';\nimport { LineFilterCaseSensitive, LineFilterOp } from '../../services/filterTypes';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { locationService } from '@grafana/runtime';\nimport { narrowLogsSortOrder } from '../../services/narrowing';\nimport { logger } from '../../services/logger';\nimport { LogsSortOrder } from '@grafana/schema';\nimport { getPrettyQueryExpr } from 'services/scenes';\nimport { LogsPanelError } from './LogsPanelError';\nimport { clearVariables } from 'services/variableHelpers';\nimport { isEmptyLogsResult } from 'services/logsFrame';\n\ninterface LogsPanelSceneState extends SceneObjectState {\n body?: VizPanel;\n error?: string;\n logsVolumeCollapsedByError?: boolean;\n sortOrder?: LogsSortOrder;\n wrapLogMessage?: boolean;\n}\n\nexport class LogsPanelScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: ['sortOrder', 'wrapLogMessage'],\n });\n\n constructor(state: Partial) {\n super({\n sortOrder: getLogsPanelSortOrderFromStore(),\n wrapLogMessage: Boolean(getLogOption('wrapLogMessage', false)),\n error: undefined,\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private setStateFromUrl() {\n const searchParams = new URLSearchParams(locationService.getLocation().search);\n\n this.updateFromUrl({\n sortOrder: searchParams.get('sortOrder'),\n wrapLogMessage: searchParams.get('wrapLogMessage'),\n });\n }\n\n getUrlState() {\n return {\n sortOrder: JSON.stringify(this.state.sortOrder),\n wrapLogMessage: JSON.stringify(this.state.wrapLogMessage),\n };\n }\n\n updateFromUrl(values: SceneObjectUrlValues) {\n const stateUpdate: Partial = {};\n try {\n if (typeof values.sortOrder === 'string' && values.sortOrder) {\n const decodedSortOrder = narrowLogsSortOrder(JSON.parse(values.sortOrder));\n if (decodedSortOrder) {\n stateUpdate.sortOrder = decodedSortOrder;\n this.setLogsVizOption({ sortOrder: decodedSortOrder });\n }\n }\n\n if (typeof values.wrapLogMessage === 'string' && values.wrapLogMessage) {\n const decodedWrapLogMessage = JSON.parse(values.wrapLogMessage);\n if (typeof decodedWrapLogMessage === 'boolean') {\n stateUpdate.wrapLogMessage = decodedWrapLogMessage;\n this.setLogsVizOption({ wrapLogMessage: decodedWrapLogMessage });\n this.setLogsVizOption({ prettifyLogMessage: decodedWrapLogMessage });\n }\n }\n } catch (e) {\n // URL Params can be manually changed and it will make JSON.parse() fail.\n logger.error(e, { msg: 'LogOptionsScene: updateFromUrl unexpected error' });\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState({ ...stateUpdate });\n }\n }\n\n public onActivate() {\n // Need viz to set options, but setting options will trigger query\n this.setStateFromUrl();\n\n if (!this.state.body) {\n this.setState({\n body: this.getLogsPanel({\n wrapLogMessage: this.state.wrapLogMessage,\n prettifyLogMessage: this.state.wrapLogMessage,\n sortOrder: this.state.sortOrder,\n }),\n });\n }\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n this._subs.add(\n serviceScene.subscribeToState((newState, prevState) => {\n if (newState.$data?.state.data?.state === LoadingState.Error) {\n this.handleLogsError(newState.$data?.state.data);\n } else if (\n newState.$data?.state.data?.state === LoadingState.Done &&\n isEmptyLogsResult(newState.$data?.state.data.series)\n ) {\n this.handleNoData();\n } else if (this.state.error) {\n this.clearLogsError();\n }\n if (newState.logsCount !== prevState.logsCount) {\n if (!this.state.body) {\n this.setState({\n body: this.getLogsPanel({\n wrapLogMessage: this.state.wrapLogMessage,\n prettifyLogMessage: this.state.wrapLogMessage,\n sortOrder: this.state.sortOrder,\n }),\n });\n } else {\n this.state.body.setState({\n title: this.getTitle(newState.logsCount),\n });\n }\n }\n })\n );\n }\n\n handleLogsError(data: PanelData) {\n const error = data.errors?.length ? data.errors[0] : data.error;\n const errorResponse = error?.message;\n if (errorResponse) {\n logger.error(new Error('Logs Panel error'), {\n msg: errorResponse,\n status: error.statusText ?? 'N/A',\n type: error.type ?? 'N/A',\n });\n }\n\n let errorMessage = 'Unexpected error response. Please review your filters or try a different time range.';\n if (errorResponse?.includes('parse error')) {\n errorMessage =\n 'Logs could not be retrieved due to invalid filter parameters. Please review your filters and try again.';\n } else if (errorResponse?.includes('response larger than the max message size')) {\n errorMessage =\n 'The response is too large to process. Try narrowing your search or using filters to reduce the data size.';\n }\n\n this.showLogsError(errorMessage);\n }\n\n handleNoData() {\n this.showLogsError('No logs match your search. Please review your filters or try a different time range.');\n }\n\n showLogsError(error: string) {\n const logsVolumeCollapsedByError = this.state.logsVolumeCollapsedByError ?? !getLogsVolumeOption('collapsed');\n\n this.setState({ error, logsVolumeCollapsedByError });\n\n if (logsVolumeCollapsedByError) {\n const logsVolume = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolume.state.panel?.setState({ collapsed: true });\n }\n }\n\n clearLogsError() {\n if (this.state.logsVolumeCollapsedByError) {\n const logsVolume = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolume.state.panel?.setState({ collapsed: false });\n }\n\n this.setState({ error: undefined, logsVolumeCollapsedByError: undefined });\n }\n\n onClickShowField = (field: string) => {\n const parent = this.getParentScene();\n const index = parent.state.displayedFields.indexOf(field);\n\n if (index === -1 && this.state.body) {\n const displayedFields = [...parent.state.displayedFields, field];\n this.setLogsVizOption({\n displayedFields,\n });\n parent.setState({ displayedFields });\n setDisplayedFields(this, parent.state.displayedFields);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_toggle_displayed_field\n );\n }\n };\n\n onClickHideField = (field: string) => {\n const parent = this.getParentScene();\n const index = parent.state.displayedFields.indexOf(field);\n\n if (index >= 0 && this.state.body) {\n const displayedFields = parent.state.displayedFields.filter((displayedField) => field !== displayedField);\n this.setLogsVizOption({\n displayedFields,\n });\n parent.setState({ displayedFields });\n setDisplayedFields(this, parent.state.displayedFields);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_toggle_displayed_field\n );\n }\n };\n\n setLogsVizOption(options: Partial = {}) {\n if (!this.state.body) {\n return;\n }\n if ('sortOrder' in options && options.sortOrder !== this.state.body.state.options.sortOrder) {\n const $data = sceneGraph.getData(this);\n const queryRunner =\n $data instanceof SceneQueryRunner ? $data : sceneGraph.findDescendents($data, SceneQueryRunner)[0];\n if (queryRunner) {\n queryRunner.runQueries();\n }\n }\n this.state.body.onOptionsChange(options);\n }\n\n clearDisplayedFields = () => {\n if (!this.state.body) {\n return;\n }\n this.setLogsVizOption({\n displayedFields: [],\n });\n setDisplayedFields(this, []);\n };\n\n private getParentScene() {\n return sceneGraph.getAncestor(this, LogsListScene);\n }\n\n private getTitle(logsCount: number | undefined) {\n const valueFormatter = getValueFormat('short');\n const formattedCount = logsCount !== undefined ? valueFormatter(logsCount, 0) : undefined;\n return formattedCount !== undefined ? `Logs (${formattedCount.text}${formattedCount.suffix?.trim()})` : 'Logs';\n }\n\n private getLogsPanel(options: Partial) {\n const parentModel = this.getParentScene();\n const visualizationType = parentModel.state.visualizationType;\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n return PanelBuilders.logs()\n .setTitle(this.getTitle(serviceScene.state.logsCount))\n .setOption('showTime', true)\n .setOption('onClickFilterLabel', this.handleLabelFilterClick)\n .setOption('onClickFilterOutLabel', this.handleLabelFilterOutClick)\n .setOption('isFilterLabelActive', this.handleIsFilterLabelActive)\n .setOption('onClickFilterString', this.handleFilterStringClick)\n .setOption('onClickFilterOutString', this.handleFilterOutStringClick)\n .setOption('onClickShowField', this.onClickShowField)\n .setOption('onClickHideField', this.onClickHideField)\n .setOption('displayedFields', parentModel.state.displayedFields)\n .setOption('sortOrder', options.sortOrder ?? getLogsPanelSortOrderFromStore())\n .setOption('wrapLogMessage', options.wrapLogMessage ?? Boolean(getLogOption('wrapLogMessage', false)))\n .setOption(\n 'prettifyLogMessage',\n options.prettifyLogMessage ?? Boolean(getLogOption('wrapLogMessage', false))\n )\n .setMenu(\n new PanelMenu({\n investigationOptions: { type: 'logs', getLabelName: () => `Logs: ${getPrettyQueryExpr(serviceScene)}` },\n })\n )\n .setOption('showLogContextToggle', true)\n .setShowMenuAlways(true)\n .setOption('enableInfiniteScrolling', true)\n .setOption('onNewLogsReceived', this.updateVisibleRange)\n .setOption('logRowMenuIconsAfter', [])\n .setHeaderActions(\n new LogOptionsScene({ visualizationType, onChangeVisualizationType: parentModel.setVisualizationType })\n )\n .build();\n }\n\n private updateVisibleRange = (newLogs: DataFrame[]) => {\n // Update logs count\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n serviceScene.setState({\n logsCount: newLogs[0].length,\n });\n\n if (serviceScene.state.$data?.state.data?.series) {\n // We need to update the state with the new data without triggering state-dependent changes.\n serviceScene.state.$data.setState({\n ...serviceScene.state.$data.state,\n data: {\n ...serviceScene.state.$data.state.data,\n series: newLogs,\n },\n });\n }\n\n const logsVolumeScene = sceneGraph.findByKeyAndType(this, logsVolumePanelKey, LogsVolumePanel);\n logsVolumeScene.updateVisibleRange(newLogs);\n };\n\n private handleShareLogLineClick = (event: MouseEvent, row?: LogRowModel) => {\n if (row?.rowId && this.state.body) {\n const parent = this.getParentScene();\n const timeRange = resolveRowTimeRangeForSharing(row);\n copyText(\n generateLogShortlink(\n 'panelState',\n {\n logs: { id: row.uid, displayedFields: parent.state.displayedFields },\n },\n timeRange\n )\n );\n }\n };\n\n private handleLabelFilterClick = (key: string, value: string, frame?: DataFrame) => {\n this.handleLabelFilter(key, value, frame, 'toggle');\n };\n\n private handleLabelFilterOutClick = (key: string, value: string, frame?: DataFrame) => {\n this.handleLabelFilter(key, value, frame, 'exclude');\n };\n\n private handleIsFilterLabelActive = (key: string, value: string) => {\n const labels = getAdHocFiltersVariable(VAR_LABELS, this);\n const fields = getAdHocFiltersVariable(VAR_FIELDS, this);\n const levels = getAdHocFiltersVariable(VAR_LEVELS, this);\n const metadata = getAdHocFiltersVariable(VAR_METADATA, this);\n\n const hasKeyValueFilter = (filter: AdHocFiltersVariable | null) => {\n return (\n filter &&\n filter.state.filters.findIndex(\n (filter) => filter.operator === '=' && filter.key === key && filter.value === value\n ) >= 0\n );\n };\n\n // Fields have json encoded values unlike the other variables, get the value for the matching filter and parse it before comparing\n const hasKeyValueFilterField = (filter: AdHocFiltersVariable | null) => {\n if (filter) {\n const fieldFilter = filter.state.filters.find((filter) => filter.operator === '=' && filter.key === key);\n\n if (fieldFilter) {\n const fieldValue = getValueFromFieldsFilter(fieldFilter, key);\n return fieldValue.value === value;\n }\n }\n return false;\n };\n\n return (\n hasKeyValueFilter(labels) ||\n hasKeyValueFilterField(fields) ||\n hasKeyValueFilter(levels) ||\n hasKeyValueFilter(metadata)\n );\n };\n\n private handleFilterOutStringClick = (value: string) => {\n const lineFiltersVar = getLineFiltersVariable(this);\n if (lineFiltersVar) {\n lineFiltersVar.setState({\n filters: [\n ...lineFiltersVar.state.filters,\n {\n operator: LineFilterOp.negativeMatch,\n value,\n key: LineFilterCaseSensitive.caseSensitive,\n keyLabel: lineFiltersVar.state.filters.length.toString(),\n },\n ],\n });\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_popover_line_filter,\n {\n selectionLength: value.length,\n }\n );\n }\n };\n\n private handleFilterStringClick = (value: string) => {\n const lineFiltersVar = getLineFiltersVariable(this);\n if (lineFiltersVar) {\n lineFiltersVar.setState({\n filters: [\n ...lineFiltersVar.state.filters,\n {\n operator: LineFilterOp.match,\n value,\n key: LineFilterCaseSensitive.caseSensitive,\n keyLabel: lineFiltersVar.state.filters.length.toString(),\n },\n ],\n });\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_popover_line_filter,\n {\n selectionLength: value.length,\n }\n );\n }\n };\n\n private handleLabelFilter(key: string, value: string, frame: DataFrame | undefined, operator: FilterType) {\n const variableType = getVariableForLabel(frame, key, this);\n addToFilters(key, value, operator, this, variableType);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.logs_detail_filter_applied,\n {\n filterType: variableType,\n key,\n action: operator,\n }\n );\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, error } = model.useState();\n const styles = useStyles2(getPanelWrapperStyles);\n if (body) {\n return (\n \n {!error && }\n {error && clearVariables(body)} />}\n \n );\n }\n return ;\n };\n}\n","import React from 'react';\n\nimport { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { usePluginComponent } from '@grafana/runtime';\nimport { VAR_LABELS } from 'services/variables';\nimport { getAdHocFiltersVariable } from 'services/variableGetters';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { getDataSource } from 'services/scenes';\n\ninterface LogsVolumeActionsState extends SceneObjectState {}\n\nexport class LogsVolumeActions extends SceneObjectBase {\n static Component = Component;\n}\n\ntype StreamSelector = Pick;\n\ntype TemporaryExemptionsProps = {\n /** An ordered list of lower-case [a-z]+ string identifiers to provide context clues of where this component is being embedded and how we might want to consider displaying it */\n contextHints?: string[];\n /** Currently selected data source */\n dataSourceUid?: string;\n /** The stream selector, broken down into a list of structured subselector filter items */\n streamSelector?: StreamSelector[];\n};\n\nfunction Component({ model }: SceneComponentProps) {\n const { component: TemporaryExemptionsButton, isLoading } = usePluginComponent(\n 'grafana-adaptivelogs-app/temporary-exemptions/v1'\n );\n\n const labelsVar = getAdHocFiltersVariable(VAR_LABELS, model);\n const { filters } = labelsVar.useState();\n const streamSelector = filters.map(({ key, operator, value }: AdHocVariableFilter) => ({ key, operator, value }));\n\n const dataSourceUid = getDataSource(model);\n\n if (isLoading || !TemporaryExemptionsButton) {\n return null;\n }\n\n return (\n \n );\n}\n","import React from 'react';\n\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { LegendDisplayMode, PanelContext, SeriesVisibilityChangeMode, useStyles2 } from '@grafana/ui';\nimport { getQueryRunner, setLogsVolumeFieldConfigs, syncLevelsVisibleSeries } from 'services/panel';\nimport { buildDataQuery, LINE_LIMIT } from 'services/query';\nimport { LEVEL_VARIABLE_VALUE } from 'services/variables';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getTimeSeriesExpr } from '../../services/expressions';\nimport { toggleLevelFromFilter } from 'services/levels';\nimport { DataFrame, getValueFormat, LoadingState } from '@grafana/data';\nimport { getFieldsVariable, getLabelsVariable, getLevelsVariable } from '../../services/variableGetters';\nimport { areArraysEqual } from '../../services/comparison';\nimport { getPanelWrapperStyles, PanelMenu } from '../Panels/PanelMenu';\nimport { ServiceScene } from './ServiceScene';\nimport { getSeriesVisibleRange, getVisibleRangeFrame } from 'services/logsFrame';\nimport { getLogsVolumeOption, setLogsVolumeOption } from 'services/store';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { LogsVolumeActions } from './LogsVolumeActions';\nimport { AddFilterEvent } from './Breakdowns/AddToFiltersButton';\nimport { LevelsVariableScene } from '../IndexScene/LevelsVariableScene';\n\nexport interface LogsVolumePanelState extends SceneObjectState {\n panel?: VizPanel;\n}\n\nexport const logsVolumePanelKey = 'logs-volume-panel';\nexport class LogsVolumePanel extends SceneObjectBase {\n private updatedLogSeries: DataFrame[] | null = null;\n constructor(state: LogsVolumePanelState) {\n super({\n ...state,\n key: logsVolumePanelKey,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n if (!this.state.panel) {\n const panel = this.getVizPanel();\n this.setState({\n panel,\n });\n this.updateContainerHeight(panel);\n }\n\n const labels = getLabelsVariable(this);\n const fields = getFieldsVariable(this);\n\n // Set panel on labels variable filter update\n this._subs.add(\n labels.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setState({\n panel: this.getVizPanel(),\n });\n }\n })\n );\n\n // Set Panel on fields variable filter update\n this._subs.add(\n fields.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.setState({\n panel: this.getVizPanel(),\n });\n }\n })\n );\n\n // trigger variable render on AddFilterEvent, set filter state to trigger logs panel query\n this._subs.add(\n this.subscribeToEvent(AddFilterEvent, (event) => {\n if (event.key === LEVEL_VARIABLE_VALUE) {\n const levelsVariableScene = sceneGraph.findObject(this, (obj) => obj instanceof LevelsVariableScene);\n if (levelsVariableScene instanceof LevelsVariableScene) {\n const levelsVar = getLevelsVariable(this);\n levelsVar.setState({ filters: levelsVar.state.filters });\n }\n }\n })\n );\n }\n\n private getTitle(totalLogsCount: number | undefined, logsCount: number | undefined) {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const maxLines = indexScene.state.ds?.maxLines ?? LINE_LIMIT;\n const valueFormatter = getValueFormat('short');\n const formattedTotalCount = totalLogsCount !== undefined ? valueFormatter(totalLogsCount, 0) : undefined;\n // The instant query (totalLogsCount) doesn't return good results for small result sets, if we're below the max number of lines, use the logs query result instead.\n if (totalLogsCount === undefined && logsCount !== undefined && logsCount < maxLines) {\n const formattedCount = valueFormatter(logsCount, 0);\n return formattedCount !== undefined\n ? `Log volume (${formattedCount.text}${formattedCount.suffix?.trim()})`\n : 'Log volume';\n }\n return formattedTotalCount !== undefined\n ? `Log volume (${formattedTotalCount.text}${formattedTotalCount.suffix?.trim()})`\n : 'Log volume';\n }\n\n private getVizPanel() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const viz = PanelBuilders.timeseries()\n .setTitle(this.getTitle(serviceScene.state.totalLogsCount, serviceScene.state.logsCount))\n .setOption('legend', { showLegend: true, calcs: ['sum'], displayMode: LegendDisplayMode.List })\n .setUnit('short')\n .setMenu(new PanelMenu({ investigationOptions: { labelName: 'level' } }))\n .setCollapsible(true)\n .setCollapsed(getLogsVolumeOption('collapsed'))\n .setHeaderActions(new LogsVolumeActions({}))\n .setShowMenuAlways(true)\n .setData(\n getQueryRunner([\n buildDataQuery(getTimeSeriesExpr(this, LEVEL_VARIABLE_VALUE, false), {\n legendFormat: `{{${LEVEL_VARIABLE_VALUE}}}`,\n }),\n ])\n );\n\n setLogsVolumeFieldConfigs(viz);\n\n const panel = viz.build();\n panel.setState({\n extendPanelContext: (_, context) => this.extendTimeSeriesLegendBus(context),\n });\n\n this._subs.add(\n panel.subscribeToState((newState, prevState) => {\n if (newState.collapsed !== prevState.collapsed) {\n this.updateContainerHeight(panel);\n setLogsVolumeOption('collapsed', newState.collapsed ? 'true' : undefined);\n }\n })\n );\n\n this._subs.add(\n panel.state.$data?.subscribeToState((newState) => {\n if (newState.data?.state !== LoadingState.Done) {\n return;\n }\n if (serviceScene.state.$data?.state.data?.state === LoadingState.Done && !newState.data.annotations?.length) {\n this.updateVisibleRange(serviceScene.state.$data?.state.data?.series);\n } else {\n this.displayVisibleRange();\n }\n syncLevelsVisibleSeries(panel, newState.data.series, this);\n })\n );\n\n this._subs.add(\n serviceScene.state.$data?.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n this.updateVisibleRange(newState.data.series);\n }\n })\n );\n\n this._subs.add(\n serviceScene.subscribeToState((newState, prevState) => {\n if (newState.totalLogsCount !== prevState.totalLogsCount || newState.logsCount !== undefined) {\n if (!this.state.panel) {\n this.setState({\n panel: this.getVizPanel(),\n });\n } else {\n this.state.panel.setState({\n title: this.getTitle(newState.totalLogsCount, newState.logsCount),\n });\n }\n }\n })\n );\n\n return panel;\n }\n\n public updateContainerHeight(panel: VizPanel) {\n const containerLayout = sceneGraph.getAncestor(panel, SceneFlexLayout);\n const height = panel.state.collapsed ? 35 : Math.max(Math.round(window.innerHeight * 0.2), 100);\n containerLayout.setState({\n minHeight: height,\n height: height,\n maxHeight: height,\n });\n }\n\n public updateVisibleRange(data: DataFrame[] = []) {\n this.updatedLogSeries = data;\n this.displayVisibleRange();\n }\n\n private displayVisibleRange() {\n const panel = this.state.panel;\n if (\n !panel ||\n !panel.state.$data?.state.data ||\n panel.state.$data?.state.data.state !== LoadingState.Done ||\n !this.updatedLogSeries\n ) {\n return;\n }\n const visibleRange = getSeriesVisibleRange(this.updatedLogSeries);\n this.updatedLogSeries = null;\n panel.state.$data.setState({\n data: {\n ...panel.state.$data.state.data,\n annotations: [getVisibleRangeFrame(visibleRange.start, visibleRange.end)],\n },\n });\n }\n\n private extendTimeSeriesLegendBus = (context: PanelContext) => {\n const levelFilter = getLevelsVariable(this);\n this._subs.add(\n levelFilter?.subscribeToState(() => {\n const panel = this.state.panel;\n if (!panel?.state.$data?.state.data?.series) {\n return;\n }\n\n syncLevelsVisibleSeries(panel, panel?.state.$data?.state.data?.series, this);\n })\n );\n\n context.onToggleSeriesVisibility = (label: string, mode: SeriesVisibilityChangeMode) => {\n const action = toggleLevelFromFilter(label, this);\n this.publishEvent(new AddFilterEvent('legend', 'include', LEVEL_VARIABLE_VALUE, label), true);\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.level_in_logs_volume_clicked,\n {\n level: label,\n action,\n }\n );\n };\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { panel } = model.useState();\n if (!panel) {\n return;\n }\n const styles = useStyles2(getPanelWrapperStyles);\n\n return (\n \n \n \n );\n };\n}\n","import {\n SceneComponentProps,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneTimeRangeLike,\n} from '@grafana/scenes';\nimport { ButtonGroup, Dropdown, IconName, Menu, MenuGroup, ToolbarButton } from '@grafana/ui';\nimport React from 'react';\nimport { config, getAppEvents, getBackendSrv, locationService, reportInteraction } from '@grafana/runtime';\nimport { AppEvents, toUtc, urlUtil } from '@grafana/data';\nimport { copyText } from '../../services/text';\n\ninterface ShortLinkMenuItemData {\n key: string;\n label: string;\n icon: IconName;\n getUrl: Function;\n shorten: boolean;\n absTime: boolean;\n}\n\ninterface ShortLinkGroupData {\n key: string;\n label: string;\n items: ShortLinkMenuItemData[];\n}\n\nexport interface ShareButtonSceneState extends SceneObjectState {\n lastSelected: ShortLinkMenuItemData;\n isOpen: boolean;\n /**\n * Reference to $timeRange\n */\n getSceneTimeRange?: () => SceneTimeRangeLike;\n /**\n * Callback on link copy\n */\n onCopyLink?: (shortened: boolean, absTime: boolean, url?: string) => void;\n}\n\nexport class ShareButtonScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({ isOpen: false, lastSelected: defaultMode, ...state });\n }\n\n public setIsOpen(isOpen: boolean) {\n this.setState({ isOpen });\n }\n\n public onCopyLink(shorten: boolean, absTime: boolean, url?: string) {\n if (shorten) {\n createAndCopyShortLink(url || global.location.href);\n reportInteraction('grafana_explore_shortened_link_clicked', { isAbsoluteTime: absTime });\n } else {\n copyText(\n url !== undefined\n ? `${window.location.protocol}//${window.location.host}${config.appSubUrl}${url}`\n : global.location.href\n );\n\n if (this.state.onCopyLink) {\n this.state.onCopyLink(shorten, absTime, url);\n }\n }\n }\n\n static MenuActions = ({ model }: SceneComponentProps) => {\n const menuOptions: ShortLinkGroupData[] = [\n {\n key: 'normal',\n label: 'Normal URL links',\n items: [\n {\n key: 'copy-shortened-link',\n icon: 'link',\n label: 'Copy shortened URL',\n getUrl: () => undefined,\n shorten: true,\n absTime: false,\n },\n {\n key: 'copy-link',\n icon: 'link',\n label: 'Copy URL',\n getUrl: () => undefined,\n shorten: false,\n absTime: false,\n },\n ],\n },\n {\n key: 'timesync',\n label: 'Time-sync URL links (share with time range intact)',\n items: [\n {\n key: 'copy-short-link-abs-time',\n icon: 'clock-nine',\n label: 'Copy absolute shortened URL',\n shorten: true,\n getUrl: () => {\n return constructAbsoluteUrl(\n model.state.getSceneTimeRange !== undefined\n ? model.state.getSceneTimeRange()\n : sceneGraph.getTimeRange(model)\n );\n },\n absTime: true,\n },\n {\n key: 'copy-link-abs-time',\n icon: 'clock-nine',\n label: 'Copy absolute URL',\n shorten: false,\n getUrl: () => {\n return constructAbsoluteUrl(\n model.state.getSceneTimeRange !== undefined\n ? model.state.getSceneTimeRange()\n : sceneGraph.getTimeRange(model)\n );\n },\n absTime: true,\n },\n ],\n },\n ];\n\n return (\n \n {menuOptions.map((groupOption) => {\n return (\n \n {groupOption.items.map((option) => {\n return (\n {\n const url = option.getUrl();\n model.onCopyLink(option.shorten, option.absTime, url);\n model.setState({\n lastSelected: option,\n });\n }}\n />\n );\n })}\n \n );\n })}\n \n );\n };\n\n static Component = ({ model }: SceneComponentProps) => {\n const { lastSelected, isOpen } = model.useState();\n\n return (\n \n {\n const url = lastSelected.getUrl();\n model.onCopyLink(lastSelected.shorten, lastSelected.absTime, url);\n }}\n aria-label={'Copy shortened URL'}\n >\n Share\n \n }\n placement=\"bottom-end\"\n onVisibleChange={model.setIsOpen.bind(model)}\n >\n \n \n \n );\n };\n}\n\nconst defaultMode: ShortLinkMenuItemData = {\n key: 'copy-link',\n label: 'Copy shortened URL',\n icon: 'share-alt',\n getUrl: () => undefined,\n shorten: true,\n absTime: false,\n};\n\n// Adapted from grafana/grafana/public/app/core/utils/shortLinks.ts shortLinks.ts\nfunction buildHostUrl() {\n return `${window.location.protocol}//${window.location.host}${config.appSubUrl}`;\n}\n\nfunction getRelativeURLPath(url: string) {\n let path = url.replace(buildHostUrl(), '');\n return path.startsWith('/') ? path.substring(1, path.length) : path;\n}\n\nexport const createShortLink = async function (path: string) {\n const appEvents = getAppEvents();\n try {\n const shortLink = await getBackendSrv().post(`/api/short-urls`, {\n path: getRelativeURLPath(path),\n });\n return shortLink.url;\n } catch (err) {\n console.error('Error when creating shortened link: ', err);\n\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: ['Error generating shortened link'],\n });\n }\n};\n\nexport const createAndCopyShortLink = async (path: string) => {\n const appEvents = getAppEvents();\n const shortLink = await createShortLink(path);\n if (shortLink) {\n copyText(shortLink);\n appEvents.publish({\n type: AppEvents.alertSuccess.name,\n payload: ['Shortened link copied to clipboard'],\n });\n } else {\n appEvents.publish({\n type: AppEvents.alertError.name,\n payload: ['Error generating shortened link'],\n });\n }\n};\n\n/**\n * Adapted from /grafana/grafana/public/app/features/explore/utils/links.ts\n * Returns the current URL with absolute time range\n */\nconst constructAbsoluteUrl = (timeRange: SceneTimeRangeLike): string => {\n const from = toUtc(timeRange.state.value.from);\n const to = toUtc(timeRange.state.value.to);\n const location = locationService.getLocation();\n const searchParams = urlUtil.getUrlSearchParams();\n searchParams['from'] = from.toISOString();\n searchParams['to'] = to.toISOString();\n return urlUtil.renderUrl(location.pathname, searchParams);\n};\n","import { sceneGraph, SceneObjectState } from '@grafana/scenes';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { logger } from '../../../../services/logger';\nimport { addCurrentUrlToHistory } from '../../../../services/navigate';\n\nexport interface FilterByPatternsButtonState extends SceneObjectState {\n pattern: string;\n type: 'exclude' | 'include' | 'undo';\n}\n\nexport interface FilterByPatternsState extends FilterByPatternsButtonState {\n indexScene: IndexScene;\n}\n\nexport function onPatternClick(props: FilterByPatternsState) {\n const { indexScene: staleIndex, pattern, type } = { ...props };\n\n const indexScene = sceneGraph.getAncestor(staleIndex, IndexScene);\n\n if (!indexScene) {\n logger.warn('logs exploration scene not found');\n return;\n }\n\n addCurrentUrlToHistory();\n const { patterns = [] } = indexScene.state;\n\n // Remove the pattern if it's already there\n const filteredPatterns = patterns.filter((pat) => pat.pattern !== pattern);\n // Analytics\n const includePatternsLength = filteredPatterns.filter((p) => p.type === 'include')?.length ?? 0;\n const excludePatternsLength = filteredPatterns.filter((p) => p.type === 'exclude')?.length ?? 0;\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_selected, {\n type: type,\n includePatternsLength: includePatternsLength + (type === 'include' ? 1 : 0),\n excludePatternsLength: excludePatternsLength + (type === 'exclude' ? 1 : 0),\n });\n\n // If we have type undo, then we don't need to add the pattern\n if (type === 'undo') {\n indexScene.setState({\n patterns: filteredPatterns,\n });\n } else {\n // Otherwise, add the pattern\n indexScene.setState({\n patterns: [...filteredPatterns, { pattern: pattern, type: type }],\n });\n }\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n logsStatsRow: css({\n margin: `${theme.spacing(1.15)}px 0`,\n }),\n logsStatsRowActive: css({\n color: theme.colors.primary.text,\n position: 'relative',\n }),\n logsStatsRowLabel: css({\n display: 'flex',\n marginBottom: '1px',\n }),\n logsStatsRowValue: css({\n flex: 1,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }),\n logsStatsRowCount: css({\n textAlign: 'right',\n marginLeft: theme.spacing(0.75),\n }),\n logsStatsRowPercent: css({\n textAlign: 'right',\n marginLeft: theme.spacing(0.75),\n width: theme.spacing(4.5),\n }),\n logsStatsRowBar: css({\n height: theme.spacing(0.5),\n overflow: 'hidden',\n background: theme.colors.text.disabled,\n }),\n logsStatsRowInnerBar: css({\n height: theme.spacing(0.5),\n overflow: 'hidden',\n background: theme.colors.primary.main,\n }),\n});\n\nexport interface Props {\n active?: boolean;\n count: number;\n proportion: number;\n value?: string;\n}\n\nexport const PatternFieldLabelStatsRow = ({ active, count, proportion, value }: Props) => {\n const style = useStyles2(getStyles);\n const percent = `${Math.round(proportion * 100)}%`;\n const barStyle = { width: percent };\n\n return (\n
\n
\n
\n {value}\n
\n
{count}
\n
{percent}
\n
\n
\n
\n
\n
\n );\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { LogLabelStatsModel, GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\n//Components\nimport { PatternFieldLabelStatsRow } from './PatternFieldLabelStatsRow';\n\nconst STATS_ROW_LIMIT = 10;\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n logsStats: css({\n background: 'inherit',\n color: theme.colors.text.primary,\n wordBreak: 'break-all',\n width: 'fit-content',\n maxHeight: '40vh',\n overflowY: 'auto',\n marginTop: theme.spacing(1),\n }),\n logsStatsHeader: css({\n borderBottom: `1px solid ${theme.colors.border.medium}`,\n display: 'flex',\n }),\n logsStatsTitle: css({\n fontWeight: theme.typography.fontWeightMedium,\n paddingRight: theme.spacing(2),\n display: 'inline-block',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n flexGrow: 1,\n }),\n logsStatsClose: css({\n cursor: 'pointer',\n }),\n logsStatsBody: css({\n padding: '5px 0px',\n }),\n});\n\ninterface PatternFieldLabelStatsProps {\n stats: LogLabelStatsModel[];\n value: string;\n}\n\nexport const PatternFieldLabelStats = (props: PatternFieldLabelStatsProps) => {\n const style = useStyles2(getStyles);\n\n const { stats, value } = props;\n\n const topRows = stats.slice(0, STATS_ROW_LIMIT);\n let activeRow = topRows.find((row) => row.value === value);\n let otherRows = stats.slice(STATS_ROW_LIMIT);\n const insertActiveRow = !activeRow;\n\n // Remove active row from other to show extra\n if (insertActiveRow) {\n activeRow = otherRows.find((row) => row.value === value);\n otherRows = otherRows.filter((row) => row.value !== value);\n }\n\n const otherCount = otherRows.reduce((sum, row) => sum + row.count, 0);\n const topCount = topRows.reduce((sum, row) => sum + row.count, 0);\n const total = topCount + otherCount;\n\n // Combine topRows and otherRows\n let combinedRows = [...topRows];\n\n // If there's an \"Other\" category, add it to combinedRows\n if (otherCount > 0) {\n combinedRows.push({ value: 'Other', count: otherCount, proportion: otherCount / total });\n }\n\n // Sort combinedRows by count in descending order\n combinedRows.sort((a, b) => b.count - a.count);\n\n return (\n
\n
\n
From a sample of {total} rows found
\n
\n
\n {combinedRows.map((stat) => (\n \n ))}\n
\n
\n );\n};\n","import React, { useMemo, useRef, useState } from 'react';\nimport { AdHocFiltersVariable, sceneGraph } from '@grafana/scenes';\nimport { Spinner, Toggletip, useStyles2 } from '@grafana/ui';\nimport { getLokiDatasource } from 'services/scenes';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { buildDataQuery } from 'services/query';\nimport { PatternFieldLabelStats } from './PatternFieldLabelStats';\nimport { GrafanaTheme2, LoadingState, LogLabelStatsModel, TimeRange } from '@grafana/data';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { css } from '@emotion/css';\nimport { getLabelsVariable } from '../../../../services/variableGetters';\n\ninterface PatternNameLabelProps {\n exploration: IndexScene;\n pattern: string;\n maxLines: number;\n}\n\nexport const PatternNameLabel = ({ exploration, pattern, maxLines }: PatternNameLabelProps) => {\n const patternIndices = extractPatternIndices(pattern);\n const [stats, setStats] = useState(undefined);\n const [statsError, setStatsError] = useState(false);\n const styles = useStyles2(getStyles);\n\n // Refs to store the previous values of query and timeRange\n const previousQueryRef = useRef(null);\n const previousTimeRangeRef = useRef(null);\n\n const handlePatternClick = async () => {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.pattern_field_clicked);\n const query = constructQuery(pattern, patternIndices, getLabelsVariable(exploration));\n const datasource = await getLokiDatasource(exploration);\n const currentTimeRange = sceneGraph.getTimeRange(exploration).state.value;\n\n // If the query and timeRange are the same as the previous ones, do not re-query\n if (stats && query === previousQueryRef.current && currentTimeRange === previousTimeRangeRef.current) {\n return;\n }\n\n // Update the refs with the new values\n previousQueryRef.current = query;\n previousTimeRangeRef.current = currentTimeRange;\n\n datasource\n ?.query({\n requestId: '1',\n interval: '',\n intervalMs: 0,\n scopedVars: {},\n range: currentTimeRange,\n targets: [buildDataQuery(query, { maxLines })],\n timezone: '',\n app: '',\n startTime: 0,\n })\n .forEach((result) => {\n if (result.state === LoadingState.Done && !result.errors?.length) {\n setStats(convertResultToStats(result, patternIndices.length, maxLines));\n setStatsError(false);\n } else if (result.state === LoadingState.Error || result.errors?.length) {\n setStats(undefined);\n setStatsError(true);\n }\n });\n };\n\n const parts = useMemo(() => pattern.split('<_>'), [pattern]);\n\n return (\n
\n {parts.map((part, index) => (\n \n {part}\n {index !== patternIndices.length && (\n \n {stats && stats[index].length > 0 && }\n {stats && stats[index].length === 0 && (\n
No available stats for this field in the current timestamp.
\n )}\n {!stats && statsError &&
Could not load stats for this pattern.
}\n {!stats && !statsError && (\n
\n \n
\n )}\n \n }\n >\n <_>\n \n )}\n
\n ))}\n
\n );\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n pattern: css({\n cursor: 'pointer',\n backgroundColor: theme.colors.emphasize(theme.colors.background.primary, 0.1),\n margin: '0 2px',\n\n '&:hover': {\n backgroundColor: theme.colors.emphasize(theme.colors.background.primary, 0.2),\n },\n }),\n };\n}\n\n// Convert the result to statistics data structure\nfunction convertResultToStats(result: any, fieldCount: number, maxLines: number): LogLabelStatsModel[][] {\n const fieldStatsMap = new Map>();\n\n // Populate the fieldStatsMap with values from the result\n result.data[0].fields[0].values.toArray().forEach((value: Record) => {\n Object.keys(value).forEach((key) => {\n if (!fieldStatsMap.has(key)) {\n fieldStatsMap.set(key, new Map());\n }\n fieldStatsMap.get(key)?.set(value[key], (fieldStatsMap.get(key)?.get(value[key]) || 0) + 1);\n });\n });\n\n const stats: LogLabelStatsModel[][] = [];\n\n // Construct stats array from fieldStatsMap\n for (let i = 0; i <= fieldCount; i++) {\n const fieldStats: LogLabelStatsModel[] = [];\n fieldStatsMap.get(`field_${i + 1}`)?.forEach((count, key) => {\n fieldStats.push({ value: key, count, proportion: count / maxLines });\n });\n fieldStats.sort((a, b) => b.count - a.count);\n stats.push(fieldStats);\n }\n\n return stats;\n}\n\n// Extract indices of the pattern '<_>' in the given string\nfunction extractPatternIndices(pattern: string): number[] {\n const indices: number[] = [];\n let currentIndex = pattern.indexOf('<_>');\n\n while (currentIndex !== -1) {\n indices.push(currentIndex);\n currentIndex = pattern.indexOf('<_>', currentIndex + 1);\n }\n return indices;\n}\n\n// Construct the query string based on pattern and other conditions\nfunction constructQuery(pattern: string, patternIndices: number[], filters: AdHocFiltersVariable): string {\n let fieldIndex = 1;\n const patternExtractor = pattern.replace(/<_>/g, () => ``);\n const filterExpression = filters.state.filterExpression;\n const fields = patternIndices.map((_value, index) => `field_${index + 1}`).join(' ,');\n return `{${filterExpression}} |> \\`${pattern}\\` | pattern \\`${patternExtractor}\\` | keep ${fields} | line_format \"\"`;\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneDataProviderResult,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneReactObject,\n VizPanel,\n} from '@grafana/scenes';\nimport React from 'react';\n\nimport { LoadingState } from '@grafana/data';\nimport { Alert, Button } from '@grafana/ui';\nimport {\n AppliedPattern,\n LOG_STREAM_SELECTOR_EXPR,\n PATTERNS_SAMPLE_SELECTOR_EXPR,\n VAR_PATTERNS_EXPR,\n} from '../../../../services/variables';\nimport { buildDataQuery } from '../../../../services/query';\nimport { getQueryRunner } from '../../../../services/panel';\nimport { PatternsViewTableScene } from './PatternsViewTableScene';\nimport { emptyStateStyles } from '../FieldsBreakdownScene';\nimport { getFieldsVariable, getLevelsVariable, getLineFiltersVariable } from '../../../../services/variableGetters';\nimport { LokiQuery } from '../../../../services/lokiQuery';\nimport { logger } from '../../../../services/logger';\nimport { renderPatternFilters } from '../../../../services/renderPatternFilters';\n\ninterface PatternsLogsSampleSceneState extends SceneObjectState {\n pattern: string;\n body?: SceneFlexLayout;\n}\nexport class PatternsLogsSampleScene extends SceneObjectBase {\n constructor(state: PatternsLogsSampleSceneState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n if (this.state.body) {\n return;\n }\n\n // We start by querying with the users current query context\n const queryWithFilters = buildDataQuery(LOG_STREAM_SELECTOR_EXPR);\n this.replacePatternsInQuery(queryWithFilters);\n\n // but if that fails to return results, we fire the query without the filters, instead of showing no-data in the viz\n const queryRunnerWithFilters = getQueryRunner([queryWithFilters]);\n queryRunnerWithFilters.getResultsStream().subscribe((value) => {\n this.onQueryWithFiltersResult(value);\n });\n\n this.setState({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: undefined,\n width: '100%',\n height: 0,\n }),\n new SceneFlexItem({\n height: 300,\n width: '100%',\n body: PanelBuilders.logs()\n .setHoverHeader(true)\n .setOption('showLogContextToggle', true)\n .setOption('showTime', true)\n .setData(queryRunnerWithFilters)\n .build(),\n }),\n ],\n }),\n });\n }\n\n private replacePatternsInQuery(queryWithFilters: LokiQuery) {\n const pendingPattern: AppliedPattern = {\n pattern: this.state.pattern,\n type: 'include',\n };\n const patternsLine = renderPatternFilters([pendingPattern]);\n queryWithFilters.expr = queryWithFilters.expr.replace(VAR_PATTERNS_EXPR, patternsLine);\n }\n\n private clearFilters = () => {\n const filterVariable = getFieldsVariable(this);\n const lineFiltersVariable = getLineFiltersVariable(this);\n const levelsVariable = getLevelsVariable(this);\n filterVariable.setState({\n filters: [],\n });\n levelsVariable.setState({\n filters: [],\n });\n if (lineFiltersVariable.state.filters.length) {\n lineFiltersVariable.setState({\n filters: [],\n });\n\n const noticeFlexItem = this.getNoticeFlexItem();\n\n // The query we just fired is already correct after we clear the filters, we just need to hide the warning, and allow filtering\n noticeFlexItem?.setState({\n isHidden: true,\n });\n\n this.removePatternFromFilterExclusion();\n }\n };\n\n private removePatternFromFilterExclusion() {\n const patternsViewTableScene = sceneGraph.getAncestor(this, PatternsViewTableScene);\n const patternsNotMatchingFilters = patternsViewTableScene.state.patternsNotMatchingFilters ?? [];\n\n const index = patternsNotMatchingFilters.findIndex((pattern) => pattern === this.state.pattern);\n\n if (index !== -1) {\n patternsNotMatchingFilters.splice(index, 1);\n // remove this pattern, as they can filter by this pattern again\n patternsViewTableScene.setState({\n patternsNotMatchingFilters: patternsNotMatchingFilters,\n });\n }\n }\n\n /**\n * If the first query with the users filters applied fails, we run another one after removing the filters\n * @param value\n */\n private onQueryError = (value: SceneDataProviderResult) => {\n if (\n (value.data.state === LoadingState.Done &&\n (value.data.series.length === 0 || value.data.series.every((frame) => frame.length === 0))) ||\n value.data.state === LoadingState.Error\n ) {\n // Logging an error so loki folks can debug why some patterns returned from the API seem to fail.\n let logContext;\n try {\n logContext = {\n pattern: this.state.pattern,\n traceIds: JSON.stringify(value.data.traceIds),\n request: JSON.stringify(value.data.request),\n msg: 'onQueryError',\n };\n } catch (e) {\n logContext = {\n pattern: this.state.pattern,\n msg: 'Failed to encode context',\n };\n }\n\n // Logging an error so loki folks can debug why some patterns returned from the API seem to fail.\n logger.error(new Error('Pattern sample query returns no results'), logContext);\n\n this.setWarningMessage(\n \n This pattern returns no logs.\n \n );\n\n const panelFlexItem = this.getVizFlexItem();\n\n // Run another query without the filters so we can still show log lines of what the pattern looks like.\n if (panelFlexItem instanceof SceneFlexItem) {\n panelFlexItem.setState({\n isHidden: true,\n });\n }\n }\n };\n\n private setWarningMessage(reactNode: React.ReactNode) {\n const noticeFlexItem = this.getNoticeFlexItem();\n const vizFlexItem = this.getVizFlexItem();\n\n if (noticeFlexItem instanceof SceneFlexItem) {\n noticeFlexItem.setState({\n isHidden: false,\n height: 'auto',\n body: new SceneReactObject({\n reactNode: reactNode,\n }),\n });\n }\n return vizFlexItem;\n }\n\n private getNoticeFlexItem() {\n const children = this.getFlexItemChildren();\n return children?.[0];\n }\n private getVizFlexItem() {\n const children = this.getFlexItemChildren();\n return children?.[1];\n }\n\n private getFlexItemChildren() {\n return this.state.body?.state.children;\n }\n\n /**\n * Callback to subscription of pattern sample query with all of the current query filters applied.\n * If this query fails to return data, we show a warning, and attempt the pattern sample query again without applying the existing filters.\n * We also add the pattern to the state of the PatternsTableViewScene so we can hide the filter buttons for this pattern, as including it would break the query\n * @param value\n */\n private onQueryWithFiltersResult = (value: SceneDataProviderResult) => {\n const queryWithoutFilters = buildDataQuery(PATTERNS_SAMPLE_SELECTOR_EXPR);\n this.replacePatternsInQuery(queryWithoutFilters);\n\n const queryRunnerWithoutFilters = getQueryRunner([queryWithoutFilters]);\n\n // Subscribe to the secondary query, so we can log errors and update the UI\n queryRunnerWithoutFilters.getResultsStream().subscribe(this.onQueryError);\n\n if (\n value.data.state === LoadingState.Done &&\n (value.data.series.length === 0 || value.data.series.every((frame) => frame.length === 0))\n ) {\n const noticeFlexItem = this.getNoticeFlexItem();\n const panelFlexItem = this.getVizFlexItem();\n\n // Add a warning notice that the patterns shown will not show up in their current log results due to their existing filters.\n if (noticeFlexItem instanceof SceneFlexItem) {\n noticeFlexItem.setState({\n isHidden: false,\n height: 'auto',\n body: new SceneReactObject({\n reactNode: (\n \n The logs returned by this pattern do not match the current query filters.\n \n \n ),\n }),\n });\n }\n\n // Run another query without the filters so we can still show log lines of what the pattern looks like.\n if (panelFlexItem instanceof SceneFlexItem) {\n const panel = panelFlexItem.state.body;\n if (panel instanceof VizPanel) {\n panel?.setState({\n $data: queryRunnerWithoutFilters,\n });\n }\n }\n this.excludeThisPatternFromFiltering();\n }\n\n if (value.data.state === LoadingState.Error) {\n this.onQueryError(value);\n }\n };\n\n private excludeThisPatternFromFiltering() {\n const patternsViewTableScene = sceneGraph.getAncestor(this, PatternsViewTableScene);\n const patternsThatDontMatchCurrentFilters = patternsViewTableScene.state.patternsNotMatchingFilters ?? [];\n\n // Add this pattern to the array of patterns that don't match current filters\n patternsViewTableScene.setState({\n patternsNotMatchingFilters: [...patternsThatDontMatchCurrentFilters, this.state.pattern],\n });\n }\n\n public static Component({ model }: SceneComponentProps) {\n const { body } = model.useState();\n if (body) {\n return ;\n }\n return null;\n }\n}\n","import React, { useEffect } from 'react';\nimport { PatternsLogsSampleScene } from './PatternsLogsSampleScene';\nimport { PatternsTableCellData, PatternsViewTableScene } from './PatternsViewTableScene';\n\ninterface ExpandedRowProps {\n tableViz: PatternsViewTableScene;\n row: PatternsTableCellData;\n}\n\nexport function PatternsTableExpandedRow({ tableViz, row }: ExpandedRowProps) {\n const { expandedRows } = tableViz.useState();\n\n const rowScene = expandedRows?.find((scene) => scene.state.key === row.pattern);\n\n useEffect(() => {\n if (!rowScene) {\n const newRowScene = buildExpandedRowScene(row.pattern);\n tableViz.setState({ expandedRows: [...(tableViz.state.expandedRows ?? []), newRowScene] });\n }\n }, [row, tableViz, rowScene]);\n\n return rowScene ? : null;\n}\n\nfunction buildExpandedRowScene(pattern: string) {\n return new PatternsLogsSampleScene({\n pattern: pattern,\n key: pattern,\n });\n}\n","import {\n PanelBuilders,\n SceneComponentProps,\n SceneDataNode,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n} from '@grafana/scenes';\nimport { PatternFrame, PatternsBreakdownScene } from './PatternsBreakdownScene';\nimport React from 'react';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { DataFrame, GrafanaTheme2, LoadingState, PanelData, scaledUnits } from '@grafana/data';\nimport { AxisPlacement, Column, InteractiveTable, TooltipDisplayMode, useTheme2 } from '@grafana/ui';\nimport { CellProps } from 'react-table';\nimport { css, cx } from '@emotion/css';\nimport { onPatternClick } from './FilterByPatternsButton';\nimport { FilterButton } from '../../../FilterButton';\nimport { config } from '@grafana/runtime';\nimport { testIds } from '../../../../services/testIds';\nimport { PatternsFrameScene } from './PatternsFrameScene';\nimport { PatternNameLabel } from './PatternNameLabel';\nimport { getExplorationFor } from 'services/scenes';\nimport { PatternsTableExpandedRow } from './PatternsTableExpandedRow';\nimport { LINE_LIMIT } from '../../../../services/query';\nimport { AppliedPattern } from '../../../../services/variables';\n\n// copied from from grafana repository packages/grafana-data/src/valueFormats/categories.ts\n// that is used in Grafana codebase for \"short\" units\nconst SCALED_UNITS = ['', ' K', ' Mil', ' Bil', ' Tri', ' Quadr', ' Quint', ' Sext', ' Sept'];\nexport interface SingleViewTableSceneState extends SceneObjectState {\n // The local copy of the pattern frames, the parent breakdown scene decides if we get the filtered subset or not, in this scene we just present the data\n patternFrames: PatternFrame[] | undefined;\n expandedRows?: SceneObject[];\n\n // An array of patterns to exclude links\n patternsNotMatchingFilters?: string[];\n maxLines?: number;\n}\n\nexport interface PatternsTableCellData {\n pattern: string;\n dataFrame: DataFrame;\n sum: number;\n includeLink: () => void;\n excludeLink: () => void;\n undoLink: () => void;\n}\n\nexport class PatternsViewTableScene extends SceneObjectBase {\n constructor(state: SingleViewTableSceneState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n onActivate() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const maxLines = indexScene.state.ds?.maxLines;\n this.setState({ maxLines });\n }\n\n public static Component = PatternTableViewSceneComponent;\n\n /**\n * Build columns for interactive table (wrapper for react-table v7)\n * @param total\n * @param appliedPatterns\n * @param theme\n * @param patternsNotMatchingFilters\n * @protected\n */\n public buildColumns(\n total: number,\n appliedPatterns: AppliedPattern[] | undefined,\n theme: GrafanaTheme2,\n maxLines: number,\n patternsNotMatchingFilters?: string[]\n ) {\n const styles = getColumnStyles(theme);\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const columns: Array> = [\n {\n id: 'volume-samples',\n header: '',\n cell: (props: CellProps) => {\n const panelData: PanelData = {\n timeRange: timeRange,\n series: [props.cell.row.original.dataFrame],\n state: LoadingState.Done,\n };\n const dataNode = new SceneDataNode({\n data: panelData,\n });\n\n const timeSeries = PanelBuilders.timeseries()\n .setData(dataNode)\n .setHoverHeader(true)\n .setOption('tooltip', {\n mode: TooltipDisplayMode.None,\n })\n .setCustomFieldConfig('hideFrom', {\n legend: true,\n tooltip: true,\n })\n .setCustomFieldConfig('axisPlacement', AxisPlacement.Hidden)\n .setDisplayMode('transparent')\n .build();\n\n return (\n
\n
\n \n
\n
\n );\n },\n },\n {\n id: 'count',\n header: 'Count',\n sortType: 'number',\n cell: (props) => {\n const value = scaledUnits(1000, SCALED_UNITS)(props.cell.row.original.sum);\n return (\n
\n
\n {value.prefix ?? ''}\n {value.text}\n {value.suffix ?? ''}\n
\n
\n );\n },\n },\n {\n id: 'percent',\n header: '%',\n sortType: 'number',\n cell: (props) => (\n
\n
{((100 * props.cell.row.original.sum) / total).toFixed(0)}%
\n
\n ),\n },\n {\n id: 'pattern',\n header: 'Pattern',\n cell: (props: CellProps) => {\n return (\n
\n \n
\n );\n },\n },\n {\n id: 'include',\n header: undefined,\n disableGrow: true,\n cell: (props: CellProps) => {\n if (patternsNotMatchingFilters?.includes(props.cell.row.original.pattern)) {\n return undefined;\n }\n\n const existingPattern = appliedPatterns?.find(\n (appliedPattern) => appliedPattern.pattern === props.cell.row.original.pattern\n );\n const isIncluded = existingPattern?.type === 'include';\n const isExcluded = existingPattern?.type === 'exclude';\n return (\n props.cell.row.original.includeLink()}\n onExclude={() => props.cell.row.original.excludeLink()}\n onClear={() => props.cell.row.original.undoLink()}\n buttonFill={'outline'}\n />\n );\n },\n },\n ];\n return columns;\n }\n\n /**\n * Filter visible patterns in table, and return cell data for InteractiveTable\n * @param patternFrames\n * @param legendSyncPatterns\n * @private\n */\n public buildTableData(patternFrames: PatternFrame[], legendSyncPatterns: Set): PatternsTableCellData[] {\n const logExploration = sceneGraph.getAncestor(this, IndexScene);\n return patternFrames\n .filter((patternFrame) => {\n return legendSyncPatterns.size ? legendSyncPatterns.has(patternFrame.pattern) : true;\n })\n .map((pattern: PatternFrame) => {\n return {\n dataFrame: pattern.dataFrame,\n pattern: pattern.pattern,\n sum: pattern.sum,\n includeLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'include',\n indexScene: logExploration,\n }),\n excludeLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'exclude',\n indexScene: logExploration,\n }),\n undoLink: () =>\n onPatternClick({\n pattern: pattern.pattern,\n type: 'undo',\n indexScene: logExploration,\n }),\n };\n });\n }\n}\n\nconst theme = config.theme2;\n\nconst getTablePatternTextStyles = () => {\n return css({\n minWidth: '200px',\n fontFamily: theme.typography.fontFamilyMonospace,\n overflow: 'hidden',\n overflowWrap: 'break-word',\n });\n};\n\nconst getTableStyles = (theme: GrafanaTheme2) => {\n return {\n link: css({\n textDecoration: 'underline',\n }),\n tableWrap: css({\n // Override interactive table style\n '> div': {\n // Need to define explicit height for overflowX\n height: 'calc(100vh - 450px)',\n minHeight: '470px',\n },\n // Make table headers sticky\n th: {\n top: 0,\n position: 'sticky',\n backgroundColor: theme.colors.background.canvas,\n zIndex: theme.zIndex.navbarFixed,\n },\n }),\n };\n};\nconst getColumnStyles = (theme: GrafanaTheme2) => {\n return {\n tablePatternTextDefault: css({\n fontFamily: theme.typography.fontFamilyMonospace,\n minWidth: '200px',\n maxWidth: '100%',\n overflow: 'hidden',\n overflowWrap: 'break-word',\n fontSize: theme.typography.bodySmall.fontSize,\n wordBreak: 'break-word',\n }),\n countTextWrap: css({\n textAlign: 'right',\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n tableTimeSeriesWrap: css({\n width: '230px',\n pointerEvents: 'none',\n }),\n tableTimeSeries: css({\n height: '30px',\n overflow: 'hidden',\n }),\n };\n};\n\nexport function PatternTableViewSceneComponent({ model }: SceneComponentProps) {\n const indexScene = sceneGraph.getAncestor(model, IndexScene);\n const { patterns: appliedPatterns } = indexScene.useState();\n const theme = useTheme2();\n const styles = getTableStyles(theme);\n\n // Get state from parent\n const patternsFrameScene = sceneGraph.getAncestor(model, PatternsFrameScene);\n const { legendSyncPatterns } = patternsFrameScene.useState();\n\n // Must use local patternFrames as the parent decides if we get the filtered or not\n const { patternFrames: patternFramesRaw, patternsNotMatchingFilters } = model.useState();\n const patternFrames = patternFramesRaw ?? [];\n\n // Get unfiltered patterns for percentage calculation\n const patternsBreakdownScene = sceneGraph.getAncestor(model, PatternsBreakdownScene);\n const unfilteredPatterns = patternsBreakdownScene.state.patternFrames ?? [];\n\n // Calculate total for percentages\n const total = unfilteredPatterns.reduce((previousValue, frame) => {\n return previousValue + frame.sum;\n }, 0);\n\n const tableData = model.buildTableData(patternFrames, legendSyncPatterns);\n const columns = model.buildColumns(\n total,\n appliedPatterns,\n theme,\n model.state.maxLines ?? LINE_LIMIT,\n patternsNotMatchingFilters\n );\n\n return (\n
\n r.pattern}\n renderExpandedRow={(row) => }\n />\n
\n );\n}\n","import React from 'react';\n\nimport { ConfigOverrideRule, FieldColor, LoadingState } from '@grafana/data';\nimport {\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridLayout,\n SceneDataNode,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n VizPanel,\n} from '@grafana/scenes';\nimport { LegendDisplayMode, PanelContext, SeriesVisibilityChangeMode } from '@grafana/ui';\nimport { ServiceScene } from '../../ServiceScene';\nimport { onPatternClick } from './FilterByPatternsButton';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { PatternsViewTableScene } from './PatternsViewTableScene';\nimport { config } from '@grafana/runtime';\nimport { css } from '@emotion/css';\nimport { PatternFrame, PatternsBreakdownScene } from './PatternsBreakdownScene';\nimport { areArraysEqual } from '../../../../services/comparison';\nimport { logger } from '../../../../services/logger';\n\nconst palette = config.theme2.visualization.palette;\n\nexport interface PatternsFrameSceneState extends SceneObjectState {\n body?: SceneCSSGridLayout;\n loading?: boolean;\n legendSyncPatterns: Set;\n}\n\nexport class PatternsFrameScene extends SceneObjectBase {\n constructor(state?: Partial) {\n super({\n loading: true,\n ...state,\n legendSyncPatterns: new Set(),\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n // parent render\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading } = model.useState();\n const logsByServiceScene = sceneGraph.getAncestor(model, ServiceScene);\n const { $patternsData } = logsByServiceScene.useState();\n const patterns = $patternsData?.state.data?.series;\n\n return (\n
\n {!loading && patterns && patterns.length > 0 && <>{body && }}\n
\n );\n };\n\n private onActivate() {\n this.updateBody();\n\n // If the patterns have changed, recalculate the dataframes\n this._subs.add(\n sceneGraph.getAncestor(this, ServiceScene).subscribeToState((newState, prevState) => {\n const newFrame = newState?.$patternsData?.state?.data?.series;\n const prevFrame = prevState?.$patternsData?.state?.data?.series;\n\n if (!areArraysEqual(newFrame, prevFrame)) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n this.updatePatterns(patternsBreakdownScene.state.patternFrames);\n\n // In order to keep the search state from clearing, we need to clear the filtered state\n patternsBreakdownScene.setState({\n filteredPatterns: undefined,\n });\n }\n })\n );\n\n // If the text search results have changed, update the components to use the filtered dataframe\n this._subs.add(\n sceneGraph.getAncestor(this, PatternsBreakdownScene).subscribeToState((newState, prevState) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n if (newState.filteredPatterns && !areArraysEqual(newState.filteredPatterns, prevState.filteredPatterns)) {\n this.updatePatterns(patternsBreakdownScene.state.filteredPatterns);\n } else {\n // If there is no search string, clear the state\n if (!patternsBreakdownScene.state.patternFilter) {\n this.updatePatterns(patternsBreakdownScene.state.patternFrames);\n }\n }\n })\n );\n }\n\n private async updatePatterns(patternFrames: PatternFrame[] = []) {\n // CSS Grid doesn't need rebuilding, just the children need the updated dataframe\n this.state.body?.forEachChild((child) => {\n if (child instanceof VizPanel) {\n child.setState({\n $data: this.getTimeseriesDataNode(patternFrames),\n });\n }\n if (child instanceof PatternsViewTableScene) {\n child.setState({\n patternFrames,\n });\n }\n });\n }\n\n private async updateBody() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternsBreakdownScene.state.patternFrames;\n\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n\n const lokiPatterns = serviceScene.state.$patternsData?.state.data?.series;\n if (!lokiPatterns || !patternFrames) {\n logger.warn('Failed to update PatternsFrameScene body');\n return;\n }\n\n this.setState({\n body: this.getSingleViewLayout(),\n legendSyncPatterns: new Set(),\n loading: false,\n });\n }\n\n private extendTimeSeriesLegendBus(vizPanel: VizPanel, context: PanelContext) {\n const originalOnToggleSeriesVisibility = context.onToggleSeriesVisibility;\n\n context.onToggleSeriesVisibility = (label: string, mode: SeriesVisibilityChangeMode) => {\n originalOnToggleSeriesVisibility?.(label, mode);\n\n const override: ConfigOverrideRule | undefined = vizPanel.state.fieldConfig.overrides?.[0];\n const patternsToShow: string[] = override?.matcher.options.names;\n const legendSyncPatterns = new Set();\n\n if (patternsToShow) {\n patternsToShow.forEach(legendSyncPatterns.add, legendSyncPatterns);\n }\n\n this.setState({\n legendSyncPatterns,\n });\n };\n }\n\n private getSingleViewLayout() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternsBreakdownScene.state.patternFrames;\n\n if (!patternFrames) {\n logger.warn('Failed to set getSingleViewLayout');\n return;\n }\n\n const timeSeries = this.getTimeSeries(patternFrames);\n\n return new SceneCSSGridLayout({\n templateColumns: '100%',\n autoRows: '200px',\n isLazy: true,\n\n children: [\n timeSeries,\n new PatternsViewTableScene({\n patternFrames,\n }),\n ],\n });\n }\n\n private getTimeSeries(patternFrames: PatternFrame[]) {\n const logExploration = sceneGraph.getAncestor(this, IndexScene);\n\n const timeSeries = PanelBuilders.timeseries()\n .setData(this.getTimeseriesDataNode(patternFrames))\n .setOption('legend', {\n asTable: true,\n showLegend: true,\n displayMode: LegendDisplayMode.Table,\n placement: 'right',\n width: 200,\n })\n .setHoverHeader(true)\n .setUnit('short')\n .setLinks([\n {\n url: '#',\n targetBlank: false,\n onClick: (event) => {\n onPatternClick({\n pattern: event.origin.labels.name,\n type: 'include',\n indexScene: logExploration,\n });\n },\n title: 'Include',\n },\n {\n url: '#',\n targetBlank: false,\n onClick: (event) => {\n onPatternClick({\n pattern: event.origin.labels.name,\n type: 'exclude',\n indexScene: logExploration,\n });\n },\n title: 'Exclude',\n },\n ])\n .build();\n\n timeSeries.setState({\n extendPanelContext: (vizPanel, context) => this.extendTimeSeriesLegendBus(vizPanel, context),\n });\n\n return timeSeries;\n }\n\n private getTimeseriesDataNode(patternFrames: PatternFrame[]) {\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n\n return new SceneDataNode({\n data: {\n series: patternFrames.map((patternFrame, seriesIndex) => {\n // Mutating the dataframe config here means that we don't need to update the colors in the table view\n const dataFrame = patternFrame.dataFrame;\n dataFrame.fields[1].config.color = overrideToFixedColor(seriesIndex);\n dataFrame.fields[1].name = '';\n return dataFrame;\n }),\n state: LoadingState.Done,\n timeRange: timeRange,\n },\n });\n }\n}\n\nexport function overrideToFixedColor(key: keyof typeof palette): FieldColor {\n return {\n mode: 'fixed',\n fixedColor: palette[key] as string,\n };\n}\n\nconst styles = {\n container: css({\n width: '100%',\n // Hide header on hover hack\n '.show-on-hover': {\n display: 'none',\n },\n }),\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React, { ChangeEvent } from 'react';\nimport { Field } from '@grafana/ui';\nimport { css } from '@emotion/css';\nimport { PatternFrame, PatternsBreakdownScene } from './PatternsBreakdownScene';\nimport { debouncedFuzzySearch, fuzzySearch } from '../../../../services/search';\nimport { SearchInput } from '../SearchInput';\nimport { areArraysEqual } from '../../../../services/comparison';\n\nexport interface PatternsViewTextSearchState extends SceneObjectState {}\n\nexport class PatternsViewTextSearch extends SceneObjectBase {\n public static Component = PatternTextSearchComponent;\n\n constructor(state?: Partial) {\n super({\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n /**\n * On click callback to clear current text search\n */\n public clearSearch = () => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n patternFilter: '',\n });\n };\n\n /**\n * Search input onchange callback\n * @param e\n */\n public handleSearchChange = (e: ChangeEvent) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n patternFilter: e.target.value,\n });\n };\n\n /**\n * Activation handler\n * @private\n */\n private onActivate() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n this._subs.add(\n patternsBreakdownScene.subscribeToState((newState, prevState) => {\n if (newState.patternFilter !== prevState.patternFilter) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n if (patternsBreakdownScene.state.patternFrames) {\n debouncedFuzzySearch(\n patternsBreakdownScene.state.patternFrames.map((frame) => frame.pattern),\n patternsBreakdownScene.state.patternFilter,\n this.onSearchResult\n );\n }\n }\n })\n );\n\n this._subs.add(\n patternsBreakdownScene.subscribeToState((newState, prevState) => {\n // If we have a search string, but no filtered patterns, run the search\n if (\n newState.patternFilter &&\n !newState.filteredPatterns &&\n newState.patternFrames &&\n !areArraysEqual(newState.filteredPatterns, prevState.filteredPatterns)\n ) {\n fuzzySearch(\n newState.patternFrames.map((frame) => frame.pattern),\n newState.patternFilter,\n this.onSearchResult\n );\n }\n })\n );\n }\n\n /**\n * Sets the patterns filtered by string match\n * @param patterns\n * @param patternFramesOverride\n */\n setFilteredPatterns(patterns: string[], patternFramesOverride?: PatternFrame[]) {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n const patternFrames = patternFramesOverride ?? patternsBreakdownScene.state.patternFrames;\n\n if (patternFrames) {\n const filteredPatternFrames = patternFrames.filter((patternFrame) => {\n if (patternsBreakdownScene.state.patternFilter && patternFrames?.length) {\n return patterns.find((pattern) => pattern === patternFrame.pattern);\n }\n return false;\n });\n\n patternsBreakdownScene.setState({\n filteredPatterns: filteredPatternFrames,\n });\n }\n }\n\n /**\n * Fuzzy search callback\n * @param data\n */\n onSearchResult = (data: string[][]) => {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n // If we have a search string\n if (patternsBreakdownScene.state.patternFilter) {\n this.setFilteredPatterns(data[0]);\n } else if (patternsBreakdownScene.state.filteredPatterns && !patternsBreakdownScene.state.patternFilter) {\n // Wipe the parent filtered state\n this.setEmptySearch();\n }\n };\n\n /**\n * Wipes filtered patterns when search string is empty\n */\n private setEmptySearch() {\n const patternsBreakdownScene = sceneGraph.getAncestor(this, PatternsBreakdownScene);\n patternsBreakdownScene.setState({\n filteredPatterns: undefined,\n });\n }\n}\n\nconst styles = {\n field: css({\n label: 'field',\n marginBottom: 0,\n }),\n icon: css({\n cursor: 'pointer',\n }),\n};\n\nexport function PatternTextSearchComponent({ model }: SceneComponentProps) {\n const patternsBreakdownScene = sceneGraph.getAncestor(model, PatternsBreakdownScene);\n const { patternFilter } = patternsBreakdownScene.useState();\n return (\n \n \n \n );\n}\n","import { GrotError } from '../../../GrotError';\nimport { TextLink } from '@grafana/ui';\nimport React from 'react';\nimport { PATTERNS_MAX_AGE_HOURS } from './PatternsBreakdownScene';\n\nexport function PatternsNotDetected() {\n return (\n \n
\n

\n Sorry, we could not detect any patterns.\n

\n

\n Check back later or reach out to the team in the{' '}\n \n Grafana Labs community Slack channel\n \n

\n

Patterns let you detect similar log lines to include or exclude from your search.

\n
\n
\n );\n}\n\nexport function PatternsTooOld() {\n return (\n \n
\n

\n Patterns are only available for the most recent {PATTERNS_MAX_AGE_HOURS} hours of data.\n

\n

\n See the{' '}\n \n patterns docs\n {' '}\n for more info.\n

\n
\n
\n );\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { DataFrame, dateTime, GrafanaTheme2, LoadingState } from '@grafana/data';\nimport {\n CustomVariable,\n SceneComponentProps,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneVariableSet,\n} from '@grafana/scenes';\nimport { Text, useStyles2 } from '@grafana/ui';\nimport { StatusWrapper } from 'Components/ServiceScene/Breakdowns/StatusWrapper';\nimport { VAR_LABEL_GROUP_BY } from 'services/variables';\nimport { ServiceScene } from '../../ServiceScene';\nimport { IndexScene } from '../../../IndexScene/IndexScene';\nimport { PatternsFrameScene } from './PatternsFrameScene';\nimport { PatternsViewTextSearch } from './PatternsViewTextSearch';\nimport { PatternsNotDetected, PatternsTooOld } from './PatternsNotDetected';\nimport { areArraysEqual } from '../../../../services/comparison';\n\nexport interface PatternsBreakdownSceneState extends SceneObjectState {\n body?: SceneFlexLayout;\n value?: string;\n loading?: boolean;\n error?: boolean;\n blockingMessage?: string;\n // The dataframe built from the patterns that we get back from the loki Patterns API\n patternFrames?: PatternFrame[];\n\n // Subset of patternFrames, undefined if empty, empty array if search results returned nothing (no data)\n filteredPatterns?: PatternFrame[];\n patternFilter: string;\n}\n\nexport type PatternFrame = {\n dataFrame: DataFrame;\n pattern: string;\n sum: number;\n status?: 'include' | 'exclude';\n};\n\nexport const PATTERNS_MAX_AGE_HOURS = 3;\n\nexport class PatternsBreakdownScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n $variables:\n state.$variables ??\n new SceneVariableSet({\n variables: [new CustomVariable({ name: VAR_LABEL_GROUP_BY, defaultToAll: true, includeAll: true })],\n }),\n loading: true,\n patternFilter: '',\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n // parent render\n public static Component = ({ model }: SceneComponentProps) => {\n const { body, loading, blockingMessage, patternFrames, error } = model.useState();\n const { value: timeRange } = sceneGraph.getTimeRange(model).useState();\n const styles = useStyles2(getStyles);\n const timeRangeTooOld = dateTime().diff(timeRange.to, 'hours') >= PATTERNS_MAX_AGE_HOURS;\n\n return (\n
\n \n {!loading && error && (\n
\n \n

There are no pattern matches.

\n

Pattern matching has not been configured.

\n

Patterns let you detect similar log lines and add or exclude them from your search.

\n

To see them in action, add the following to your Loki configuration

\n

\n --pattern-ingester.enabled=true\n

\n
\n
\n )}\n\n {!error && !loading && patternFrames?.length === 0 && timeRangeTooOld && }\n {!error && !loading && patternFrames?.length === 0 && !timeRangeTooOld && }\n {!error && !loading && patternFrames && patternFrames.length > 0 && (\n
{body && }
\n )}\n
\n
\n );\n };\n\n private onActivate() {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n this.setBody();\n\n // If the patterns exist already, update the dataframe\n if (serviceScene.state.$patternsData?.state) {\n this.onDataChange(serviceScene.state.$patternsData?.state);\n }\n\n // Subscribe to changes from pattern API call\n this._subs.add(serviceScene.state.$patternsData?.subscribeToState(this.onDataChange));\n }\n\n private onDataChange = (newState: SceneDataState, prevState?: SceneDataState) => {\n const newFrames = newState.data?.series;\n const prevFrames = prevState?.data?.series;\n\n if (newState.data?.state === LoadingState.Done) {\n this.setState({\n loading: false,\n error: false,\n });\n\n if (!areArraysEqual(newFrames, prevFrames)) {\n this.updatePatternFrames(newFrames);\n }\n } else if (newState.data?.state === LoadingState.Loading) {\n this.setState({\n loading: true,\n error: false,\n });\n } else if (newState.data?.state === LoadingState.Error) {\n this.setState({\n loading: false,\n error: true,\n });\n }\n };\n\n private setBody() {\n this.setState({\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n ySizing: 'content',\n body: new PatternsViewTextSearch(),\n }),\n new SceneFlexItem({\n body: new PatternsFrameScene(),\n }),\n ],\n }),\n });\n }\n\n private updatePatternFrames(dataFrames?: DataFrame[]) {\n if (!dataFrames) {\n return;\n }\n\n const patternFrames = this.dataFrameToPatternFrame(dataFrames);\n\n this.setState({\n patternFrames,\n });\n }\n\n private dataFrameToPatternFrame(dataFrame: DataFrame[]): PatternFrame[] {\n const serviceScene = sceneGraph.getAncestor(this, ServiceScene);\n const appliedPatterns = sceneGraph.getAncestor(serviceScene, IndexScene).state.patterns;\n\n return dataFrame.map((dataFrame) => {\n const existingPattern = appliedPatterns?.find((appliedPattern) => appliedPattern.pattern === dataFrame.name);\n\n const sum: number = dataFrame.meta?.custom?.sum;\n const patternFrame: PatternFrame = {\n dataFrame,\n pattern: dataFrame.name ?? '',\n sum,\n status: existingPattern?.type,\n };\n\n return patternFrame;\n });\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n flexGrow: 1,\n display: 'flex',\n minHeight: '100%',\n flexDirection: 'column',\n }),\n content: css({\n flexGrow: 1,\n display: 'flex',\n paddingTop: theme.spacing(0),\n }),\n controls: css({\n flexGrow: 0,\n display: 'flex',\n alignItems: 'top',\n gap: theme.spacing(2),\n }),\n controlsRight: css({\n flexGrow: 0,\n display: 'flex',\n justifyContent: 'flex-end',\n }),\n controlsLeft: css({\n display: 'flex',\n justifyContent: 'flex-left',\n justifyItems: 'left',\n width: '100%',\n flexDirection: 'column',\n }),\n patternMissingText: css({\n padding: theme.spacing(2),\n }),\n };\n}\n","import { PageSlugs, ValueSlugs } from '../../services/routing';\nimport { LogsListScene } from './LogsListScene';\nimport { testIds } from '../../services/testIds';\nimport { LabelBreakdownScene } from './Breakdowns/LabelBreakdownScene';\nimport { FieldsBreakdownScene } from './Breakdowns/FieldsBreakdownScene';\nimport { PatternsBreakdownScene } from './Breakdowns/Patterns/PatternsBreakdownScene';\nimport { behaviors, SceneFlexItem, SceneFlexLayout, SceneObject } from '@grafana/scenes';\nimport { LogsVolumePanel } from './LogsVolumePanel';\nimport { DashboardCursorSync } from '@grafana/schema';\n\ninterface ValueBreakdownViewDefinition {\n displayName: string;\n value: ValueSlugs;\n testId: string;\n getScene: (value: string) => SceneObject;\n}\n\nexport enum TabNames {\n logs = 'Logs',\n labels = 'Labels',\n fields = 'Fields',\n patterns = 'Patterns',\n}\nexport interface BreakdownViewDefinition {\n displayName: TabNames;\n value: PageSlugs;\n testId: string;\n getScene: (changeFields: (f: number) => void) => SceneObject;\n}\n\nexport const breakdownViewsDefinitions: BreakdownViewDefinition[] = [\n {\n displayName: TabNames.logs,\n value: PageSlugs.logs,\n getScene: () => buildLogsListScene(),\n testId: testIds.exploreServiceDetails.tabLogs,\n },\n {\n displayName: TabNames.labels,\n value: PageSlugs.labels,\n getScene: () => buildLabelBreakdownActionScene(),\n testId: testIds.exploreServiceDetails.tabLabels,\n },\n {\n displayName: TabNames.fields,\n value: PageSlugs.fields,\n getScene: (f) => buildFieldsBreakdownActionScene(f),\n testId: testIds.exploreServiceDetails.tabFields,\n },\n {\n displayName: TabNames.patterns,\n value: PageSlugs.patterns,\n getScene: () => buildPatternsScene(),\n testId: testIds.exploreServiceDetails.tabPatterns,\n },\n];\nexport const valueBreakdownViews: ValueBreakdownViewDefinition[] = [\n {\n displayName: 'Label',\n value: ValueSlugs.label,\n getScene: (value: string) => buildLabelValuesBreakdownActionScene(value),\n testId: testIds.exploreServiceDetails.tabLabels,\n },\n {\n displayName: 'Field',\n value: ValueSlugs.field,\n getScene: (value: string) => buildFieldValuesBreakdownActionScene(value),\n testId: testIds.exploreServiceDetails.tabFields,\n },\n];\n\nfunction buildPatternsScene() {\n return new SceneFlexLayout({\n children: [\n new SceneFlexItem({\n body: new PatternsBreakdownScene({}),\n }),\n ],\n });\n}\n\nfunction buildFieldsBreakdownActionScene(changeFieldNumber: (n: number) => void) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new FieldsBreakdownScene({ changeFieldCount: changeFieldNumber }),\n }),\n ],\n });\n}\n\nfunction buildFieldValuesBreakdownActionScene(value: string) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new FieldsBreakdownScene({ value }),\n }),\n ],\n });\n}\n\nfunction buildLabelValuesBreakdownActionScene(value: string) {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new LabelBreakdownScene({ value }),\n }),\n ],\n });\n}\n\nfunction buildLogsListScene() {\n return new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: new LogsVolumePanel({}),\n }),\n new SceneFlexItem({\n minHeight: '470px',\n height: 'calc(100vh - 500px)',\n body: new LogsListScene({}),\n }),\n ],\n });\n}\n\nfunction buildLabelBreakdownActionScene() {\n return new SceneFlexLayout({\n $behaviors: [new behaviors.CursorSync({ key: 'sync', sync: DashboardCursorSync.Crosshair })],\n children: [\n new SceneFlexItem({\n body: new LabelBreakdownScene({}),\n }),\n ],\n });\n}\n","import { css, cx } from '@emotion/css';\nimport { getValueFormat, GrafanaTheme2 } from '@grafana/data';\nimport { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Box, Stack, Tab, TabsBar, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { getDrillDownTabLink } from '../../services/navigate';\nimport { LINE_LIMIT } from '../../services/query';\nimport { getDrilldownSlug, getDrilldownValueSlug, PageSlugs, ValueSlugs } from '../../services/routing';\nimport { IndexScene } from '../IndexScene/IndexScene';\nimport { ShareButtonScene } from '../IndexScene/ShareButtonScene';\nimport { BreakdownViewDefinition, breakdownViewsDefinitions, TabNames } from './BreakdownViews';\nimport { ServiceScene, ServiceSceneCustomState } from './ServiceScene';\n\nexport interface ActionBarSceneState extends SceneObjectState {\n maxLines?: number;\n shareButtonScene?: ShareButtonScene;\n}\n\nexport class ActionBarScene extends SceneObjectBase {\n constructor(state: Partial) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const dataSource = indexScene.state.ds;\n if (dataSource?.maxLines !== undefined) {\n this.setState({\n maxLines: dataSource.maxLines,\n });\n }\n\n if (!this.state.shareButtonScene) {\n this.setState({\n shareButtonScene: new ShareButtonScene({}),\n });\n }\n }\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n let currentBreakdownViewSlug = getDrilldownSlug();\n let allowNavToParent = false;\n\n if (!Object.values(PageSlugs).includes(currentBreakdownViewSlug)) {\n const drilldownValueSlug = getDrilldownValueSlug();\n allowNavToParent = true;\n if (drilldownValueSlug === ValueSlugs.field) {\n currentBreakdownViewSlug = PageSlugs.fields;\n }\n if (drilldownValueSlug === ValueSlugs.label) {\n currentBreakdownViewSlug = PageSlugs.labels;\n }\n }\n\n const serviceScene = sceneGraph.getAncestor(model, ServiceScene);\n const { loading, $data, logsCount, totalLogsCount, ...state } = serviceScene.useState();\n const { maxLines } = model.useState();\n\n const loadingStates = state.loadingStates;\n\n return (\n \n
\n \n {model.state.shareButtonScene && (\n \n )}\n \n
\n\n \n {breakdownViewsDefinitions.map((tab, index) => {\n return (\n LogsCount(className, totalLogsCount, logsCount, maxLines ?? LINE_LIMIT)\n : undefined\n }\n icon={loadingStates[tab.displayName] ? 'spinner' : undefined}\n href={getDrillDownTabLink(tab.value, serviceScene)}\n onChangeTab={() => {\n if ((tab.value && tab.value !== currentBreakdownViewSlug) || allowNavToParent) {\n reportAppInteraction(\n USER_EVENTS_PAGES.service_details,\n USER_EVENTS_ACTIONS.service_details.action_view_changed,\n {\n newActionView: tab.value,\n previousActionView: currentBreakdownViewSlug,\n }\n );\n }\n }}\n />\n );\n })}\n \n
\n );\n };\n}\nconst getCounter = (tab: BreakdownViewDefinition, state: ServiceSceneCustomState) => {\n switch (tab.value) {\n case 'fields':\n return state.fieldsCount;\n case 'patterns':\n return state.patternsCount;\n case 'labels':\n return state.labelsCount;\n default:\n return undefined;\n }\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n actions: css({\n display: 'flex',\n justifyContent: 'flex-end',\n\n [theme.breakpoints.up(theme.breakpoints.values.md)]: {\n position: 'absolute',\n right: 0,\n zIndex: 2,\n },\n }),\n };\n}\n\nfunction LogsCount(\n className: string | undefined,\n totalCount: number | undefined,\n logsCount: number | undefined,\n maxLines: number\n) {\n const styles = useStyles2(getLogsCountStyles);\n const valueFormatter = getValueFormat('short');\n\n // The instant query (totalCount) doesn't return good results for small result sets, if we're below the max number of lines, use the logs query result instead.\n if (totalCount === undefined && logsCount !== undefined && logsCount < maxLines) {\n const formattedCount = valueFormatter(logsCount, 0);\n return (\n \n {formattedCount.text}\n {formattedCount.suffix?.trim()}\n \n );\n } else if (totalCount !== undefined) {\n const formattedTotalCount = valueFormatter(totalCount, 0);\n return (\n \n {formattedTotalCount.text}\n {formattedTotalCount.suffix?.trim()}\n \n );\n }\n\n return ;\n}\n\nfunction getLogsCountStyles(theme: GrafanaTheme2) {\n return {\n emptyCountStyles: css({\n display: 'inline-block',\n fontSize: theme.typography.bodySmall.fontSize,\n minWidth: '1em',\n marginLeft: theme.spacing(1),\n padding: theme.spacing(0.25, 1),\n }),\n logsCountStyles: css({\n fontSize: theme.typography.bodySmall.fontSize,\n label: 'counter',\n marginLeft: theme.spacing(1),\n borderRadius: theme.spacing(3),\n backgroundColor: theme.colors.action.hover,\n padding: theme.spacing(0.25, 1),\n color: theme.colors.text.secondary,\n fontWeight: theme.typography.fontWeightMedium,\n }),\n };\n}\n","import { locationService } from '@grafana/runtime';\nimport { getLineFiltersVariable } from './variableGetters';\nimport { LineFilterCaseSensitive, LineFilterOp } from './filterTypes';\nimport { ServiceScene } from '../Components/ServiceScene/ServiceScene';\nimport { urlUtil } from '@grafana/data';\nimport { sceneGraph } from '@grafana/scenes';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\n\nfunction removeEscapeChar(value: string, caseSensitive: boolean) {\n const charsEscapedByEscapeRegExp = ['^', '$', '.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '|'];\n if (!caseSensitive) {\n charsEscapedByEscapeRegExp.push('\\\\');\n }\n return value\n .split('')\n .filter((char, index, stringArray) => {\n // We need to differentiate between user entered escape chars, and escape chars added by lodash escapeRegExp to return the same query results in urls from before the line filter regex feature\n // Since there is no reverse of the escapeRegExp method provided by lodash we're essentially building our own \"unescapeRegExp\"\n const nextChar = stringArray[index + 1];\n const isNextCharRegex = charsEscapedByEscapeRegExp.includes(nextChar);\n return !(char === '\\\\' && isNextCharRegex);\n })\n .join('');\n}\n\n/**\n * Migrates old line filter to new variables\n */\nexport function migrateLineFilterV1(serviceScene: ServiceScene) {\n const search = urlUtil.getUrlSearchParams();\n\n const deprecatedLineFilterArray = search['var-lineFilter'];\n if (!Array.isArray(deprecatedLineFilterArray) || !deprecatedLineFilterArray.length) {\n return;\n }\n const deprecatedLineFilter = deprecatedLineFilterArray[0];\n if (typeof deprecatedLineFilter !== 'string' || !deprecatedLineFilter) {\n return;\n }\n\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const globalLineFilterVars = getLineFiltersVariable(serviceScene);\n const caseSensitiveMatches = deprecatedLineFilter?.match(/\\|=.`(.+?)`/);\n\n if (caseSensitiveMatches && caseSensitiveMatches.length === 2) {\n indexScene.state.body?.state.lineFilterRenderer?.addActivationHandler(() => {\n globalLineFilterVars.setState({\n filters: [\n {\n key: LineFilterCaseSensitive.caseSensitive,\n operator: LineFilterOp.match,\n value: removeEscapeChar(caseSensitiveMatches[1], true),\n keyLabel: '0',\n },\n ],\n });\n });\n }\n\n const caseInsensitiveMatches = deprecatedLineFilter?.match(/`\\(\\?i\\)(.+)`/);\n if (caseInsensitiveMatches && caseInsensitiveMatches.length === 2) {\n indexScene.state.body?.state.lineFilterRenderer?.addActivationHandler(() => {\n globalLineFilterVars.updateFilters([\n {\n key: LineFilterCaseSensitive.caseInsensitive,\n operator: LineFilterOp.match,\n value: removeEscapeChar(caseInsensitiveMatches[1], false),\n keyLabel: '0',\n },\n ]);\n });\n }\n const location = locationService.getLocation();\n\n // Remove from url without refreshing\n delete search['var-lineFilter'];\n locationService.replace(urlUtil.renderUrl(location.pathname, search));\n}\n","import React from 'react';\n\nimport { LoadingState, PanelData } from '@grafana/data';\nimport {\n QueryRunnerState,\n SceneComponentProps,\n SceneDataProvider,\n SceneDataState,\n SceneFlexItem,\n SceneFlexLayout,\n sceneGraph,\n SceneObject,\n SceneObjectBase,\n SceneObjectState,\n SceneQueryRunner,\n SceneVariableValueChangedEvent,\n VariableDependencyConfig,\n} from '@grafana/scenes';\nimport { LoadingPlaceholder } from '@grafana/ui';\nimport { getQueryRunner, getResourceQueryRunner } from 'services/panel';\nimport { buildDataQuery, buildResourceQuery } from 'services/query';\nimport {\n EMPTY_VARIABLE_VALUE,\n isAdHocFilterValueUserInput,\n LEVEL_VARIABLE_VALUE,\n LOG_STREAM_SELECTOR_EXPR,\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n stripAdHocFilterUserInputPrefix,\n VAR_DATASOURCE,\n VAR_FIELDS,\n VAR_LABELS,\n VAR_LABELS_EXPR,\n VAR_LEVELS,\n VAR_PATTERNS,\n} from 'services/variables';\nimport { getMetadataService } from '../../services/metadata';\nimport { navigateToDrilldownPage, navigateToIndex, navigateToValueBreakdown } from '../../services/navigate';\nimport { areArraysEqual } from '../../services/comparison';\nimport { ActionBarScene } from './ActionBarScene';\nimport { breakdownViewsDefinitions, TabNames, valueBreakdownViews } from './BreakdownViews';\nimport {\n getDataSourceVariable,\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLevelsVariable,\n getLineFiltersVariable,\n getMetadataVariable,\n getPatternsVariable,\n} from '../../services/variableGetters';\nimport { logger } from '../../services/logger';\nimport { IndexScene, showLogsButtonSceneKey } from '../IndexScene/IndexScene';\nimport {\n getDrilldownSlug,\n getDrilldownValueSlug,\n getPrimaryLabelFromUrl,\n PageSlugs,\n ValueSlugs,\n} from '../../services/routing';\nimport { replaceSlash } from '../../services/extensions/links';\nimport { ShowLogsButtonScene } from '../IndexScene/ShowLogsButtonScene';\nimport { migrateLineFilterV1 } from '../../services/migrations';\nimport { VariableHide } from '@grafana/schema';\nimport { LEVELS_VARIABLE_SCENE_KEY, LevelsVariableScene } from '../IndexScene/LevelsVariableScene';\nimport { isOperatorInclusive } from '../../services/operatorHelpers';\n\nexport const LOGS_PANEL_QUERY_REFID = 'logsPanelQuery';\nexport const LOGS_COUNT_QUERY_REFID = 'logsCountQuery';\nconst PATTERNS_QUERY_REFID = 'patterns';\nconst DETECTED_LABELS_QUERY_REFID = 'detectedLabels';\nconst DETECTED_FIELDS_QUERY_REFID = 'detectedFields';\n\ntype MakeOptional = Pick, K> & Omit;\n\ntype ServiceSceneLoadingStates = {\n [name in TabNames]: boolean;\n};\n\nexport interface ServiceSceneCustomState {\n labelsCount?: number;\n patternsCount?: number;\n fieldsCount?: number;\n loading?: boolean;\n totalLogsCount?: number;\n logsCount?: number;\n}\n\nexport interface ServiceSceneState extends SceneObjectState, ServiceSceneCustomState {\n body: SceneFlexLayout | undefined;\n drillDownLabel?: string;\n $data: SceneDataProvider | undefined;\n $logsCount: SceneQueryRunner | undefined;\n $patternsData: SceneQueryRunner | undefined;\n $detectedLabelsData: SceneQueryRunner | undefined;\n $detectedFieldsData: SceneQueryRunner | undefined;\n loadingStates: ServiceSceneLoadingStates;\n}\n\nexport function getLogsPanelFrame(data: PanelData | undefined) {\n return data?.series.find((series) => series.refId === LOGS_PANEL_QUERY_REFID);\n}\n\nexport function getDetectedLabelsFrame(sceneRef: SceneObject) {\n const serviceScene = sceneGraph.getAncestor(sceneRef, ServiceScene);\n return serviceScene.state.$detectedLabelsData?.state.data?.series?.[0];\n}\n\nexport function getDetectedFieldsFrame(sceneRef: SceneObject) {\n const serviceScene = sceneGraph.getAncestor(sceneRef, ServiceScene);\n return getDetectedFieldsFrameFromQueryRunnerState(serviceScene.state.$detectedFieldsData?.state);\n}\n\nexport const getDetectedFieldsFrameFromQueryRunnerState = (state?: QueryRunnerState) => {\n // Only ever one frame in the response\n return state?.data?.series?.[0];\n};\n\nexport const getDetectedFieldsNamesFromQueryRunnerState = (state: QueryRunnerState) => {\n // The first field, DETECTED_FIELDS_NAME_FIELD, has the list of names of the detected fields\n return state.data?.series?.[0]?.fields?.[0];\n};\n\nexport const getDetectedFieldsParsersFromQueryRunnerState = (state: QueryRunnerState) => {\n // The third field, DETECTED_FIELDS_PARSER_NAME, has the list of parsers of the detected fields\n return state.data?.series?.[0]?.fields?.[2];\n};\n\nexport class ServiceScene extends SceneObjectBase {\n protected _variableDependency = new VariableDependencyConfig(this, {\n variableNames: [VAR_DATASOURCE, VAR_LABELS, VAR_FIELDS, VAR_PATTERNS, VAR_LEVELS],\n });\n\n public constructor(\n state: MakeOptional<\n ServiceSceneState,\n | 'body'\n | '$data'\n | '$patternsData'\n | '$detectedLabelsData'\n | '$detectedFieldsData'\n | 'loadingStates'\n | '$logsCount'\n >\n ) {\n super({\n loadingStates: {\n [TabNames.patterns]: false,\n [TabNames.labels]: false,\n [TabNames.fields]: false,\n [TabNames.logs]: false,\n },\n loading: true,\n body: state.body ?? buildGraphScene(),\n $data: getServiceSceneQueryRunner(),\n $patternsData: getPatternsQueryRunner(),\n $detectedLabelsData: getDetectedLabelsQueryRunner(),\n $detectedFieldsData: getDetectedFieldsQueryRunner(),\n $logsCount: getLogCountQueryRunner(),\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private setSubscribeToLabelsVariable() {\n const variable = getLabelsVariable(this);\n if (variable.state.filters.length === 0) {\n this.redirectToStart();\n return;\n }\n this._subs.add(\n variable.subscribeToState((newState, prevState) => {\n if (newState.filters.length === 0) {\n this.redirectToStart();\n }\n\n // If we remove the service name filter, we should redirect to the start\n let { labelName, labelValue, breakdownLabel } = getPrimaryLabelFromUrl();\n\n // Before we dynamically pulled label filter keys into the URL, we had hardcoded \"service\" as the primary label slug, we want to keep URLs the same, so overwrite \"service_name\" with \"service\" if that's the primary label\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n const prevRouteMatch = indexScene.state.routeMatch;\n\n // The \"primary\" label used in the URL is no longer active, pick a new one\n if (\n !newState.filters.some(\n (f) => f.key === labelName && isOperatorInclusive(f.operator) && replaceSlash(f.value) === labelValue\n )\n ) {\n const newPrimaryLabel = newState.filters.find(\n (f) => isOperatorInclusive(f.operator) && f.value !== EMPTY_VARIABLE_VALUE\n );\n if (newPrimaryLabel) {\n const newPrimaryLabelValue = isAdHocFilterValueUserInput(newPrimaryLabel.value)\n ? replaceSlash(stripAdHocFilterUserInputPrefix(newPrimaryLabel.value))\n : replaceSlash(newPrimaryLabel.value);\n indexScene.setState({\n routeMatch: {\n ...prevRouteMatch,\n params: {\n ...prevRouteMatch?.params,\n labelName: newPrimaryLabel.key === SERVICE_NAME ? SERVICE_UI_LABEL : newPrimaryLabel.key,\n // If there are a bunch of values separated by pipe, like labels that come from explore, let's truncate the value so the slug doesn't get too long\n labelValue: newPrimaryLabelValue.split('|')[0],\n },\n url: prevRouteMatch?.url ?? '',\n path: prevRouteMatch?.path ?? '',\n isExact: prevRouteMatch?.isExact ?? true,\n },\n });\n\n this.resetTabCount();\n\n if (!breakdownLabel) {\n navigateToDrilldownPage(getDrilldownSlug(), this);\n } else {\n navigateToValueBreakdown(getDrilldownValueSlug(), breakdownLabel, this);\n }\n } else {\n this.redirectToStart();\n }\n } else if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$patternsData?.runQueries();\n this.state.$detectedLabelsData?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n })\n );\n }\n\n private redirectToStart() {\n // Clear ongoing queries\n this.setState({\n $data: undefined,\n $logsCount: undefined,\n body: undefined,\n $patternsData: undefined,\n $detectedLabelsData: undefined,\n $detectedFieldsData: undefined,\n patternsCount: undefined,\n labelsCount: undefined,\n fieldsCount: undefined,\n logsCount: undefined,\n totalLogsCount: undefined,\n });\n getMetadataService().setServiceSceneState(this.state);\n this._subs.unsubscribe();\n\n // Redirect to root with updated params, which will trigger history push back to index route, preventing empty page or empty service query bugs\n navigateToIndex();\n }\n\n private showVariables() {\n const levelsVar = sceneGraph.findByKeyAndType(this, LEVELS_VARIABLE_SCENE_KEY, LevelsVariableScene);\n levelsVar.setState({ visible: true });\n getFieldsAndMetadataVariable(this).setState({ hide: VariableHide.dontHide });\n }\n\n /**\n * After routing we need to pull any data set to the service scene by other routes from the metadata singleton,\n * as each route has a different instantiation of this scene\n * @private\n */\n private getMetadata() {\n const metadataService = getMetadataService();\n const state = metadataService.getServiceSceneState();\n\n if (state) {\n this.setState({\n ...state,\n });\n }\n }\n\n private onActivate() {\n // Hide show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: true });\n this.showVariables();\n this.getMetadata();\n this.resetBodyAndData();\n\n this.setBreakdownView();\n\n // Run queries on activate\n this.runQueries();\n\n // Query Subscriptions\n this._subs.add(this.subscribeToPatternsQuery());\n this._subs.add(this.subscribeToDetectedLabelsQuery());\n\n // Fields tab will update its own count, and update count when a query fails\n this._subs.add(this.subscribeToDetectedFieldsQuery(getDrilldownSlug() !== PageSlugs.fields));\n this._subs.add(this.subscribeToLogsQuery());\n this._subs.add(this.subscribeToLogsCountQuery());\n\n // Variable subscriptions\n this.setSubscribeToLabelsVariable();\n this._subs.add(this.subscribeToFieldsVariable());\n this._subs.add(this.subscribeToMetadataVariable());\n this._subs.add(this.subscribeToLevelsVariableChangedEvent());\n this._subs.add(this.subscribeToLevelsVariableFiltersState());\n this._subs.add(this.subscribeToDataSourceVariable());\n this._subs.add(this.subscribeToPatternsVariable());\n this._subs.add(this.subscribeToLineFiltersVariable());\n\n // Update query runner on manual time range change\n this._subs.add(this.subscribeToTimeRange());\n\n // Migrations\n migrateLineFilterV1(this);\n }\n\n private subscribeToPatternsVariable() {\n return getPatternsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private subscribeToLineFiltersVariable() {\n return getLineFiltersVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.state.$logsCount?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n });\n }\n\n private subscribeToDataSourceVariable() {\n return getDataSourceVariable(this).subscribeToState(() => {\n this.redirectToStart();\n });\n }\n\n private resetTabCount() {\n this.setState({\n fieldsCount: undefined,\n labelsCount: undefined,\n patternsCount: undefined,\n });\n\n getMetadataService().setServiceSceneState(this.state);\n }\n\n private subscribeToFieldsVariable() {\n const fieldsVar = getFieldsVariable(this);\n return fieldsVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private subscribeToMetadataVariable() {\n const metadataVar = getMetadataVariable(this);\n return metadataVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n /**\n * Subscribe to SceneVariableValueChangedEvent and run logs count and detectedFields on update.\n * In the levels variable renderer we update the ad-hoc filters, but we don't always want to immediately execute queries.\n */\n private subscribeToLevelsVariableChangedEvent() {\n return getLevelsVariable(this).subscribeToEvent(SceneVariableValueChangedEvent, () => {\n this.state.$detectedFieldsData?.runQueries();\n });\n }\n\n /**\n * Subscribe to actual filter changes and update the logs count\n * @private\n */\n private subscribeToLevelsVariableFiltersState() {\n const levelsVariable = getLevelsVariable(this);\n return levelsVariable.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.state.$logsCount?.runQueries();\n }\n });\n }\n\n private runQueries() {\n const slug = getDrilldownSlug();\n const parentSlug = getDrilldownValueSlug();\n\n // If we don't have a patterns count in the tabs, or we are activating the patterns scene, run the pattern query\n if (slug === PageSlugs.patterns || this.state.patternsCount === undefined) {\n this.state.$patternsData?.runQueries();\n }\n\n // If we don't have a detected labels count, or we are activating the labels scene, run the detected labels query\n if (slug === PageSlugs.labels || parentSlug === ValueSlugs.label || this.state.labelsCount === undefined) {\n this.state.$detectedLabelsData?.runQueries();\n }\n\n // If we don't have a detected fields count, or we are activating the fields scene, run the detected fields query\n if (slug === PageSlugs.fields || parentSlug === ValueSlugs.field || this.state.fieldsCount === undefined) {\n this.state.$detectedFieldsData?.runQueries();\n }\n if (this.state.logsCount === undefined) {\n this.state.$logsCount?.runQueries();\n }\n }\n\n private subscribeToPatternsQuery() {\n return this.state.$patternsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.patterns);\n if (newState.data?.state === LoadingState.Done) {\n const patternsResponse = newState.data.series;\n if (patternsResponse?.length !== undefined) {\n // Save the count of patterns to state\n this.setState({\n patternsCount: patternsResponse.length,\n });\n getMetadataService().setPatternsCount(patternsResponse.length);\n }\n }\n });\n }\n\n private subscribeToDetectedLabelsQuery() {\n return this.state.$detectedLabelsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.labels);\n if (newState.data?.state === LoadingState.Done) {\n const detectedLabelsResponse = newState.data;\n // Detected labels API call always returns a single frame, with a field for each label\n const detectedLabelsFields = detectedLabelsResponse.series[0].fields;\n if (detectedLabelsResponse.series.length !== undefined && detectedLabelsFields.length !== undefined) {\n const removeSpecialFields = detectedLabelsResponse.series[0].fields.filter(\n (f) => LEVEL_VARIABLE_VALUE !== f.name\n );\n\n this.setState({\n labelsCount: removeSpecialFields.length + 1, // Add one for detected_level\n });\n getMetadataService().setLabelsCount(detectedLabelsFields.length);\n }\n }\n });\n }\n\n private updateLoadingState(newState: SceneDataState, key: keyof ServiceSceneLoadingStates) {\n const loadingStates = this.state.loadingStates;\n loadingStates[key] = newState.data?.state === LoadingState.Loading;\n // set loading state to true if any of the queries are loading\n const loading = Object.values(loadingStates).some((v) => v);\n this.setState({ loading, loadingStates });\n }\n\n private subscribeToLogsQuery() {\n return this.state.$data?.subscribeToState((newState, prevState) => {\n this.updateLoadingState(newState, TabNames.logs);\n if (newState.data?.state === LoadingState.Done || newState.data?.state === LoadingState.Streaming) {\n const resultCount = newState.data.series[0]?.length ?? 0;\n if (resultCount !== this.state.logsCount) {\n this.setState({\n logsCount: resultCount,\n });\n }\n }\n });\n }\n\n private subscribeToLogsCountQuery() {\n return this.state.$logsCount?.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n const value: number | undefined = newState.data.series[0]?.fields?.[1]?.values?.[0];\n this.setState({\n totalLogsCount: value,\n });\n }\n });\n }\n\n private subscribeToDetectedFieldsQuery(updateFieldsCount: boolean) {\n return this.state.$detectedFieldsData?.subscribeToState((newState) => {\n this.updateLoadingState(newState, TabNames.fields);\n if (updateFieldsCount && newState.data?.state === LoadingState.Done) {\n const detectedFieldsResponse = newState.data;\n const detectedFieldsFields = detectedFieldsResponse.series[0];\n\n if (detectedFieldsFields !== undefined && detectedFieldsFields.length !== this.state.fieldsCount) {\n this.setState({\n fieldsCount: detectedFieldsFields.length,\n });\n getMetadataService().setFieldsCount(detectedFieldsFields.length);\n }\n }\n });\n }\n\n private subscribeToTimeRange() {\n return sceneGraph.getTimeRange(this).subscribeToState(() => {\n this.state.$patternsData?.runQueries();\n this.state.$detectedLabelsData?.runQueries();\n this.state.$detectedFieldsData?.runQueries();\n this.state.$logsCount?.runQueries();\n });\n }\n\n private resetBodyAndData() {\n let stateUpdate: Partial = {};\n\n if (!this.state.$data) {\n stateUpdate.$data = getServiceSceneQueryRunner();\n }\n\n if (!this.state.$patternsData) {\n stateUpdate.$patternsData = getPatternsQueryRunner();\n }\n\n if (!this.state.$detectedLabelsData) {\n stateUpdate.$detectedLabelsData = getDetectedLabelsQueryRunner();\n }\n\n if (!this.state.$detectedFieldsData) {\n stateUpdate.$detectedFieldsData = getDetectedFieldsQueryRunner();\n }\n\n if (!this.state.$logsCount) {\n stateUpdate.$logsCount = getLogCountQueryRunner();\n }\n\n if (!this.state.body) {\n stateUpdate.body = buildGraphScene();\n }\n\n if (Object.keys(stateUpdate).length) {\n this.setState(stateUpdate);\n }\n }\n\n public setBreakdownView() {\n const { body } = this.state;\n const breakdownView = getDrilldownSlug();\n const breakdownViewDef = breakdownViewsDefinitions.find((v) => v.value === breakdownView);\n\n if (!body) {\n const err = new Error('body is not defined in setBreakdownView!');\n logger.error(err, { msg: 'ServiceScene setBreakdownView error' });\n throw err;\n }\n\n if (breakdownViewDef) {\n body.setState({\n children: [\n ...body.state.children.slice(0, 1),\n breakdownViewDef.getScene((length) => {\n if (breakdownViewDef.value === 'fields') {\n this.setState({ fieldsCount: length });\n }\n }),\n ],\n });\n } else {\n const valueBreakdownView = getDrilldownValueSlug();\n const valueBreakdownViewDef = valueBreakdownViews.find((v) => v.value === valueBreakdownView);\n\n if (valueBreakdownViewDef && this.state.drillDownLabel) {\n body.setState({\n children: [...body.state.children.slice(0, 1), valueBreakdownViewDef.getScene(this.state.drillDownLabel)],\n });\n } else {\n logger.error(new Error('not setting breakdown view'), { msg: 'setBreakdownView error' });\n }\n }\n }\n\n static Component = ({ model }: SceneComponentProps) => {\n const { body } = model.useState();\n if (body) {\n return ;\n }\n\n return ;\n };\n}\n\nfunction buildGraphScene() {\n return new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n ySizing: 'content',\n body: new ActionBarScene({}),\n }),\n ],\n });\n}\n\nfunction getPatternsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(`{${VAR_LABELS_EXPR}}`, 'patterns', { refId: PATTERNS_QUERY_REFID }),\n ]);\n}\n\nfunction getDetectedLabelsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(`{${VAR_LABELS_EXPR}}`, 'detected_labels', { refId: DETECTED_LABELS_QUERY_REFID }),\n ]);\n}\n\nfunction getDetectedFieldsQueryRunner() {\n return getResourceQueryRunner([\n buildResourceQuery(LOG_STREAM_SELECTOR_EXPR, 'detected_fields', { refId: DETECTED_FIELDS_QUERY_REFID }),\n ]);\n}\n\nfunction getServiceSceneQueryRunner() {\n return getQueryRunner([buildDataQuery(LOG_STREAM_SELECTOR_EXPR, { refId: LOGS_PANEL_QUERY_REFID })]);\n}\n\nfunction getLogCountQueryRunner() {\n const queryRunner = getQueryRunner(\n [\n buildDataQuery(`sum(count_over_time(${LOG_STREAM_SELECTOR_EXPR}[$__auto]))`, {\n refId: LOGS_COUNT_QUERY_REFID,\n queryType: 'instant',\n }),\n ],\n { runQueriesMode: 'manual' } // for some reason when this query is set to auto, it doesn't run on time range update, looks like there is different behavior with data providers not in the special $data prop\n );\n\n if (queryRunner instanceof SceneQueryRunner) {\n return queryRunner;\n }\n const error = new Error('log count query provider is not query runner!');\n logger.error(error, { msg: 'getLogCountQueryRunner: invalid return type' });\n throw error;\n}\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport React from 'react';\nimport { Icon, ToolbarButton, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { getFavoriteLabelValuesFromStorage } from '../../services/store';\nimport { addToFavorites, removeFromFavorites } from '../../services/favorites';\n\nexport interface FavoriteServiceHeaderActionSceneState extends SceneObjectState {\n labelValue: string;\n labelName: string;\n ds: string;\n hover?: boolean;\n}\n\nexport class FavoriteServiceHeaderActionScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const { ds, labelValue, labelName, hover } = model.useState();\n const isFavorite = getFavoriteLabelValuesFromStorage(ds, labelName).includes(labelValue);\n const styles = useStyles2((theme) => getStyles(theme, isFavorite, hover));\n const tooltipCopy = isFavorite ? `Remove ${labelValue} from favorites` : `Add ${labelValue} to favorites`;\n\n return (\n \n {\n model.setHover(true);\n }}\n onMouseOut={() => {\n model.setHover(false);\n }}\n icon={}\n color={isFavorite ? 'rgb(235, 123, 24)' : '#ccc'}\n onClick={() => model.onClick(isFavorite)}\n name={'star'}\n aria-label={tooltipCopy}\n tooltip={tooltipCopy}\n />\n \n );\n };\n\n public setHover(hover: boolean) {\n this.setState({\n hover,\n });\n }\n\n public onClick(isFavorite: boolean) {\n if (isFavorite) {\n removeFromFavorites(this.state.labelName, this.state.labelValue, this);\n } else {\n addToFavorites(this.state.labelName, this.state.labelValue, this);\n }\n }\n}\n\nfunction getStyles(theme: GrafanaTheme2, isFavorite: boolean, hover = false) {\n return {\n wrapper: css({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignSelf: 'center',\n }),\n };\n}\n","import React from 'react';\n\nimport { SceneComponentProps, SceneObject, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { LinkButton, useStyles2 } from '@grafana/ui';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getDrillDownIndexLink, pushUrlHandler } from '../../services/navigate';\nimport { getLabelsVariable } from '../../services/variableGetters';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { SERVICE_NAME, SERVICE_UI_LABEL } from '../../services/variables';\nimport { FilterOp } from '../../services/filterTypes';\nimport { testIds } from '../../services/testIds';\nimport { addToFavorites } from '../../services/favorites';\n\nexport interface SelectServiceButtonState extends SceneObjectState {\n labelValue: string;\n labelName: string;\n hidden?: boolean;\n}\n\nexport class SelectServiceButton extends SceneObjectBase {\n constructor(state: SelectServiceButtonState) {\n super(state);\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n onActivate() {\n const labelsVar = getLabelsVariable(this);\n this.setState({ hidden: labelsVar.state.filters.length > 0 });\n labelsVar.subscribeToState((newState) => {\n this.setState({ hidden: newState.filters.length > 0 });\n });\n }\n\n public getLink = () => {\n if (!this.state.labelValue) {\n return;\n }\n\n return getLabelDrilldownLink(this.state.labelName, this.state.labelValue, this);\n };\n\n public onClick = () => {\n selectLabel(this.state.labelName, this.state.labelValue, this);\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n const labels = getLabelsVariable(model);\n // Re-render links on label filter changes\n labels.useState();\n const { hidden } = model.useState();\n if (hidden) {\n return null;\n }\n const link = model.getLink();\n return (\n \n Show logs\n \n );\n };\n}\n\n/**\n * Select label tracking and add to favorites\n */\nfunction selectLabel(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n reportAppInteraction(USER_EVENTS_PAGES.service_selection, USER_EVENTS_ACTIONS.service_selection.service_selected, {\n value: primaryLabelValue,\n label: primaryLabelName,\n });\n\n addToFavorites(primaryLabelName, primaryLabelValue, sceneRef);\n}\n\n/**\n * Builds label drilldown link\n */\nexport function getLabelDrilldownLink(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n const variable = getLabelsVariable(sceneRef);\n\n const filteredFilters = variable.state.filters.filter(\n (f) => !(f.key === primaryLabelName && f.value === primaryLabelValue)\n );\n\n const filters = [\n ...filteredFilters,\n {\n key: primaryLabelName,\n operator: FilterOp.Equal,\n value: primaryLabelValue,\n },\n ];\n\n if (primaryLabelName === SERVICE_NAME) {\n primaryLabelName = SERVICE_UI_LABEL;\n }\n\n const clonedVar = variable.clone({ filters });\n\n // In this case, we don't have a ServiceScene created yet, so we call a special function to navigate there for the first time\n return getDrillDownIndexLink(primaryLabelName, primaryLabelValue, clonedVar.urlSync?.getUrlState());\n}\n\n/**\n * Navigates to drilldown\n */\nexport function goToLabelDrillDownLink(primaryLabelName: string, primaryLabelValue: string, sceneRef: SceneObject) {\n const link = getLabelDrilldownLink(primaryLabelName, primaryLabelValue, sceneRef);\n selectLabel(primaryLabelName, primaryLabelValue, sceneRef);\n pushUrlHandler(link);\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n button: css({\n alignSelf: 'center',\n }),\n };\n}\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\nimport { TextLink, Text } from '@grafana/ui';\n\nexport const ConfigureVolumeError = () => {\n return (\n \n

Log volume has not been configured.

\n

\n \n Instructions to enable volume in the Loki config:\n \n

\n \n
\n          \n            limits_config:\n            
\n   volume_enabled: true\n
\n
\n
\n
\n );\n};\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\n\nexport const NoServiceSearchResults = () => {\n return (\n \n

No service matched your search.

\n
\n );\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Select, Stack, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { ServiceSelectionTabsScene, TabOption } from './ServiceSelectionTabsScene';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport interface TabPopoverSceneState extends SceneObjectState {}\n\nexport class TabPopoverScene extends SceneObjectBase {\n public static Component = ({ model }: SceneComponentProps) => {\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const serviceSelectionTabsScene = sceneGraph.getAncestor(model, ServiceSelectionTabsScene);\n const { tabOptions, showPopover } = serviceSelectionTabsScene.useState();\n const popoverStyles = useStyles2(getPopoverStyles);\n\n const tabOptionsWithIcon: TabOption[] = tabOptions.map((opt) => {\n return {\n ...opt,\n icon: opt.saved ? 'save' : undefined,\n label: `${opt.label}`,\n };\n });\n\n return (\n \n
\n \n menuShouldPortal={false}\n width={50}\n onBlur={() => {\n serviceSelectionTabsScene.toggleShowPopover();\n }}\n autoFocus={true}\n isOpen={showPopover}\n placeholder={'Search labels'}\n options={tabOptionsWithIcon}\n isSearchable={true}\n openMenuOnFocus={true}\n onChange={(option) => {\n // Add value to variable\n if (option.value) {\n // Hide the popover\n serviceSelectionTabsScene.toggleShowPopover();\n // Set new tab\n serviceSelectionScene.setSelectedTab(option.value);\n }\n }}\n />\n
\n
\n );\n };\n}\n\nconst getPopoverStyles = (theme: GrafanaTheme2) => ({\n card: {\n body: css({\n padding: theme.spacing(1),\n }),\n p: css({\n maxWidth: 300,\n }),\n },\n});\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState, SceneQueryRunner } from '@grafana/scenes';\nimport React, { useRef } from 'react';\nimport { Icon, Popover, PopoverController, Tab, TabsBar, Tooltip, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2, LoadingState, SelectableValue } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { SERVICE_NAME, SERVICE_UI_LABEL } from '../../services/variables';\nimport { truncateText } from '../../services/text';\nimport { rest } from 'lodash';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { getSceneQueryRunner } from '../../services/panel';\nimport { buildResourceQuery } from '../../services/query';\nimport { TabPopoverScene } from './TabPopoverScene';\nimport { getDataSourceVariable, getServiceSelectionPrimaryLabel } from '../../services/variableGetters';\nimport { getFavoriteTabsFromStorage, removeTabFromLocalStorage } from '../../services/store';\n\nexport interface TabOption extends SelectableValue {\n label: string;\n value: string;\n active?: boolean;\n saved?: boolean;\n savedIndex?: number;\n}\n\nexport interface ServiceSelectionTabsSceneState extends SceneObjectState {\n tabOptions: TabOption[];\n showPopover: boolean;\n $labelsData: SceneQueryRunner;\n popover?: TabPopoverScene;\n}\n\ninterface LabelOptions {\n label: string;\n cardinality: number;\n}\n\nexport class ServiceSelectionTabsScene extends SceneObjectBase {\n constructor(state: Partial) {\n super({\n showPopover: false,\n $labelsData: getSceneQueryRunner({\n queries: [buildResourceQuery('', 'detected_labels')],\n runQueriesMode: 'manual',\n }),\n tabOptions: [\n {\n label: SERVICE_UI_LABEL,\n value: SERVICE_NAME,\n saved: true,\n },\n ],\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n // Scene vars\n const { tabOptions, showPopover, popover, $labelsData } = model.useState();\n const { data } = $labelsData.useState();\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const primaryLabel = getServiceSelectionPrimaryLabel(model);\n // Re-render when active tab changes, which is stored in the primary label variable\n primaryLabel.useState();\n\n // Constants\n const styles = useStyles2(getTabsStyles);\n const popoverRef = useRef(null);\n const maxLabelLength = 15;\n\n return (\n \n {tabOptions\n .filter((tabLabel) => tabLabel.saved || tabLabel.active || tabLabel.value === SERVICE_NAME)\n .sort((a, b) => {\n // Service name goes first\n if (a.value === SERVICE_NAME || b.value === SERVICE_NAME) {\n return a.value === SERVICE_NAME ? -1 : 1;\n }\n\n // Then sort by the order added to local storage\n return (a.savedIndex ?? 0) - (b.savedIndex ?? 0);\n })\n .map((tabLabel) => {\n const tab = (\n {\n // Set the new active tab\n serviceSelectionScene.setSelectedTab(tabLabel.value);\n }}\n label={truncateText(tabLabel.label, maxLabelLength, true)}\n active={tabLabel.active}\n suffix={\n tabLabel.value !== SERVICE_NAME\n ? (props) => {\n return (\n <>\n \n {\n if (e.key === 'Enter') {\n model.removeSavedTab(tabLabel.value);\n }\n }}\n onClick={(e) => {\n // Don't bubble up to the tab component, we don't want to select the tab we're removing\n e.stopPropagation();\n model.removeSavedTab(tabLabel.value);\n }}\n name={'times'}\n className={cx(props.className)}\n />\n \n \n );\n }\n : undefined\n }\n />\n );\n\n if (tabLabel.label.length > maxLabelLength) {\n return (\n \n {tab}\n \n );\n } else {\n return tab;\n }\n })}\n {data?.state === LoadingState.Loading && }\n\n {/* Add more tabs tab */}\n {data?.state === LoadingState.Done && (\n \n \n \n )}\n\n {popover && (\n }>\n {(showPopper, hidePopper, popperProps) => {\n const blurFocusProps = {\n onBlur: hidePopper,\n onFocus: showPopper,\n };\n\n return (\n <>\n {popoverRef.current && (\n <>\n \n \n )}\n \n );\n }}\n \n )}\n \n );\n };\n\n removeSavedTab = (labelName: string) => {\n removeTabFromLocalStorage(getDataSourceVariable(this).getValue().toString(), labelName);\n\n const labels = this.getLabelsFromQueryRunnerState();\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n\n // If the user is closing the active tab, select the default tab\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n if (serviceSelectionScene.getSelectedTab() === labelName) {\n serviceSelectionScene.selectDefaultLabelTab();\n }\n };\n\n toggleShowPopover = () => {\n this.setState({\n showPopover: !this.state.showPopover,\n });\n };\n\n getLabelsFromQueryRunnerState(state = this.state.$labelsData?.state): LabelOptions[] | undefined {\n return state.data?.series[0].fields.map((f) => {\n return {\n label: f.name,\n cardinality: f.values[0],\n };\n });\n }\n\n public populatePrimaryLabelsVariableOptions(labels: LabelOptions[]) {\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n const selectedTab = serviceSelectionScene.getSelectedTab();\n const savedTabs = getFavoriteTabsFromStorage(getDataSourceVariable(this).getValue().toString());\n\n const tabOptions: TabOption[] = labels\n .map((l) => {\n const savedIndex = savedTabs.indexOf(l.label);\n const option: TabOption = {\n label: l.label === SERVICE_NAME ? SERVICE_UI_LABEL : l.label,\n value: l.label,\n active: selectedTab === l.label,\n saved: savedIndex !== -1,\n savedIndex,\n };\n return option;\n })\n .sort((a, b) => {\n // Sort service first\n if (a.value === SERVICE_NAME || b.value === SERVICE_NAME) {\n return a.value === SERVICE_NAME ? -1 : 1;\n }\n\n // Then sort alphabetically\n return a.label < b.label ? -1 : a.label > b.label ? 1 : 0;\n });\n this.setState({\n tabOptions,\n });\n }\n\n private runDetectedLabels() {\n this.state.$labelsData.runQueries();\n }\n\n private runDetectedLabelsSubs() {\n // Update labels/tabs on time range change\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n this.runDetectedLabels();\n })\n );\n\n // Update labels (tabs) when datasource is changed\n this._subs.add(\n getDataSourceVariable(this).subscribeToState(() => {\n this.runDetectedLabels();\n })\n );\n }\n\n private onActivate() {\n // Get labels\n this.runDetectedLabels();\n\n this.setState({\n popover: new TabPopoverScene({}),\n });\n\n this.runDetectedLabelsSubs();\n\n // Update labels (tabs) when datasource is changed\n this._subs.add(\n getDataSourceVariable(this).subscribeToState(() => {\n this.state.$labelsData.runQueries();\n })\n );\n\n this._subs.add(\n getServiceSelectionPrimaryLabel(this).subscribeToState(() => {\n const labels = this.getLabelsFromQueryRunnerState(this.state.$labelsData?.state);\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n })\n );\n\n this._subs.add(\n this.state.$labelsData.subscribeToState((newState) => {\n if (newState.data?.state === LoadingState.Done) {\n const labels = this.getLabelsFromQueryRunnerState(newState);\n const serviceSelectionScene = sceneGraph.getAncestor(this, ServiceSelectionScene);\n\n if (labels) {\n this.populatePrimaryLabelsVariableOptions(labels);\n }\n\n const selectedTab = serviceSelectionScene.getSelectedTab();\n // If the tab is no longer available, either because the user changed the datasource, or time range, select the default tab\n if (!labels?.some((label) => label.label === selectedTab)) {\n serviceSelectionScene.selectDefaultLabelTab();\n }\n }\n })\n );\n }\n}\n\nconst getTabsStyles = (theme: GrafanaTheme2) => ({\n tabs: css({\n overflowY: 'hidden',\n }),\n addTab: css({\n label: 'add-label-tab',\n color: theme.colors.primary.text,\n '& button': {\n color: theme.colors.primary.text,\n },\n }),\n popover: css({\n borderRadius: theme.shape.radius.default,\n boxShadow: theme.shadows.z3,\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n }),\n});\n","import React from 'react';\nimport { GrotError } from 'Components/GrotError';\n\nexport const NoServiceVolume = (props: { labelName: string }) => {\n return (\n \n

\n No logs found in {props.labelName}.
\n Please adjust time range or select another label.\n

\n
\n );\n};\n","import { SceneComponentProps, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { Button, useStyles2 } from '@grafana/ui';\nimport { testIds } from '../../services/testIds';\nimport { addToFilters, FilterType } from '../ServiceScene/Breakdowns/AddToFiltersButton';\nimport { VAR_LABELS } from '../../services/variables';\nimport { getLabelsVariable, getValueFromAdHocVariableFilter } from '../../services/variableGetters';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from '../../services/analytics';\nimport { css } from '@emotion/css';\nimport React from 'react';\nimport { FilterOp } from '../../services/filterTypes';\n\nexport interface AddLabelToFiltersHeaderActionSceneState extends SceneObjectState {\n name: string;\n value: string;\n included: boolean | null;\n}\n\nexport class AddLabelToFiltersHeaderActionScene extends SceneObjectBase {\n constructor(state: Omit) {\n super({\n ...state,\n included: null,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n onActivate() {\n this.setState({ ...this.isSelected() });\n this._subs.add(\n getLabelsVariable(this).subscribeToState(() => {\n const selected = this.isSelected();\n if (this.state.included !== selected.included) {\n this.setState({ ...selected });\n }\n })\n );\n }\n\n isSelected = () => {\n const variable = getLabelsVariable(this);\n\n // Check if the filter is already there\n const filterInSelectedFilters = variable.state.filters.find((f) => {\n const value = getValueFromAdHocVariableFilter(VAR_LABELS, f);\n return f.key === this.state.name && value.value === this.state.value;\n });\n\n if (!filterInSelectedFilters) {\n return { included: false };\n }\n\n // @todo support regex operator\n return {\n included: filterInSelectedFilters.operator === FilterOp.Equal,\n };\n };\n\n public static Component = ({ model }: SceneComponentProps) => {\n const { value, included } = model.useState();\n\n const styles = useStyles2(getStyles);\n return (\n \n (included === true ? model.onClick('clear') : model.onClick('include'))}\n data-testid={testIds.exploreServiceDetails.buttonFilterInclude}\n >\n {included ? 'Remove' : 'Include'}\n \n \n );\n };\n\n public getFilter() {\n return { name: this.state.name, value: this.state.value };\n }\n\n public onClick = (type: FilterType) => {\n const filter = this.getFilter();\n\n addToFilters(filter.name, filter.value, type, this, VAR_LABELS);\n\n const variable = getLabelsVariable(this);\n reportAppInteraction(USER_EVENTS_PAGES.service_selection, USER_EVENTS_ACTIONS.service_selection.add_to_filters, {\n filterType: 'index-filters',\n key: filter.name,\n action: type,\n filtersLength: variable?.state.filters.length || 0,\n });\n\n this.setState({ ...this.isSelected() });\n };\n}\n\nconst getStyles = () => {\n return {\n container: css({\n display: 'flex',\n justifyContent: 'center',\n }),\n includeButton: css({\n borderRadius: 0,\n }),\n wrapper: css({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignSelf: 'center',\n }),\n };\n};\n","import { SceneComponentProps, sceneGraph, SceneObjectBase, SceneObjectState } from '@grafana/scenes';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { IconButton, Pagination, Select, useStyles2 } from '@grafana/ui';\nimport React, { useEffect } from 'react';\nimport { ServiceSelectionScene } from './ServiceSelectionScene';\nimport { setServiceSelectionPageCount } from '../../services/store';\n\nexport interface ServiceSelectionPaginationSceneState extends SceneObjectState {}\n\nexport class ServiceSelectionPaginationScene extends SceneObjectBase {\n public static PageCount = ({\n model,\n totalCount,\n }: SceneComponentProps & { totalCount: number }) => {\n const styles = useStyles2(getPageCountStyles);\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const { countPerPage } = serviceSelectionScene.useState();\n const options = getCountOptionsFromTotal(totalCount);\n useEffect(() => {\n const lastOptionValue = options[options.length - 1]?.value ?? countPerPage.toString();\n if (countPerPage.toString() > lastOptionValue) {\n serviceSelectionScene.setState({ countPerPage: parseInt(lastOptionValue, 10) });\n }\n }, [countPerPage, options, serviceSelectionScene]);\n return (\n \n \n Showing{' '}\n {\n if (value.value) {\n const countPerPage = parseInt(value.value, 10);\n serviceSelectionScene.setState({ countPerPage, currentPage: 1 });\n serviceSelectionScene.updateBody();\n setServiceSelectionPageCount(countPerPage);\n }\n }}\n options={options}\n value={countPerPage.toString()}\n />{' '}\n of {totalCount}{' '}\n \n \n \n );\n };\n public static Component = ({\n model,\n totalCount,\n }: SceneComponentProps & { totalCount: number }) => {\n const serviceSelectionScene = sceneGraph.getAncestor(model, ServiceSelectionScene);\n const { countPerPage, currentPage } = serviceSelectionScene.useState();\n const getStyles = (theme: GrafanaTheme2) => ({\n pagination: css({\n float: 'none',\n }),\n paginationWrap: css({\n [theme.breakpoints.up('lg')]: {\n display: 'none',\n },\n [theme.breakpoints.down('lg')]: {\n display: 'flex',\n justifyContent: 'flex-end',\n flex: '1 0 auto',\n },\n }),\n paginationWrapMd: css({\n [theme.breakpoints.down('lg')]: {\n display: 'none',\n },\n [theme.breakpoints.up('lg')]: {\n display: 'flex',\n justifyContent: 'flex-end',\n flex: '1 0 auto',\n },\n }),\n });\n\n const styles = useStyles2(getStyles);\n\n if (totalCount > countPerPage) {\n return (\n <>\n \n {\n serviceSelectionScene.setState({ currentPage: toPage });\n serviceSelectionScene.updateBody();\n }}\n />\n \n \n {\n serviceSelectionScene.setState({ currentPage: toPage });\n serviceSelectionScene.updateBody();\n }}\n />\n \n \n );\n }\n\n return null;\n };\n}\n\nfunction getPageCountStyles(theme: GrafanaTheme2) {\n return {\n icon: css({\n color: theme.colors.text.disabled,\n marginLeft: theme.spacing.x1,\n }),\n searchPageCountWrap: css({\n display: 'flex',\n alignItems: 'center',\n }),\n select: css({\n maxWidth: '65px',\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n }),\n searchFieldPlaceholderText: css({\n fontSize: theme.typography.bodySmall.fontSize,\n color: theme.colors.text.disabled,\n alignItems: 'center',\n display: 'flex',\n flex: '1 0 auto',\n textWrapMode: 'nowrap',\n }),\n };\n}\n\nexport function getCountOptionsFromTotal(totalCount: number) {\n const delta = 20;\n const end = 60;\n const roundedTotalCount = Math.ceil(totalCount / delta) * delta;\n\n const options: Array> = [];\n for (let count = delta; count <= end && count <= roundedTotalCount; count += delta) {\n let label = count.toString();\n if (count < delta) {\n label = count.toString();\n } else if (count > totalCount) {\n label = totalCount.toString();\n }\n options.push({\n value: count.toString(),\n label,\n });\n }\n\n return options;\n}\n","import { css } from '@emotion/css';\nimport { debounce } from 'lodash';\nimport React from 'react';\nimport {\n AdHocVariableFilter,\n DashboardCursorSync,\n DataFrame,\n dateTime,\n GrafanaTheme2,\n LoadingState,\n TimeRange,\n} from '@grafana/data';\nimport {\n AdHocFiltersVariable,\n behaviors,\n DataSourceVariable,\n PanelBuilders,\n SceneComponentProps,\n SceneCSSGridItem,\n SceneCSSGridLayout,\n sceneGraph,\n SceneObjectBase,\n SceneObjectState,\n SceneObjectUrlSyncConfig,\n SceneObjectUrlValues,\n SceneQueryRunner,\n SceneVariableSet,\n VizPanel,\n} from '@grafana/scenes';\nimport {\n DrawStyle,\n Field,\n LegendDisplayMode,\n PanelContext,\n SeriesVisibilityChangeMode,\n StackingMode,\n useStyles2,\n} from '@grafana/ui';\nimport { addTabToLocalStorage, getFavoriteLabelValuesFromStorage, getServiceSelectionPageCount } from 'services/store';\nimport {\n EXPLORATION_DS,\n LEVEL_VARIABLE_VALUE,\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n VAR_AGGREGATED_METRICS,\n VAR_LABELS_REPLICA,\n VAR_LABELS_REPLICA_EXPR,\n VAR_PRIMARY_LABEL,\n VAR_PRIMARY_LABEL_EXPR,\n VAR_PRIMARY_LABEL_SEARCH,\n} from 'services/variables';\nimport { goToLabelDrillDownLink, SelectServiceButton } from './SelectServiceButton';\nimport {\n buildDataQuery,\n buildVolumeQuery,\n renderLogQLLabelFilters,\n unwrapWildcardSearch,\n wrapWildcardSearch,\n} from 'services/query';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';\nimport { getQueryRunner, getSceneQueryRunner, setLevelColorOverrides } from 'services/panel';\nimport { ConfigureVolumeError } from './ConfigureVolumeError';\nimport { NoServiceSearchResults } from './NoServiceSearchResults';\nimport { getLevelLabelsFromSeries, toggleLevelVisibility } from 'services/levels';\nimport { ServiceFieldSelector } from '../ServiceScene/Breakdowns/FieldSelector';\nimport { CustomConstantVariable } from '../../services/CustomConstantVariable';\nimport { areArraysEqual } from '../../services/comparison';\nimport {\n clearServiceSelectionSearchVariable,\n getAggregatedMetricsVariable,\n getDataSourceVariable,\n getLabelsVariable,\n getLabelsVariableReplica,\n getServiceSelectionPrimaryLabel,\n getServiceSelectionSearchVariable,\n setServiceSelectionPrimaryLabelKey,\n} from '../../services/variableGetters';\nimport { config, locationService } from '@grafana/runtime';\nimport { VariableHide } from '@grafana/schema';\nimport { ToolbarScene } from '../IndexScene/ToolbarScene';\nimport { IndexScene, showLogsButtonSceneKey } from '../IndexScene/IndexScene';\nimport { ServiceSelectionTabsScene } from './ServiceSelectionTabsScene';\nimport { FavoriteServiceHeaderActionScene } from './FavoriteServiceHeaderActionScene';\nimport { pushUrlHandler } from '../../services/navigate';\nimport { NoServiceVolume } from './NoServiceVolume';\nimport { getQueryRunnerFromChildren } from '../../services/scenes';\nimport { AddLabelToFiltersHeaderActionScene } from './AddLabelToFiltersHeaderActionScene';\nimport { ShowLogsButtonScene } from '../IndexScene/ShowLogsButtonScene';\nimport { ServiceSelectionPaginationScene } from './ServiceSelectionPaginationScene';\n\nconst aggregatedMetricsEnabled: boolean | undefined = config.featureToggles.exploreLogsAggregatedMetrics;\n// Don't export AGGREGATED_SERVICE_NAME, we want to rename things so the rest of the application is agnostic to how we got the services\nconst AGGREGATED_SERVICE_NAME = '__aggregated_metric__';\n\n//@todo make start date user configurable, currently hardcoded for experimental cloud release\nexport const AGGREGATED_METRIC_START_DATE = dateTime('2024-08-30', 'YYYY-MM-DD');\n\ninterface ServiceSelectionSceneState extends SceneObjectState {\n // The body of the component\n body: SceneCSSGridLayout;\n // Show logs of a certain level for a given service\n serviceLevel: Map;\n // Logs volume API response as dataframe with SceneQueryRunner\n $data: SceneQueryRunner;\n tabs?: ServiceSelectionTabsScene;\n // Pagination options\n countPerPage: number;\n currentPage: number;\n paginationScene?: ServiceSelectionPaginationScene;\n\n showPopover: boolean;\n tabOptions: Array<{\n label: string;\n value: string;\n }>;\n}\n\nfunction renderPrimaryLabelFilters(filters: AdHocVariableFilter[]): string {\n if (filters.length) {\n const filter = filters[0];\n return `${filter.key}${filter.operator}\\`${filter.value}\\``;\n }\n\n return '';\n}\n\nconst primaryLabelUrlKey = 'var-primary_label';\nconst datasourceUrlKey = 'var-ds';\n\nexport class ServiceSelectionScene extends SceneObjectBase {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, {\n keys: [primaryLabelUrlKey],\n });\n\n constructor(state: Partial) {\n super({\n body: new SceneCSSGridLayout({ children: [] }),\n $variables: new SceneVariableSet({\n variables: [\n // Service search variable\n new CustomConstantVariable({\n name: VAR_PRIMARY_LABEL_SEARCH,\n label: 'Service',\n hide: VariableHide.hideVariable,\n skipUrlSync: true,\n value: '.+',\n }),\n // variable that stores if aggregated metrics are supported for the query\n new CustomConstantVariable({\n name: VAR_AGGREGATED_METRICS,\n label: '',\n hide: VariableHide.hideLabel,\n value: SERVICE_NAME,\n skipUrlSync: true,\n options: [\n {\n value: SERVICE_NAME,\n label: SERVICE_NAME,\n },\n {\n value: AGGREGATED_SERVICE_NAME,\n label: AGGREGATED_SERVICE_NAME,\n },\n ],\n }),\n // The active tab expression, hidden variable\n new AdHocFiltersVariable({\n name: VAR_PRIMARY_LABEL,\n hide: VariableHide.hideLabel,\n expressionBuilder: (filters) => {\n return renderPrimaryLabelFilters(filters);\n },\n filters: [\n {\n key: getSelectedTabFromUrl().key ?? SERVICE_NAME,\n value: '.+',\n operator: '=~',\n },\n ],\n }),\n new AdHocFiltersVariable({\n name: VAR_LABELS_REPLICA,\n datasource: EXPLORATION_DS,\n layout: 'vertical',\n filters: [],\n expressionBuilder: renderLogQLLabelFilters,\n hide: VariableHide.hideVariable,\n key: 'adhoc_service_filter_replica',\n skipUrlSync: true,\n }),\n ],\n }),\n $data: getSceneQueryRunner({\n queries: [],\n runQueriesMode: 'manual',\n }),\n serviceLevel: new Map(),\n // pagination\n countPerPage: getServiceSelectionPageCount() ?? 20,\n currentPage: 1,\n\n showPopover: false,\n tabOptions: [\n {\n label: SERVICE_UI_LABEL,\n value: SERVICE_NAME,\n },\n ],\n ...state,\n });\n\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n public static Component = ({ model }: SceneComponentProps) => {\n const styles = useStyles2(getStyles);\n const { body, $data, tabs, paginationScene } = model.useState();\n const { data } = $data.useState();\n const selectedTab = model.getSelectedTab();\n\n const serviceStringVariable = getServiceSelectionSearchVariable(model);\n const { label, value: searchValue } = serviceStringVariable.useState();\n const hasSearch = searchValue && searchValue !== '.+';\n\n const { labelsByVolume, labelsToQuery } = model.getLabels(data?.series);\n const isLogVolumeLoading =\n data?.state === LoadingState.Loading || data?.state === LoadingState.Streaming || data === undefined;\n const volumeApiError = $data.state.data?.state === LoadingState.Error;\n\n const onSearchChange = (serviceName?: string) => {\n model.onSearchServicesChange(serviceName);\n };\n\n const filterLabel = model.formatPrimaryLabelForUI();\n let customValue = serviceStringVariable.getValue().toString();\n if (customValue === '.+') {\n customValue = '';\n }\n const customLabel = unwrapWildcardSearch(customValue);\n\n return (\n
\n
\n {tabs && }\n \n
\n onSearchChange(serviceName)}\n selectOption={(value: string) => {\n goToLabelDrillDownLink(selectedTab, value, model);\n }}\n label={filterLabel}\n options={\n labelsToQuery?.map((serviceName) => ({\n value: serviceName,\n label: serviceName,\n })) ?? []\n }\n />\n {!isLogVolumeLoading && (\n \n {paginationScene && (\n \n )}\n {paginationScene && (\n \n )}\n \n )}\n
\n
\n {/** If we don't have any servicesByVolume, volume endpoint is probably not enabled */}\n {!isLogVolumeLoading && volumeApiError && }\n {!isLogVolumeLoading && !volumeApiError && hasSearch && !labelsByVolume?.length && }\n {!isLogVolumeLoading && !volumeApiError && !hasSearch && !labelsByVolume?.length && (\n \n )}\n {!(!isLogVolumeLoading && volumeApiError) && (\n
\n \n
\n {paginationScene && (\n \n )}\n
\n
\n )}\n
\n
\n );\n };\n\n // We could also run model.setState in component, but it is recommended to implement the state-modifying methods in the scene object\n onSearchServicesChange = debounce((primaryLabelSearch?: string) => {\n // Set search variable\n const searchVar = getServiceSelectionSearchVariable(this);\n\n const newSearchString = primaryLabelSearch ? wrapWildcardSearch(primaryLabelSearch) : '.+';\n if (newSearchString !== searchVar.state.value) {\n searchVar.setState({\n value: primaryLabelSearch ? wrapWildcardSearch(primaryLabelSearch) : '.+',\n label: primaryLabelSearch ?? '',\n });\n }\n\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const filter = primaryLabelVar.state.filters[0];\n\n // Update primary label with search string\n if (wrapWildcardSearch(searchVar.state.value.toString()) !== filter.value) {\n primaryLabelVar.setState({\n filters: [\n {\n ...filter,\n value: wrapWildcardSearch(searchVar.state.value.toString()),\n },\n ],\n });\n }\n\n this.setState({\n currentPage: 1,\n });\n\n reportAppInteraction(\n USER_EVENTS_PAGES.service_selection,\n USER_EVENTS_ACTIONS.service_selection.search_services_changed,\n {\n searchQuery: primaryLabelSearch,\n }\n );\n }, 500);\n\n /**\n * Set changes from the URL to the state of the primary label variable\n */\n getUrlState() {\n const { key } = getSelectedTabFromUrl();\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const filter = primaryLabelVar.state.filters[0];\n\n if (filter.key && filter.key !== key) {\n getServiceSelectionPrimaryLabel(this).setState({\n filters: [\n {\n ...filter,\n key: key ?? filter.key,\n },\n ],\n });\n }\n\n return {};\n }\n\n /**\n * Unused, but required\n * @param values\n */\n updateFromUrl(values: SceneObjectUrlValues) {}\n\n addDatasourceChangeToBrowserHistory(newDs: string) {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const dsUrl = search.get(datasourceUrlKey);\n if (dsUrl && newDs !== dsUrl) {\n const currentUrl = location.pathname + location.search;\n search.set(datasourceUrlKey, newDs);\n const newUrl = location.pathname + '?' + search.toString();\n if (currentUrl !== newUrl) {\n pushUrlHandler(newUrl);\n }\n }\n }\n\n /**\n * Attempting to add any change to the primary label variable (i.e. the selected tab) as a browser history event\n * @param newKey\n * @param replace\n */\n addLabelChangeToBrowserHistory(newKey: string, replace = false) {\n const { key: primaryLabelRaw, search, location } = getSelectedTabFromUrl();\n if (primaryLabelRaw) {\n const primaryLabelSplit = primaryLabelRaw?.split('|');\n const keyInUrl = primaryLabelSplit?.[0];\n\n if (keyInUrl !== newKey) {\n primaryLabelSplit[0] = newKey;\n search.set(primaryLabelUrlKey, primaryLabelSplit.join('|'));\n const currentUrl = location.pathname + location.search;\n const newUrl = location.pathname + '?' + search.toString();\n if (currentUrl !== newUrl) {\n if (replace) {\n locationService.replace(newUrl);\n } else {\n pushUrlHandler(newUrl);\n }\n }\n }\n }\n }\n\n getSelectedTab() {\n return getServiceSelectionPrimaryLabel(this).state.filters[0]?.key;\n }\n\n selectDefaultLabelTab() {\n // Need to update the history before the state with replace instead of push, or we'll get invalid services saved to url state after changing datasource\n this.addLabelChangeToBrowserHistory(SERVICE_NAME, true);\n this.setSelectedTab(SERVICE_NAME);\n }\n\n setSelectedTab(labelName: string) {\n addTabToLocalStorage(getDataSourceVariable(this).getValue().toString(), labelName);\n\n // clear active search\n clearServiceSelectionSearchVariable(this);\n\n // Update the primary label variable\n setServiceSelectionPrimaryLabelKey(labelName, this);\n }\n\n // Creates a layout with timeseries panel\n buildServiceLayout(\n primaryLabelName: string,\n primaryLabelValue: string,\n timeRange: TimeRange,\n serviceLabelVar: CustomConstantVariable,\n primaryLabelVar: AdHocFiltersVariable,\n datasourceVar: DataSourceVariable\n ) {\n let splitDuration;\n if (timeRange.to.diff(timeRange.from, 'hours') >= 4 && timeRange.to.diff(timeRange.from, 'hours') <= 26) {\n splitDuration = '2h';\n }\n const headerActions = [];\n\n if (this.isAggregatedMetricsActive()) {\n headerActions.push(new SelectServiceButton({ labelValue: primaryLabelValue, labelName: primaryLabelName }));\n } else {\n headerActions.push(\n new AddLabelToFiltersHeaderActionScene({\n name: primaryLabelName,\n value: primaryLabelValue,\n })\n );\n headerActions.push(new SelectServiceButton({ labelValue: primaryLabelValue, labelName: primaryLabelName }));\n }\n const panel = PanelBuilders.timeseries()\n // If service was previously selected, we show it in the title\n .setTitle(primaryLabelValue)\n .setData(\n getQueryRunner(\n [\n buildDataQuery(this.getMetricExpression(primaryLabelValue, serviceLabelVar, primaryLabelVar), {\n legendFormat: `{{${LEVEL_VARIABLE_VALUE}}}`,\n splitDuration,\n refId: `ts-${primaryLabelValue}`,\n step: serviceLabelVar.state.value === AGGREGATED_SERVICE_NAME ? '10s' : undefined,\n }),\n ],\n { runQueriesMode: 'manual' }\n )\n )\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setUnit('short')\n .setOverrides(setLevelColorOverrides)\n .setOption('legend', {\n showLegend: true,\n calcs: ['sum'],\n placement: 'right',\n displayMode: LegendDisplayMode.Table,\n })\n .setHeaderActions([\n new FavoriteServiceHeaderActionScene({\n ds: datasourceVar.getValue()?.toString() ?? '',\n labelName: primaryLabelName,\n labelValue: primaryLabelValue,\n }),\n ...headerActions,\n ])\n .build();\n\n panel.setState({\n extendPanelContext: (_, context) =>\n this.extendTimeSeriesLegendBus(primaryLabelName, primaryLabelValue, context, panel),\n });\n\n const cssGridItem = new SceneCSSGridItem({\n $behaviors: [new behaviors.CursorSync({ key: 'serviceCrosshairSync', sync: DashboardCursorSync.Crosshair })],\n body: panel,\n });\n\n cssGridItem.addActivationHandler(() => {\n const runner = getQueryRunnerFromChildren(cssGridItem)[0];\n // If the query runner has already ran, the scene must be cached, don't re-run as the volume query will be triggered which will execute another panel query\n if (runner.state.data?.state !== LoadingState.Done) {\n this.runPanelQuery(cssGridItem);\n }\n });\n\n return cssGridItem;\n }\n\n isAggregatedMetricsActive() {\n const toolbar = this.getQueryOptionsToolbar();\n return !toolbar?.state.options.aggregatedMetrics.disabled && toolbar?.state.options.aggregatedMetrics.active;\n }\n\n getLevelFilterForService = (service: string) => {\n let serviceLevels = this.state.serviceLevel.get(service) || [];\n if (serviceLevels.length === 0) {\n return '';\n }\n const filters = serviceLevels.map((level) => {\n if (level === 'logs') {\n level = '';\n }\n return `${LEVEL_VARIABLE_VALUE}=\\`${level}\\``;\n });\n return ` | ${filters.join(' or ')} `;\n };\n\n // Creates a layout with logs panel\n buildServiceLogsLayout = (labelName: string, labelValue: string) => {\n const levelFilter = this.getLevelFilterForService(labelValue);\n const cssGridItem = new SceneCSSGridItem({\n $behaviors: [new behaviors.CursorSync({ sync: DashboardCursorSync.Off })],\n body: PanelBuilders.logs()\n // Hover header set to true removes unused header padding, displaying more logs\n .setHoverHeader(true)\n .setData(\n getQueryRunner(\n [\n buildDataQuery(this.getLogExpression(labelName, labelValue, levelFilter), {\n maxLines: 100,\n refId: `logs-${labelValue}`,\n }),\n ],\n {\n runQueriesMode: 'manual',\n }\n )\n )\n .setTitle(labelValue)\n .setOption('showTime', true)\n .setOption('enableLogDetails', false)\n .build(),\n });\n\n cssGridItem.addActivationHandler(() => {\n const runner = getQueryRunnerFromChildren(cssGridItem)[0];\n // If the query runner has already ran, the scene must be cached, don't re-run as the volume query will be triggered which will execute another panel query\n if (runner.state.data?.state !== LoadingState.Done) {\n this.runPanelQuery(cssGridItem);\n }\n });\n\n return cssGridItem;\n };\n\n formatPrimaryLabelForUI() {\n const selectedTab = this.getSelectedTab();\n return selectedTab === SERVICE_NAME ? SERVICE_UI_LABEL : selectedTab;\n }\n\n private setVolumeQueryRunner() {\n this.setState({\n $data: getSceneQueryRunner({\n queries: [\n buildVolumeQuery(`{${VAR_PRIMARY_LABEL_EXPR}, ${VAR_LABELS_REPLICA_EXPR}}`, 'volume', this.getSelectedTab()),\n ],\n runQueriesMode: 'manual',\n }),\n });\n\n // Need to re-init any subscriptions since we changed the query runner\n this.subscribeToVolume();\n }\n\n private doVariablesNeedSync() {\n const labelsVarPrimary = getLabelsVariable(this);\n const labelsVarReplica = getLabelsVariableReplica(this);\n\n const activeTab = this.getSelectedTab();\n const filteredFilters = labelsVarPrimary.state.filters.filter((f) => f.key !== activeTab);\n\n return { filters: filteredFilters, needsSync: !areArraysEqual(filteredFilters, labelsVarReplica.state.filters) };\n }\n\n private syncVariables() {\n const labelsVarReplica = getLabelsVariableReplica(this);\n\n const { filters, needsSync } = this.doVariablesNeedSync();\n if (needsSync) {\n labelsVarReplica.setState({ filters });\n }\n }\n\n private onActivate() {\n this.fixRequiredUrlParams();\n\n // Sync initial state from primary labels to local replica\n this.syncVariables();\n\n // Clear existing volume data on activate or we'll show stale cached data, potentially from a different datasource\n this.setVolumeQueryRunner();\n\n // Subscribe to primary labels for further updates\n this.subscribeToPrimaryLabelsVariable();\n\n // Subscribe to variables replica\n this.subscribeToLabelFilterChanges();\n\n // Subscribe to tab changes (primary label)\n this.subscribeToActiveTabVariable(getServiceSelectionPrimaryLabel(this));\n\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeOnActivate();\n }\n\n // Update labels on time range change\n this.subscribeToTimeRange();\n\n // Update labels on datasource change\n this.subscribeToDatasource();\n\n this.subscribeToAggregatedMetricToggle();\n\n this.subscribeToAggregatedMetricVariable();\n }\n\n private runVolumeOnActivate() {\n if (this.isTimeRangeTooEarlyForAggMetrics()) {\n this.onUnsupportedAggregatedMetricTimeRange();\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeQuery();\n }\n } else {\n this.onSupportedAggregatedMetricTimeRange();\n if (this.state.$data.state.data?.state !== LoadingState.Done) {\n this.runVolumeQuery();\n }\n }\n }\n\n private subscribeToAggregatedMetricToggle() {\n this._subs.add(\n this.getQueryOptionsToolbar()?.subscribeToState((newState, prevState) => {\n if (newState.options.aggregatedMetrics.userOverride !== prevState.options.aggregatedMetrics.userOverride) {\n this.runVolumeQuery(true);\n }\n })\n );\n }\n\n private subscribeToDatasource() {\n this._subs.add(\n getDataSourceVariable(this).subscribeToState((newState) => {\n this.addDatasourceChangeToBrowserHistory(newState.value.toString());\n this.runVolumeQuery();\n })\n );\n }\n\n private subscribeToActiveTabVariable(primaryLabelVar: AdHocFiltersVariable) {\n this._subs.add(\n primaryLabelVar.subscribeToState((newState, prevState) => {\n if (newState.filterExpression !== prevState.filterExpression) {\n const newKey = newState.filters[0].key;\n this.addLabelChangeToBrowserHistory(newKey);\n // Need to tear down volume query runner to select other labels, as we need the selected tab to parse the volume response\n const { needsSync } = this.doVariablesNeedSync();\n\n if (needsSync) {\n this.syncVariables();\n } else {\n this.runVolumeQuery(true);\n }\n }\n })\n );\n }\n\n /**\n * agg metrics need parser and unwrap, have to tear down and rebuild panels when the variable changes\n * @private\n */\n private subscribeToAggregatedMetricVariable() {\n this._subs.add(\n getAggregatedMetricsVariable(this).subscribeToState((newState, prevState) => {\n if (newState.value !== prevState.value) {\n // Clear the body panels\n this.setState({\n body: new SceneCSSGridLayout({ children: [] }),\n });\n // And re-init with the new query\n this.updateBody(true);\n }\n })\n );\n }\n\n private subscribeToPrimaryLabelsVariable() {\n const labelsVarPrimary = getLabelsVariable(this);\n this._subs.add(\n labelsVarPrimary.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.syncVariables();\n }\n })\n );\n }\n\n private subscribeToLabelFilterChanges() {\n const labelsVar = getLabelsVariableReplica(this);\n this._subs.add(\n labelsVar.subscribeToState((newState, prevState) => {\n if (!areArraysEqual(newState.filters, prevState.filters)) {\n this.runVolumeQuery(true);\n }\n })\n );\n }\n\n private subscribeToVolume() {\n this._subs.add(\n this.state.$data.subscribeToState((newState, prevState) => {\n // update body if the data is done loading, and the dataframes have changed\n if (\n newState.data?.state === LoadingState.Done &&\n !areArraysEqual(prevState?.data?.series, newState?.data?.series)\n ) {\n this.updateBody(true);\n }\n })\n );\n }\n\n private subscribeToTimeRange() {\n this._subs.add(\n sceneGraph.getTimeRange(this).subscribeToState(() => {\n if (this.isTimeRangeTooEarlyForAggMetrics()) {\n this.onUnsupportedAggregatedMetricTimeRange();\n } else {\n this.onSupportedAggregatedMetricTimeRange();\n }\n this.runVolumeQuery();\n })\n );\n }\n\n /**\n * If the user copies a partial URL we want to prevent throwing runtime errors or running invalid queries, so we set the default tab which will trigger updates to the primary_label\n * @private\n */\n private fixRequiredUrlParams() {\n // If the selected tab is not in the URL, set the default\n const { key } = getSelectedTabFromUrl();\n if (!key) {\n this.selectDefaultLabelTab();\n }\n }\n\n private isTimeRangeTooEarlyForAggMetrics(): boolean {\n const timeRange = sceneGraph.getTimeRange(this);\n return timeRange.state.value.from.isBefore(dateTime(AGGREGATED_METRIC_START_DATE));\n }\n\n private onUnsupportedAggregatedMetricTimeRange() {\n const toolbar = this.getQueryOptionsToolbar();\n toolbar?.setState({\n options: {\n aggregatedMetrics: {\n ...toolbar?.state.options.aggregatedMetrics,\n disabled: true,\n },\n },\n });\n }\n\n private getQueryOptionsToolbar() {\n const indexScene = sceneGraph.getAncestor(this, IndexScene);\n return indexScene.state.controls.find((control) => control instanceof ToolbarScene) as ToolbarScene | undefined;\n }\n\n private onSupportedAggregatedMetricTimeRange() {\n const toolbar = this.getQueryOptionsToolbar();\n toolbar?.setState({\n options: {\n aggregatedMetrics: {\n ...toolbar?.state.options.aggregatedMetrics,\n disabled: false,\n },\n },\n });\n }\n\n /**\n * Executes the Volume API call\n * @param resetQueryRunner - optional param which will replace the query runner state with a new instantiation\n * @private\n */\n private runVolumeQuery(resetQueryRunner = false) {\n if (resetQueryRunner) {\n this.setVolumeQueryRunner();\n }\n\n this.updateAggregatedMetricVariable();\n this.state.$data.runQueries();\n }\n\n private updateAggregatedMetricVariable() {\n const serviceLabelVar = getAggregatedMetricsVariable(this);\n const labelsVar = getLabelsVariable(this);\n if ((!this.isTimeRangeTooEarlyForAggMetrics() || !aggregatedMetricsEnabled) && this.isAggregatedMetricsActive()) {\n serviceLabelVar.changeValueTo(AGGREGATED_SERVICE_NAME);\n\n // Hide combobox and reset filters if aggregated metrics is enabled\n labelsVar.setState({\n hide: VariableHide.hideVariable,\n filters: [],\n });\n\n // Hide the show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: true });\n } else {\n serviceLabelVar.changeValueTo(SERVICE_NAME);\n // Show combobox if not aggregated metrics\n labelsVar.setState({\n hide: VariableHide.dontHide,\n });\n serviceLabelVar.changeValueTo(SERVICE_NAME);\n\n // Show the show logs button\n const showLogsButton = sceneGraph.findByKeyAndType(this, showLogsButtonSceneKey, ShowLogsButtonScene);\n showLogsButton.setState({ hidden: false });\n }\n }\n\n private updateTabs() {\n if (!this.state.tabs) {\n const tabs = new ServiceSelectionTabsScene({});\n this.setState({\n tabs,\n });\n }\n }\n\n private getGridItems(): SceneCSSGridItem[] {\n return this.state.body.state.children as SceneCSSGridItem[];\n }\n\n private getVizPanel(child: SceneCSSGridItem) {\n return child.state.body instanceof VizPanel ? child.state.body : undefined;\n }\n\n /**\n * Runs logs/volume panel queries if lazy loaded grid item is active\n * @param child\n * @private\n */\n private runPanelQuery(child: SceneCSSGridItem) {\n if (child.isActive) {\n const queryRunners = getQueryRunnerFromChildren(child);\n if (queryRunners.length === 1) {\n const queryRunner = queryRunners[0];\n const query = queryRunner.state.queries[0];\n\n // If the scene was cached, the time range will still be the same as what was executed in the query\n const requestTimeRange = queryRunner.state.data?.timeRange;\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n const fromDiff = requestTimeRange\n ? Math.abs(sceneTimeRange.state.value.from.diff(requestTimeRange?.from, 's'))\n : Infinity;\n const toDiff = requestTimeRange\n ? Math.abs(sceneTimeRange.state.value.to.diff(requestTimeRange?.to, 's'))\n : Infinity;\n\n const interpolated = sceneGraph.interpolate(this, query.expr);\n // If we haven't already run this exact same query, run it\n if (queryRunner.state.key !== interpolated || fromDiff > 0 || toDiff > 0) {\n queryRunner.setState({\n key: interpolated,\n });\n queryRunner.runQueries();\n }\n }\n }\n }\n\n public updateBody(runQueries = false) {\n const { labelsToQuery } = this.getLabels(this.state.$data.state.data?.series);\n const selectedTab = this.getSelectedTab();\n this.updateTabs();\n\n if (!this.state.paginationScene) {\n this.setState({\n paginationScene: new ServiceSelectionPaginationScene({}),\n });\n }\n\n // If no services are to be queried, clear the body\n if (!labelsToQuery || labelsToQuery.length === 0) {\n this.state.body.setState({ children: [] });\n } else {\n // If we have services to query, build the layout with the services. Children is an array of layouts for each service (1 row with 2 columns - timeseries and logs panel)\n const newChildren: SceneCSSGridItem[] = [];\n const existingChildren = this.getGridItems();\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const aggregatedMetricsVariable = getAggregatedMetricsVariable(this);\n const primaryLabelVar = getServiceSelectionPrimaryLabel(this);\n const datasourceVariable = getDataSourceVariable(this);\n\n const start = (this.state.currentPage - 1) * this.state.countPerPage;\n const end = start + this.state.countPerPage;\n\n for (const primaryLabelValue of labelsToQuery.slice(start, end)) {\n const existing = existingChildren.filter((child) => {\n const vizPanel = this.getVizPanel(child);\n return vizPanel?.state.title === primaryLabelValue;\n });\n\n if (existing.length === 2) {\n // If we already have grid items for this service, move them over to the new array of children, this will preserve their queryRunners, preventing duplicate queries from getting run\n newChildren.push(existing[0], existing[1]);\n\n if (existing[0].isActive && runQueries) {\n this.runPanelQuery(existing[0]);\n }\n\n if (existing[1].isActive && runQueries) {\n this.runPanelQuery(existing[1]);\n }\n } else {\n const newChildTs = this.buildServiceLayout(\n selectedTab,\n primaryLabelValue,\n timeRange,\n aggregatedMetricsVariable,\n primaryLabelVar,\n datasourceVariable\n );\n const newChildLogs = this.buildServiceLogsLayout(selectedTab, primaryLabelValue);\n // for each service, we create a layout with timeseries and logs panel\n newChildren.push(newChildTs, newChildLogs);\n }\n }\n\n this.state.body.setState({\n children: newChildren,\n isLazy: true,\n templateColumns: 'repeat(auto-fit, minmax(350px, 1fr) minmax(300px, calc(70vw - 100px)))',\n autoRows: '200px',\n md: {\n templateColumns: '1fr',\n rowGap: 1,\n columnGap: 1,\n },\n });\n }\n }\n\n /**\n * Redraws service logs after toggling level visibility.\n */\n private updateServiceLogs(labelName: string, labelValue: string) {\n if (!this.state.body) {\n this.updateBody();\n return;\n }\n const { labelsToQuery } = this.getLabels(this.state.$data.state.data?.series);\n const serviceIndex = labelsToQuery?.indexOf(labelValue);\n if (serviceIndex === undefined || serviceIndex < 0) {\n return;\n }\n let newChildren = [...this.getGridItems()];\n newChildren.splice(serviceIndex * 2 + 1, 1, this.buildServiceLogsLayout(labelName, labelValue));\n this.state.body.setState({ children: newChildren });\n }\n\n private getLogExpression(labelName: string, labelValue: string, levelFilter: string) {\n return `{${labelName}=\\`${labelValue}\\` , ${VAR_LABELS_REPLICA_EXPR} }${levelFilter}`;\n }\n\n private getMetricExpression(\n labelValue: string,\n serviceLabelVar: CustomConstantVariable,\n primaryLabelVar: AdHocFiltersVariable\n ) {\n const filter = primaryLabelVar.state.filters[0];\n if (serviceLabelVar.state.value === AGGREGATED_SERVICE_NAME) {\n if (filter.key === SERVICE_NAME) {\n return `sum by (${LEVEL_VARIABLE_VALUE}) (sum_over_time({${AGGREGATED_SERVICE_NAME}=\\`${labelValue}\\` } | logfmt | unwrap count [$__auto]))`;\n } else {\n return `sum by (${LEVEL_VARIABLE_VALUE}) (sum_over_time({${AGGREGATED_SERVICE_NAME}=~\\`.+\\` } | logfmt | ${filter.key}=\\`${labelValue}\\` | unwrap count [$__auto]))`;\n }\n }\n return `sum by (${LEVEL_VARIABLE_VALUE}) (count_over_time({ ${filter.key}=\\`${labelValue}\\`, ${VAR_LABELS_REPLICA_EXPR} } [$__auto]))`;\n }\n\n private extendTimeSeriesLegendBus = (\n labelName: string,\n labelValue: string,\n context: PanelContext,\n panel: VizPanel\n ) => {\n const originalOnToggleSeriesVisibility = context.onToggleSeriesVisibility;\n\n context.onToggleSeriesVisibility = (level: string, mode: SeriesVisibilityChangeMode) => {\n originalOnToggleSeriesVisibility?.(level, mode);\n\n const allLevels = getLevelLabelsFromSeries(panel.state.$data?.state.data?.series ?? []);\n const levels = toggleLevelVisibility(level, this.state.serviceLevel.get(labelValue), mode, allLevels);\n this.state.serviceLevel.set(labelValue, levels);\n\n this.updateServiceLogs(labelName, labelValue);\n };\n };\n\n private getLabels(series?: DataFrame[]) {\n const labelsByVolume: string[] = series?.[0]?.fields[0].values ?? [];\n const dsString = getDataSourceVariable(this).getValue()?.toString();\n const searchString = getServiceSelectionSearchVariable(this).getValue();\n const selectedTab = this.getSelectedTab();\n const labelsToQuery = createListOfLabelsToQuery(labelsByVolume, dsString, String(searchString), selectedTab);\n return { labelsByVolume, labelsToQuery: labelsToQuery };\n }\n}\n\n// Create a list of services to query:\n// 1. Filters provided services by searchString\n// 2. Gets favoriteServicesToQuery from localStorage and filters them by searchString\n// 3. Orders them correctly\nfunction createListOfLabelsToQuery(services: string[], ds: string, searchString: string, labelName: string) {\n if (!services?.length) {\n return [];\n }\n\n if (searchString === '.+') {\n searchString = '';\n }\n\n const favoriteServicesToQuery = getFavoriteLabelValuesFromStorage(ds, labelName).filter(\n (service) => service.toLowerCase().includes(searchString.toLowerCase()) && services.includes(service)\n );\n\n // Deduplicate\n return Array.from(new Set([...favoriteServicesToQuery, ...services]));\n}\n\nfunction getSelectedTabFromUrl() {\n const location = locationService.getLocation();\n const search = new URLSearchParams(location.search);\n const primaryLabelRaw = search.get(primaryLabelUrlKey);\n const primaryLabelSplit = primaryLabelRaw?.split('|');\n const key = primaryLabelSplit?.[0];\n return { key, search, location };\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n position: 'relative',\n }),\n headingWrapper: css({\n marginTop: theme.spacing(1),\n }),\n loadingText: css({\n margin: 0,\n }),\n header: css({\n position: 'absolute',\n right: 0,\n top: '4px',\n zIndex: 2,\n }),\n bodyWrapper: css({\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }),\n body: css({\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }),\n searchPaginationWrap: css({\n label: 'search-pagination-wrap',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n flex: '1 0 auto',\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(1),\n width: '100%',\n },\n }),\n searchWrapper: css({\n label: 'search-wrapper',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n }),\n searchField: css({\n marginTop: theme.spacing(1),\n position: 'relative',\n }),\n };\n}\n","import React from 'react';\nimport { RadioButtonGroup } from '@grafana/ui';\nimport { LogsVisualizationType } from 'services/store';\n\n/**\n * The options shared between logs and table panels\n * @param props\n * @constructor\n */\nexport function LogsPanelHeaderActions(props: {\n vizType: LogsVisualizationType;\n onChange: (type: LogsVisualizationType) => void;\n}) {\n return (\n \n );\n}\n","import { Observable, of } from 'rxjs';\nimport {\n MultiValueVariable,\n MultiValueVariableState,\n MultiOrSingleValueSelect,\n SceneComponentProps,\n VariableGetOptionsArgs,\n VariableValueOption,\n VariableValueSingle,\n} from '@grafana/scenes';\n\nexport interface CustomConstantVariableState extends MultiValueVariableState {\n value: VariableValueSingle;\n isMulti?: false;\n}\n\nexport class CustomConstantVariable extends MultiValueVariable {\n public constructor(initialState: Partial) {\n super({\n type: 'custom',\n value: '',\n text: '',\n options: [],\n name: '',\n ...initialState,\n });\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable {\n return of(this.state.options);\n }\n public static Component = ({ model }: SceneComponentProps) => {\n return MultiOrSingleValueSelect({ model });\n };\n}\n","import { AdHocFilterWithLabels, sceneUtils } from '@grafana/scenes';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { FilterOp, FilterOpType, LabelFilterOp, NumericFilterOp } from './filterTypes';\nimport { Dictionary, groupBy, trim } from 'lodash';\nimport { EMPTY_VARIABLE_VALUE, isAdHocFilterValueUserInput, stripAdHocFilterUserInputPrefix } from './variables';\nimport { getValueFromFieldsFilter } from './variableGetters';\nimport { isOperatorExclusive, isOperatorInclusive, isOperatorNumeric, isOperatorRegex } from './operatorHelpers';\nimport { narrowFilterOperator } from './narrowing';\nimport { getExpressionBuilderDebug } from './store';\n\ntype Key = string;\ntype Value = string;\ntype CombinedFiltersValues = { operator: LabelFilterOp | NumericFilterOp; values: Value[] };\ntype CombinedFiltersValuesByKey = Record;\ntype CombinedOperatorFilters = Record;\ntype OperatorFilters = Record;\n\ninterface Options {\n /**\n * Sets debug output\n */\n debug?: boolean;\n\n /**\n * Separator between filters with different keys or operators\n */\n filterSeparator?: string;\n\n /**\n * Prefix of the logQL expression\n */\n prefix?: string;\n\n /**\n * Sets if match filters join values together in a regex filter\n * i.e. multiple filters with operators: '=' | '!=' => '=~' | '!~'\n */\n joinMatchFilters: boolean;\n\n /**\n * Sets if the values are JSON encoded\n */\n decodeFilters: boolean;\n\n /**\n * Keys to ignore\n */\n ignoreKeys?: string[];\n\n filterType: 'indexed' | 'field';\n}\n\nexport class ExpressionBuilder {\n private filters: AdHocFilterWithLabels[];\n private options: Options;\n private positiveFilterValueSeparator = 'or';\n private negativeFilterValueSeparator = '|';\n\n constructor(\n filters: AdHocFilterWithLabels[],\n options: Options = { joinMatchFilters: true, decodeFilters: false, filterType: 'field' }\n ) {\n this.filters = filters;\n this.options = options;\n if (!this.options.debug) {\n this.options.debug = getExpressionBuilderDebug();\n }\n }\n\n /**\n * Joins filters with same keys similar operators\n * e.g. {level=\"info\"}, {level=\"warn\"} => {level=~\"warn|info\"}\n */\n public getJoinedLabelsFilters(): AdHocFilterWithLabels[] {\n let { equalsFilters, notEqualsFilters, regexEqualFilters, regexNotEqualFilters } = this.getCombinedLabelFilters();\n const adHocFilters: AdHocFilterWithLabels[] = [];\n const filters = [equalsFilters, notEqualsFilters, regexEqualFilters, regexNotEqualFilters].filter(\n (filter) => filter\n );\n filters.forEach((operatorFilters) => {\n const joinedValues = this.joinCombinedFiltersValues(operatorFilters, '|');\n\n for (const key in operatorFilters) {\n const filter = operatorFilters[key];\n const operator = filter.operator;\n adHocFilters.push({ key, operator, value: joinedValues[key] });\n }\n });\n\n return adHocFilters;\n }\n\n /**\n * Returns logQL expression for AdHocFilterWithLabels[]\n * Merges multiple include matches into regex\n */\n protected getExpr(): string {\n let {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n } = this.getCombinedLabelFilters();\n\n if (this.options.debug) {\n console.info('combined filters after merge', {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n });\n }\n\n const filtersString = this.buildLabelsLogQLFromFilters({\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n });\n\n if (filtersString) {\n // Append prefix if defined\n return (this.options.prefix ?? '') + filtersString;\n }\n\n return '';\n }\n\n public getLabelsExpr(options?: Partial): string {\n const defaultOptions: Options = { joinMatchFilters: true, decodeFilters: false, filterType: 'indexed' };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Returns merged filters separated by pipe\n */\n public getMetadataExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: false,\n filterType: 'field',\n };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Same as metadata, but only include operators supported\n */\n public getLevelsExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: false,\n filterType: 'field',\n };\n\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Returns merged filters separated by pipe\n * JSON encodes value\n */\n public getFieldsExpr(options?: Partial): string {\n const defaultOptions: Options = {\n filterSeparator: ' |',\n prefix: '| ',\n joinMatchFilters: false,\n decodeFilters: true,\n filterType: 'field',\n };\n this.options = { ...defaultOptions, ...options };\n return this.getExpr();\n }\n\n /**\n * Transforms joined field value objects into logQL strings\n */\n private buildLabelsLogQLFromFilters({\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n }: {\n equalsFilters: CombinedFiltersValuesByKey | undefined;\n notEqualsFilters: CombinedFiltersValuesByKey | undefined;\n regexEqualFilters: CombinedFiltersValuesByKey | undefined;\n regexNotEqualFilters: CombinedFiltersValuesByKey | undefined;\n ltFilters: CombinedFiltersValuesByKey | undefined;\n lteFilters: CombinedFiltersValuesByKey | undefined;\n gtFilters: CombinedFiltersValuesByKey | undefined;\n gteFilters: CombinedFiltersValuesByKey | undefined;\n }) {\n let equalFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let notEqualsFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let regexEqualFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let regexNotEqualFiltersStrings: CombinedOperatorFilters | OperatorFilters;\n let ltFiltersStrings: OperatorFilters;\n let lteFiltersStrings: OperatorFilters;\n let gtFiltersStrings: OperatorFilters;\n let gteFiltersStrings: OperatorFilters;\n\n // Build the LogQL filters\n const allFilters: string[] = [];\n\n if (this.options.joinMatchFilters) {\n // Join values arrays for all keys with \"|\" char\n equalFiltersStrings = this.joinCombinedFiltersValues(equalsFilters, '|');\n notEqualsFiltersStrings = this.joinCombinedFiltersValues(notEqualsFilters, '|');\n regexEqualFiltersStrings = this.joinCombinedFiltersValues(regexEqualFilters, '|');\n regexNotEqualFiltersStrings = this.joinCombinedFiltersValues(regexNotEqualFilters, '|');\n\n allFilters.push(...this.buildJoinedFilters(equalFiltersStrings, LabelFilterOp.Equal));\n allFilters.push(...this.buildJoinedFilters(notEqualsFiltersStrings, LabelFilterOp.NotEqual));\n allFilters.push(...this.buildJoinedFilters(regexEqualFiltersStrings, LabelFilterOp.RegexEqual));\n allFilters.push(...this.buildJoinedFilters(regexNotEqualFiltersStrings, LabelFilterOp.RegexNotEqual));\n } else {\n // Do not join filters\n equalFiltersStrings = this.getFilterValues(equalsFilters);\n notEqualsFiltersStrings = this.getFilterValues(notEqualsFilters);\n regexEqualFiltersStrings = this.getFilterValues(regexEqualFilters);\n regexNotEqualFiltersStrings = this.getFilterValues(regexNotEqualFilters);\n\n allFilters.push(...this.buildFilter(equalFiltersStrings, LabelFilterOp.Equal));\n allFilters.push(...this.buildFilter(notEqualsFiltersStrings, LabelFilterOp.NotEqual));\n allFilters.push(...this.buildFilter(regexEqualFiltersStrings, LabelFilterOp.RegexEqual));\n allFilters.push(...this.buildFilter(regexNotEqualFiltersStrings, LabelFilterOp.RegexNotEqual));\n }\n\n // //Numeric fields are never joined\n ltFiltersStrings = this.getFilterValues(ltFilters);\n lteFiltersStrings = this.getFilterValues(lteFilters);\n gtFiltersStrings = this.getFilterValues(gtFilters);\n gteFiltersStrings = this.getFilterValues(gteFilters);\n\n allFilters.push(...this.buildFilter(ltFiltersStrings, NumericFilterOp.lt));\n allFilters.push(...this.buildFilter(lteFiltersStrings, NumericFilterOp.lte));\n allFilters.push(...this.buildFilter(gtFiltersStrings, NumericFilterOp.gt));\n allFilters.push(...this.buildFilter(gteFiltersStrings, NumericFilterOp.gte));\n\n if (this.options.debug) {\n console.info('combined filters after stringify', {\n equalFiltersStrings,\n notEqualsFiltersStrings,\n regexEqualFiltersStrings,\n regexNotEqualFiltersStrings,\n ltFiltersStrings,\n lteFiltersStrings,\n gtFiltersStrings,\n gteFiltersStrings,\n allFilters,\n });\n }\n\n // Create the final output string by joining filters with filterSeparator char\n const allFiltersString = trim(this.combineValues(allFilters, `${this.options.filterSeparator ?? ','} `));\n\n if (this.options.debug) {\n console.info('DEBUG labels expr', { allFiltersString });\n }\n\n return allFiltersString;\n }\n\n /**\n * Group filter values by key\n */\n private getCombinedLabelFilters() {\n // Group filters by operator and key\n const {\n [LabelFilterOp.Equal]: equal,\n [LabelFilterOp.NotEqual]: notEqual,\n [LabelFilterOp.RegexEqual]: regexEqual,\n [LabelFilterOp.RegexNotEqual]: regexNotEqual,\n [NumericFilterOp.lt]: lt,\n [NumericFilterOp.lte]: lte,\n [NumericFilterOp.gt]: gt,\n [NumericFilterOp.gte]: gte,\n } = this.groupFiltersByKey(this.filters);\n\n let equalsFilters: CombinedFiltersValuesByKey | undefined;\n let notEqualsFilters: CombinedFiltersValuesByKey | undefined;\n let regexEqualFilters: CombinedFiltersValuesByKey | undefined;\n let regexNotEqualFilters: CombinedFiltersValuesByKey | undefined;\n\n let ltFilters: CombinedFiltersValuesByKey | undefined;\n let lteFilters: CombinedFiltersValuesByKey | undefined;\n let gtFilters: CombinedFiltersValuesByKey | undefined;\n let gteFilters: CombinedFiltersValuesByKey | undefined;\n\n // Escape values and combine filters by key and operator, multiple non-regex operations are returned under a different operator\n if (this.options.joinMatchFilters) {\n equalsFilters = this.combineFiltersValues(equal, LabelFilterOp.RegexEqual);\n notEqualsFilters = this.combineFiltersValues(notEqual, LabelFilterOp.RegexNotEqual);\n regexEqualFilters = this.combineFiltersValues(regexEqual);\n regexNotEqualFilters = this.combineFiltersValues(regexNotEqual);\n } else {\n equalsFilters = this.combineFiltersValues(equal);\n notEqualsFilters = this.combineFiltersValues(notEqual);\n regexEqualFilters = this.combineFiltersValues(regexEqual);\n regexNotEqualFilters = this.combineFiltersValues(regexNotEqual);\n }\n\n // Numeric filters are never combined\n ltFilters = this.combineFiltersValues(lt);\n lteFilters = this.combineFiltersValues(lte);\n gtFilters = this.combineFiltersValues(gt);\n gteFilters = this.combineFiltersValues(gte);\n\n if (this.options.debug) {\n console.info('combined filters', {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n });\n }\n\n if (this.options.joinMatchFilters) {\n // If we changed the operation, merge the values and remove the stale operator from the object\n if (equalsFilters) {\n regexEqualFilters = this.mergeFilters(LabelFilterOp.RegexEqual, equalsFilters, regexEqualFilters);\n equalsFilters = this.removeStaleOperators(equalsFilters, LabelFilterOp.Equal);\n }\n if (notEqualsFilters) {\n regexNotEqualFilters = this.mergeFilters(LabelFilterOp.RegexNotEqual, notEqualsFilters, regexNotEqualFilters);\n notEqualsFilters = this.removeStaleOperators(notEqualsFilters, LabelFilterOp.NotEqual);\n }\n }\n\n return {\n equalsFilters,\n notEqualsFilters,\n regexEqualFilters,\n regexNotEqualFilters,\n ltFilters,\n lteFilters,\n gtFilters,\n gteFilters,\n };\n }\n\n /**\n * Transforms values grouped by key to logQL filter strings\n */\n private buildFilter(filters: OperatorFilters, operator: LabelFilterOp | NumericFilterOp): string[] {\n const filterStrings: string[] = [];\n\n for (const key in filters) {\n const filtersWithSameOperatorsAndKeys: string[] = [];\n const values = filters[key];\n if (isOperatorNumeric(operator)) {\n values.forEach((value) =>\n filtersWithSameOperatorsAndKeys.push(this.buildFilterString(key, operator, value, ''))\n );\n } else {\n values.forEach((value) => filtersWithSameOperatorsAndKeys.push(this.buildFilterString(key, operator, value)));\n }\n\n if (isOperatorInclusive(operator)) {\n filterStrings.push(filtersWithSameOperatorsAndKeys.join(` ${this.positiveFilterValueSeparator} `));\n } else {\n filterStrings.push(filtersWithSameOperatorsAndKeys.join(` ${this.negativeFilterValueSeparator} `));\n }\n }\n\n return filterStrings;\n }\n\n /**\n * Transforms escaped & concatenated values into strings grouped by key to logQL filter strings\n */\n private buildJoinedFilters(equalFiltersStrings: CombinedOperatorFilters, operator: LabelFilterOp) {\n const filterStrings = [];\n for (const key in equalFiltersStrings) {\n filterStrings.push(this.buildFilterString(key, operator, equalFiltersStrings[key]));\n }\n return filterStrings;\n }\n\n /**\n * Cleans up CombinedFiltersValuesByKey if the operator was transformed\n */\n private removeStaleOperators(filters: CombinedFiltersValuesByKey, expectedOperator: LabelFilterOp) {\n const result: CombinedFiltersValuesByKey = {};\n Object.keys(filters).forEach((key) => {\n if (filters[key].operator === expectedOperator) {\n result[key] = filters[key];\n }\n });\n return result;\n }\n\n /**\n * Merges filters grouped by key from one operator group to another\n */\n private mergeFilters(\n operatorTo: LabelFilterOp,\n filtersFrom: CombinedFiltersValuesByKey,\n filtersTo: CombinedFiltersValuesByKey | undefined\n ) {\n const convertedEqualsFilters = Object.keys(filtersFrom)\n .filter((key) => filtersFrom[key].operator === operatorTo)\n .map((key) => ({ values: filtersFrom[key].values, key }));\n\n convertedEqualsFilters.forEach((valuesToMove) => {\n if (filtersTo === undefined) {\n filtersTo = { [valuesToMove.key]: { values: [], operator: operatorTo } };\n }\n if (filtersTo[valuesToMove.key] === undefined) {\n filtersTo[valuesToMove.key] = { values: [], operator: operatorTo };\n }\n filtersTo[valuesToMove.key].values.push(\n ...this.mergeCombinedFiltersValues(filtersFrom[valuesToMove.key], operatorTo)\n );\n });\n return filtersTo;\n }\n\n /**\n * Merges values for a single filter key\n */\n private mergeCombinedFiltersValues(filtersFrom: CombinedFiltersValues, operatorTo: LabelFilterOp) {\n const values: string[] = [];\n if (filtersFrom.operator === operatorTo && filtersFrom.values?.length) {\n values.push(...filtersFrom.values);\n }\n return values;\n }\n\n /**\n * Iterates through all keys in an operator group and combines values with separator\n */\n private joinCombinedFiltersValues(\n filters: CombinedFiltersValuesByKey | undefined,\n separator: string\n ): CombinedOperatorFilters {\n const filterCombinedValues: CombinedOperatorFilters = {};\n for (const key in filters) {\n if (!filters[key].values.length) {\n continue;\n }\n\n filterCombinedValues[key] = this.combineValues(filters[key].values, separator);\n }\n\n return filterCombinedValues;\n }\n\n /**\n * Iterates through key groups and transforms filter values to key => values object\n */\n private getFilterValues(filters: CombinedFiltersValuesByKey | undefined): OperatorFilters {\n const filterValues: OperatorFilters = {};\n for (const key in filters) {\n if (!filters[key].values.length) {\n continue;\n }\n\n filterValues[key] = filters[key].values;\n }\n\n return filterValues;\n }\n\n /**\n * Combines an array of values by separator\n * Completely unnecessary wrapper of join\n */\n private combineValues(values: string[], separator: string) {\n return values.join(`${separator}`);\n }\n\n /**\n * Combines and escapes values with the same operator, note assumes every filter has the same operator\n * If multipleValuesOperator is set, multiple values will be combined into a single filter to use that operator in the output\n * @param filtersByKey\n * @param multipleValuesOperator\n * @private\n */\n private combineFiltersValues(\n filtersByKey: Dictionary,\n multipleValuesOperator?: LabelFilterOp\n ): CombinedFiltersValuesByKey | undefined {\n let updatedOperatorAndEscapedValues: CombinedFiltersValuesByKey = {};\n\n for (const key in filtersByKey) {\n if (!filtersByKey[key].length) {\n continue;\n }\n\n const currentOperator = narrowFilterOperator(filtersByKey[key][0].operator);\n const updatedOperator = multipleValuesOperator ?? currentOperator;\n const firstFilter = filtersByKey[key][0];\n\n updatedOperatorAndEscapedValues[key] = { values: [], operator: updatedOperator };\n\n // Only one value for this key\n if (filtersByKey[key].length === 1) {\n const filterString = this.escapeFieldValue(\n firstFilter.operator,\n firstFilter.value,\n firstFilter.valueLabels ?? []\n );\n updatedOperatorAndEscapedValues[key] = { operator: currentOperator, values: [filterString] };\n\n if (this.options.debug) {\n console.info('single value filter', { filter: firstFilter, filterString });\n }\n } else {\n const values = this.escapeFieldValues(key, filtersByKey, updatedOperator);\n if (updatedOperatorAndEscapedValues[key].operator === undefined) {\n updatedOperatorAndEscapedValues[key] = { operator: updatedOperator, values };\n } else {\n updatedOperatorAndEscapedValues[key].values?.push(...values);\n }\n }\n }\n\n return updatedOperatorAndEscapedValues;\n }\n\n /**\n * Iterates through all keys in a merged operator group and escapes the values\n */\n private escapeFieldValues(\n key: string,\n filtersByKey: Dictionary,\n updatedOperator: LabelFilterOp | NumericFilterOp\n ) {\n // Convert single operator to regex\n return filtersByKey[key].map((filter) =>\n this.escapeFieldValue(updatedOperator, filter.value, filter.valueLabels ?? [])\n );\n }\n\n /**\n * Escape field values:\n * If value is encoded, decode it\n * If value is empty, don't escape double quotes\n * If value is custom user input, strip prefix and don't escape special regex chars\n */\n private escapeFieldValue(operator: LabelFilterOp | string, value: string, valueLabels: string[]): string {\n const isUserInput = isAdHocFilterValueUserInput(value);\n\n // decode value\n if (this.options.decodeFilters) {\n const fieldObject = getValueFromFieldsFilter({ value, valueLabels });\n value = fieldObject.value;\n }\n\n if (value === EMPTY_VARIABLE_VALUE) {\n if (this.options.debug) {\n console.info('empty variable value, do not escape');\n }\n // Don't encode empty value\n return value;\n }\n\n if (isUserInput) {\n if (this.options.debug) {\n console.info('ESCAPE: user input - exact selector', {\n operator,\n value,\n result: sceneUtils.escapeLabelValueInExactSelector(stripAdHocFilterUserInputPrefix(value)),\n });\n }\n return sceneUtils.escapeLabelValueInExactSelector(stripAdHocFilterUserInputPrefix(value));\n }\n if (isOperatorRegex(operator)) {\n if (this.options.debug) {\n console.info('ESCAPE: regex selector', { operator, value });\n }\n return sceneUtils.escapeLabelValueInRegexSelector(value);\n }\n\n if (this.options.debug) {\n console.info('ESCAPE: exact selector', { operator, value });\n }\n\n return sceneUtils.escapeLabelValueInExactSelector(value);\n }\n\n /**\n * Builds logQL filter string.\n * Expects pre-escaped content\n * @private\n */\n private buildFilterString(key: string, operator: LabelFilterOp | string, rawValue: string, quoteChar = '\"') {\n if (rawValue === EMPTY_VARIABLE_VALUE) {\n return `${key}${operator}${rawValue}`;\n }\n\n const filterString = `${key}${operator}${quoteChar}${rawValue}${quoteChar}`;\n if (this.options.debug) {\n console.info('buildDoubleQuotedFilter', { filter: { key, operator, value: rawValue }, filterString });\n }\n\n return filterString;\n }\n\n /**\n * Groups all filters by operator and key\n */\n private groupFiltersByKey(filters: AdHocVariableFilter[]): Record> {\n let filteredFilters: AdHocVariableFilter[] = filters.filter(\n (f) => !this.options.ignoreKeys?.includes(f.key) || isOperatorRegex(f.operator)\n );\n\n // We need at least one inclusive filter\n if (this.options.filterType === 'indexed') {\n if (filteredFilters.length < 1) {\n filteredFilters = filters;\n }\n }\n\n const positiveMatch = filteredFilters.filter(\n (filter) => isOperatorInclusive(filter.operator) && !isOperatorRegex(filter.operator)\n );\n const positiveRegex = filteredFilters.filter(\n (filter) => isOperatorInclusive(filter.operator) && isOperatorRegex(filter.operator)\n );\n const negativeMatch = filteredFilters.filter(\n (filter) => isOperatorExclusive(filter.operator) && !isOperatorRegex(filter.operator)\n );\n const negativeRegex = filteredFilters.filter(\n (filter) => isOperatorExclusive(filter.operator) && isOperatorRegex(filter.operator)\n );\n const gt = filteredFilters.filter((filter) => filter.operator === FilterOp.gt);\n const gte = filteredFilters.filter((filter) => filter.operator === FilterOp.gte);\n const lt = filteredFilters.filter((filter) => filter.operator === FilterOp.lt);\n const lte = filteredFilters.filter((filter) => filter.operator === FilterOp.lte);\n\n // Field ops\n const positiveMatchGroup = groupBy(positiveMatch, (filter) => filter.key);\n const positiveRegexGroup = groupBy(positiveRegex, (filter) => filter.key);\n const negativeMatchGroup = groupBy(negativeMatch, (filter) => filter.key);\n const negativeRegexGroup = groupBy(negativeRegex, (filter) => filter.key);\n\n // Duration ops\n const gtGroup = groupBy(gt, (filter) => filter.key);\n const gteGroup = groupBy(gte, (filter) => filter.key);\n const ltGroup = groupBy(lt, (filter) => filter.key);\n const lteGroup = groupBy(lte, (filter) => filter.key);\n\n return {\n [FilterOp.Equal]: positiveMatchGroup,\n [FilterOp.RegexEqual]: positiveRegexGroup,\n [FilterOp.NotEqual]: negativeMatchGroup,\n [FilterOp.RegexNotEqual]: negativeRegexGroup,\n [FilterOp.gt]: gtGroup,\n [FilterOp.gte]: gteGroup,\n [FilterOp.lt]: ltGroup,\n [FilterOp.lte]: lteGroup,\n };\n }\n}\n","import { reportInteraction } from '@grafana/runtime';\nimport pluginJson from '../plugin.json';\n\n// Helper function to create a unique interaction name for analytics\nconst createInteractionName = (page: UserEventPagesType, action: string) => {\n return `${pluginJson.id.replace(/-/g, '_')}_${page}_${action}`;\n};\n\n// Runs reportInteraction with a standardized interaction name\nexport const reportAppInteraction = (\n page: UserEventPagesType,\n action: UserEventActionType,\n properties?: Record\n) => {\n reportInteraction(createInteractionName(page, action), properties);\n};\n\nexport const USER_EVENTS_PAGES = {\n service_selection: 'service_selection',\n service_details: 'service_details',\n all: 'all',\n} as const;\n\ntype UserEventPagesType = keyof typeof USER_EVENTS_PAGES;\ntype UserEventActionType =\n | keyof (typeof USER_EVENTS_ACTIONS)['service_selection']\n | keyof (typeof USER_EVENTS_ACTIONS)['service_details']\n | keyof (typeof USER_EVENTS_ACTIONS)['all'];\n\nexport const USER_EVENTS_ACTIONS = {\n [USER_EVENTS_PAGES.service_selection]: {\n // Searching for service using search input. Props: searchQueryLength, containsLevel\n search_services_changed: 'search_services_changed',\n // Selecting service. Props: service\n service_selected: 'service_selected',\n // Toggling aggregated metrics on/off\n aggregated_metrics_toggled: 'aggregated_metrics_toggled',\n add_to_filters: 'add_to_filters',\n },\n [USER_EVENTS_PAGES.service_details]: {\n open_in_explore_clicked: 'open_in_explore_clicked',\n // Selecting action view tab (logs/labels/fields/patterns). Props: newActionView, previousActionView\n action_view_changed: 'action_view_changed',\n // Clicking on \"Include\" button in time series panels. Used in multiple views. The view type is passed as a parameter. Props: filterType, key, isFilterDuplicate, filtersLength\n add_to_filters_in_breakdown_clicked: 'add_to_filters_in_breakdown_clicked',\n // Clicking on \"Select\" button button in time series panels. Used in multiple views.The view type is passed as a parameter. Props: field, previousField, view\n select_field_in_breakdown_clicked: 'select_field_in_breakdown_clicked',\n // Clicking on one of the levels in the Logs Volume panel\n level_in_logs_volume_clicked: 'level_in_logs_volume_clicked',\n label_in_panel_summary_clicked: 'label_in_panel_summary_clicked',\n // Changing layout type (e.g. single/grid/rows). Used in multiple views. The view type is passed as a parameter. Props: layout, view\n layout_type_changed: 'layout_type_changed',\n // Changing search string in logs. Props: searchQuery\n search_string_in_logs_changed: 'search_string_in_logs_changed',\n search_string_in_variables_changed: 'search_string_in_variables_changed',\n // Removing a pattern (e.g. include/exclude) from the list. Props: includePatternsLength, excludePatternsLength, type\n pattern_removed: 'pattern_removed',\n // Selecting a pattern (e.g. include/exclude) from the list. Props: includePatternsLength, excludePatternsLength, type\n pattern_selected: 'pattern_selected',\n // Clicking on a pattern field in the pattern name.\n pattern_field_clicked: 'pattern_field_clicked',\n // Toggling between logs/table view\n logs_visualization_toggle: 'logs_visualization_toggle',\n // Filter (include, exclude) from log details\n logs_detail_filter_applied: 'logs_detail_filter_applied',\n // Popover menu filter\n logs_popover_line_filter: 'logs_popover_line_filter',\n // Toggle displayed fields\n logs_toggle_displayed_field: 'logs_toggle_displayed_field',\n // Clear all displayed fields\n logs_clear_displayed_fields: 'logs_clear_displayed_fields',\n // Value breakdown sort change\n value_breakdown_sort_change: 'value_breakdown_sort_change',\n // Wasm not supported\n wasm_not_supported: 'wasm_not_supported',\n change_viz_type: 'change_viz_type',\n },\n [USER_EVENTS_PAGES.all]: {\n interval_too_long: 'interval_too_long',\n open_in_explore_menu_clicked: 'open_in_explore_menu_clicked',\n },\n} as const;\n","import _ from 'lodash';\n\n/**\n * Order doesn't matter, converts to sets, deep compare via lodash isEqual\n * @param arr1\n * @param arr2\n */\n\nexport const areArraysEqual = (arr1: any[] | undefined, arr2: any[] | undefined) => {\n // If one array is undefined, and the other is empty, they will cast to the same set.\n if (typeof arr1 !== typeof arr2) {\n return false;\n }\n const set1 = new Set(arr1);\n const set2 = new Set(arr2);\n\n // Save us from running the isEqual check if the set sizes are different\n if (set1.size !== set2.size) {\n return false;\n }\n\n return _.isEqual(set1, set2);\n};\n\nexport const areArraysStrictlyEqual = (arr1: any[] | undefined, arr2: any[] | undefined) => {\n // If one array is undefined, and the other is empty, they will cast to the same set.\n if (typeof arr1 !== typeof arr2) {\n return false;\n }\n return _.isEqual(arr1, arr2);\n};\n","import { MetricExpr, parser, Selector } from '@grafana/lezer-logql';\nimport { LokiQuery } from './lokiQuery';\nimport { getNodesFromQuery } from './logqlMatchers';\nimport { SceneDataQueryRequest } from './datasourceTypes';\n\nexport function isQueryWithNode(query: string, nodeType: number): boolean {\n let isQueryWithNode = false;\n const tree = parser.parse(query);\n tree.iterate({\n enter: ({ type }): false | void => {\n if (type.id === nodeType) {\n isQueryWithNode = true;\n return false;\n }\n },\n });\n return isQueryWithNode;\n}\n\nexport function isLogsQuery(query: string): boolean {\n // As a safeguard we are checking for a length of 2, because at least the query should be `{}`\n return query.trim().length > 2 && !isQueryWithNode(query, MetricExpr);\n}\n\nexport function isLogsRequest(request: SceneDataQueryRequest) {\n return request.targets.find((query) => isLogsQuery(query.expr)) !== undefined;\n}\n\nexport function isInstantQuery(request: SceneDataQueryRequest) {\n return request.targets.find((query) => query.queryType === 'instant');\n}\n\nexport function requestSupportsSharding(request: SceneDataQueryRequest) {\n if (isLogsRequest(request)) {\n return false;\n }\n if (isInstantQuery(request)) {\n return false;\n }\n for (let i = 0; i < request.targets.length; i++) {\n if (request.targets[i].expr?.includes('avg_over_time')) {\n return false;\n }\n }\n return true;\n}\n\nconst SHARDING_PLACEHOLDER = '__stream_shard_number__';\nexport const addShardingPlaceholderSelector = (query: string) => {\n return query.replace('}', `, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`);\n};\n\nexport const interpolateShardingSelector = (queries: LokiQuery[], shards?: number[]) => {\n if (shards === undefined || shards.length === 0) {\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, '}'),\n }));\n }\n\n let shardValue = shards.join('|');\n\n // -1 means empty shard value\n if (shardValue === '-1' || shards.length === 1) {\n shardValue = shardValue === '-1' ? '' : shardValue;\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, `, __stream_shard__=\"${shardValue}\"}`),\n }));\n }\n\n return queries.map((query) => ({\n ...query,\n expr: query.expr.replace(new RegExp(`${SHARDING_PLACEHOLDER}`, 'g'), shardValue),\n }));\n};\n\nexport const getSelectorForShardValues = (query: string) => {\n const selector = getNodesFromQuery(query, [Selector]);\n if (selector.length > 0) {\n return query\n .substring(selector[0].from, selector[0].to)\n .replace(`, __stream_shard__=~\"${SHARDING_PLACEHOLDER}\"}`, '}');\n }\n return '';\n};\n","import {\n closestIdx,\n DataFrame,\n DataFrameType,\n DataQueryResponse,\n DataQueryResponseData,\n Field,\n FieldType,\n QueryResultMetaStat,\n} from '@grafana/data';\nimport { logger } from './logger';\n\nexport function combineResponses(currentResult: DataQueryResponse | null, newResult: DataQueryResponse) {\n if (!currentResult) {\n return cloneQueryResponse(newResult);\n }\n\n newResult.data.forEach((newFrame) => {\n const currentFrame = currentResult.data.find((frame) => shouldCombine(frame, newFrame));\n if (!currentFrame) {\n currentResult.data.push(cloneDataFrame(newFrame));\n return;\n }\n mergeFrames(currentFrame, newFrame);\n });\n\n const mergedErrors = [...(currentResult.errors ?? []), ...(newResult.errors ?? [])];\n\n // we make sure to have `.errors` as undefined, instead of empty-array\n // when no errors.\n\n if (mergedErrors.length > 0) {\n currentResult.errors = mergedErrors;\n }\n\n // the `.error` attribute is obsolete now,\n // but we have to maintain it, otherwise\n // some grafana parts do not behave well.\n // we just choose the old error, if it exists,\n // otherwise the new error, if it exists.\n const mergedError = currentResult.error ?? newResult.error;\n if (mergedError != null) {\n currentResult.error = mergedError;\n }\n\n const mergedTraceIds = [...(currentResult.traceIds ?? []), ...(newResult.traceIds ?? [])];\n if (mergedTraceIds.length > 0) {\n currentResult.traceIds = mergedTraceIds;\n }\n\n return currentResult;\n}\n\n/**\n * Given two data frames, merge their values. Overlapping values will be added together.\n */\nexport function mergeFrames(dest: DataFrame, source: DataFrame) {\n const destTimeField = dest.fields.find((field) => field.type === FieldType.time);\n const destIdField = dest.fields.find((field) => field.type === FieldType.string && field.name === 'id');\n const sourceTimeField = source.fields.find((field) => field.type === FieldType.time);\n const sourceIdField = source.fields.find((field) => field.type === FieldType.string && field.name === 'id');\n\n if (!destTimeField || !sourceTimeField) {\n logger.error(new Error(`Time fields not found in the data frames`));\n return;\n }\n\n const sourceTimeValues = sourceTimeField?.values.slice(0) ?? [];\n const totalFields = Math.max(dest.fields.length, source.fields.length);\n\n for (let i = 0; i < sourceTimeValues.length; i++) {\n const destIdx = resolveIdx(destTimeField, sourceTimeField, i);\n\n const entryExistsInDest = compareEntries(destTimeField, destIdField, destIdx, sourceTimeField, sourceIdField, i);\n\n for (let f = 0; f < totalFields; f++) {\n // For now, skip undefined fields that exist in the new frame\n if (!dest.fields[f]) {\n continue;\n }\n // Index is not reliable when frames have disordered fields, or an extra/missing field, so we find them by name.\n // If the field has no name, we fallback to the old index version.\n const sourceField = findSourceField(dest.fields[f], source.fields, f);\n if (!sourceField) {\n continue;\n }\n // Same value, accumulate\n if (entryExistsInDest) {\n if (dest.fields[f].type === FieldType.time) {\n // Time already exists, skip\n continue;\n } else if (dest.fields[f].type === FieldType.number) {\n // Number, add\n dest.fields[f].values[destIdx] = (dest.fields[f].values[destIdx] ?? 0) + sourceField.values[i];\n } else if (dest.fields[f].type === FieldType.other) {\n // Possibly labels, combine\n if (typeof sourceField.values[i] === 'object') {\n dest.fields[f].values[destIdx] = {\n ...dest.fields[f].values[destIdx],\n ...sourceField.values[i],\n };\n } else if (sourceField.values[i] != null) {\n dest.fields[f].values[destIdx] = sourceField.values[i];\n }\n } else {\n // Replace value\n dest.fields[f].values[destIdx] = sourceField.values[i];\n }\n } else if (sourceField.values[i] !== undefined) {\n // Insert in the `destIdx` position\n dest.fields[f].values.splice(destIdx, 0, sourceField.values[i]);\n if (sourceField.nanos) {\n dest.fields[f].nanos = dest.fields[f].nanos ?? new Array(dest.fields[f].values.length - 1).fill(0);\n dest.fields[f].nanos?.splice(destIdx, 0, sourceField.nanos[i]);\n }\n }\n }\n }\n\n dest.length = dest.fields[0].values.length;\n\n dest.meta = {\n ...dest.meta,\n stats: getCombinedMetadataStats(dest.meta?.stats ?? [], source.meta?.stats ?? []),\n };\n}\n\nfunction resolveIdx(destField: Field, sourceField: Field, index: number) {\n const idx = closestIdx(sourceField.values[index], destField.values);\n if (idx < 0) {\n return 0;\n }\n if (sourceField.values[index] === destField.values[idx] && sourceField.nanos != null && destField.nanos != null) {\n return sourceField.nanos[index] > destField.nanos[idx] ? idx + 1 : idx;\n }\n if (sourceField.values[index] > destField.values[idx]) {\n return idx + 1;\n }\n return idx;\n}\n\nfunction compareEntries(\n destTimeField: Field,\n destIdField: Field | undefined,\n destIndex: number,\n sourceTimeField: Field,\n sourceIdField: Field | undefined,\n sourceIndex: number\n) {\n const sameTimestamp = compareNsTimestamps(destTimeField, destIndex, sourceTimeField, sourceIndex);\n if (!sameTimestamp) {\n return false;\n }\n if (destIdField == null || sourceIdField == null) {\n return true;\n }\n // Log frames, check indexes\n return (\n destIdField.values[destIndex] !== undefined && destIdField.values[destIndex] === sourceIdField.values[sourceIndex]\n );\n}\n\nfunction compareNsTimestamps(destField: Field, destIndex: number, sourceField: Field, sourceIndex: number) {\n if (destField.nanos && sourceField.nanos) {\n return (\n destField.values[destIndex] !== undefined &&\n destField.values[destIndex] === sourceField.values[sourceIndex] &&\n destField.nanos[destIndex] !== undefined &&\n destField.nanos[destIndex] === sourceField.nanos[sourceIndex]\n );\n }\n return destField.values[destIndex] !== undefined && destField.values[destIndex] === sourceField.values[sourceIndex];\n}\n\nfunction findSourceField(referenceField: Field, sourceFields: Field[], index: number) {\n const candidates = sourceFields.filter((f) => f.name === referenceField.name);\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n return sourceFields[index];\n}\n\nconst TOTAL_BYTES_STAT = 'Summary: total bytes processed';\n// This is specific for Loki\nfunction getCombinedMetadataStats(\n destStats: QueryResultMetaStat[],\n sourceStats: QueryResultMetaStat[]\n): QueryResultMetaStat[] {\n // in the current approach, we only handle a single stat\n const destStat = destStats.find((s) => s.displayName === TOTAL_BYTES_STAT);\n const sourceStat = sourceStats.find((s) => s.displayName === TOTAL_BYTES_STAT);\n\n if (sourceStat != null && destStat != null) {\n return [{ value: sourceStat.value + destStat.value, displayName: TOTAL_BYTES_STAT, unit: destStat.unit }];\n }\n\n // maybe one of them exist\n const eitherStat = sourceStat ?? destStat;\n if (eitherStat != null) {\n return [eitherStat];\n }\n\n return [];\n}\n\n/**\n * Deep clones a DataQueryResponse\n */\nexport function cloneQueryResponse(response: DataQueryResponse): DataQueryResponse {\n const newResponse = {\n ...response,\n data: response.data.map(cloneDataFrame),\n };\n return newResponse;\n}\n\nfunction cloneDataFrame(frame: DataQueryResponseData): DataQueryResponseData {\n return {\n ...frame,\n fields: frame.fields.map((field: Field) => ({\n ...field,\n values: field.values,\n })),\n };\n}\n\nfunction shouldCombine(frame1: DataFrame, frame2: DataFrame): boolean {\n if (frame1.refId !== frame2.refId) {\n return false;\n }\n if (frame1.name != null && frame2.name != null && frame1.name !== frame2.name) {\n return false;\n }\n\n const frameType1 = frame1.meta?.type;\n const frameType2 = frame2.meta?.type;\n\n if (frameType1 !== frameType2) {\n // we do not join things that have a different type\n return false;\n }\n\n // metric range query data\n if (frameType1 === DataFrameType.TimeSeriesMulti) {\n return compareLabels(frame1, frame2);\n }\n\n // logs query data\n // logs use a special attribute in the dataframe's \"custom\" section\n // because we do not have a good \"frametype\" value for them yet.\n const customType1 = frame1.meta?.custom?.frameType;\n const customType2 = frame2.meta?.custom?.frameType;\n // Legacy frames have this custom type\n if (customType1 === 'LabeledTimeValues' && customType2 === 'LabeledTimeValues') {\n return true;\n } else if (customType1 === customType2) {\n // Data plane frames don't\n return true;\n }\n\n // should never reach here\n return false;\n}\n\nfunction compareLabels(frame1: DataFrame, frame2: DataFrame) {\n const field1 = frame1.fields.find((f) => f.type === FieldType.number);\n const field2 = frame2.fields.find((f) => f.type === FieldType.number);\n if (field1 === undefined || field2 === undefined) {\n // should never happen\n return false;\n }\n // undefined == null\n if (frame1.name == null) {\n frame1.name = JSON.stringify(field1.labels);\n }\n if (frame2.name == null) {\n frame2.name = JSON.stringify(field2.labels);\n }\n return frame1.name === frame2.name;\n}\n","import pluginJson from '../plugin.json';\nimport { Observable, Subscriber, Subscription } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { DataQueryRequest, DataQueryResponse, LoadingState, QueryResultMetaStat } from '@grafana/data';\nimport { addShardingPlaceholderSelector, getSelectorForShardValues, interpolateShardingSelector } from './logql';\nimport { combineResponses } from './combineResponses';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { logger } from './logger';\nimport { isValidQuery } from './logqlMatchers';\n\n/**\n * Query splitting by stream shards.\n * Query splitting was introduced in Loki to optimize querying for long intervals and high volume of data,\n * dividing a big request into smaller sub-requests, combining and displaying the results as they arrive.\n *\n * This approach, inspired by the time-based query splitting, takes advantage of the __stream_shard__\n * internal label, representing how data is spread into different sources that can be queried individually.\n *\n * The main entry point of this module is runShardSplitQuery(), which prepares the query for execution and\n * passes it to splitQueriesByStreamShard() to begin the querying loop.\n *\n * splitQueriesByStreamShard() has the following structure:\n * - Creates and returns an Observable to which the UI will subscribe\n * - Requests the __stream_shard__ values of the selected service:\n * . If there are no shard values, it falls back to the standard querying approach of the data source in runNonSplitRequest()\n * . If there are shards:\n * - It sorts them by value, descending. Higher shard numbers correspond with the least volume.\n * - It defines an initial group size, roughly Math.sqrt(amountOfShards).\n * - It begins the querying loop with runNextRequest().\n * - runNextRequest() will create a group of groupSize shards from the nth shard (cycle), and has the following internal structure:\n * . groupShardRequests() returns an array of shards from cycle to cycle + groupSize.\n * . interpolateShardingSelector() will update the stream selector with the shard numbers in the current group.\n * . After query execution:\n * - If the response is successful:\n * . It will add new data to the response with combineResponses()\n * . Using the data and meta data of the response, updateGroupSizeFromResponse() will increase or decrease the group size.\n * . nextRequest() will use the current cycle and group size to determine the next request or complete execution with done().\n * - If the response is unsuccessful:\n * . If the response is not a query error, and the group size bigger than 1, it will decrease the group size.\n * . If the group size is already 1, it will retry the request up to 4 times.\n * . If there are retry attempts, it will retry the current cycle, or else stop querying.\n * - Once all request groups have been executed, it will be done().\n */\n\nexport function runShardSplitQuery(datasource: LokiDatasource, request: DataQueryRequest) {\n const queries = datasource\n .interpolateVariablesInQueries(request.targets, request.scopedVars)\n .filter((query) => query.expr)\n .map((target) => ({\n ...target,\n expr: addShardingPlaceholderSelector(target.expr),\n }));\n\n return splitQueriesByStreamShard(datasource, request, queries);\n}\n\nfunction splitQueriesByStreamShard(\n datasource: LokiDatasource,\n request: DataQueryRequest,\n splittingTargets: LokiQuery[]\n) {\n let shouldStop = false;\n let mergedResponse: DataQueryResponse = { data: [], state: LoadingState.Streaming, key: uuidv4() };\n let subquerySubscription: Subscription | null = null;\n let retriesMap = new Map();\n let retryTimer: ReturnType | null = null;\n\n const runNextRequest = (\n subscriber: Subscriber,\n cycle: number,\n shards: number[],\n groupSize: number\n ) => {\n let nextGroupSize = groupSize;\n let retrying = false;\n\n if (subquerySubscription != null) {\n subquerySubscription.unsubscribe();\n subquerySubscription = null;\n }\n\n const done = () => {\n mergedResponse.state = shouldStop ? LoadingState.Error : LoadingState.Done;\n subscriber.next(mergedResponse);\n subscriber.complete();\n };\n\n if (shouldStop) {\n done();\n return;\n }\n\n const nextRequest = () => {\n const nextCycle = Math.min(cycle + groupSize, shards.length);\n if (cycle < shards.length && nextCycle <= shards.length) {\n runNextRequest(subscriber, nextCycle, shards, nextGroupSize);\n return;\n }\n done();\n };\n\n const retry = (errorResponse?: DataQueryResponse) => {\n try {\n if (errorResponse && !isRetriableError(errorResponse)) {\n return false;\n }\n } catch (e) {\n logger.error(e, {\n msg: 'sharding retry error',\n error: errorResponse?.error?.message ?? '',\n errors: errorResponse?.errors?.map((e) => e.message).join(' | ') ?? '',\n traces: errorResponse?.traceIds?.join('|') ?? '',\n });\n shouldStop = true;\n return false;\n }\n\n if (groupSize > 1) {\n groupSize = Math.floor(Math.sqrt(groupSize));\n debug(`Possible time out, new group size ${groupSize}`);\n retrying = true;\n runNextRequest(subscriber, cycle, shards, groupSize);\n return true;\n }\n\n const retries = retriesMap.get(cycle) ?? 0;\n if (retries > 3) {\n shouldStop = true;\n return false;\n }\n\n retriesMap.set(cycle, retries + 1);\n\n retryTimer = setTimeout(() => {\n logger.info(`Retrying ${cycle} (${retries + 1})`);\n runNextRequest(subscriber, cycle, shards, groupSize);\n retryTimer = null;\n }, 1500 * Math.pow(2, retries)); // Exponential backoff\n\n retrying = true;\n\n return true;\n };\n\n const shardsToQuery = groupShardRequests(shards, cycle, groupSize);\n debug(`Querying ${shardsToQuery.join(', ')}`);\n const subRequest = { ...request, targets: interpolateShardingSelector(splittingTargets, shardsToQuery) };\n // Request may not have a request id\n if (request.requestId) {\n subRequest.requestId = `${request.requestId}_shard_${cycle}_${groupSize}`;\n }\n\n // @ts-expect-error\n subquerySubscription = datasource.runQuery(subRequest).subscribe({\n next: (partialResponse: DataQueryResponse) => {\n if ((partialResponse.errors ?? []).length > 0 || partialResponse.error != null) {\n if (retry(partialResponse)) {\n return;\n }\n }\n nextGroupSize = constrainGroupSize(\n cycle + groupSize,\n updateGroupSizeFromResponse(partialResponse, groupSize),\n shards.length\n );\n if (nextGroupSize !== groupSize) {\n debug(`New group size ${nextGroupSize}`);\n }\n mergedResponse = combineResponses(mergedResponse, partialResponse);\n },\n complete: () => {\n if (retrying) {\n return;\n }\n // Prevent flashing \"no data\"\n if (mergedResponse.data.length) {\n subscriber.next(mergedResponse);\n }\n nextRequest();\n },\n error: (error: unknown) => {\n logger.error(error, { msg: 'failed to shard' });\n subscriber.next(mergedResponse);\n if (retry()) {\n return;\n }\n nextRequest();\n },\n });\n };\n\n const runNonSplitRequest = (subscriber: Subscriber) => {\n subquerySubscription = datasource.query(request).subscribe({\n next: (partialResponse: DataQueryResponse) => {\n mergedResponse = partialResponse;\n },\n complete: () => {\n subscriber.next(mergedResponse);\n },\n error: (error: unknown) => {\n logger.error(error, { msg: 'runNonSplitRequest subscription error' });\n subscriber.error(mergedResponse);\n },\n });\n };\n\n const response = new Observable((subscriber) => {\n const selector = getSelectorForShardValues(splittingTargets[0].expr);\n\n if (!isValidQuery(selector)) {\n debug(`Skipping invalid selector: ${selector}`);\n subscriber.complete();\n return;\n }\n\n datasource.languageProvider\n .fetchLabelValues('__stream_shard__', {\n timeRange: request.range,\n streamSelector: selector ? selector : undefined,\n })\n .then((values: string[]) => {\n const shards = values.map((value) => parseInt(value, 10));\n if (!shards || !shards.length) {\n logger.warn(`Shard splitting not supported. Issuing a regular query.`);\n runNonSplitRequest(subscriber);\n } else {\n shards.sort((a, b) => b - a);\n debug(`Querying ${shards.join(', ')} shards`);\n runNextRequest(subscriber, 0, shards, getInitialGroupSize(shards));\n }\n })\n .catch((e: unknown) => {\n logger.error(e, { msg: 'failed to fetch label values for __stream_shard__' });\n runNonSplitRequest(subscriber);\n });\n return () => {\n shouldStop = true;\n if (retryTimer) {\n clearTimeout(retryTimer);\n }\n if (subquerySubscription != null) {\n subquerySubscription.unsubscribe();\n subquerySubscription = null;\n }\n };\n });\n\n return response;\n}\n\nfunction updateGroupSizeFromResponse(response: DataQueryResponse, currentSize: number) {\n if (!response.data.length) {\n // Empty response, increase group size\n return currentSize + 1;\n }\n\n const metaExecutionTime: QueryResultMetaStat | undefined = response.data[0].meta?.stats?.find(\n (stat: QueryResultMetaStat) => stat.displayName === 'Summary: exec time'\n );\n\n if (metaExecutionTime) {\n const executionTime = Math.round(metaExecutionTime.value);\n debug(`${metaExecutionTime.value}`);\n // Positive scenarios\n if (executionTime <= 1) {\n return Math.floor(currentSize * 1.5);\n } else if (executionTime < 6) {\n return Math.ceil(currentSize * 1.1);\n }\n\n // Negative scenarios\n if (currentSize === 1) {\n return currentSize;\n } else if (executionTime < 20) {\n return Math.ceil(currentSize * 0.9);\n } else {\n return Math.floor(currentSize / 2);\n }\n }\n\n return currentSize;\n}\n\n/**\n * Prevents the group size for ever being more than maxFactor% of the pending shards.\n */\nfunction constrainGroupSize(cycle: number, groupSize: number, shards: number) {\n const maxFactor = 0.7;\n return Math.min(groupSize, Math.max(Math.floor((shards - cycle) * maxFactor), 1));\n}\n\nfunction groupShardRequests(shards: number[], start: number, groupSize: number) {\n if (start === shards.length) {\n return [-1];\n }\n return shards.slice(start, start + groupSize);\n}\n\nfunction getInitialGroupSize(shards: number[]) {\n return Math.floor(Math.sqrt(shards.length));\n}\n\nfunction isRetriableError(errorResponse: DataQueryResponse) {\n const message = errorResponse.errors\n ? (errorResponse.errors[0].message ?? '').toLowerCase()\n : errorResponse.error?.message ?? '';\n if (message.includes('timeout')) {\n return true;\n } else if (message.includes('parse error')) {\n // If the error is a parse error, we want to signal to stop querying.\n throw new Error(message);\n }\n return false;\n}\n\n// Enable to output debugging logs\nconst DEBUG_ENABLED = Boolean(localStorage.getItem(`${pluginJson.id}.sharding_debug_enabled`));\nfunction debug(message: string) {\n if (!DEBUG_ENABLED) {\n return;\n }\n console.log(message);\n}\n","import {\n createDataFrame,\n DataFrame,\n DataQueryRequest,\n DataQueryResponse,\n Field,\n FieldType,\n LoadingState,\n TestDataSourceResponse,\n} from '@grafana/data';\nimport { config, DataSourceWithBackend, getDataSourceSrv } from '@grafana/runtime';\nimport { RuntimeDataSource, sceneUtils } from '@grafana/scenes';\nimport { DataQuery } from '@grafana/schema';\nimport { Observable, Subscriber } from 'rxjs';\nimport { getDataSource } from './scenes';\nimport { DetectedFieldsResponse, DetectedLabelsResponse } from './fields';\nimport { FIELDS_TO_REMOVE, LABELS_TO_REMOVE, sortLabelsByCardinality } from './filters';\nimport { SERVICE_NAME } from './variables';\nimport { runShardSplitQuery } from './shardQuerySplitting';\nimport { requestSupportsSharding } from './logql';\nimport { LokiDatasource, LokiQuery } from './lokiQuery';\nimport { SceneDataQueryRequest, SceneDataQueryResourceRequest, VolumeRequestProps } from './datasourceTypes';\nimport { logger } from './logger';\nimport { PLUGIN_ID } from './plugin';\nimport { sanitizeStreamSelector } from './query';\n\nexport const WRAPPED_LOKI_DS_UID = 'wrapped-loki-ds-uid';\n\ntype TimeStampOfVolumeEval = number;\ntype VolumeCount = string;\ntype VolumeValue = [TimeStampOfVolumeEval, VolumeCount];\ntype VolumeResult = {\n metric: {\n service_name?: string;\n __aggregated_metric__?: string;\n [index: string]: string | undefined;\n };\n value: VolumeValue;\n};\n\ntype IndexVolumeResponse = {\n data: {\n result: VolumeResult[];\n };\n};\n\ntype LabelsResponse = {\n status: string;\n data: string[];\n};\n\ntype SampleTimeStamp = number;\ntype SampleCount = number;\ntype PatternSample = [SampleTimeStamp, SampleCount];\n\nexport interface LokiPattern {\n pattern: string;\n samples: PatternSample[];\n}\n\ntype PatternsResponse = {\n data: LokiPattern[];\n};\n\nexport const DETECTED_FIELDS_NAME_FIELD = 'name';\n\nexport const DETECTED_FIELDS_CARDINALITY_NAME = 'cardinality';\n\nexport const DETECTED_FIELDS_PARSER_NAME = 'parser';\n\nexport const DETECTED_FIELDS_TYPE_NAME = 'type';\n\nexport class WrappedLokiDatasource extends RuntimeDataSource {\n constructor(pluginId: string, uid: string) {\n super(pluginId, uid);\n }\n\n query(request: SceneDataQueryRequest): Promise | Observable {\n return new Observable((subscriber) => {\n if (!request.scopedVars?.__sceneObject) {\n throw new Error('Scene object not found in request');\n }\n\n getDataSourceSrv()\n .get(getDataSource(request.scopedVars.__sceneObject.valueOf()))\n .then(async (ds) => {\n if (!(ds instanceof DataSourceWithBackend) || !('interpolateString' in ds) || !('getTimeRangeParams' in ds)) {\n throw new Error('Invalid datasource!');\n }\n\n // Cast to LokiDatasource after validation\n const lokiDs = ds as LokiDatasource;\n\n // override the target datasource to Loki\n request.targets = request.targets?.map((target) => {\n target.datasource = lokiDs;\n return target;\n });\n\n const targetsSet = new Set();\n request.targets.forEach((target) => {\n targetsSet.add(target.resource ?? '');\n });\n\n if (targetsSet.size !== 1) {\n throw new Error('A request cannot contain queries to multiple endpoints');\n }\n\n const requestType = request.targets[0].resource;\n\n switch (requestType) {\n case 'volume': {\n await this.getVolume(request, lokiDs, subscriber);\n break;\n }\n case 'patterns': {\n await this.getPatterns(request, lokiDs, subscriber);\n break;\n }\n case 'detected_labels': {\n await this.getDetectedLabels(request, lokiDs, subscriber);\n break;\n }\n case 'detected_fields': {\n await this.getDetectedFields(request, lokiDs, subscriber);\n break;\n }\n case 'labels': {\n await this.getLabels(request, lokiDs, subscriber);\n break;\n }\n default: {\n this.getData(request, lokiDs, subscriber);\n break;\n }\n }\n });\n });\n }\n\n private getData(request: SceneDataQueryRequest, ds: LokiDatasource, subscriber: Subscriber) {\n const shardingEnabled = config.featureToggles.exploreLogsShardSplitting;\n\n const updatedRequest = {\n ...request,\n targets: ds.interpolateVariablesInQueries(request.targets, request.scopedVars).map((target) => ({\n ...target,\n resource: undefined,\n expr: sanitizeStreamSelector(target.expr),\n })),\n };\n\n // Query the datasource and return either observable or promise\n const dsResponse =\n requestSupportsSharding(updatedRequest) === false || !shardingEnabled\n ? ds.query(updatedRequest)\n : runShardSplitQuery(ds, updatedRequest);\n dsResponse.subscribe(subscriber);\n\n return subscriber;\n }\n\n private async getPatterns(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'patterns';\n });\n\n if (targets.length !== 1) {\n throw new Error('Patterns query can only have a single target!');\n }\n const { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const dsResponse = ds.getResource(\n 'patterns',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n step: request.interval,\n },\n {\n requestId: request.requestId ?? 'patterns',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n const response: PatternsResponse = await dsResponse;\n const lokiPatterns = response?.data;\n\n let maxValue = -Infinity;\n let minValue = 0;\n\n const frames: DataFrame[] =\n lokiPatterns?.map((pattern: LokiPattern) => {\n const timeValues: number[] = [];\n const countValues: number[] = [];\n let sum = 0;\n pattern.samples.forEach(([time, count]) => {\n timeValues.push(time * 1000);\n countValues.push(count);\n if (count > maxValue) {\n maxValue = count;\n }\n if (count < minValue) {\n minValue = count;\n }\n if (count > maxValue) {\n maxValue = count;\n }\n if (count < minValue) {\n minValue = count;\n }\n sum += count;\n });\n return createDataFrame({\n refId: interpolatedTarget.refId,\n name: pattern.pattern,\n fields: [\n {\n name: 'time',\n type: FieldType.time,\n values: timeValues,\n config: {},\n },\n {\n name: pattern.pattern,\n type: FieldType.number,\n values: countValues,\n config: {},\n },\n ],\n meta: {\n preferredVisualisationType: 'graph',\n custom: {\n sum,\n },\n },\n });\n }) ?? [];\n\n frames.sort((a, b) => (b.meta?.custom?.sum as number) - (a.meta?.custom?.sum as number));\n subscriber.next({ data: frames, state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n private interpolate(\n ds: LokiDatasource,\n targets: Array,\n request: DataQueryRequest\n ) {\n const targetsInterpolated = ds.interpolateVariablesInQueries(targets, request.scopedVars);\n if (!targetsInterpolated.length) {\n throw new Error('Datasource failed to interpolate query!');\n }\n const interpolatedTarget = targetsInterpolated[0];\n const expression = sanitizeStreamSelector(interpolatedTarget.expr);\n return { interpolatedTarget, expression };\n }\n\n private async getDetectedLabels(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'detected_labels';\n });\n\n if (targets.length !== 1) {\n throw new Error('Detected labels query can only have a single target!');\n }\n\n let { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n\n // Detected_labels is a bit different then other queries that interpolate the labels variable, it can be empty, but if it is empty it must be completely empty or we'll get the \"queries require at least one regexp or equality\" error from Loki\n if (expression === `{}`) {\n expression = '';\n }\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const response = await ds.getResource(\n 'detected_labels',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'detected_labels',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n const labels = response.detectedLabels\n ?.filter((label) => !LABELS_TO_REMOVE.includes(label.label))\n ?.sort((a, b) => sortLabelsByCardinality(a, b));\n\n const detectedLabelFields: Array> = labels?.map((label) => {\n return {\n name: label.label,\n values: [label.cardinality],\n };\n });\n\n const dataFrame = createDataFrame({\n refId: interpolatedTarget.refId,\n fields: detectedLabelFields ?? [],\n });\n\n subscriber.next({ data: [dataFrame], state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n private async getDetectedFields(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n const targets = request.targets.filter((target) => {\n return target.resource === 'detected_fields';\n });\n\n if (targets.length !== 1) {\n throw new Error('Detected fields query can only have a single target!');\n }\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n const { interpolatedTarget, expression } = this.interpolate(ds, targets, request);\n\n try {\n const response = await ds.getResource(\n 'detected_fields',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'detected_fields',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n const nameField: Field = { name: DETECTED_FIELDS_NAME_FIELD, type: FieldType.string, values: [], config: {} };\n const cardinalityField: Field = {\n name: DETECTED_FIELDS_CARDINALITY_NAME,\n type: FieldType.number,\n values: [],\n config: {},\n };\n const parserField: Field = { name: DETECTED_FIELDS_PARSER_NAME, type: FieldType.string, values: [], config: {} };\n const typeField: Field = { name: DETECTED_FIELDS_TYPE_NAME, type: FieldType.string, values: [], config: {} };\n\n response.fields?.forEach((field) => {\n if (!FIELDS_TO_REMOVE.includes(field.label)) {\n nameField.values.push(field.label);\n cardinalityField.values.push(field.cardinality);\n parserField.values.push(field.parsers?.length ? field.parsers.join(', ') : 'structuredMetadata');\n typeField.values.push(field.type);\n }\n });\n\n const dataFrame = createDataFrame({\n refId: interpolatedTarget.refId,\n fields: [nameField, cardinalityField, parserField, typeField],\n });\n\n subscriber.next({ data: [dataFrame], state: LoadingState.Done });\n } catch (e) {\n logger.error(e, { msg: 'Detected fields error' });\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n return subscriber;\n }\n\n //@todo doesn't work with multiple queries\n private async getVolume(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n if (request.targets.length !== 1) {\n throw new Error('Volume query can only have a single target!');\n }\n\n const target = request.targets[0];\n const primaryLabel = target.primaryLabel;\n if (!primaryLabel) {\n throw new Error('Primary label is required for volume queries!');\n }\n\n const targetsInterpolated = ds.interpolateVariablesInQueries([target], request.scopedVars);\n const expression = sanitizeStreamSelector(targetsInterpolated[0].expr.replace('.*.*', '.+'));\n\n subscriber.next({ data: [], state: LoadingState.Loading });\n\n try {\n const volumeResponse: IndexVolumeResponse = await ds.getResource(\n 'index/volume',\n {\n query: expression,\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n limit: 5000,\n },\n {\n requestId: request.requestId ?? 'volume',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n volumeResponse?.data.result.sort((lhs: VolumeResult, rhs: VolumeResult) => {\n const lVolumeCount: VolumeCount = lhs.value[1];\n const rVolumeCount: VolumeCount = rhs.value[1];\n return Number(rVolumeCount) - Number(lVolumeCount);\n });\n\n // Scenes will only emit dataframes from the SceneQueryRunner, so for now we need to convert the API response to a dataframe\n const df = createDataFrame({\n fields: [\n {\n // @todo rename\n name: SERVICE_NAME,\n values: volumeResponse?.data.result?.map((r) => {\n return r.metric[primaryLabel];\n }),\n },\n { name: 'volume', values: volumeResponse?.data.result?.map((r) => Number(r.value[1])) },\n ],\n });\n\n subscriber.next({ data: [df] });\n } catch (e) {\n logger.error(e);\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n subscriber.complete();\n\n return subscriber;\n }\n\n private async getLabels(\n request: DataQueryRequest,\n ds: LokiDatasource,\n subscriber: Subscriber\n ) {\n if (request.targets.length !== 1) {\n throw new Error('Volume query can only have a single target!');\n }\n\n try {\n const labelsResponse: LabelsResponse = await ds.getResource(\n 'labels',\n {\n start: request.range.from.utc().toISOString(),\n end: request.range.to.utc().toISOString(),\n },\n {\n requestId: request.requestId ?? 'labels',\n headers: {\n 'X-Query-Tags': `Source=${PLUGIN_ID}`,\n },\n }\n );\n\n // Scenes will only emit dataframes from the SceneQueryRunner, so for now we need to convert the API response to a dataframe\n const df = createDataFrame({\n fields: [{ name: 'labels', values: labelsResponse?.data }],\n });\n subscriber.next({ data: [df], state: LoadingState.Done });\n } catch (e) {\n subscriber.next({ data: [], state: LoadingState.Error });\n }\n\n subscriber.complete();\n\n return subscriber;\n }\n\n testDatasource(): Promise {\n return Promise.resolve({ status: 'success', message: 'Data source is working', title: 'Success' });\n }\n}\n\nfunction init() {\n sceneUtils.registerRuntimeDataSource({\n dataSource: new WrappedLokiDatasource('wrapped-loki-ds', WRAPPED_LOKI_DS_UID),\n });\n}\n\nexport default init;\n","import {\n DETECTED_FIELD_AND_METADATA_VALUES_EXPR,\n DETECTED_LEVELS_VALUES_EXPR,\n JSON_FORMAT_EXPR,\n LEVEL_VARIABLE_VALUE,\n LOGS_FORMAT_EXPR,\n MIXED_FORMAT_EXPR,\n VAR_FIELDS_AND_METADATA,\n VAR_FIELDS_EXPR,\n VAR_LABELS_EXPR,\n VAR_LEVELS,\n VAR_LINE_FILTERS_EXPR,\n VAR_METADATA_EXPR,\n VAR_PATTERNS_EXPR,\n} from './variables';\nimport { SceneObject } from '@grafana/scenes';\nimport { getParserFromFieldsFilters } from './fields';\nimport { getFieldsVariable } from './variableGetters';\nimport { UIVariableFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { logger } from './logger';\n\n/**\n * Crafts count over time query that excludes empty values for stream selector name\n * Will only add parsers if there are filters that require them.\n * @param sceneRef\n * @param streamSelectorName - the name of the stream selector we are aggregating by\n * @param excludeEmpty - if true, the query will exclude empty values for the given streamSelectorName\n */\nexport function getTimeSeriesExpr(sceneRef: SceneObject, streamSelectorName: string, excludeEmpty = true): string {\n const fieldsVariable = getFieldsVariable(sceneRef);\n\n let metadataExpressionToAdd = '';\n if (excludeEmpty) {\n // `LEVEL_VARIABLE_VALUE` is a special case where we don't want to add this to the stream selector\n if (streamSelectorName === LEVEL_VARIABLE_VALUE) {\n metadataExpressionToAdd = `| ${LEVEL_VARIABLE_VALUE} != \"\"`;\n }\n }\n\n const fieldFilters = fieldsVariable.state.filters;\n const parser = getParserFromFieldsFilters(fieldsVariable);\n\n // if we have fields, we also need to add parsers\n if (fieldFilters.length) {\n if (parser === 'mixed') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${MIXED_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n if (parser === 'json') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${JSON_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n if (parser === 'logfmt') {\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${LOGS_FORMAT_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n }\n }\n return `sum(count_over_time({${VAR_LABELS_EXPR}} ${metadataExpressionToAdd} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${VAR_FIELDS_EXPR} [$__auto])) by (${streamSelectorName})`;\n}\n\n/**\n * Get expressions for UI variables\n * @param variableType\n */\nexport function getFieldsTagValuesExpression(variableType: UIVariableFilterType) {\n switch (variableType) {\n case VAR_LEVELS:\n return DETECTED_LEVELS_VALUES_EXPR;\n case VAR_FIELDS_AND_METADATA:\n return DETECTED_FIELD_AND_METADATA_VALUES_EXPR;\n default:\n const error = new Error(`Unknown variable type: ${variableType}`);\n logger.error(error, {\n variableType,\n msg: `getFieldsTagValuesExpression: Unknown variable type: ${variableType}`,\n });\n throw error;\n }\n}\n","import { sceneGraph, SceneObject } from '@grafana/scenes';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { FavoriteServiceHeaderActionScene } from '../Components/ServiceSelectionScene/FavoriteServiceHeaderActionScene';\nimport { ServiceSelectionScene } from '../Components/ServiceSelectionScene/ServiceSelectionScene';\nimport { getDataSourceVariable } from './variableGetters';\nimport { addToFavoriteLabelValueInStorage, removeFromFavoritesInStorage } from './store';\n\nexport function rerenderFavorites(sceneRef: SceneObject) {\n // Find all FavoriteServiceHeaderActionScene and re-render\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n const favoriteServiceHeaderActionScene = sceneGraph.findAllObjects(\n indexScene,\n (o) => o instanceof FavoriteServiceHeaderActionScene\n );\n favoriteServiceHeaderActionScene.forEach((s) => s.forceRender());\n\n // Find the ServiceFieldSelector's parent (currently service selection scene) and force re-render so dropdown has correct order\n // @todo move ServiceFieldSelector to new scene\n const serviceSelectionScene = sceneGraph.findDescendents(indexScene, ServiceSelectionScene);\n serviceSelectionScene.forEach((s) => s.forceRender());\n}\n\nexport function addToFavorites(labelName: string, labelValue: string, sceneRef: SceneObject) {\n const ds = getDataSourceVariable(sceneRef).getValue();\n addToFavoriteLabelValueInStorage(ds, labelName, labelValue);\n rerenderFavorites(sceneRef);\n}\n\nexport function removeFromFavorites(labelName: string, labelValue: string, sceneRef: SceneObject) {\n const ds = getDataSourceVariable(sceneRef).getValue();\n removeFromFavoritesInStorage(ds, labelName, labelValue);\n rerenderFavorites(sceneRef);\n}\n","import { DataFrame, Field, ReducerID } from '@grafana/data';\nimport { DrawStyle, StackingMode } from '@grafana/ui';\nimport {\n AdHocFiltersVariable,\n PanelBuilders,\n SceneCSSGridItem,\n SceneDataTransformer,\n SceneObject,\n} from '@grafana/scenes';\nimport { AddToFiltersButton, InterpolatedFilterType } from 'Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport {\n DetectedFieldType,\n LEVEL_VARIABLE_VALUE,\n LogsQueryOptions,\n ParserType,\n VAR_FIELDS,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_METADATA,\n} from './variables';\nimport { setLevelColorOverrides } from './panel';\nimport { map, Observable } from 'rxjs';\nimport { SortBy, SortByScene } from '../Components/ServiceScene/Breakdowns/SortByScene';\nimport { getDetectedFieldsFrame } from '../Components/ServiceScene/ServiceScene';\nimport { getLogsStreamSelector, getValueFromFieldsFilter } from './variableGetters';\nimport { logger } from './logger';\nimport { PanelMenu } from '../Components/Panels/PanelMenu';\nimport { getLabelTypeFromFrame } from './lokiQuery';\nimport { LabelType } from './fieldsTypes';\n\nexport type DetectedLabel = {\n label: string;\n cardinality: number;\n};\n\nexport type DetectedLabelsResponse = {\n detectedLabels: DetectedLabel[];\n};\n\nexport type DetectedField = {\n label: string;\n cardinality: number;\n type: string;\n parsers: string[] | null;\n};\n\nexport type DetectedFieldsResponse = {\n fields: DetectedField[];\n};\n\nconst getReducerId = (sortBy: SortBy) => {\n if (sortBy) {\n const values: string[] = Object.values(ReducerID);\n if (values.includes(sortBy)) {\n return sortBy;\n }\n }\n return undefined;\n};\n\n/**\n * Extracts the ExtractedFieldsType from the string returned on the detected_fields api parser field value\n * @param parserString\n */\nexport function extractParserFromString(parserString?: string): ParserType {\n switch (parserString) {\n case 'json':\n return 'json';\n case 'logfmt':\n return 'logfmt';\n case '': // Structured metadata is empty\n return 'structuredMetadata';\n case 'structuredMetadata': // Structured metadata is empty\n return 'structuredMetadata';\n default: // if we get a parser with multiple\n return 'mixed';\n }\n}\n\nexport function extractFieldTypeFromString(fieldString?: string): DetectedFieldType {\n switch (fieldString) {\n case 'int':\n case 'float':\n case 'duration':\n case 'boolean':\n case 'bytes':\n return fieldString;\n default:\n return 'string';\n }\n}\n\nexport function extractParserFromArray(parsers?: string[]): ParserType {\n const parsersSet = new Set(parsers?.map((v) => v.toString()) ?? []);\n\n // Structured metadata doesn't change the parser we use, so remove it\n parsersSet.delete('structuredMetadata');\n\n // get unique values\n const parsersArray = Array.from(parsersSet);\n\n if (parsersArray.length === 1) {\n return extractParserFromString(parsersArray[0]);\n }\n\n // If the set size is zero, we only had structured metadata detected as a parser\n if (parsersSet.size === 0) {\n return 'structuredMetadata';\n }\n\n // Otherwise if there was more then one value, return mixed parser\n return 'mixed';\n}\n\nexport function getParserForField(fieldName: string, sceneRef: SceneObject): ParserType | undefined {\n const detectedFieldsFrame = getDetectedFieldsFrame(sceneRef);\n const parserField: Field | undefined = detectedFieldsFrame?.fields[2];\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n\n const index = namesField?.values.indexOf(fieldName);\n const parser =\n index !== undefined && index !== -1 ? extractParserFromString(parserField?.values?.[index] ?? '') : undefined;\n\n if (parser === undefined) {\n logger.warn('missing parser, using mixed format for', { fieldName });\n return 'mixed';\n }\n return parser;\n}\n\nexport function getFilterBreakdownValueScene(\n getTitle: (df: DataFrame) => string,\n style: DrawStyle,\n variableName: typeof VAR_FIELDS | typeof VAR_LABELS | typeof VAR_METADATA,\n sortByScene: SortByScene,\n labelKey?: string\n) {\n return (frame: DataFrame, frameIndex: number) => {\n const reducerID = getReducerId(sortByScene.state.sortBy);\n const panel = PanelBuilders.timeseries()\n .setOption('legend', { showLegend: false })\n .setCustomFieldConfig('fillOpacity', 9)\n .setTitle(getTitle(frame))\n .setShowMenuAlways(true)\n .setData(\n new SceneDataTransformer({\n transformations: [() => selectFrameTransformation(frame)],\n })\n )\n .setOverrides(setLevelColorOverrides)\n .setMenu(new PanelMenu({ investigationOptions: { frame, fieldName: getTitle(frame), labelName: labelKey } }))\n .setHeaderActions([\n new AddToFiltersButton({ frame, variableName, hideExclude: labelKey === LEVEL_VARIABLE_VALUE }),\n ]);\n\n if (style === DrawStyle.Bars) {\n panel\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setOverrides(setLevelColorOverrides)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars);\n }\n\n if (reducerID) {\n panel.setOption('legend', {\n showLegend: true,\n calcs: [reducerID],\n });\n // These will only have a single series, no need to show the title twice\n panel.setDisplayName(' ');\n }\n\n return new SceneCSSGridItem({\n body: panel.build(),\n });\n };\n}\n\nexport function selectFrameTransformation(frame: DataFrame) {\n return (source: Observable) => {\n return source.pipe(\n map(() => {\n return [frame];\n })\n );\n };\n}\n\n/**\n * Returns the variable to use when adding filters in a panel.\n * @param frame\n * @param key\n * @param sceneRef\n */\nexport function getVariableForLabel(\n frame: DataFrame | undefined,\n key: string,\n sceneRef: SceneObject\n): InterpolatedFilterType {\n const labelType = frame ? getLabelTypeFromFrame(key, frame) : LabelType.Parsed;\n\n if (labelType) {\n // Use the labelType from the dataframe\n return getFilterTypeFromLabelType(labelType, key);\n }\n\n // If the dataframe doesn't have labelTypes, check if the detected_fields response returned a parser.\n const parserForThisField = getParserForField(key, sceneRef);\n if (parserForThisField === 'structuredMetadata') {\n return VAR_METADATA;\n }\n\n logger.warn('unable to determine label variable, falling back to parsed field', {\n key,\n parserForThisField: parserForThisField ?? '',\n });\n\n return VAR_FIELDS;\n}\n\nexport function getFilterTypeFromLabelType(type: LabelType, key: string): InterpolatedFilterType {\n switch (type) {\n case LabelType.Indexed: {\n return VAR_LABELS;\n }\n case LabelType.Parsed: {\n return VAR_FIELDS;\n }\n case LabelType.StructuredMetadata: {\n // Structured metadata is either a special level variable, or a field variable\n if (key === LEVEL_VARIABLE_VALUE) {\n return VAR_LEVELS;\n }\n return VAR_METADATA;\n }\n default: {\n const err = new Error(`Invalid label type for ${key}`);\n logger.error(err, { type, msg: `Invalid label type for ${key}` });\n throw err;\n }\n }\n}\n\nexport function getParserFromFieldsFilters(fields: AdHocFiltersVariable): ParserType {\n const parsers = fields.state.filters.map((filter) => {\n return getValueFromFieldsFilter(filter).parser;\n });\n\n return extractParserFromArray(parsers);\n}\n\nexport function isAvgField(fieldType: DetectedFieldType | undefined) {\n return fieldType === 'duration' || fieldType === 'bytes' || fieldType === 'float';\n}\n\nexport function buildFieldsQuery(optionValue: string, options: LogsQueryOptions) {\n if (options.fieldType && ['bytes', 'duration'].includes(options.fieldType)) {\n return (\n `avg_over_time(${getLogsStreamSelector(options)} | unwrap ` +\n options.fieldType +\n `(${optionValue}) | __error__=\"\" [$__auto]) by ()`\n );\n } else if (options.fieldType && options.fieldType === 'float') {\n return (\n `avg_over_time(${getLogsStreamSelector(options)} | unwrap ` + optionValue + ` | __error__=\"\" [$__auto]) by ()`\n );\n } else {\n return `sum by (${optionValue}) (count_over_time(${getLogsStreamSelector(options)} [$__auto]))`;\n }\n}\n\n/**\n * Returns the DetectedFieldType if available for a specific label\n * @param optionValue\n * @param detectedFieldsFrame\n */\nexport function getDetectedFieldType(optionValue: string, detectedFieldsFrame?: DataFrame) {\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n const typesField: Field | undefined = detectedFieldsFrame?.fields[3];\n const index = namesField?.values.indexOf(optionValue);\n return index !== undefined && index !== -1 ? extractFieldTypeFromString(typesField?.values?.[index]) : undefined;\n}\n\nexport function buildFieldsQueryString(\n optionValue: string,\n fieldsVariable: AdHocFiltersVariable,\n detectedFieldsFrame?: DataFrame\n) {\n const parserField: Field | undefined = detectedFieldsFrame?.fields[2];\n const namesField: Field | undefined = detectedFieldsFrame?.fields[0];\n const typesField: Field | undefined = detectedFieldsFrame?.fields[3];\n const index = namesField?.values.indexOf(optionValue);\n\n const parserForThisField =\n index !== undefined && index !== -1 ? extractParserFromString(parserField?.values?.[index]) : 'mixed';\n\n const optionType =\n index !== undefined && index !== -1 ? extractFieldTypeFromString(typesField?.values?.[index]) : undefined;\n\n // Get the parser from the json payload of each filter\n const parsers = fieldsVariable.state.filters.map((filter) => {\n const index = namesField?.values.indexOf(filter.key);\n const parserFromFilterValue = getValueFromFieldsFilter(filter);\n if (parserFromFilterValue.parser) {\n return parserFromFilterValue.parser;\n }\n\n // Then fallback to check the latest response\n const parser =\n index !== undefined && index !== -1\n ? extractParserFromString(parserField?.values?.[index] ?? 'mixed')\n : undefined;\n return parser ?? 'mixed';\n });\n\n const parser = extractParserFromArray([...parsers, parserForThisField]);\n\n let fieldExpressionToAdd = '';\n let structuredMetadataToAdd = '';\n\n if (parserForThisField === 'structuredMetadata') {\n structuredMetadataToAdd = `| ${optionValue}!=\"\"`;\n // Structured metadata\n } else {\n fieldExpressionToAdd = `| ${optionValue}!=\"\"`;\n }\n\n // is option structured metadata\n const options: LogsQueryOptions = {\n structuredMetadataToAdd,\n fieldExpressionToAdd,\n parser: parser,\n fieldType: optionType,\n };\n\n return buildFieldsQuery(optionValue, options);\n}\n\n// copied from /grafana/grafana/public/app/plugins/datasource/loki/datasource.ts:1204\nexport function lokiRegularEscape(value: T) {\n if (typeof value === 'string') {\n return value.replace(/'/g, \"\\\\\\\\'\");\n }\n return value;\n}\n","import { DetectedLabel } from './fields';\nimport {\n ALL_VARIABLE_VALUE,\n isAdHocFilterValueUserInput,\n LEVEL_VARIABLE_VALUE,\n stripAdHocFilterUserInputPrefix,\n} from './variables';\nimport { VariableValueOption } from '@grafana/scenes';\n\n// We want to show labels with cardinality 1 at the end of the list because they are less useful\n// And then we want to sort by cardinality - from lowest to highest\nexport function sortLabelsByCardinality(a: DetectedLabel, b: DetectedLabel) {\n if (a.cardinality === 1) {\n return 1;\n }\n if (b.cardinality === 1) {\n return -1;\n }\n return a.cardinality - b.cardinality;\n}\n\n// Creates label options by taking all labels and if LEVEL_VARIABLE_VALUE is not in the list, it is added at the beginning.\n// It also adds 'All' option at the beginning\nexport function getLabelOptions(labels: string[]) {\n const options = [...labels];\n if (!labels.includes(LEVEL_VARIABLE_VALUE)) {\n options.unshift(LEVEL_VARIABLE_VALUE);\n }\n\n const labelOptions: VariableValueOption[] = options.map((label) => ({\n label,\n value: String(label),\n }));\n\n return [{ label: 'All', value: ALL_VARIABLE_VALUE }, ...labelOptions];\n}\nexport const LEVEL_INDEX_NAME = 'level';\nexport const FIELDS_TO_REMOVE = ['level_extracted', LEVEL_VARIABLE_VALUE, LEVEL_INDEX_NAME];\n\nexport const LABELS_TO_REMOVE = ['__aggregated_metric__', '__stream_shard__'];\nexport function getFieldOptions(labels: string[]) {\n const options = [...labels];\n const labelOptions: VariableValueOption[] = options.map((label) => ({\n label,\n value: String(label),\n }));\n\n return [{ label: 'All', value: ALL_VARIABLE_VALUE }, ...labelOptions];\n}\n\n// Since \"meta\" is not saved in the URL state, it's ephemeral and can only be used for wip keys, but we can differentiate fields from metadata if the value is not encoded (and therefore different then the label)\nexport function isFilterMetadata(filter: { value: string; valueLabels?: string[] }) {\n const value = isAdHocFilterValueUserInput(filter.value)\n ? stripAdHocFilterUserInputPrefix(filter.value)\n : filter.value;\n return value === filter.valueLabels?.[0];\n}\n","import { AdHocFiltersVariable, SceneObject } from '@grafana/scenes';\nimport { LEVEL_VARIABLE_VALUE, VAR_FIELDS, VAR_LABELS, VAR_METADATA } from './variables';\nimport { getParserForField, getParserFromFieldsFilters } from './fields';\nimport { buildDataQuery } from './query';\nimport {\n getFieldsAndMetadataVariable,\n getFieldsVariable,\n getLabelsVariable,\n getLogsStreamSelector,\n getMetadataVariable,\n getValueFromFieldsFilter,\n} from './variableGetters';\nimport { addToFilters, FilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { isOperatorExclusive, isOperatorInclusive } from './operatorHelpers';\nimport { getLabelValueFromDataFrame } from './levels';\nimport { DataFrame } from '@grafana/data';\n\nexport const LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS = 'repeat(auto-fit, minmax(400px, 1fr))';\n\nexport function buildLabelsQuery(sceneRef: SceneObject, optionValue: string, optionName: string) {\n let labelExpressionToAdd = '';\n let structuredMetadataToAdd = '';\n\n const fields = getFieldsVariable(sceneRef);\n const parser = getParserFromFieldsFilters(fields);\n\n if (optionName && optionName !== LEVEL_VARIABLE_VALUE) {\n labelExpressionToAdd = ` ,${optionName} != \"\"`;\n } else if (optionName && optionName === LEVEL_VARIABLE_VALUE) {\n structuredMetadataToAdd = ` | ${optionName} != \"\"`;\n }\n\n return buildDataQuery(\n `sum(count_over_time(${getLogsStreamSelector({\n labelExpressionToAdd,\n structuredMetadataToAdd,\n parser,\n })} [$__auto])) by (${optionValue})`,\n { legendFormat: `{{${optionValue}}}`, refId: 'LABEL_BREAKDOWN_VALUES' }\n );\n}\n\nexport function getLabelsFromSeries(series: DataFrame[]): string[] {\n const labels = series.map((dataFrame) => getLabelValueFromDataFrame(dataFrame));\n return labels.flatMap((f) => (f ? [f] : []));\n}\n\nexport function toggleFieldFromFilter(key: string, value: string, sceneRef: SceneObject): FilterType {\n const fieldsAndMetadataVariable = getFieldsAndMetadataVariable(sceneRef);\n const empty = fieldsAndMetadataVariable.state.filters.length === 0;\n const detectedFieldType = getParserForField(key, sceneRef);\n const isMetadata = detectedFieldType === 'structuredMetadata';\n\n const filterExists = fieldsAndMetadataVariable.state.filters.find((filter) => {\n if (isMetadata) {\n return isOperatorInclusive(filter.operator) && filter.value === value;\n }\n return isOperatorInclusive(filter.operator) && getValueFromFieldsFilter(filter).value === value;\n });\n\n if (empty || !filterExists) {\n addToFilters(key, value, 'include', sceneRef, isMetadata ? VAR_METADATA : VAR_FIELDS);\n return 'include';\n } else {\n addToFilters(key, value, 'toggle', sceneRef, isMetadata ? VAR_METADATA : VAR_FIELDS);\n return 'toggle';\n }\n}\n\nexport function toggleLabelFromFilter(key: string, value: string, sceneRef: SceneObject): FilterType {\n const labelsVariable = getLabelsVariable(sceneRef);\n const empty = labelsVariable.state.filters.length === 0;\n const filterExists = labelsVariable.state.filters.find(\n (filter) => filter.value === value && isOperatorInclusive(filter.operator)\n );\n\n if (empty || !filterExists) {\n addToFilters(key, value, 'include', sceneRef, VAR_LABELS);\n return 'include';\n } else {\n addToFilters(key, value, 'toggle', sceneRef, VAR_LABELS);\n return 'toggle';\n }\n}\n\nexport function getVisibleLabels(key: string, allLabels: string[], sceneRef: SceneObject) {\n const labelsVariable = getLabelsVariable(sceneRef);\n return getVisibleFilters(key, allLabels, labelsVariable);\n}\n\nexport function getVisibleFields(key: string, allLabels: string[], sceneRef: SceneObject) {\n const fieldsVariable = getFieldsVariable(sceneRef);\n return getVisibleFilters(key, allLabels, fieldsVariable);\n}\n\nexport function getVisibleMetadata(key: string, allLabels: string[], sceneRef: SceneObject) {\n const metadataVariable = getMetadataVariable(sceneRef);\n return getVisibleFilters(key, allLabels, metadataVariable);\n}\n\nexport function getVisibleFilters(key: string, allLabels: string[], variable: AdHocFiltersVariable) {\n const inclusiveFilters = variable.state.filters\n .filter((filter) => filter.key === key && isOperatorInclusive(filter.operator))\n .map((filter) => (variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(filter).value : filter.value));\n const exclusiveLabels = variable.state.filters\n .filter((filter) => filter.key === key && isOperatorExclusive(filter.operator))\n .map((filter) => (variable.state.name === VAR_FIELDS ? getValueFromFieldsFilter(filter).value : filter.value));\n\n return allLabels.filter((label) => {\n if (exclusiveLabels.includes(label)) {\n return false;\n }\n return inclusiveFilters.length === 0 || inclusiveFilters.includes(label);\n });\n}\n","import { DataFrame } from '@grafana/data';\nimport { SeriesVisibilityChangeMode } from '@grafana/ui';\nimport { LEVEL_VARIABLE_VALUE, VAR_LEVELS } from './variables';\nimport { SceneObject } from '@grafana/scenes';\nimport { addToFilters, FilterType } from 'Components/ServiceScene/Breakdowns/AddToFiltersButton';\nimport { getLevelsVariable } from './variableGetters';\n\nimport { isOperatorExclusive, isOperatorInclusive } from './operatorHelpers';\n\n/**\n * Given a set of `visibleLevels` in a panel, it returns a list of the new visible levels\n * after applying the visibility change in `mode`.\n */\nexport function toggleLevelVisibility(\n level: string,\n visibleLevels: string[] | undefined,\n mode: SeriesVisibilityChangeMode,\n allLevels: string[]\n) {\n if (mode === SeriesVisibilityChangeMode.ToggleSelection) {\n const levels = visibleLevels ?? [];\n if (levels.length === 1 && levels.includes(level)) {\n return [];\n }\n return [level];\n }\n /**\n * When the behavior is `AppendToSelection` and the filter is empty, we initialize it\n * with all levels because the user is excluding this level in their action.\n */\n let levels = !visibleLevels?.length ? allLevels : visibleLevels;\n if (levels.includes(level)) {\n return levels.filter((existingLevel) => existingLevel !== level);\n }\n\n return [...levels, level];\n}\n\nexport function getLevelLabelsFromSeries(series: DataFrame[]) {\n return series.map((dataFrame) => getLabelValueFromDataFrame(dataFrame) ?? 'logs');\n}\n\nexport function getLabelValueFromDataFrame(frame: DataFrame) {\n const labels = frame.fields[1]?.labels;\n\n if (!labels) {\n return null;\n }\n\n const keys = Object.keys(labels);\n if (keys.length === 0) {\n return null;\n }\n\n return labels[keys[0]];\n}\n\n/*\n * From the current state of the levels filter, return the level names that\n * the user wants to see.\n */\nexport function getVisibleLevels(allLevels: string[], sceneRef: SceneObject) {\n const levelsFilter = getLevelsVariable(sceneRef);\n const wantedLevels = levelsFilter.state.filters\n .filter((filter) => isOperatorInclusive(filter.operator))\n .map((filter) => filter.value.split('|').map(normalizeLevelName))\n .join('|');\n const unwantedLevels = levelsFilter.state.filters\n .filter((filter) => isOperatorExclusive(filter.operator))\n .map((filter) => filter.value.split('|').map(normalizeLevelName))\n .join('|');\n return allLevels.filter((level) => {\n if (unwantedLevels.includes(level)) {\n return false;\n }\n return wantedLevels.length === 0 || wantedLevels.includes(level);\n });\n}\n\nfunction normalizeLevelName(level: string) {\n if (level === '\"\"') {\n return 'logs';\n }\n return level;\n}\n\n/**\n * Toggle a level from the filter state.\n * If the filter is empty, it's added.\n * If the filter exists but it's different, it's replaced.\n * If the filter exists, it's removed.\n */\nexport function toggleLevelFromFilter(level: string, sceneRef: SceneObject): FilterType {\n const levelFilter = getLevelsVariable(sceneRef);\n const empty = levelFilter.state.filters.length === 0;\n const filterExists = levelFilter.state.filters.find(\n (filter) => filter.value === level && isOperatorInclusive(filter.operator)\n );\n\n if (level === 'logs') {\n level = '\"\"';\n }\n\n if (empty || !filterExists) {\n addToFilters(LEVEL_VARIABLE_VALUE, level, 'include', sceneRef, VAR_LEVELS);\n return 'include';\n } else {\n addToFilters(LEVEL_VARIABLE_VALUE, level, 'toggle', sceneRef, VAR_LEVELS);\n return 'toggle';\n }\n}\n","import {\n arrayToDataFrame,\n DataFrame,\n DataFrameType,\n DataTopic,\n Field,\n FieldCache,\n FieldType,\n FieldWithIndex,\n Labels,\n} from '@grafana/data';\n\n// these are like Labels, but their values can be\n// arbitrary structures, not just strings\nexport type LogFrameLabels = Record;\n\n// the attributes-access is a little awkward, but it's necessary\n// because there are multiple,very different dataFrame-representations.\nexport type LogsFrame = {\n timeField: FieldWithIndex;\n bodyField: FieldWithIndex;\n timeNanosecondField: FieldWithIndex | null;\n severityField: FieldWithIndex | null;\n idField: FieldWithIndex | null;\n getLogFrameLabels: () => LogFrameLabels[] | null; // may be slow, so we only do it when asked for it explicitly\n getLogFrameLabelsAsLabels: () => Labels[] | null; // temporarily exists to make the labels=>attributes migration simpler\n getLabelFieldName: () => string | null;\n extraFields: FieldWithIndex[];\n raw: DataFrame;\n};\n\nfunction getField(cache: FieldCache, name: string, fieldType: FieldType): FieldWithIndex | undefined {\n const field = cache.getFieldByName(name);\n if (field === undefined) {\n return undefined;\n }\n\n return field.type === fieldType ? field : undefined;\n}\n\nexport const DATAPLANE_TIMESTAMP_NAME = 'timestamp';\nexport const DATAPLANE_BODY_NAME = 'body';\nexport const DATAPLANE_SEVERITY_NAME = 'severity';\nexport const DATAPLANE_ID_NAME = 'id';\nexport const DATAPLANE_LABELS_NAME = 'labels';\n\nexport function logFrameLabelsToLabels(logFrameLabels: LogFrameLabels): Labels {\n const result: Labels = {};\n\n Object.entries(logFrameLabels).forEach(([k, v]) => {\n result[k] = typeof v === 'string' ? v : JSON.stringify(v);\n });\n\n return result;\n}\n\nexport function parseLogsFrame(frame: DataFrame): LogsFrame | null {\n if (frame.meta?.type === DataFrameType.LogLines) {\n return parseDataplaneLogsFrame(frame);\n } else {\n return parseLegacyLogsFrame(frame);\n }\n}\n\nexport function parseDataplaneLogsFrame(frame: DataFrame): LogsFrame | null {\n const cache = new FieldCache(frame);\n\n const timestampField = getField(cache, DATAPLANE_TIMESTAMP_NAME, FieldType.time);\n const bodyField = getField(cache, DATAPLANE_BODY_NAME, FieldType.string);\n\n // these two are mandatory\n if (timestampField === undefined || bodyField === undefined) {\n return null;\n }\n\n const severityField = getField(cache, DATAPLANE_SEVERITY_NAME, FieldType.string) ?? null;\n const idField = getField(cache, DATAPLANE_ID_NAME, FieldType.string) ?? null;\n const labelsField = getField(cache, DATAPLANE_LABELS_NAME, FieldType.other) ?? null;\n\n const labels = labelsField === null ? null : labelsField.values;\n\n const extraFields = cache.fields.filter(\n (_, i) =>\n i !== timestampField.index &&\n i !== bodyField.index &&\n i !== severityField?.index &&\n i !== idField?.index &&\n i !== labelsField?.index\n );\n\n return {\n raw: frame,\n timeField: timestampField,\n bodyField,\n severityField,\n idField,\n getLogFrameLabels: () => labels,\n timeNanosecondField: null,\n getLogFrameLabelsAsLabels: () => (labels !== null ? labels.map(logFrameLabelsToLabels) : null),\n getLabelFieldName: () => (labelsField !== null ? labelsField.name : null),\n extraFields,\n };\n}\n\n// Copied from https://github.com/grafana/grafana/blob/main/public/app/features/logs/legacyLogsFrame.ts\nexport function parseLegacyLogsFrame(frame: DataFrame): LogsFrame | null {\n const cache = new FieldCache(frame);\n const timeField = cache.getFirstFieldOfType(FieldType.time);\n const bodyField = cache.getFirstFieldOfType(FieldType.string);\n\n // these two are mandatory\n if (timeField === undefined || bodyField === undefined) {\n return null;\n }\n\n const timeNanosecondField = cache.getFieldByName('tsNs') ?? null;\n const severityField = cache.getFieldByName('level') ?? null;\n const idField = cache.getFieldByName('id') ?? null;\n\n // extracting the labels is done very differently for old-loki-style and simple-style\n // dataframes, so it's a little awkward to handle it,\n // we both need to on-demand extract the labels, and also get teh labelsField,\n // but only if the labelsField is used.\n const [labelsField, getL] = makeLabelsGetter(cache, bodyField, frame);\n\n const extraFields = cache.fields.filter(\n (_, i) =>\n i !== timeField.index &&\n i !== bodyField.index &&\n i !== timeNanosecondField?.index &&\n i !== severityField?.index &&\n i !== idField?.index &&\n i !== labelsField?.index\n );\n\n return {\n timeField,\n bodyField,\n timeNanosecondField,\n severityField,\n idField,\n getLogFrameLabels: getL,\n getLogFrameLabelsAsLabels: getL,\n getLabelFieldName: () => labelsField?.name ?? null,\n extraFields,\n raw: frame,\n };\n}\n\n// if the frame has \"labels\" field with type \"other\", adjust the behavior.\n// we also have to return the labels-field (if we used it),\n// to be able to remove it from the unused-fields, later.\nfunction makeLabelsGetter(\n cache: FieldCache,\n lineField: Field,\n frame: DataFrame\n): [FieldWithIndex | null, () => Labels[] | null] {\n // If we have labels field with type \"other\", use that\n const labelsField = cache.getFieldByName('labels');\n if (labelsField !== undefined && labelsField.type === FieldType.other) {\n const values = labelsField.values.map(logFrameLabelsToLabels);\n return [labelsField, () => values];\n } else {\n // Otherwise we use the labels on the line-field, and make an array with it\n return [null, () => makeLabelsArray(lineField, frame.length)];\n }\n}\n\n// take the labels from the line-field, and \"stretch\" it into an array\n// with the length of the frame (so there are the same labels for every row)\nfunction makeLabelsArray(lineField: Field, length: number): Labels[] | null {\n const lineLabels = lineField.labels;\n if (lineLabels !== undefined) {\n const result = new Array(length);\n result.fill(lineLabels);\n return result;\n } else {\n return null;\n }\n}\n\nexport function getTimeName(logsFrame?: LogsFrame) {\n return logsFrame?.timeField.name ?? DATAPLANE_TIMESTAMP_NAME;\n}\n\nexport function getBodyName(logsFrame?: LogsFrame | null): string {\n return logsFrame?.bodyField.name ?? DATAPLANE_BODY_NAME;\n}\n\nexport function getIdName(logsFrame?: LogsFrame): string {\n return logsFrame?.idField?.name ?? DATAPLANE_ID_NAME;\n}\n\nexport function getSeriesVisibleRange(series: DataFrame[]) {\n let start = 0;\n let end = 0;\n\n const timeField = series[0]?.fields.find((field) => field.type === FieldType.time);\n if (timeField) {\n const values = [...timeField.values].sort();\n const oldestFirst = values[0] < values[values.length - 1];\n start = oldestFirst ? values[0] : values[values.length - 1];\n end = oldestFirst ? values[values.length - 1] : values[0];\n }\n return { start, end };\n}\n\nexport const VISIBLE_RANGE_NAME = 'Visible range';\nexport function getVisibleRangeFrame(start: number, end: number) {\n const frame = arrayToDataFrame([\n {\n time: start,\n timeEnd: end,\n isRegion: true,\n text: 'Range from oldest to newest logs in display',\n color: 'rgba(58, 113, 255, 0.3)',\n },\n ]);\n frame.name = VISIBLE_RANGE_NAME;\n frame.meta = {\n dataTopic: DataTopic.Annotations,\n };\n\n return frame;\n}\n\nexport function isEmptyLogsResult(series: DataFrame[]) {\n return series.length === 0 || series[0].fields[0].values.length === 0;\n}\n","import { ServiceSceneCustomState } from '../Components/ServiceScene/ServiceScene';\n\nlet metadataService: MetadataService;\n\nexport function initializeMetadataService(): void {\n if (!metadataService) {\n metadataService = new MetadataService();\n }\n}\n\n/**\n * Singleton class for sharing state across drilldown routes with common parent scene\n */\nexport class MetadataService {\n private serviceSceneState: ServiceSceneCustomState | undefined = undefined;\n public getServiceSceneState() {\n return this.serviceSceneState;\n }\n\n public setPatternsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.patternsCount = count;\n }\n\n public setLabelsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.labelsCount = count;\n }\n\n public setFieldsCount(count: number) {\n if (!this.serviceSceneState) {\n this.serviceSceneState = {};\n }\n\n this.serviceSceneState.fieldsCount = count;\n }\n\n public setServiceSceneState(state: ServiceSceneCustomState) {\n this.serviceSceneState = {\n patternsCount: state.patternsCount,\n labelsCount: state.labelsCount,\n fieldsCount: state.fieldsCount,\n loading: state.loading,\n logsCount: state.logsCount,\n totalLogsCount: state.totalLogsCount,\n };\n }\n}\n\nexport function getMetadataService(): MetadataService {\n return metadataService;\n}\n","import { ServiceScene } from '../Components/ServiceScene/ServiceScene';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { ALL_VARIABLE_VALUE } from './variables';\nimport { getMetadataService } from './metadata';\nimport { locationService } from '@grafana/runtime';\nimport { buildServicesUrl, DRILLDOWN_URL_KEYS, PageSlugs, ROUTES, ValueSlugs } from './routing';\nimport { sceneGraph } from '@grafana/scenes';\nimport { UrlQueryMap, urlUtil } from '@grafana/data';\nimport { replaceSlash } from './extensions/links';\nimport { prefixRoute } from './plugin';\n\nlet previousRoute: string | undefined = undefined;\n\nfunction buildValueBreakdownUrl(label: string, newPath: ValueSlugs, labelValue: string, labelName = 'service') {\n if (label === ALL_VARIABLE_VALUE && newPath === ValueSlugs.label) {\n return prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.labels}`);\n } else if (label === ALL_VARIABLE_VALUE && newPath === ValueSlugs.field) {\n return prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.fields}`);\n } else {\n return prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${newPath}/${replaceSlash(label)}`\n );\n }\n}\n\nexport function buildDrilldownPageUrl(path: PageSlugs | string, extraQueryParams?: UrlQueryMap): string {\n return urlUtil.renderUrl(path, buildDrilldownPageRoute(extraQueryParams));\n}\n\nexport function buildDrilldownPageRoute(extraQueryParams?: UrlQueryMap): UrlQueryMap {\n return {\n ...Object.entries(urlUtil.getUrlSearchParams()).reduce((acc, [key, value]) => {\n if (DRILLDOWN_URL_KEYS.includes(key)) {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n ...extraQueryParams,\n };\n}\n\nexport function getValueBreakdownLink(newPath: ValueSlugs, label: string, serviceScene: ServiceScene) {\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const urlLabelName = indexScene.state.routeMatch?.params.labelName;\n const urlLabelValue = indexScene.state.routeMatch?.params.labelValue;\n\n if (urlLabelName && urlLabelValue) {\n let urlPath = buildValueBreakdownUrl(label, newPath, urlLabelValue, urlLabelName);\n const fullUrl = buildDrilldownPageUrl(urlPath);\n\n // If we're going to navigate, we need to share the state between this instantiation of the service scene\n if (serviceScene) {\n const metadataService = getMetadataService();\n metadataService.setServiceSceneState(serviceScene.state);\n }\n\n return fullUrl;\n }\n\n return '';\n}\n\n/**\n * Navigate to value breakdown url\n * @param newPath\n * @param label\n * @param serviceScene\n */\nexport function navigateToValueBreakdown(newPath: ValueSlugs, label: string, serviceScene: ServiceScene) {\n const link = getValueBreakdownLink(newPath, label, serviceScene);\n if (link) {\n pushUrlHandler(link);\n }\n}\n\n/**\n * The case for initial navigation from the service selection to the service index is a special case, as we don't yet have a serviceScene constructed to pull the selected service.\n * This function will route users to the initial (logs) page from the service selection view, which will populate the service scene state with the selected service string.\n * @param labelName\n * @param labelValue\n */\nexport function getDrillDownIndexLink(labelName: string, labelValue: string, labelFilters?: UrlQueryMap) {\n const breakdownUrl = buildDrilldownPageUrl(ROUTES.logs(labelValue, labelName), labelFilters);\n return breakdownUrl;\n}\n\nexport function getDrillDownTabLink(path: PageSlugs, serviceScene: ServiceScene, extraQueryParams?: UrlQueryMap) {\n const indexScene = sceneGraph.getAncestor(serviceScene, IndexScene);\n const urlLabelValue = indexScene.state.routeMatch?.params.labelValue;\n const urlLabelName = indexScene.state.routeMatch?.params.labelName;\n\n if (urlLabelValue) {\n const fullUrl = prefixRoute(`${PageSlugs.explore}/${urlLabelName}/${replaceSlash(urlLabelValue)}/${path}`);\n return buildDrilldownPageUrl(fullUrl, extraQueryParams);\n }\n return '';\n}\n\n/**\n * Navigates to the drilldown page specified by the path slug\n *\n * @param path\n * @param serviceScene\n * @param extraQueryParams\n */\nexport function navigateToDrilldownPage(path: PageSlugs, serviceScene: ServiceScene, extraQueryParams?: UrlQueryMap) {\n const drilldownLink = getDrillDownTabLink(path, serviceScene, extraQueryParams);\n\n if (drilldownLink) {\n // If we're going to navigate, we need to share the state between this instantiation of the service scene\n if (serviceScene) {\n const metadataService = getMetadataService();\n metadataService.setServiceSceneState(serviceScene.state);\n }\n\n pushUrlHandler(drilldownLink);\n return;\n }\n}\n\nexport function pushUrlHandler(newUrl: string) {\n previousRoute = newUrl;\n locationService.push(newUrl);\n}\n\nexport function addCurrentUrlToHistory() {\n // Add the current url to browser history before the state is changed so the user can revert their change.\n const location = locationService.getLocation();\n locationService.push(location.pathname + location.search);\n}\n\n/**\n * Navigate to the services selection url\n */\nexport function navigateToIndex() {\n const location = locationService.getLocation();\n const serviceUrl = buildServicesUrl(ROUTES.explore());\n const currentUrl = location.pathname + location.search;\n const search = locationService.getSearch();\n\n if (serviceUrl === currentUrl || currentUrl.includes(serviceUrl)) {\n return;\n }\n\n if (!search.get('var-filters')) {\n // If we don't have filters, we don't want to keep this url in browser history since this is fired AFTER the url props are made invalid, push the previous route and replace it\n if (previousRoute) {\n locationService.replace(previousRoute);\n }\n locationService.push(serviceUrl);\n } else {\n pushUrlHandler(serviceUrl);\n }\n}\n","import { QueryRunnerState, sceneGraph, SceneQueryRunner } from '@grafana/scenes';\n\nexport class LogsSceneQueryRunner extends SceneQueryRunner {\n constructor(initialState: QueryRunnerState) {\n super(initialState);\n }\n\n public runQueries() {\n const timeRange = sceneGraph.getTimeRange(this);\n\n // We don't want to subscribe to time range changes, or we'll get duplicate queries\n // this.subscribeToTimeRangeChanges(timeRange);\n\n // @todo can we make runWithTimeRange protected? (https://github.com/grafana/scenes/pull/866)\n // Hack to call private method\n this['runWithTimeRangeAndScopes'](timeRange);\n }\n}\n","import {\n DataFrame,\n FieldColorModeId,\n FieldConfig,\n FieldMatcherID,\n FieldType,\n getFieldDisplayName,\n} from '@grafana/data';\nimport {\n FieldConfigBuilder,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n PanelBuilders,\n QueryRunnerState,\n SceneDataProvider,\n SceneDataTransformer,\n SceneObject,\n SceneQueryRunner,\n VizPanel,\n} from '@grafana/scenes';\nimport { map, Observable } from 'rxjs';\nimport { HideSeriesConfig, LogsSortOrder } from '@grafana/schema';\nimport { WRAPPED_LOKI_DS_UID } from './datasource';\nimport { LogsSceneQueryRunner } from './LogsSceneQueryRunner';\nimport { DrawStyle, StackingMode } from '@grafana/ui';\nimport { getLevelLabelsFromSeries, getVisibleLevels } from './levels';\nimport { LokiQuery, LokiQueryDirection } from './lokiQuery';\nimport { LOGS_COUNT_QUERY_REFID, LOGS_PANEL_QUERY_REFID } from '../Components/ServiceScene/ServiceScene';\nimport { getLogsPanelSortOrderFromStore, getLogsPanelSortOrderFromURL } from 'Components/ServiceScene/LogOptionsScene';\nimport { getLabelsFromSeries, getVisibleFields, getVisibleLabels, getVisibleMetadata } from './labels';\nimport { getParserForField } from './fields';\n\nconst UNKNOWN_LEVEL_LOGS = 'logs';\nexport const INFO_LEVEL_FIELD_NAME_REGEX = /^info$/i;\nexport const DEBUG_LEVEL_FIELD_NAME_REGEX = /^debug$/i;\nexport const WARNING_LEVEL_FIELD_NAME_REGEX = /^(warn|warning)$/i;\nexport const ERROR_LEVEL_FIELD_NAME_REGEX = /^error$/i;\nexport const CRITICAL_LEVEL_FIELD_NAME_REGEX = /^(crit|critical|fatal)$/i;\nexport const UNKNOWN_LEVEL_FIELD_NAME_REGEX = /^(logs|unknown)$/i;\n\nexport function setLevelColorOverrides(overrides: FieldConfigOverridesBuilder) {\n overrides.matchFieldsWithNameByRegex(INFO_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-green',\n });\n overrides.matchFieldsWithNameByRegex(DEBUG_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-blue',\n });\n overrides.matchFieldsWithNameByRegex(WARNING_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-orange',\n });\n overrides.matchFieldsWithNameByRegex(ERROR_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'semi-dark-red',\n });\n overrides.matchFieldsWithNameByRegex(CRITICAL_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: '#705da0',\n });\n overrides.matchFieldsWithNameByRegex(UNKNOWN_LEVEL_FIELD_NAME_REGEX.source).overrideColor({\n mode: 'fixed',\n fixedColor: 'darkgray',\n });\n}\n\nexport function setLogsVolumeFieldConfigs(\n builder: ReturnType | ReturnType\n) {\n return builder\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('axisSoftMin', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars)\n .setOverrides(setLevelColorOverrides);\n}\n\nexport function setValueSummaryFieldConfigs(\n builder: ReturnType | ReturnType\n) {\n return builder\n .setCustomFieldConfig('stacking', { mode: StackingMode.Normal })\n .setCustomFieldConfig('fillOpacity', 100)\n .setCustomFieldConfig('lineWidth', 0)\n .setCustomFieldConfig('pointSize', 0)\n .setCustomFieldConfig('drawStyle', DrawStyle.Bars);\n}\n\ninterface TimeSeriesFieldConfig extends FieldConfig {\n hideFrom: HideSeriesConfig;\n}\n\nexport function setLabelSeriesOverrides(labels: string[], overrideConfig: FieldConfigOverridesBuilder) {\n overrideConfig\n .match({\n id: FieldMatcherID.byNames,\n options: {\n mode: 'exclude',\n names: labels,\n prefix: 'All except:',\n readOnly: true,\n },\n })\n .overrideCustomFieldConfig('hideFrom', {\n legend: false,\n tooltip: false,\n viz: true,\n });\n\n // Setting __systemRef to hideSeriesFrom, allows the override to be changed by interacting with the viz\n const overrides = overrideConfig.build();\n // @ts-expect-error\n overrides[overrides.length - 1].__systemRef = 'hideSeriesFrom';\n}\n\n/**\n * Sets labels series visibility in the panel\n */\nexport function syncLevelsVisibleSeries(panel: VizPanel, series: DataFrame[], sceneRef: SceneObject) {\n const focusedLevels = getVisibleLevels(getLevelLabelsFromSeries(series), sceneRef);\n const config = setLogsVolumeFieldConfigs(FieldConfigBuilders.timeseries()).setOverrides(\n setLabelSeriesOverrides.bind(null, focusedLevels)\n );\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\n/**\n * @todo unit test\n * Set levels series visibility in the panel\n */\nexport function syncLabelsValueSummaryVisibleSeries(\n key: string,\n panel: VizPanel,\n series: DataFrame[],\n sceneRef: SceneObject\n) {\n const allLabels = getLabelsFromSeries(series);\n const focusedLabels = getVisibleLabels(key, allLabels, sceneRef);\n\n const config = setValueSummaryFieldConfigs(FieldConfigBuilders.timeseries());\n if (focusedLabels.length) {\n config.setOverrides(setLabelSeriesOverrides.bind(null, focusedLabels));\n }\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\n/**\n * Set fields series visibility in the panel\n */\nexport function syncFieldsValueSummaryVisibleSeries(\n key: string,\n panel: VizPanel,\n series: DataFrame[],\n sceneRef: SceneObject\n) {\n const allLabels = getLabelsFromSeries(series);\n const detectedFieldType = getParserForField(key, sceneRef);\n\n const focusedLabels =\n detectedFieldType === 'structuredMetadata'\n ? getVisibleMetadata(key, allLabels, sceneRef)\n : getVisibleFields(key, allLabels, sceneRef);\n\n const config = setValueSummaryFieldConfigs(FieldConfigBuilders.timeseries());\n\n if (focusedLabels.length) {\n config.setOverrides(setLabelSeriesOverrides.bind(null, focusedLabels));\n }\n if (config instanceof FieldConfigBuilder) {\n panel.onFieldConfigChange(config.build(), true);\n }\n}\n\nfunction setColorByDisplayNameTransformation() {\n return (source: Observable) => {\n return source.pipe(\n map((data: DataFrame[]) => {\n return data.map((frame, frameIndex) => {\n return {\n ...frame,\n fields: frame.fields.map((f, fieldIndex) => {\n // Time fields do not have color config\n if (f.type === FieldType.time) {\n return f;\n }\n const displayName = getFieldDisplayName(f, frame, data);\n return {\n ...f,\n config: {\n ...f.config,\n displayName,\n color: {\n mode: FieldColorModeId.PaletteClassicByName,\n },\n },\n };\n }),\n };\n });\n })\n );\n };\n}\n\nexport function sortLevelTransformation() {\n return (source: Observable) => {\n return source.pipe(\n map((data: DataFrame[]) => {\n return data\n .map((d) => {\n if (d.fields.length < 2) {\n return d;\n }\n if (!d.fields[1].config.displayNameFromDS) {\n d.fields[1].config.displayNameFromDS = UNKNOWN_LEVEL_LOGS;\n }\n return d;\n })\n .sort((a, b) => {\n if (a.fields.length < 2 || b.fields.length < 2) {\n return 0;\n }\n const aName: string | undefined = a.fields[1].config.displayNameFromDS;\n const aVal = aName?.match(CRITICAL_LEVEL_FIELD_NAME_REGEX)\n ? 5\n : aName?.match(ERROR_LEVEL_FIELD_NAME_REGEX)\n ? 4\n : aName?.match(WARNING_LEVEL_FIELD_NAME_REGEX)\n ? 3\n : aName?.match(DEBUG_LEVEL_FIELD_NAME_REGEX)\n ? 2\n : aName?.match(INFO_LEVEL_FIELD_NAME_REGEX)\n ? 2\n : 1;\n const bName: string | undefined = b.fields[1].config.displayNameFromDS;\n const bVal = bName?.match(CRITICAL_LEVEL_FIELD_NAME_REGEX)\n ? 5\n : bName?.match(ERROR_LEVEL_FIELD_NAME_REGEX)\n ? 4\n : bName?.match(WARNING_LEVEL_FIELD_NAME_REGEX)\n ? 3\n : bName?.match(DEBUG_LEVEL_FIELD_NAME_REGEX)\n ? 2\n : bName?.match(INFO_LEVEL_FIELD_NAME_REGEX)\n ? 2\n : 1;\n\n return aVal - bVal;\n });\n })\n );\n };\n}\n\nexport function getResourceQueryRunner(queries: LokiQuery[]) {\n return new LogsSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n });\n}\n\nexport function getQueryRunner(queries: LokiQuery[], queryRunnerOptions?: Partial) {\n // if there's a legendFormat related to any `level` like label, we want to\n // sort the output equally. That's purposefully not `LEVEL_VARIABLE_VALUE`,\n // such that the `detected_level` graph looks the same as a graph for the\n // `level` label.\n\n const hasLevel = queries.find((query) => query.legendFormat?.toLowerCase().includes('level'));\n const isLogPanelQuery = queries.find(\n (query) => query.refId === LOGS_PANEL_QUERY_REFID || query.refId === LOGS_COUNT_QUERY_REFID\n );\n\n if (hasLevel) {\n return new SceneDataTransformer({\n $data: getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n }),\n transformations: [sortLevelTransformation],\n });\n }\n\n if (!isLogPanelQuery) {\n return new SceneDataTransformer({\n $data: getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n }),\n transformations: [setColorByDisplayNameTransformation],\n });\n } else {\n queries = queries.map((query) => ({\n ...query,\n get direction() {\n const sortOrder = getLogsPanelSortOrderFromURL() || getLogsPanelSortOrderFromStore();\n return sortOrder === LogsSortOrder.Descending ? LokiQueryDirection.Backward : LokiQueryDirection.Forward;\n },\n }));\n }\n\n return getSceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: queries,\n ...queryRunnerOptions,\n });\n}\n\nexport function getSceneQueryRunner(queryRunnerOptions?: Partial) {\n return new SceneQueryRunner({\n datasource: { uid: WRAPPED_LOKI_DS_UID },\n queries: [],\n ...queryRunnerOptions,\n });\n}\n\nexport function getQueryRunnerFromProvider(provider: SceneDataProvider): SceneQueryRunner {\n if (provider instanceof SceneQueryRunner) {\n return provider;\n }\n\n if (provider.state.$data instanceof SceneQueryRunner) {\n return provider.state.$data;\n }\n\n throw new Error('SceneDataProvider is missing SceneQueryRunner');\n}\n","import pluginJson from '../plugin.json';\n\n// jest tests struggle with import order when importing from the plugin.json, moving methods that use the plugin_id to its own file makes it simpler to import when mocking\nexport const PLUGIN_ID = pluginJson.id;\nexport const PLUGIN_BASE_URL = `/a/${PLUGIN_ID}`;\n\n// Prefixes the route with the base URL of the plugin\nexport function prefixRoute(route: string): string {\n return `${PLUGIN_BASE_URL}/${route}`;\n}\n","import { AdHocVariableFilter, SelectableValue } from '@grafana/data';\nimport {\n addAdHocFilterUserInputPrefix,\n AdHocFiltersWithLabelsAndMeta,\n FieldValue,\n VAR_DATASOURCE_EXPR,\n} from './variables';\nimport { LokiQuery } from './lokiQuery';\nimport { SceneDataQueryResourceRequest, SceneDataQueryResourceRequestOptions } from './datasourceTypes';\nimport { PLUGIN_ID } from './plugin';\nimport { AdHocFilterWithLabels, sceneUtils } from '@grafana/scenes';\nimport { LineFilterCaseSensitive, LineFilterOp } from './filterTypes';\nimport { sortLineFilters } from '../Components/IndexScene/LineFilterVariablesScene';\nimport { ExpressionBuilder } from './ExpressionBuilder';\n\n/**\n * Builds the resource query\n * @param expr string to be interpolated and executed in the resource request\n * @param resource\n * @param queryParamsOverrides\n * @param primaryLabel\n */\nexport const buildResourceQuery = (\n expr: string,\n resource: SceneDataQueryResourceRequestOptions,\n queryParamsOverrides?: Partial,\n primaryLabel?: string\n): LokiQuery & SceneDataQueryResourceRequest & { primaryLabel?: string } => {\n return {\n ...defaultQueryParams,\n resource,\n refId: resource,\n ...queryParamsOverrides,\n datasource: { uid: VAR_DATASOURCE_EXPR },\n expr,\n primaryLabel,\n };\n};\n/**\n * Builds a loki data query\n * @param expr\n * @param queryParamsOverrides\n * @returns LokiQuery\n */\nexport const buildDataQuery = (expr: string, queryParamsOverrides?: Partial): LokiQuery => {\n return {\n ...defaultQueryParams,\n ...queryParamsOverrides,\n expr,\n };\n};\n\nconst defaultQueryParams = {\n refId: 'A',\n queryType: 'range',\n editorMode: 'code',\n supportingQueryType: PLUGIN_ID,\n};\n\nexport const buildVolumeQuery = (\n expr: string,\n resource: 'volume' | 'patterns' | 'detected_labels' | 'detected_fields' | 'labels',\n primaryLabel: string,\n queryParamsOverrides?: Record\n): LokiQuery & SceneDataQueryResourceRequest => {\n return buildResourceQuery(expr, resource, { ...queryParamsOverrides }, primaryLabel);\n};\n\nexport function renderLogQLLabelFilters(filters: AdHocFilterWithLabels[], ignoreKeys?: string[]) {\n const filtersTransformer = new ExpressionBuilder(filters);\n return filtersTransformer.getLabelsExpr({ ignoreKeys });\n}\n\nexport function onAddCustomAdHocValue(item: SelectableValue): {\n value: string | undefined;\n valueLabels: string[];\n} {\n if (item.value) {\n return {\n value: addAdHocFilterUserInputPrefix(item.value),\n valueLabels: [item.label ?? item.value],\n };\n }\n\n return {\n value: item.value,\n valueLabels: [item.label ?? item.value ?? ''],\n };\n}\n\nexport function onAddCustomFieldValue(\n item: SelectableValue & { isCustom?: boolean },\n filter: AdHocFiltersWithLabelsAndMeta\n): { value: string | undefined; valueLabels: string[] } {\n const field: FieldValue = {\n value: item.value ?? '',\n parser: filter?.meta?.parser ?? 'mixed',\n };\n\n // metadata is not encoded\n if (field.parser === 'structuredMetadata') {\n return {\n value: addAdHocFilterUserInputPrefix(field.value),\n valueLabels: [item.label ?? field.value],\n };\n }\n\n return {\n value: addAdHocFilterUserInputPrefix(JSON.stringify(field)),\n valueLabels: [item.label ?? field.value],\n };\n}\n\nexport function renderLevelsFilter(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getLevelsExpr({ ignoreKeys });\n}\n\nexport function renderLogQLMetadataFilters(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getMetadataExpr({ ignoreKeys });\n}\n\nexport function renderLogQLFieldFilters(filters: AdHocVariableFilter[], ignoreKeys?: string[]) {\n const filterTransformer = new ExpressionBuilder(filters);\n return filterTransformer.getFieldsExpr({ ignoreKeys });\n}\n\nexport function escapeDoubleQuotedLineFilter(filter: AdHocFilterWithLabels) {\n // Is not regex\n if (filter.operator === LineFilterOp.match || filter.operator === LineFilterOp.negativeMatch) {\n if (filter.key === LineFilterCaseSensitive.caseInsensitive) {\n return sceneUtils.escapeLabelValueInRegexSelector(filter.value ?? '');\n } else {\n return sceneUtils.escapeLabelValueInExactSelector(filter.value ?? '');\n }\n } else {\n return sceneUtils.escapeLabelValueInExactSelector(filter.value ?? '');\n }\n}\n\n/**\n * Builds line filter as a double-quoted LogQL string\n * Expects pre-escaped values\n */\nfunction buildLogQlLineFilter(filter: AdHocFilterWithLabels, value: string) {\n // Change operator if needed and insert caseInsensitive flag\n if (filter.key === LineFilterCaseSensitive.caseInsensitive) {\n if (filter.operator === LineFilterOp.negativeRegex || filter.operator === LineFilterOp.negativeMatch) {\n return `${LineFilterOp.negativeRegex} \"(?i)${value}\"`;\n }\n return `${LineFilterOp.regex} \"(?i)${value}\"`;\n }\n\n return `${filter.operator} \"${value}\"`;\n}\n\n/**\n * Converts line filter ad-hoc filters to LogQL\n *\n * the filter key is LineFilterCaseSensitive\n * the filter operator is LineFilterOp\n * the value is the user input\n */\nexport function renderLogQLLineFilter(filters: AdHocFilterWithLabels[]) {\n sortLineFilters(filters);\n return filters\n .map((filter) => {\n if (!filter.value) {\n return '';\n }\n\n const value = escapeDoubleQuotedLineFilter(filter);\n return buildLogQlLineFilter(filter, value);\n })\n .join(' ');\n}\nexport function wrapWildcardSearch(input: string) {\n if (input === '.+') {\n return input;\n } else if (input.substring(0, 6) !== '(?i).*') {\n return `(?i).*${input}.*`;\n }\n\n return input;\n}\n\nexport function unwrapWildcardSearch(input: string) {\n if (input.substring(0, 6) === '(?i).*' && input.slice(-2) === '.*') {\n return input.slice(6).slice(0, -2);\n }\n\n return input;\n}\n\nexport function sanitizeStreamSelector(expression: string) {\n return expression.replace(/\\s*,\\s*}/, '}');\n}\n\n// default line limit; each data source can define it's own line limit too\nexport const LINE_LIMIT = 1000;\n","import { UrlQueryMap, urlUtil } from '@grafana/data';\nimport {\n SERVICE_NAME,\n SERVICE_UI_LABEL,\n VAR_DATASOURCE,\n VAR_FIELD_GROUP_BY,\n VAR_FIELDS,\n VAR_LABEL_GROUP_BY,\n VAR_LABELS,\n VAR_LEVELS,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_METADATA,\n VAR_PATTERNS,\n} from './variables';\nimport { locationService } from '@grafana/runtime';\nimport { RouteMatch, RouteProps } from '../Components/Pages';\nimport { replaceSlash } from './extensions/links';\nimport { SceneObject } from '@grafana/scenes';\nimport { getLabelsVariable } from './variableGetters';\nimport { logger } from './logger';\nimport { PLUGIN_BASE_URL, prefixRoute } from './plugin';\n\nexport enum PageSlugs {\n explore = 'explore',\n logs = 'logs',\n labels = 'labels',\n patterns = 'patterns',\n fields = 'fields',\n}\nexport enum ValueSlugs {\n field = 'field',\n label = 'label',\n}\n\nexport type ParentDrilldownSlugs =\n | PageSlugs.explore\n | PageSlugs.fields\n | PageSlugs.logs\n | PageSlugs.labels\n | PageSlugs.patterns;\nexport type ChildDrilldownSlugs = ValueSlugs.field | ValueSlugs.label;\n\nexport const ROUTES = {\n explore: () => prefixRoute(PageSlugs.explore),\n logs: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.logs}`),\n fields: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.fields}`),\n patterns: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.patterns}`),\n labels: (labelValue: string, labelName = 'service') =>\n prefixRoute(`${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${PageSlugs.labels}`),\n};\n\nexport const SUB_ROUTES = {\n label: (labelValue: string, labelName = 'service', breakdownLabelName: string) =>\n prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${ValueSlugs.label}/${breakdownLabelName}`\n ),\n field: (labelValue: string, labelName = 'service', breakdownLabelName: string) =>\n prefixRoute(\n `${PageSlugs.explore}/${labelName}/${replaceSlash(labelValue)}/${ValueSlugs.field}/${breakdownLabelName}`\n ),\n};\n\nexport const ROUTE_DEFINITIONS: Record = {\n explore: `${PageSlugs.explore}/*`,\n logs: `:labelName/:labelValue/${PageSlugs.logs}`,\n fields: `:labelName/:labelValue/${PageSlugs.fields}`,\n patterns: `:labelName/:labelValue/${PageSlugs.patterns}`,\n labels: `:labelName/:labelValue/${PageSlugs.labels}`,\n};\n\nexport const CHILD_ROUTE_DEFINITIONS: Record = {\n field: `:labelName/:labelValue/${ValueSlugs.field}/:breakdownLabel`,\n label: `:labelName/:labelValue/${ValueSlugs.label}/:breakdownLabel`,\n};\n\nexport const EXPLORATIONS_ROUTE = `${PLUGIN_BASE_URL}/${PageSlugs.explore}`;\n\n// For redirect back to service, we just want to keep datasource, and timerange\nexport const SERVICE_URL_KEYS = ['from', 'to', `var-${VAR_DATASOURCE}`, `var-${VAR_LABELS}`];\n//@todo why patterns and var-patterns?\nexport const DRILLDOWN_URL_KEYS = [\n 'from',\n 'to',\n 'mode',\n 'urlColumns',\n 'visualizationType',\n 'selectedLine',\n 'displayedFields',\n 'panelState',\n VAR_PATTERNS,\n `var-${VAR_PATTERNS}`,\n `var-${VAR_DATASOURCE}`,\n `var-${VAR_LABELS}`,\n `var-${VAR_FIELDS}`,\n `var-${VAR_LEVELS}`,\n `var-${VAR_FIELD_GROUP_BY}`,\n `var-${VAR_LABEL_GROUP_BY}`,\n `var-${VAR_DATASOURCE}`,\n `var-${VAR_LINE_FILTER}`,\n `var-${VAR_METADATA}`,\n `var-${VAR_LINE_FILTERS}`,\n];\n\nexport function getDrilldownSlug() {\n const location = locationService.getLocation();\n const slug = location.pathname.slice(location.pathname.lastIndexOf('/') + 1, location.pathname.length);\n return slug as PageSlugs;\n}\n\n/**\n * The \"primary\" label, is the replacement for the service_name paradigm\n * It must be an indexed label with an include filter\n * Note: Will return the label as it exists in the url, so \"service_name\" will be returned as \"service\", we'll need to adjust for this case if we want to support URLs from before this change\n */\nexport function getPrimaryLabelFromUrl(): RouteProps {\n const location = locationService.getLocation();\n const startOfUrl = '/a/grafana-lokiexplore-app/explore';\n const endOfUrl = location.pathname.slice(location.pathname.indexOf(startOfUrl) + startOfUrl.length + 1);\n const routeParams = endOfUrl.split('/');\n\n let labelName = routeParams[0];\n const labelValue = routeParams[1];\n const breakdownLabel = routeParams[3];\n // Keep urls the same\n if (labelName === SERVICE_NAME) {\n labelName = SERVICE_UI_LABEL;\n }\n return { labelName, labelValue, breakdownLabel };\n}\n\nexport function getDrilldownValueSlug() {\n const location = locationService.getLocation();\n const locationArray = location.pathname.split('/');\n const slug = locationArray[locationArray.length - 2];\n return slug as ValueSlugs;\n}\n\nexport function buildServicesUrl(path: string, extraQueryParams?: UrlQueryMap): string {\n return urlUtil.renderUrl(path, buildServicesRoute(extraQueryParams));\n}\nexport function extractValuesFromRoute(routeMatch: RouteMatch): RouteProps {\n return {\n labelName: routeMatch.params.labelName,\n labelValue: routeMatch.params.labelValue,\n breakdownLabel: routeMatch.params.breakdownLabel,\n };\n}\n\nexport function buildServicesRoute(extraQueryParams?: UrlQueryMap): UrlQueryMap {\n return {\n ...Object.entries(urlUtil.getUrlSearchParams()).reduce((acc, [key, value]) => {\n if (SERVICE_URL_KEYS.includes(key)) {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n ...extraQueryParams,\n };\n}\n\n/**\n * Compare slugs against variable filters and log discrepancies\n * These don't cause errors or render empty UIs, but shouldn't be possible when routing within the app\n * If we see these logged in production it indicates we're navigating users incorrectly\n * @param sceneRef\n */\nexport function checkPrimaryLabel(sceneRef: SceneObject) {\n const labelsVariable = getLabelsVariable(sceneRef);\n let { labelName, labelValue } = getPrimaryLabelFromUrl();\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n const primaryLabel = labelsVariable.state.filters.find((filter) => filter.key === labelName);\n if (!primaryLabel) {\n const location = locationService.getLocation();\n\n logger.info('invalid primary label name in url', {\n labelName,\n url: `${location.pathname}${location.search}`,\n });\n }\n\n const primaryLabelValue = labelsVariable.state.filters.find((filter) => replaceSlash(filter.value) === labelValue);\n if (!primaryLabelValue) {\n const location = locationService.getLocation();\n\n logger.info('invalid primary label value in url', {\n labelValue,\n url: `${location.pathname}${location.search}`,\n });\n }\n}\n","import { urlUtil } from '@grafana/data';\nimport { config, getDataSourceSrv } from '@grafana/runtime';\nimport { sceneGraph, SceneObject, SceneObjectUrlValues, SceneQueryRunner, SceneTimePicker } from '@grafana/scenes';\nimport {\n LOG_STREAM_SELECTOR_EXPR,\n PRETTY_LOG_STREAM_SELECTOR_EXPR,\n VAR_DATASOURCE_EXPR,\n VAR_LABELS_EXPR,\n} from './variables';\nimport { EXPLORATIONS_ROUTE } from './routing';\nimport { IndexScene } from 'Components/IndexScene/IndexScene';\nimport { logger } from './logger';\nimport { LokiDatasource } from './lokiQuery';\n\nexport function getExplorationFor(model: SceneObject): IndexScene {\n return sceneGraph.getAncestor(model, IndexScene);\n}\n\nexport function getUrlForValues(values: SceneObjectUrlValues) {\n return urlUtil.renderUrl(EXPLORATIONS_ROUTE, values);\n}\n\nexport function getDataSource(sceneObject: SceneObject) {\n return sceneGraph.interpolate(sceneObject, VAR_DATASOURCE_EXPR);\n}\n\nexport function getQueryExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, LOG_STREAM_SELECTOR_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getPrettyQueryExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, PRETTY_LOG_STREAM_SELECTOR_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getPatternExpr(exploration: SceneObject) {\n return sceneGraph.interpolate(exploration, VAR_LABELS_EXPR).replace(/\\s+/g, ' ');\n}\n\nexport function getColorByIndex(index: number) {\n const visTheme = config.theme2.visualization;\n return visTheme.getColorByName(visTheme.palette[index % 8]);\n}\n\nexport async function getLokiDatasource(sceneObject: SceneObject) {\n const ds = (await getDataSourceSrv().get(VAR_DATASOURCE_EXPR, { __sceneObject: { value: sceneObject } })) as\n | LokiDatasource\n | undefined;\n return ds;\n}\n\nexport function isDefined(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function getQueryRunnerFromChildren(sceneObject: SceneObject) {\n return sceneGraph.findDescendents(sceneObject, SceneQueryRunner);\n}\n\ninterface SceneType extends Function {\n new (...args: never[]): T;\n}\n\nexport function findObjectOfType(\n scene: SceneObject,\n check: (obj: SceneObject) => boolean,\n returnType: SceneType\n) {\n const obj = sceneGraph.findObject(scene, check);\n if (obj instanceof returnType) {\n return obj;\n } else if (obj !== null) {\n logger.warn(`invalid return type: ${returnType.toString()}`);\n }\n\n return null;\n}\n\nexport function getTimePicker(scene: IndexScene) {\n return scene.state.controls?.find((s) => s instanceof SceneTimePicker) as SceneTimePicker;\n}\n","import uFuzzy from '@leeoniya/ufuzzy';\nimport { debounce as debounceLodash } from 'lodash';\n\nconst uf = new uFuzzy({\n intraMode: 1,\n intraIns: 1,\n intraSub: 1,\n intraTrn: 1,\n intraDel: 1,\n});\n\nexport function fuzzySearch(haystack: string[], query: string, callback: (data: string[][]) => void) {\n const [idxs, info, order] = uf.search(haystack, query, 0, 1e5);\n\n let haystackOrder: string[] = [];\n let matchesSet: Set = new Set();\n if (idxs && order) {\n /**\n * get the fuzzy matches for highlighting\n * @param part\n * @param matched\n */\n const mark = (part: string, matched: boolean) => {\n if (matched) {\n matchesSet.add(part);\n }\n };\n\n // Iterate to create the order of needles(queries) and the matches\n for (let i = 0; i < order.length; i++) {\n let infoIdx = order[i];\n\n /** Evaluate the match, get the matches for highlighting */\n uFuzzy.highlight(haystack[info.idx[infoIdx]], info.ranges[infoIdx], mark);\n /** Get the order */\n haystackOrder.push(haystack[info.idx[infoIdx]]);\n }\n\n callback([haystackOrder, [...matchesSet]]);\n } else if (!query) {\n callback([]);\n }\n}\n\nexport const debouncedFuzzySearch = debounceLodash(fuzzySearch, 300);\n","import { ChangepointDetector } from '@bsull/augurs/changepoint';\nimport { OutlierDetector, OutlierOutput } from '@bsull/augurs/outlier';\nimport { DataFrame, doStandardCalcs, fieldReducers, FieldType, outerJoinDataFrames, ReducerID } from '@grafana/data';\nimport { getLabelValueFromDataFrame } from './levels';\nimport { memoize } from 'lodash';\nimport { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from './analytics';\nimport { logger } from './logger';\n\nexport const DEFAULT_SORT_BY = 'changepoint';\n\nexport const sortSeries = memoize(\n (series: DataFrame[], sortBy: string, direction: string) => {\n if (sortBy === 'alphabetical') {\n return sortSeriesByName(series, direction);\n }\n\n if (sortBy === 'outliers') {\n initOutlierDetector(series);\n }\n\n const reducer = (dataFrame: DataFrame) => {\n // ML & Wasm sorting options\n try {\n if (sortBy === 'changepoint') {\n return calculateDataFrameChangepoints(dataFrame);\n } else if (sortBy === 'outliers') {\n return calculateOutlierValue(series, dataFrame);\n }\n } catch (e) {\n logger.error(e, { msg: 'failed to sort' });\n\n // ML sorting panicked, fallback to stdDev\n sortBy = ReducerID.stdDev;\n }\n const fieldReducer = fieldReducers.get(sortBy);\n const value =\n fieldReducer.reduce?.(dataFrame.fields[1], true, true) ?? doStandardCalcs(dataFrame.fields[1], true, true);\n return value[sortBy] ?? 0;\n };\n\n const seriesCalcs = series.map((dataFrame) => ({\n value: reducer(dataFrame),\n dataFrame: dataFrame,\n }));\n\n seriesCalcs.sort((a, b) => {\n if (a.value !== undefined && b.value !== undefined) {\n return b.value - a.value;\n }\n return 0;\n });\n\n if (direction === 'asc') {\n seriesCalcs.reverse();\n }\n\n return seriesCalcs.map(({ dataFrame }) => dataFrame);\n },\n (series: DataFrame[], sortBy: string, direction: string) => {\n const firstTimestamp = series.length > 0 ? series[0].fields[0].values[0] : 0;\n const lastTimestamp =\n series.length > 0\n ? series[series.length - 1].fields[0].values[series[series.length - 1].fields[0].values.length - 1]\n : 0;\n const firstValue = series.length > 0 ? getLabelValueFromDataFrame(series[0]) : '';\n const lastValue = series.length > 0 ? getLabelValueFromDataFrame(series[series.length - 1]) : '';\n // This still isn't good enough, if the dataframe returns the same number of fields, with the same start and end values, we'll fail to update the UI\n const allSeriesKey = series.map(\n (frame) =>\n frame.length +\n '_' +\n frame.fields.map((field) => field.name + '_' + field.values[0] + '_' + field.values[field.values.length - 1])\n );\n return `${firstValue}_${lastValue}_${firstTimestamp}_${lastTimestamp}_${series.length}_${allSeriesKey}_${sortBy}_${direction}`;\n }\n);\n\nexport const calculateDataFrameChangepoints = (data: DataFrame) => {\n if (!wasmSupported()) {\n throw new Error('WASM not supported, fall back to stdDev');\n }\n\n const fields = data.fields.filter((f) => f.type === FieldType.number);\n\n const dataPoints = fields[0].values.length;\n\n let samplingStep = Math.floor(dataPoints / 100) || 1;\n if (samplingStep > 1) {\n // Avoiding \"big\" steps for more accuracy\n samplingStep = Math.ceil(samplingStep / 2);\n }\n\n const sample = fields[0].values.filter((_, i) => i % samplingStep === 0);\n\n const values = new Float64Array(sample);\n const points = ChangepointDetector.defaultArgpcp().detectChangepoints(values);\n\n return points.indices.length;\n};\n\nexport const sortSeriesByName = (series: DataFrame[], direction: string) => {\n const sortedSeries = [...series];\n sortedSeries.sort((a, b) => {\n const valueA = getLabelValueFromDataFrame(a);\n const valueB = getLabelValueFromDataFrame(b);\n if (!valueA || !valueB) {\n return 0;\n }\n return valueA?.localeCompare(valueB) ?? 0;\n });\n if (direction === 'desc') {\n sortedSeries.reverse();\n }\n return sortedSeries;\n};\n\nconst initOutlierDetector = (series: DataFrame[]) => {\n if (!wasmSupported()) {\n return;\n }\n\n // Combine all frames into one by joining on time.\n const joined = outerJoinDataFrames({ frames: series });\n if (!joined) {\n return;\n }\n\n // Get number fields: these are our series.\n const joinedSeries = joined.fields.filter((f) => f.type === FieldType.number);\n const points = joinedSeries.flatMap((series) => new Float64Array(series.values));\n\n try {\n const detector = OutlierDetector.dbscan({ sensitivity: 0.4 }).preprocess(points);\n outliers = detector.detect();\n } catch (e) {\n logger.error(e, { msg: 'initOutlierDetector: OutlierDetector error' });\n }\n};\n\nlet outliers: OutlierOutput | undefined = undefined;\n\nexport const calculateOutlierValue = (series: DataFrame[], data: DataFrame): number => {\n if (!wasmSupported()) {\n throw new Error('WASM not supported, fall back to stdDev');\n }\n if (!outliers) {\n throw new Error('Initialize outlier detector first');\n }\n\n const index = series.indexOf(data);\n if (outliers.seriesResults[index].isOutlier) {\n return outliers.seriesResults[index].outlierIntervals.length;\n }\n\n return 0;\n};\n\nexport const wasmSupported = () => {\n const support = typeof WebAssembly === 'object';\n\n if (!support) {\n reportAppInteraction(USER_EVENTS_PAGES.service_details, USER_EVENTS_ACTIONS.service_details.wasm_not_supported);\n }\n\n return support;\n};\n","import pluginJson from '../plugin.json';\nimport { SortBy, SortDirection } from '../Components/ServiceScene/Breakdowns/SortByScene';\nimport { SceneObject, VariableValue } from '@grafana/scenes';\nimport { getDataSourceName, getServiceName } from './variableGetters';\nimport { logger } from './logger';\nimport { SERVICE_NAME } from './variables';\nimport { Options } from '@grafana/schema/dist/esm/raw/composable/logs/panelcfg/x/LogsPanelCfg_types.gen';\nimport { unknownToStrings } from './narrowing';\nimport { AvgFieldPanelType, CollapsablePanelText } from '../Components/Panels/PanelMenu';\n\nconst FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY = `${pluginJson.id}.services.favorite`;\nconst FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY = `${pluginJson.id}.primarylabels.tabs.favorite`;\nconst DS_LOCALSTORAGE_KEY = `${pluginJson.id}.datasource`;\nconst SCENE_LAYOUT_LOCALSTORAGE_KEY = `${pluginJson.id}.scene.layout`;\n\n// This should be a string, but we'll accept anything and return an empty array if it's not a string\nexport function getFavoriteLabelValuesFromStorage(dsKey: string | unknown, labelName: string): string[] {\n if (!dsKey || typeof dsKey !== 'string') {\n return [];\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let labelValues: string[] = [];\n try {\n labelValues = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(labelValues)) {\n labelValues = [];\n }\n return labelValues;\n}\n\n// This should be a string, but we'll accept anything and return early\nexport function addToFavoriteLabelValueInStorage(dsKey: string | unknown, labelName: string, labelValue: string) {\n if (!dsKey || typeof dsKey !== 'string') {\n return;\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n\n // We want to put this service at the top of the list and remove any duplicates\n const servicesToStore = services.filter((service: string) => service !== labelValue);\n servicesToStore.unshift(labelValue);\n\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function removeFromFavoritesInStorage(dsKey: VariableValue, labelName: string, labelValue: string) {\n if (!dsKey || !labelName || !labelValue || typeof dsKey !== 'string') {\n return;\n }\n const key = createPrimaryLabelLocalStorageKey(dsKey, labelName);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n const servicesToStore = services.filter((service: string) => service !== labelValue);\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function addTabToLocalStorage(dsKey: string, labelName: string) {\n if (!dsKey || !labelName) {\n return;\n }\n\n const key = createTabsLocalStorageKey(dsKey);\n\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing saved tabs from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n\n if (services.indexOf(labelName) === -1) {\n // We want to put this service at the top of the list and remove any duplicates\n const servicesToStore = services.filter((tabName: string) => tabName !== labelName);\n servicesToStore.unshift(labelName);\n\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n }\n}\n\nexport function removeTabFromLocalStorage(dsKey: string, labelName: string) {\n if (!dsKey || !labelName) {\n return;\n }\n const key = createTabsLocalStorageKey(dsKey);\n let services: string[] = [];\n try {\n services = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(services)) {\n services = [];\n }\n const servicesToStore = services.filter((tabName: string) => tabName !== labelName);\n localStorage.setItem(key, JSON.stringify(servicesToStore));\n}\n\nexport function getFavoriteTabsFromStorage(dsKey: string | unknown): string[] {\n if (!dsKey || typeof dsKey !== 'string') {\n return [];\n }\n const key = createTabsLocalStorageKey(dsKey);\n let tabNames: string[] = [];\n try {\n tabNames = unknownToStrings(JSON.parse(localStorage.getItem(key) || '[]'));\n } catch (e) {\n logger.error(e, { msg: 'Error parsing favorite services from local storage' });\n }\n\n if (!Array.isArray(tabNames)) {\n tabNames = [];\n }\n return tabNames;\n}\n\nfunction createPrimaryLabelLocalStorageKey(ds: string, labelName: string) {\n if (labelName === SERVICE_NAME) {\n labelName = '';\n } else {\n labelName = `_${labelName}`;\n }\n return `${FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY}_${ds}${labelName}`;\n}\n\nfunction createTabsLocalStorageKey(ds: string) {\n return `${FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY}_${ds}`;\n}\n\nexport function getLastUsedDataSourceFromStorage(): string | undefined {\n return localStorage.getItem(DS_LOCALSTORAGE_KEY) ?? undefined;\n}\n\nexport function addLastUsedDataSourceToStorage(dsKey: string) {\n localStorage.setItem(DS_LOCALSTORAGE_KEY, dsKey);\n}\n\nconst SORT_BY_LOCALSTORAGE_KEY = `${pluginJson.id}.values.sort`;\nexport function getSortByPreference(\n target: string,\n defaultSortBy: SortBy,\n defaultDirection: SortDirection\n): { sortBy: SortBy | ''; direction: SortDirection } {\n const preference = localStorage.getItem(`${SORT_BY_LOCALSTORAGE_KEY}.${target}.by`) ?? '';\n const parts = preference.split('.');\n if (!parts[0] || !parts[1]) {\n return { sortBy: defaultSortBy, direction: defaultDirection };\n }\n const sortBy = parts[0] as SortBy;\n const direction = parts[1] as SortDirection;\n return { sortBy, direction };\n}\n\nexport function setSortByPreference(target: string, sortBy: string, direction: string) {\n // Prevent storing empty values\n if (sortBy && direction) {\n localStorage.setItem(`${SORT_BY_LOCALSTORAGE_KEY}.${target}.by`, `${sortBy}.${direction}`);\n }\n}\n\nfunction getExplorationPrefix(sceneRef: SceneObject) {\n const ds = getDataSourceName(sceneRef);\n const serviceName = getServiceName(sceneRef);\n return `${ds}.${serviceName}`;\n}\n\nexport function getDisplayedFields(sceneRef: SceneObject) {\n const PREFIX = getExplorationPrefix(sceneRef);\n const storedFields = localStorage.getItem(`${pluginJson.id}.${PREFIX}.logs.fields`);\n if (storedFields) {\n return JSON.parse(storedFields);\n }\n return [];\n}\n\nexport function setDisplayedFields(sceneRef: SceneObject, fields: string[]) {\n const PREFIX = getExplorationPrefix(sceneRef);\n localStorage.setItem(`${pluginJson.id}.${PREFIX}.logs.fields`, JSON.stringify(fields));\n}\n\n// Log panel options\nconst LOG_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.logs.option`;\nexport function getLogOption(option: keyof Options, defaultValue: T) {\n const localStorageResult = localStorage.getItem(`${LOG_OPTIONS_LOCALSTORAGE_KEY}.${option}`);\n return localStorageResult ? localStorageResult : defaultValue;\n}\n\nexport function setLogOption(option: keyof Options, value: string | number | boolean) {\n let storedValue = value.toString();\n if (typeof value === 'boolean' && !value) {\n storedValue = '';\n }\n localStorage.setItem(`${LOG_OPTIONS_LOCALSTORAGE_KEY}.${option}`, storedValue);\n}\n\n// Logs volume options\nconst LOGS_VOLUME_LOCALSTORAGE_KEY = 'grafana.explore.logs.logsVolume';\nexport function setLogsVolumeOption(option: 'collapsed', value: string | undefined) {\n const key = `${LOGS_VOLUME_LOCALSTORAGE_KEY}.${option}`;\n if (value === undefined) {\n localStorage.removeItem(key);\n return;\n }\n localStorage.setItem(key, value);\n}\n\nexport function getLogsVolumeOption(option: 'collapsed') {\n return Boolean(localStorage.getItem(`${LOGS_VOLUME_LOCALSTORAGE_KEY}.${option}`));\n}\n\n// Log visualization options\nexport type LogsVisualizationType = 'logs' | 'table';\n\nconst VISUALIZATION_TYPE_LOCALSTORAGE_KEY = 'grafana.explore.logs.visualisationType';\nexport function getLogsVisualizationType(): LogsVisualizationType {\n const storedType = localStorage.getItem(VISUALIZATION_TYPE_LOCALSTORAGE_KEY) ?? '';\n switch (storedType) {\n case 'table':\n case 'logs':\n return storedType;\n default:\n return 'logs';\n }\n}\n\nexport function setLogsVisualizationType(type: string) {\n localStorage.setItem(VISUALIZATION_TYPE_LOCALSTORAGE_KEY, type);\n}\n\n// Line filter options\nconst LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.linefilter.option`;\nexport function setLineFilterCase(caseSensitive: boolean) {\n let storedValue = caseSensitive.toString();\n if (!caseSensitive) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.caseSensitive`, storedValue);\n}\n\nexport function setLineFilterRegex(regex: boolean) {\n let storedValue = regex.toString();\n if (!regex) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.regex`, storedValue);\n}\n\nexport function setLineFilterExclusive(exclusive: boolean) {\n let storedValue = exclusive.toString();\n if (!exclusive) {\n storedValue = '';\n }\n\n localStorage.setItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.exclusive`, storedValue);\n}\n\nexport function getLineFilterCase(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.caseSensitive`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\nexport function getLineFilterRegex(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.regex`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\nexport function getLineFilterExclusive(defaultValue: boolean): boolean {\n const storedValue = localStorage.getItem(`${LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY}.exclusive`);\n return storedValue === 'true' ? true : defaultValue;\n}\n\n// Panel options\nconst PANEL_OPTIONS_LOCALSTORAGE_KEY = `${pluginJson.id}.panel.option`;\nexport interface PanelOptions {\n panelType: AvgFieldPanelType;\n collapsed: CollapsablePanelText;\n}\nexport function getPanelOption(\n option: K,\n values: V[]\n): V | null {\n const result = localStorage.getItem(`${PANEL_OPTIONS_LOCALSTORAGE_KEY}.${option}`);\n if (result !== null) {\n return values.find((v) => result === v) ?? null;\n }\n\n return null;\n}\n\nexport function setPanelOption(option: K, value: V) {\n localStorage.setItem(`${PANEL_OPTIONS_LOCALSTORAGE_KEY}.${option}`, value);\n}\n\nconst EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY = `${pluginJson.id}.expressionBuilder.debug`;\nexport function getExpressionBuilderDebug() {\n const value = localStorage.getItem(EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY);\n return !!value;\n}\n\nconst SERVICE_SELECTION_PAGE_COUNT_KEY = `${pluginJson.id}.serviceSelection.pageCount`;\n\nexport function getServiceSelectionPageCount(): number | undefined {\n const value = localStorage.getItem(SERVICE_SELECTION_PAGE_COUNT_KEY);\n return value ? parseInt(value, 10) : undefined;\n}\nexport function setServiceSelectionPageCount(pageCount: number) {\n localStorage.setItem(SERVICE_SELECTION_PAGE_COUNT_KEY, pageCount.toString(10));\n}\n\nexport function getSceneLayout(): string | null {\n const value = localStorage.getItem(SCENE_LAYOUT_LOCALSTORAGE_KEY);\n return value;\n}\nexport function setSceneLayout(layout: string) {\n localStorage.setItem(SCENE_LAYOUT_LOCALSTORAGE_KEY, layout);\n}\n","export const testIds = {\n appConfig: {\n container: 'data-testid ac-container',\n apiKey: 'data-testid ac-api-key',\n apiUrl: 'data-testid ac-api-url',\n submit: 'data-testid ac-submit-form',\n },\n exploreServiceSearch: {\n search: 'data-testid search-services',\n },\n header: {\n refreshPicker: 'data-testid RefreshPicker run button',\n },\n variables: {\n datasource: {\n label: 'data-testid Dashboard template variables submenu Label Data source',\n },\n combobox: {},\n serviceName: {\n label: 'data-testid Dashboard template variables submenu Label Labels',\n },\n levels: {\n inputWrap: 'data-testid detected_level filter variable',\n },\n },\n breakdowns: {\n labels: {},\n fields: {},\n common: {\n sortByFunction: 'data-testid SortBy function',\n sortByDirection: 'data-testid SortBy direction',\n filterButtonGroup: 'data-testid filter-button-group',\n filterButton: 'data-testid filter-button',\n filterSelect: 'data-testid filter-select',\n filterNumericPopover: {\n removeButton: 'data-testid filter-numeric-remove',\n submitButton: 'data-testid filter-numeric-submit',\n cancelButton: 'data-testid filter-numeric-cancel',\n inputGreaterThan: 'data-testid filter-numeric-gt',\n inputGreaterThanUnit: 'data-testid filter-numeric-gtu',\n inputGreaterThanInclusive: 'data-testid filter-numeric-gte',\n\n inputLessThan: 'data-testid filter-numeric-lt',\n inputLessThanUnit: 'data-testid filter-numeric-ltu',\n inputLessThanInclusive: 'data-testid filter-numeric-lte',\n },\n },\n },\n\n index: {\n showLogsButton: 'data-testid button-filter-include',\n selectServiceButton: 'data-testid button-select-service',\n addNewLabelTab: 'data-testid Tab Add label',\n searchLabelValueInput: 'data-testid search-services-input',\n aggregatedMetricsMenu: 'data-testid aggregated-metrics-menu',\n aggregatedMetricsToggle: 'data-testid aggregated-metrics-toggle',\n header: {\n showLogsButton: 'data-testid Show logs header',\n },\n },\n\n exploreServiceDetails: {\n searchLogs: 'data-testid search-logs',\n openExplore: 'data-testid open-explore',\n tabPatterns: 'data-testid tab-patterns',\n tabLogs: 'data-testid tab-logs',\n tabFields: 'data-testid tab-fields',\n tabLabels: 'data-testid tab-labels',\n buttonRemovePattern: 'data-testid button-remove-pattern',\n buttonFilterInclude: 'data-testid button-filter-include',\n buttonFilterExclude: 'data-testid button-filter-exclude',\n },\n patterns: {\n tableWrapper: 'data-testid table-wrapper',\n buttonIncludedPattern: 'data-testid button-included-pattern',\n buttonExcludedPattern: 'data-testid button-excluded-pattern',\n },\n logsPanelHeader: {\n header: 'data-testid Panel header Logs',\n radio: 'data-testid radio-button',\n },\n table: {\n wrapper: 'data-testid table-wrapper',\n inspectLine: 'data-testid inspect',\n rawLogLine: 'data-testid raw-log-line',\n },\n};\n","import { config, locationService } from '@grafana/runtime';\nimport { logger } from './logger';\nimport { dateTime, LogRowModel, TimeRange, urlUtil } from '@grafana/data';\n\nexport const copyText = (string: string) => {\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(string);\n } else {\n const el = document.createElement('textarea');\n el.value = string;\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n }\n};\n\nexport enum UrlParameterType {\n From = 'from',\n To = 'to',\n}\n\ntype PermalinkDataType =\n | {\n id?: string;\n row?: number;\n }\n | {\n logs: {\n id: string;\n displayedFields: string[];\n };\n };\n\nexport const generateLink = (relativeUrl: string): string => {\n return `${window.location.protocol}//${window.location.host}${config.appSubUrl}${relativeUrl}`;\n};\n\nexport const generateLogShortlink = (paramName: string, data: PermalinkDataType, timeRange: TimeRange) => {\n const location = locationService.getLocation();\n const searchParams = urlUtil.getUrlSearchParams();\n searchParams[UrlParameterType.From] = timeRange.from.toISOString();\n searchParams[UrlParameterType.To] = timeRange.to.toISOString();\n searchParams[paramName] = JSON.stringify(data);\n return generateLink(urlUtil.renderUrl(location.pathname, searchParams));\n};\n\nexport function capitalizeFirstLetter(input: string) {\n if (input.length) {\n return input?.charAt(0).toUpperCase() + input.slice(1);\n }\n\n logger.warn('invalid string argument');\n return input;\n}\n\nexport function truncateText(input: string, length: number, ellipsis: boolean) {\n return input.substring(0, length) + (ellipsis && input.length > length ? '…' : '');\n}\n\nexport function resolveRowTimeRangeForSharing(row: LogRowModel): TimeRange {\n // With infinite scrolling, we cannot rely on the time picker range, so we use a time range around the shared log line.\n const from = dateTime(row.timeEpochMs - 1);\n const to = dateTime(row.timeEpochMs + 1);\n\n const range = {\n from,\n to,\n raw: {\n from,\n to,\n },\n };\n\n return range;\n}\n","import {\n AdHocFiltersVariable,\n CustomVariable,\n DataSourceVariable,\n sceneGraph,\n SceneObject,\n SceneVariableState,\n} from '@grafana/scenes';\nimport { CustomConstantVariable } from './CustomConstantVariable';\nimport {\n AdHocFieldValue,\n FieldValue,\n isAdHocFilterValueUserInput,\n JSON_FORMAT_EXPR,\n LOGS_FORMAT_EXPR,\n LogsQueryOptions,\n MIXED_FORMAT_EXPR,\n SERVICE_NAME,\n stripAdHocFilterUserInputPrefix,\n VAR_AGGREGATED_METRICS,\n VAR_DATASOURCE,\n VAR_FIELD_GROUP_BY,\n VAR_FIELDS,\n VAR_FIELDS_AND_METADATA,\n VAR_FIELDS_EXPR,\n VAR_LABEL_GROUP_BY,\n VAR_LABELS,\n VAR_LABELS_EXPR,\n VAR_LABELS_REPLICA,\n VAR_LEVELS,\n VAR_LEVELS_EXPR,\n VAR_LINE_FILTER,\n VAR_LINE_FILTERS,\n VAR_LINE_FILTERS_EXPR,\n VAR_METADATA,\n VAR_METADATA_EXPR,\n VAR_PATTERNS,\n VAR_PATTERNS_EXPR,\n VAR_PRIMARY_LABEL,\n VAR_PRIMARY_LABEL_SEARCH,\n} from './variables';\nimport { AdHocVariableFilter } from '@grafana/data';\nimport { logger } from './logger';\nimport { narrowFieldValue, NarrowingError } from './narrowing';\nimport { isFilterMetadata } from './filters';\nimport { AdHocFilterTypes, InterpolatedFilterType } from '../Components/ServiceScene/Breakdowns/AddToFiltersButton';\n\nexport function getLogsStreamSelector(options: LogsQueryOptions) {\n const {\n labelExpressionToAdd = '',\n structuredMetadataToAdd = '',\n fieldExpressionToAdd = '',\n parser = undefined,\n } = options;\n\n switch (parser) {\n case 'structuredMetadata':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n case 'json':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${JSON_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n case 'logfmt':\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${LOGS_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n default:\n return `{${VAR_LABELS_EXPR}${labelExpressionToAdd}} ${structuredMetadataToAdd} ${VAR_LEVELS_EXPR} ${VAR_METADATA_EXPR} ${VAR_PATTERNS_EXPR} ${VAR_LINE_FILTERS_EXPR} ${MIXED_FORMAT_EXPR} ${fieldExpressionToAdd} ${VAR_FIELDS_EXPR}`;\n }\n}\n\nexport function getPatternsVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PATTERNS, scene);\n if (!(variable instanceof CustomVariable)) {\n throw new Error('VAR_PATTERNS not found');\n }\n return variable;\n}\n\nexport function getLabelsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LABELS, scene);\n}\n\nexport function getLabelsVariableReplica(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LABELS_REPLICA, scene);\n}\n\nexport function getMetadataVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_METADATA, scene);\n}\n\n// Combined fields and metadata, editable in the UI, changes to this variable flow into FIELDS and METADATA\nexport function getFieldsAndMetadataVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_FIELDS_AND_METADATA, scene);\n}\n\nexport function getFieldsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_FIELDS, scene);\n}\n\nexport function getLevelsVariable(scene: SceneObject) {\n return getAdHocFiltersVariable(VAR_LEVELS, scene);\n}\n\nexport function getLineFilterVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LINE_FILTER, scene);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_LINE_FILTER not found');\n }\n return variable;\n}\n\nexport function getLabelGroupByVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LABEL_GROUP_BY, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_LABEL_GROUP_BY not found');\n }\n return variable;\n}\n\nexport function getAggregatedMetricsVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_AGGREGATED_METRICS, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('SERVICE_LABEL_VAR not found');\n }\n return variable;\n}\n\nexport function getFieldGroupByVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_FIELD_GROUP_BY, scene);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_FIELD_GROUP_BY not found');\n }\n return variable;\n}\n\nexport function getDataSourceVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_DATASOURCE, scene);\n if (!(variable instanceof DataSourceVariable)) {\n throw new Error('VAR_DATASOURCE not found');\n }\n return variable;\n}\n\nexport function getLineFiltersVariable(scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_LINE_FILTERS, scene);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_LINE_FILTERS not found');\n }\n return variable;\n}\n\nexport function getAdHocFiltersVariable(variableName: AdHocFilterTypes, scene: SceneObject) {\n const variable = sceneGraph.lookupVariable(variableName, scene);\n\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error(`Could not get AdHocFiltersVariable ${variableName}. Variable not found.`);\n }\n return variable;\n}\n\nexport function getServiceSelectionSearchVariable(sceneRef: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PRIMARY_LABEL_SEARCH, sceneRef);\n if (!(variable instanceof CustomConstantVariable)) {\n throw new Error('VAR_PRIMARY_LABEL_SEARCH not found');\n }\n return variable;\n}\n\nexport function clearServiceSelectionSearchVariable(sceneRef: SceneObject) {\n getServiceSelectionSearchVariable(sceneRef).setState({\n value: '.+',\n label: '',\n });\n}\n\nexport function getServiceSelectionPrimaryLabel(sceneRef: SceneObject) {\n const variable = sceneGraph.lookupVariable(VAR_PRIMARY_LABEL, sceneRef);\n if (!(variable instanceof AdHocFiltersVariable)) {\n throw new Error('VAR_PRIMARY_LABEL not found');\n }\n return variable;\n}\n\nexport function setServiceSelectionPrimaryLabelKey(key: string, sceneRef: SceneObject) {\n getServiceSelectionPrimaryLabel(sceneRef).setState({\n filters: [\n {\n // the value is replaced by the value in VAR_PRIMARY_LABEL_SEARCH if a search is active, so we just need to set the filter key (label name)\n value: '.+',\n operator: '=~',\n key: key,\n },\n ],\n });\n}\n\nexport function getUrlParamNameForVariable(variableName: string) {\n return `var-${variableName}`;\n}\n\n/**\n * Parses an adHoc filter and returns the encoded value and parser\n * @param filter\n * @param variableName - only used for debugging\n */\nexport function getValueFromFieldsFilter(\n filter: { value: string; valueLabels?: string[] },\n variableName: string = VAR_FIELDS\n): FieldValue {\n if (isFilterMetadata(filter)) {\n return {\n value: filter.value,\n parser: 'structuredMetadata',\n };\n }\n\n try {\n const encodedValue = isAdHocFilterValueUserInput(filter.value)\n ? stripAdHocFilterUserInputPrefix(filter.value)\n : filter.value;\n const fieldValue = narrowFieldValue(JSON.parse(encodedValue));\n if (fieldValue !== false) {\n return fieldValue;\n } else {\n throw new NarrowingError('getValueFromFieldsFilter: invalid filter value!');\n }\n } catch (e) {\n if (e instanceof NarrowingError) {\n logger.error(e, { msg: `getValueFromFieldsFilter: Failed to validate ${variableName}`, value: filter.value });\n } else {\n logger.error(e, { msg: `getValueFromFieldsFilter: Failed to parse ${variableName}`, value: filter.value });\n }\n\n // If the user has a URL from before 0.1.4 where detected_fields changed the format of the fields value to include the parser, fall back to mixed parser if we have a value\n if (filter.value) {\n return {\n value: filter.value,\n parser: 'mixed',\n };\n }\n throw e;\n }\n}\n\nexport function getValueFromAdHocVariableFilter(\n variableName: InterpolatedFilterType,\n filter?: AdHocVariableFilter\n): AdHocFieldValue {\n if (variableName === VAR_FIELDS && filter) {\n return getValueFromFieldsFilter(filter);\n }\n\n return {\n value: filter?.value,\n };\n}\n\nexport function getServiceName(scene: SceneObject) {\n const labelsVariable = getLabelsVariable(scene);\n return getServiceNameFromVariableState(labelsVariable.state);\n}\n\nexport function getServiceNameFromVariableState(\n adHocFiltersVariableState: SceneVariableState & { filters: AdHocVariableFilter[] }\n) {\n const serviceName = adHocFiltersVariableState.filters\n .filter((filter) => filter.key === SERVICE_NAME)\n .map((filter) => filter.value);\n\n if (!serviceName) {\n throw new Error('Service present in filters selected');\n }\n return serviceName[0];\n}\n\nexport function getDataSourceName(scene: SceneObject) {\n const dsVariable = getDataSourceVariable(scene);\n return dsVariable.getValue();\n}\n","import { AdHocFiltersVariable, sceneGraph, SceneObject, SceneVariable } from '@grafana/scenes';\nimport { CustomConstantVariable } from './CustomConstantVariable';\nimport { SERVICE_NAME, SERVICE_UI_LABEL, VAR_LABELS } from './variables';\nimport { IndexScene } from '../Components/IndexScene/IndexScene';\nimport { getPrimaryLabelFromUrl } from './routing';\nimport { FilterOp } from './filterTypes';\nimport { includeOperators, numericOperators, operators } from './operators';\nimport { isOperatorInclusive } from './operatorHelpers';\n\nexport function getVariablesThatCanBeCleared(indexScene: IndexScene) {\n const variables = sceneGraph.getVariables(indexScene);\n let variablesToClear: SceneVariable[] = [];\n\n for (const variable of variables.state.variables) {\n if (variable instanceof AdHocFiltersVariable && variable.state.filters.length) {\n variablesToClear.push(variable);\n }\n if (variable instanceof CustomConstantVariable && variable.state.value && variable.state.name !== 'logsFormat') {\n variablesToClear.push(variable);\n }\n }\n return variablesToClear;\n}\n\nexport function clearVariables(sceneRef: SceneObject) {\n // clear patterns: needs to happen first, or it won't work as patterns is split into a variable and a state, and updating the variable triggers a state update\n const indexScene = sceneGraph.getAncestor(sceneRef, IndexScene);\n indexScene.setState({\n patterns: [],\n });\n\n const variablesToClear = getVariablesThatCanBeCleared(indexScene);\n\n variablesToClear.forEach((variable) => {\n if (variable instanceof AdHocFiltersVariable && variable.state.key === 'adhoc_service_filter') {\n let { labelName } = getPrimaryLabelFromUrl();\n // getPrimaryLabelFromUrl returns the label name that exists in the URL, which is \"service\" not \"service_name\"\n if (labelName === SERVICE_UI_LABEL) {\n labelName = SERVICE_NAME;\n }\n variable.setState({\n filters: variable.state.filters.filter((filter) => filter.key === labelName),\n });\n } else if (variable instanceof AdHocFiltersVariable) {\n variable.setState({\n filters: [],\n });\n } else if (variable instanceof CustomConstantVariable) {\n variable.setState({\n value: '',\n text: '',\n });\n }\n });\n}\n\nexport const operatorFunction = function (variable: AdHocFiltersVariable) {\n const wip = variable.state._wip;\n\n // If there is already a non-regex inclusion operator for this key, don't allow exclusion\n if (wip && variable.state.filters.some((filter) => filter.key === wip.key && filter.operator === FilterOp.Equal)) {\n return includeOperators;\n }\n\n const isLabelsVar = variable.state.name === VAR_LABELS;\n const inclusiveOperatorCount = variable.state.filters.filter((filter) => isOperatorInclusive(filter.operator)).length;\n const isEditingOnlyFilter = !wip?.key && inclusiveOperatorCount === 1;\n const isAddingFirstFilter = wip?.key && inclusiveOperatorCount < 1;\n\n // Should not be able to exclude the only operator\n if (isLabelsVar && (isEditingOnlyFilter || isAddingFirstFilter)) {\n return includeOperators;\n }\n\n // Only fields or metadata can have field types?\n if (wip?.meta) {\n const meta: Record = wip.meta;\n const type = meta.type;\n\n if (type === 'float' || type === 'bytes' || type === 'duration') {\n return numericOperators;\n }\n }\n\n return operators;\n};\n"],"names":["FilterButton","props","isExcluded","isIncluded","onInclude","onExclude","onClear","titles","buttonFill","hideExclude","styles","useStyles2","getStyles","div","className","container","Button","variant","fill","size","aria-selected","includeButton","onClick","data-testid","testIds","exploreServiceDetails","buttonFilterInclude","title","include","excludeButton","exclude","buttonFilterExclude","theme","css","display","justifyContent","borderRadius","borderRight","undefined","shape","radius","default","borderLeft","GrotError","children","wrap","EmptyState","message","margin","InterceptBanner","Alert","alert","severity","onRemove","a","target","href","rel","br","flex","GiveFeedbackButton","wrapper","feedback","Icon","name","marginLeft","gap","spacing","position","top","alignSelf","color","colors","text","secondary","fontSize","typography","bodySmall","link","CustomVariableValueSelectors","SceneObjectBase","model","variablesSetState","sceneGraph","getVariables","useState","variables","state","length","filter","variable","includes","map","VariableValueSelectWrapper","key","layout","Component","PatternTag","pattern","expanded","setExpanded","onMouseLeave","Tag","getPatternPreview","tag","aria-label","buttonRemovePattern","removeButton","PREVIEW_WIDTH","sm","lg","Math","round","window","innerWidth","substringLength","substring","fontFamily","cursor","overflow","borderTopRightRadius","borderBottomRightRadius","backgroundColor","main","border","boxSizing","padding","textOverflow","paddingLeft","paddingRight","PatternControls","patterns","includePatterns","type","excludePatterns","onRemovePattern","addCurrentUrlToHistory","pat","reportAppInteraction","USER_EVENTS_PAGES","service_details","USER_EVENTS_ACTIONS","pattern_removed","includePatternsLength","excludePatternsLength","patternsContainer","Text","weight","buttonIncludedPattern","p","buttonExcludedPattern","alignItems","flexWrap","VariableLayoutScene","indexScene","getAncestor","IndexScene","controls","layoutScene","LayoutScene","lineFilterRenderer","levelsRenderer","firstRowWrapper","label","breakpoints","down","flexDirection","controlsFirstRowContainer","controlsRowContainer","stickyControlsContainer","grafanaTopBarHeight","left","background","canvas","zIndex","navbarFixed","boxShadow","shadows","z1","controlsContainer","filters","filtersWrap","width","controlsWrapper","marginTop","timeRangeDatasource","timeRange","cx","control","SceneFlexLayout","CONTROLS_VARS_DATASOURCE","CONTROLS_VARS_FIELDS_COMBINED","setState","interceptBannerStorageKey","PLUGIN_ID","onActivate","slug","getDrilldownSlug","this","LineFilterVariablesScene","LevelsVariableScene","variableLayout","PageSlugs","explore","dismiss","interceptDismissed","localStorage","setItem","constructor","super","getItem","addActivationHandler","bind","bodyContainer","flexGrow","minHeight","maxWidth","body","contentScene","logger","warn","getDetectedFieldValuesTagValuesProvider","expr","sceneRef","variableType","datasourceUnknownType","getDataSourceSrv","get","getDataSource","DataSourceWithBackend","error","Error","languageProvider","values","fetchDetectedLabelValues","options","limit","throwError","requestOptions","showErrorAlert","results","isArray","VAR_LEVELS","replace","currentFilters","valuesToRemove","forEach","value","valueLabels","isOperatorRegex","operator","split","v","push","filteredResults","meta","parser","valueDecoded","getValueFromFieldsFilter","JSON","stringify","r","msg","e","getLabelsTagValuesProvider","datasource_","datasource","getTagValues","filtersFiltered","existingFilters","oldFiltersFiltered","f","isOperatorInclusive","some","tagValuesFilterAdHocFilters","ExpressionBuilder","getJoinedLabelsFilters","getDataSourceVariable","result","FilterOp","Equal","favoriteValuesArray","getFavoriteLabelValuesFromStorage","getValue","toString","favoriteValuesSet","Set","sort","b","has","getLabelsTagKeysProvider","getTagKeys","tagKeys","filteredResult","Array","LABELS_TO_REMOVE","getFieldsKeysProvider","scopedVars","fetchDetectedFieldsFn","fetchDetectedFields","opts","queryOptions","field","LEVEL_VARIABLE_VALUE","VAR_FIELDS_AND_METADATA","parsers","group","interpolateString","interpolatedExpr","range","getDefaultTimeRange","rangeParams","getTimeRangeParams","start","end","params","query","Promise","resolve","reject","getResource","fields","console","MAP","KEYCODE_MAP","SHIFT_MAP","$","_","SPECIAL_ALIASES","option","command","return","escape","plus","mod","test","navigator","platform","REVERSE_MAP","i","characterFromEvent","event","character","String","fromCharCode","which","shiftKey","toLowerCase","isModifier","pickBestAction","modifiers","action","keyNumber","parseInt","hasOwnProperty","getReverseMap","getKeyInfo","combination","keys","keysFromString","belongsTo","element","ancestor","document","parentNode","mousetrap","el","_callbacks","_directMap","_sequenceLevels","_resetTimer","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_globalCallbacks","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","callback","matches","seq","metaKey","ctrlKey","modifiers1","modifiers2","join","deleteCombo","combo","deleteSequence","splice","_fireCallback","sequence","srcElement","HTMLElement","stopCallback","preventDefault","returnValue","stopPropagation","cancelBubble","_handleKey","callbacks","maxLevel","processedSequenceCallback","max","suffixPrefixIndex","lastIndexOf","sequencePrefix","slice","Object","entries","startsWith","ignoreThisKeypress","_handleKeyEvent","rawEvent","KeyboardEvent","repeat","keyCode","handleKey","altKey","eventModifiers","_resetSequenceTimer","clearTimeout","setTimeout","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSingle","info","eventLike","callbackInfo","_bindMultiple","combinations","self","unbind","bindGlobal","unbindGlobal","trigger","reset","indexOf","composedPath","initialEventTarget","Boolean","tagName","isContentEditable","args","addKeycodes","object","addEventListener","KeybindingSet","addBinding","item","evt","onTrigger","_binds","removeAll","appEvents","getAppEvents","setupKeyboardShortcuts","scene","keybindings","vizPanelKey","panelAttentionSubscription","subscribe","SetPanelAttentionEvent","payload","panelId","withFocusedPanel","fn","vizPanel","findObject","o","isActive","VizPanel","toggleVizPanelLegend","findAllObjects","withAllPanels","url","getExploreLink","locationService","activeScene","prevScene","__grafanaSceneContext","setWindowGrafanaSceneContext","getTimeRange","publish","CopyTimeEvent","PasteTimeEvent","updateUrl","publishEvent","onRefresh","handleZoomOut","timePicker","getTimePicker","toAbsolute","handleTimeRangeShift","unsubscribe","onZoom","direction","onMoveBackward","onMoveForward","optionsWithLegend","legend","showLegend","onOptionsChange","BusEventBase","BusEventWithPayload","getCopiedTimeRange","raw","clipboard","readText","unknownRange","parse","narrowTimeRange","isError","NoLokiSplash","useTheme2","graphicContainer","SVG","src","isDark","h3","locationUtil","assureBaseUrl","height","up","marginBottom","textAlign","showLogsButtonSceneKey","stateUpdate","setVariableProviders","findByKeyAndType","ShowLogsButtonScene","hidden","drillDownLabel","ServiceSelectionScene","ServiceScene","getContentScene","routeMatch","breakdownLabel","setTagProviders","updatePatterns","getPatternsVariable","resetVariablesIfNotInUrl","getFieldsVariable","getUrlParamNameForVariable","VAR_FIELDS","getLevelsVariable","_subs","add","subscribeToState","newState","limitMaxInterval","subscribeToEvent","subscribeToPasteTimeEvent","fieldFilters","metadataFilters","getMetadataVariable","fieldsAndMetadataVariable","getFieldsAndMetadataVariable","updateFilters","subscribeToCombinedFieldsVariable","clearKeyBindings","setLabelsProviders","labelsVar","getLabelsVariable","_getOperators","operatorFunction","getTagKeysProvider","getTagValuesProvider","prevState","jsonData","plugin","interval","maxInterval","rangeUtil","intervalToSeconds","timeRangeInterval","to","diff","from","defaultRange","SceneTimeRange","DEFAULT_TIME_RANGE","AppEvents","alertWarning","attempted_duration_seconds","configured_max_interval","levelsVariable","fieldsCombinedVariable","getLevelsTagValuesProvider","getLevelsTagKeysProvider","getCombinedFieldsTagKeysProvider","getCombinedFieldsTagValuesProvider","currentKey","metadataVar","fieldVar","uninterpolatedExpression","getFieldsTagValuesExpression","otherFiltersString","renderVariableFilters","otherMetadataString","VAR_METADATA","PENDING_FIELDS_EXPR","PENDING_METADATA_EXPR","interpolate","interpolated","renderLogQLFieldFilters","renderLogQLMetadataFilters","urlParamName","location","getLocation","URLSearchParams","search","patternsVariable","patternsLine","renderPatternFilters","changeValueTo","getUrlState","updateFromUrl","getLastUsedDataSourceFromStorage","variablesScene","unsub","initialDatasourceUid","initialFilters","labelVariable","AdHocFiltersVariable","VAR_LABELS","EXPLORATION_DS","allowCustomValue","expressionBuilder","renderLogQLLabelFilters","hide","VariableHide","dontHide","onAddCustomValue","onAddCustomAdHocValue","operators","fieldsVariable","applyMode","hideVariable","metadataVariable","onAddCustomFieldValue","skipUrlSync","renderLevelsFilter","supportsMultiValueOperators","lineFiltersVariable","VAR_LINE_FILTERS","renderLogQLLineFilter","lineFilterOperators","dsVariable","DataSourceVariable","VAR_DATASOURCE","pluginId","dsValue","addLastUsedDataSourceToStorage","SceneVariableSet","CustomVariable","VAR_PATTERNS","VAR_LINE_FILTER","CustomConstantVariable","VAR_LOGS_FORMAT","MIXED_FORMAT_EXPR","getVariableSet","SceneFlexItem","disabled","SceneTimePicker","SceneRefreshPicker","config","featureToggles","exploreLogsAggregatedMetrics","ToolbarScene","isOpen","$timeRange","$variables","_urlSync","SceneObjectUrlSyncConfig","areArraysEqual","isFilterMetadata","copiedRange","newRange","convertRawToRange","sceneTimeRange","getLokiDatasource","then","ds","LoadingPlaceholder","LEVELS_VARIABLE_SCENE_KEY","onFilterChange","SceneVariableValueChangedEvent","levelsVar","selected","isLoading","visible","levelsKeys","response","skipPublish","forcePublish","filterOptions","opt","filterOpt","onChangeOptions","openSelect","onCloseMenu","syncLevelsVariable","levelsVariableScene","obj","levels","inputWrap","ControlsLabel","MultiSelect","prefix","placeholder","onChange","onOpenMenu","onFocus","menuShouldPortal","isClearable","blurInputOnSelect","closeMenuOnSelect","openMenuOnFocus","showAllSelectedWhenOpen","hideSelectedOptions","val","whiteSpace","LineFilterVariable","focus","setFocus","getLineFilterStyles","span","titleWrap","IconButton","collapseWrap","LineFilterEditor","collapseBtn","tooltip","isFilterExclusive","LineFilterOp","negativeMatch","negativeRegex","updateFilter","existingFilter","filterUpdate","debounced","updateVariableLineFilter","updateVariableDebounced","handleEnter","lineFilter","onRegexToggle","newOperator","match","regex","onToggleExclusive","onCaseSensitiveToggle","caseSensitive","LineFilterCaseSensitive","caseInsensitive","onInputChange","removeFilter","getLineFiltersVariable","otherFilters","keyLabel","search_string_in_variables_changed","searchQueryLength","containsLevel","debounce","sortLineFilters","lineFiltersWrap","lineFilterVar","exclusive","setExclusive","hasPositiveFilter","getLink","positiveFilter","find","getDrillDownIndexLink","button","LinkButton","index","header","showLogsButton","AGGREGATED_METRICS_USER_OVERRIDE_LOCALSTORAGE_KEY","pluginJson","userOverride","active","aggregatedMetrics","toggleAggregatedMetricsOverride","service_selection","aggregated_metrics_toggled","enabled","onToggleOpen","popover","primary","z3","weak","marginRight","heading","fontWeight","fontWeightMedium","paddingBottom","gridTemplateColumns","rowGap","columnGap","renderPopover","AGGREGATED_METRIC_START_DATE","toLocaleString","Switch","aggregatedMetricsToggle","Dropdown","overlay","placement","onVisibleChange","ToolbarButton","icon","aggregatedMetricsMenu","getServicesScene","EmbeddedScene","makeIndexPage","SceneAppPage","prefixRoute","PageLayoutType","Custom","preserveUrlKeys","SERVICE_URL_KEYS","routePath","getScene","drilldowns","ROUTE_DEFINITIONS","logs","getPage","parent","makeBreakdownPage","defaultRoute","labels","CHILD_ROUTE_DEFINITIONS","makeBreakdownValuePage","ValueSlugs","makeRedirectPage","urlUtil","renderUrl","PLUGIN_BASE_URL","hideFromBreadcrumbs","$behaviors","navigateToIndex","labelName","labelValue","extractValuesFromRoute","capitalizeFirstLetter","ROUTES","DRILLDOWN_URL_KEYS","getParentPage","SUB_ROUTES","onExploreLinkClick","open","getQueryExpr","trimEnd","displayedFields","getDisplayedFields","visualisationType","getLogsVisualizationType","columns","urlColumns","unknownToStrings","columnsParam","getUrlColumns","exploreState","toURLRange","queries","refId","panelsState","labelFieldName","DATAPLANE_LABELS_NAME","subUrl","appSubUrl","panes","schemaVersion","AddToInvestigationButton","getQueries","context","getContext","data","getData","queryRunner","findObjectOfType","SceneQueryRunner","frame","getFilter","q","legendFormat","getFieldConfig","panel","frames","series","fieldConfig","properties","id","existingOverride","overrides","matcher","displayNameFromDS","displayName","unshift","fieldName","uid","ctx","origin","logoPath","LokiLogo","links","usePluginLinks","extensionPointId","ExtensionPoints","MetricInvestigation","description","filterNameAndValueObj","ADD_TO_INVESTIGATION_MENU_TEXT","ADD_TO_INVESTIGATION_MENU_DIVIDER_TEXT","ADD_TO_INVESTIGATION_MENU_GROUP_TEXT","AvgFieldPanelType","CollapsablePanelText","PanelMenu","addItem","setItems","items","addInvestigationsLink","iconClassName","onExploreLinkClickTracking","shortcut","viz","VizPanelMenu","investigationsButton","investigationOptions","getLabelName","activate","panelType","collapsible","addVisualizationHeader","menu","collapsed","newCollapsableState","vizPanelFlexLayout","setValueSummaryHeight","setPanelOption","addCollapsableItem","gridItem","SceneCSSGridItem","clone","$data","headerActions","PanelBuilders","timeseries","setOverrides","setLevelColorOverrides","histogram","setMenu","setTitle","setHeaderActions","setData","build","newPanelType","fieldsAggregatedBreakdownScene","FieldsAggregatedBreakdownScene","rebuildAvgFields","onSwitchVizTypeTracking","addHistogramItem","exploreLogsVizPanelMenu","subscribeToAddToInvestigation","getQueryRunnerFromChildren","breakdownScene","FieldValuesBreakdownScene","LabelValuesBreakdownScene","queryProvider","uninterpolatedExpr","all","open_in_explore_menu_clicked","newVizType","change_viz_type","getInvestigationLink","addToInvestigation","getPluginLinkExtensions","extensions","getObservablePluginLinks","firstValueFrom","addToInvestigationButton","existingMenuItems","existingAddToExplorationLink","getPanelWrapperStyles","panelWrapper","AddFilterEvent","source","ClearFilterEvent","addAdHocFilter","addToFilters","clearFilters","getUIAdHocVariable","fieldValue","getValueFromAdHocVariableFilter","getNumericOperatorType","op","gt","gte","lt","lte","removeNumericFilter","resolveVariableTypeForField","operatorType","NotEqual","addNumericFilter","valueObject","getParserForField","addToFavorites","valueLabel","filterExists","validateVariableNameForField","variableName","getDetectedLabelsFrame","AddToFiltersButton","setFilterState","filterInSelectedFilters","isMetadata","add_to_filters_in_breakdown_clicked","filterType","filtersLength","getAdHocFiltersVariable","BreakdownSearchReset","recentFilters","BreakdownSearchScene","filterValues","LabelBreakdownScene","FieldsBreakdownScene","cacheKey","byFrameRepeater","findDescendents","ByFrameRepeater","child","filterByString","typeofBody","onValueFilterChange","clearValueFilter","SearchInput","performRepeat","newChildren","sortedSeries","sortSeries","sortBy","seriesIndex","layoutChild","getLayoutChild","unfilteredChildren","layoutSwitcher","LayoutSwitcher","singleGraphParent","VALUE_SUMMARY_PANEL_KEY","SceneDataTransformer","transformations","limitFramesByName","pipe","newFrames","getLabelValue","typeofPanel","typeofGraphParent","iterateFrames","haystack","fuzzySearch","filterFrames","filterSummaryChart","filterFn","buildNoResultsScene","clearFilter","prevData","LoadingState","Done","Streaming","SceneReactObject","reactNode","alertContainer","noResultsAlert","clearButton","minWidth","EmptyLayoutScene","emptyStateStyles","FieldSelector","setSelected","selectableOptions","InlineField","selectWrapper","Select","select","ServiceFieldSelector","selectOption","initialFilter","customOption","setCustomOption","allOptions","selectedOption","serviceSceneSelectWrapper","exploreServiceSearch","__isNew__","actionMeta","prevInputValue","wrapWildcardSearch","input","x1","Selector","getTagKey","groupByVariable","getFieldGroupByVariable","buildQuery","buildQueryRunner","onValuesDataQueryChange","runQuery","setSubscriptions","getQueryRunner","runQueriesMode","tagKey","detectedFieldsFrame","getDetectedFieldsFrame","queryString","buildFieldsQueryString","filterExpression","removeFieldLabelFromVariableInterpolation","expression","buildDataQuery","getParserForThisField","setFieldParserSubscriptions","setMetadataParserSubscriptions","getSceneQueryRunner","rebuildQuery","runQueries","queryRunners","getQueryParser","fieldsVar","setErrorState","errors","err","status","strong","traceId","optionValue","getSortByPreference","DEFAULT_SORT_BY","fieldsBreakdownScene","layouts","LabelsMenu","setShowMenuAlways","ValueSummaryPanelScene","ValuesMenu","SceneCSSGridLayout","templateColumns","FIELDS_BREAKDOWN_GRID_TEMPLATE_COLUMNS","autoRows","isLazy","getFilterBreakdownValueScene","DrawStyle","Bars","Line","getParserFromFieldsFilters","parserForFields","getParserForFields","updateChildren","newParser","getDetectedFieldsFrameFromQueryRunnerState","newNamesField","getDetectedFieldsNamesFromQueryRunnerState","newParsersField","getDetectedFieldsParsersFromQueryRunnerState","cardinalityMap","calculateCardinalityMap","newFieldsSet","updatedChildren","fieldType","getDetectedFieldType","dataTransformer","getQueryRunnerForPanel","delete","buildChildren","sortChildren","subscribeToPanel","aPanel","bPanel","aCardinality","Map","cardinality","set","serviceScene","fieldsCount","updateFieldCount","$detectedFieldsData","onDetectedFieldsChange","subscribeToFieldsVar","newParsers","oldParsers","extractParserFromArray","detectedFieldsState","childrenClones","getResultsStream","isHidden","activeLayout","getActiveGridLayouts","getPanelOption","panels","isAvgField","newChild","buildChild","ALL_VARIABLE_VALUE","SelectLabelActionScene","hideValueDrilldown","setCustomFieldConfig","mode","StackingMode","Normal","setSeriesLimit","MAX_NUMBER_OF_TIME_SERIES","l","activeLayoutChildren","activePanels","changeFieldCount","loading","$detectedLabelsData","SortCriteriaChanged","handleSortByChange","variableChanged","getPrimaryLabelFromUrl","newService","prevService","oldState","updateOptions","checkPrimaryLabel","dataFrame","getVariablesThatCanBeCleared","NoMatchingLabelsScene","clearCallback","clearVariables","getFieldOptions","updateBody","VAR_FIELD_GROUP_BY","defaultToAll","includeAll","SortByScene","_variableDependency","VariableDependencyConfig","variableNames","value_breakdown_sort_change","criteria","onFieldSelectorChange","select_field_in_breakdown_clicked","previousField","getValueText","view","sortByDirection","navigateToValueBreakdown","labelsMenuWrapper","valuesMenuWrapper","blockingMessage","StatusWrapper","content","textDecoration","paddingTop","LabelsAggregatedBreakdownScene","$detectedLabels","update","updateQueriesOnFieldsVariableChange","getPanelByIndex","detectedLabelsFrame","newLabels","getLabelGroupByVariable","layoutObj","existingLabels","newLabelsSet","detectedLabels","LABEL_BREAKDOWN_GRID_TEMPLATE_COLUMNS","buildLabelsQuery","setHoverHeader","onDetectedLabelsDataChange","onLabelsVariableChange","onGroupByVariableChange","SERVICE_UI_LABEL","SERVICE_NAME","newPrimaryLabel","prevPrimaryLabel","getLabelOptions","hasAllValue","VAR_LABEL_GROUP_BY","previousLabel","VAR_LABEL_GROUP_BY_EXPR","removeValueLabelFromVariableInterpolation","setEmptyStates","setErrorStates","errorIndex","displayed","showErrorToast","getActiveLayout","repeater","variableState","labelBreakdownScene","bodyOpts","levelColor","errorArray","displayError","activeLayoutContainsNoPanels","alertError","renderError","isTopLevelLayoutType","every","updateLayout","getSceneLayout","onLayoutChange","layout_type_changed","setSceneLayout","Field","RadioButtonGroup","findIndex","setCollapsible","setCollapsed","buildValueSummaryPanel","getValueSummaryHeight","extendPanelContext","extendTimeSeriesLegendBus","maxHeight","syncLevelsVisibleSeries","syncLabelsValueSummaryVisibleSeries","syncFieldsValueSummaryVisibleSeries","getFieldsVariableLegendSyncSubscription","sceneFlexItem","isLevel","initLegendOptions","getLabelsVariableLegendSyncSubscription","getQuerySubscription","onToggleSeriesVisibility","toggleLevelFromFilter","toggleLabelFromFilter","toggleFieldFromFilter","label_in_panel_summary_clicked","collapsableState","suffix","rest","Input","suffixWrapper","clearIcon","DisplayDurationUnits","DisplayByteUnits","NumericFilterPopoverScene","gtFilter","ltFilter","extractedValue","extractValueFromString","gtu","unit","ltu","Number","hasExistingFilter","onSubmit","togglePopover","units","onInputKeydown","formDisabled","inputString","inputType","durationValue","durationValueLength","isNaN","bytesValue","byteValueLength","getUnitOptions","popoverStyles","getPopoverStyles","subTitle","selectLabelActionScene","ClickOutsideWrapper","useCapture","Stack","role","card","fieldWrap","FieldSet","fieldset","breakdowns","common","filterNumericPopover","inputGreaterThanInclusive","horizontal","inclusiveField","inclusiveInput","inputGreaterThan","onKeyDownCapture","autoFocus","currentTarget","numberInput","Label","inputGreaterThanUnit","unitFieldLabel","selectInput","inputLessThanInclusive","inputLessThan","inputLessThanUnit","buttons","submitButton","cancelButton","numberFieldLabel","switchFieldLabel","INCLUDE_VALUE","EXCLUDE_VALUE","NUMERIC_FILTER_VALUE","getVariable","getExistingFilter","EMPTY_VARIABLE_VALUE","onClickExcludeEmpty","onClickIncludeEmpty","onClickNumericFilter","selectedValue","calculateSparsity","newLogsPanelState","showPopover","logsPanelData","getLogsPanelFrame","hasNumericFilters","hasSparseFilters","logLinesWithLabelCount","reduce","acc","percentage","existingFilterValue","detectedFieldFrame","getViewValuesLink","getValueBreakdownLink","SelectableValueComponent","getSelectableValueComponentStyles","popoverRef","useRef","filterButtonDisabled","hasOtherFilter","selectedOptionValue","hasExistingNumericFilter","numericSelected","includeSelected","sparseIncludeOption","component","sparseExcludeOption","numericFilterOption","defaultOption","ButtonGroup","filterButtonGroup","filterButton","ref","ButtonSelect","filterSelect","buttonSelect","PopoverController","showPopper","hidePopper","popperProps","blurFocusProps","onBlur","current","Popover","show","wrapperClassName","referenceElement","renderArrow","warning","pxToRem","borderTopLeftRadius","borderBottomLeftRadius","sortingOptions","ReducerID","stdDev","sum","min","fieldReducers","selectOptions","filterReducerOptions","onCriteriaChange","setSortByPreference","onDirectionChange","sortByValue","htmlFor","sortByFunction","isSearchable","inputId","ENABLED_PERCENTILES","ext","getLabelValueFromDataFrame","statusMessage","fontStyle","getFocusStyles","outline","outlineOffset","transitionTimingFunction","transitionDuration","transitionProperty","getIconButtonBefore","hoverSize","opacity","transitions","handleMotion","RegexIconButton","maxContrast","Tooltip","svg","viewBox","xmlns","x","y","dominantBaseline","textAnchor","gridSize","x0_5","hover","colorManipulator","alpha","LineFilterCaseSensitivityButton","re2JS","LineFilterInput","invalid","setInvalid","errorMessage","setErrorMessage","validate","useCallback","compile","narrowErrorMessage","load","useEffect","aria-invalid","rows","RE2JS","INITIAL_INPUT_WIDTH","onSubmitLineFilter","onClearLineFilter","setWidth","resize","searchLogs","inputNoBorderRight","onKeyUp","buttonWrap","removeBtn","submit","exclusiveBtn","LogOptionsScene","handleWrapLinesChange","getLogsPanelScene","wrapLogMessage","setLogOption","getLogsListScene","setLogsVizOption","prettifyLogMessage","onChangeLogsSortOrder","sortOrder","LogsListScene","LogsPanelScene","clearDisplayedFields","logs_clear_displayed_fields","getLogsPanelSortOrderFromStore","getLogOption","LogsSortOrder","Descending","getLogsPanelSortOrderFromURL","decodedSortOrder","narrowLogsSortOrder","onChangeVisualizationType","visualizationType","wrapLines","buttonGroupWrapper","transparent","Ascending","LogsPanelHeaderActions","vizType","tableColumnCustomWidths","LogLineState","TableColumnsContext","createContext","columnWidthMap","setColumnWidthMap","filteredColumns","setColumns","setFilteredColumns","setVisible","bodyState","setBodyState","clearSelectedLine","TableColumnContextProvider","initialColumns","logsFrame","setUrlColumns","setUrlTableBodyState","urlTableBodyState","showColumnManagementDrawer","isColumnManagementActive","removeExtraColumns","initialColumnWidths","existingWidths","narrowRecordStringNumber","NarrowingError","getColumnWidthsFromLocalStorage","setColumnWidthMapState","handleSetColumns","newColumns","activeColumns","colA","colB","getActiveColumns","handleSetBodyState","logLineState","handleSetVisible","isVisible","pendingLabelState","newColumnsArray","pa","pb","timeField","bodyField","defaultColumns","getDefaultColumns","col","pendingColumns","getTimeName","percentOfLinesWithLabel","Infinity","getBodyName","setDefaultColumns","Provider","labelTypes","columnsToSet","useTableColumnContext","useContext","TableCellContext","cellIndex","numberOfMenuItems","setActiveCellIndex","TableCellContextProvider","cellActive","setCellActive","handleCellActive","useTableCellContext","TableHeaderContext","isHeaderMenuActive","setHeaderMenuActive","TableHeaderContextProvider","handleisHeaderMenuActive","useTableHeaderContext","LogsColumnSearch","searchValue","setSearchValue","dispatcher","newColumnsWithMeta","numberOfResults","searchResultCount","reportInteraction","resultCount","searchWrap","needle","debouncedFuzzySearch","LogsTableEmptyFields","empty","LogsTableNavField","dragIcon","labelCount","appearance","contentWrap","customWidthWrap","checkboxLabel","Checkbox","checked","showCount","omit","draggable","LogsTableActiveFields","reorderColumn","valueFilter","toggleColumn","dragging","columnWrapper","getLogsFieldsStyles","labelKeys","onDragEnd","destination","renderTitle","DragDropContext","Droppable","droppableId","provided","droppableProps","innerRef","la","lb","sortLabels","Draggable","draggableId","snapshot","isDragging","draggableProps","dragHandleProps","collator","Intl","Collator","sensitivity","LogsTableAvailableFields","borderBottom","compare","LogsTableMultiSelect","sidebarWrap","overflowY","scrollbarWidth","columnHeaderButton","columnHeader","h6","clear","filteredColumnsWithMeta","columnsWithMeta","getReorderColumn","sourceIndex","destinationIndex","ColumnSelectionDrawerWrap","columnName","logContext","logError","c","priorActiveCount","column","columnAction","columnCount","columnFilterEvent","pendingFilteredLabelState","isDefaultField","DefaultCellWrapComponent","CellWrapInnerComponent","onMouseOut","onMouseIn","rowIndex","cellState","bgColor","overflowX","onMouseEnter","initialState","addFilter","selectedLine","QueryContext","QueryContextProvider","useQueryContext","CellContextMenu","pillType","menuItemsWrap","menuItem","showColumn","path","fillRule","clipRule","d","fillOpacity","LEVEL_NAME","DefaultPill","mappings","getFieldMappings","isPillActive","activePillWrap","pillWrap","pill","menuItemText","FieldType","time","LineActionIcons","clipboardButton","lineHeight","inspectButton","verticalAlign","iconWrapper","z2","inspect","logId","idField","lineValue","isInspecting","setIsInspecting","getText","generateLogShortlink","row","table","inspectLine","tooltipPlacement","tabIndex","ClipboardButton","Modal","onDismiss","pre","ButtonRow","DefaultCellComponent","getCellLinks","displayValue","number","linkWrapper","hasLinks","React","formattedValueToString","fieldIndex","showColumns","renderValue","getLinks","DataLinksContextMenu","api","openMenu","LogLinePillValue","activePill","valueWrap","menuActive","onClickAdd","LogLinePill","templateSrv","getTemplateSrv","useMemo","other","originalField","isDerivedField","originalFrame","getLinksSupplier","subFieldName","addFieldToColumns","stopScroll","scrollTo","scrollLeft","Scroller","scrollerRef","scroller","scrollRight","onPointerDown","behavior","onPointerUp","scrollWidth","RawLogLineText","rawLogLine","fontFamilyMonospace","LogLineCellComponent","isHover","setIsHover","untransformedField","rawValue","isDerived","untransformedValue","string","renderLabels","isAuto","auto","hasLabels","ScrollSyncPane","LogsTableHeader","isFirstColumn","isLine","logLineButton","tableHeaderMenu","leftAlign","rightAlign","defaultContentWrapper","isBodyField","onLogTextToggle","defaultContent","LogsTableHeaderWrap","hideColumn","pendingColumnState","columnIndex","cols","headerProps","linkWrap","openColumnManagementDrawer","slideLeft","reverse","slideRight","autoColumnWidths","transform","TableAndContext","GrafanaTable","onColumnResize","onResize","initialSortBy","desc","initialRowIndex","cellHeight","TableCellHeight","Sm","footerOptions","reducer","countRows","Table","timeZone","section","tableWrap","tableFrame","setTableFrame","localSelectedLine","prepareTableFrame","frameWithOverrides","applyFieldOverrides","replaceVariables","defaults","custom","guessLogsFieldTypeForField","filterable","headerComponent","getInitialFieldWidth","cellOptions","getTableCellOptions","prepare","isFieldLokiLabels","typeInfo","DataFrameType","LogLines","isFieldDataplaneLabels","flatMap","format","keepTime","labelFiltersTransform","labelFilters","labelFiltersInclude","indexByName","includeByName","getOrganizeFieldsTransform","buildColumnsWithMeta","specialFields","extraFields","getDefaultStateOrganizeFieldsTransform","transformedDataFrame","lastValueFrom","transformDataFrame","getIdName","lineIndex","cleanLineIndex","Drawer","onClose","ScrollSync","vertical","proportional","fieldDisplayName","guessLogsFieldTypeForValue","critical","crit","eror","debug","trace","MappingType","ValueToText","cellComponent","TableCellDisplayMode","tableWidth","numberOfFields","extraPadding","columnMeta","maxLength","iso8601Regex","TableWrap","panelWrapSize","setPanelWrapSize","useResizeObserver","panelWrap","clientWidth","clientHeight","getTimeZone","getColumnsFromProps","fieldNames","previouslySelected","getLogFrameLabelsAsLabels","numberOfLogLines","labelMap","fieldLabels","setObj","valueSet","getCardinalityMapFromLabels","cardinalityCount","fromEntries","normalize","mapLabelsToInitialState","specialFieldArray","addSpecialLabelsState","setSpecialFieldMeta","total","ceil","guessFieldTypeFromValue","TableProvider","parseLogsFrame","defaultUrlColumns","LogsTableScene","onActivateSyncDisplayedFieldsWithUrlColumns","getParentScene","urlColumnsParam","urlColumnsUrl","narrowStringsArray","parentModel","urlHasDefaultUrlColumns","updateDefaultUrlColumns","updateDisplayedFields","newDisplayedFields","setDisplayedFields","tableLogLineState","timeRangeValue","PanelChrome","loadingState","showMenuAlways","actions","setVisualizationType","getVariableForLabel","areArraysStrictlyEqual","LineFilterScene","getLineFilterVariable","updateInputState","updateVariable","getLineFilterCase","getLineFilterRegex","getLineFilterExclusive","cancel","setLineFilterExclusive","flush","thisFilter","clearVariable","handleChange","setLineFilterCase","setLineFilterRegex","getFilterKey","getOperator","search_string_in_logs_changed","decodedUrlColumns","unknownTableRow","narrowSelectedTableRow","decodedSelectedTableRow","decodedVisualizationType","narrowLogsVisualizationType","searchParams","setStateFromUrl","updateLogsPanel","selectedLineUrl","vizTypeUrl","displayedFieldsUrl","getVizPanel","logsPanelScene","xSizing","lineFilterScenes","lineFilterScene","logs_visualization_toggle","setLogsVisualizationType","contain","CopyLinkButton","copied","setCopied","timeoutId","handleClick","LogsPanelError","decodedWrapLogMessage","getLogsPanel","handleLogsError","isEmptyLogsResult","handleNoData","clearLogsError","logsCount","getTitle","errorResponse","statusText","showLogsError","logsVolumeCollapsedByError","getLogsVolumeOption","logsVolume","logsVolumePanelKey","LogsVolumePanel","formattedCount","valueFormatter","getValueFormat","trim","setOption","handleLabelFilterClick","handleLabelFilterOutClick","handleIsFilterLabelActive","handleFilterStringClick","handleFilterOutStringClick","onClickShowField","onClickHideField","getPrettyQueryExpr","updateVisibleRange","handleShareLogLineClick","handleLabelFilter","logs_detail_filter_applied","logs_toggle_displayed_field","displayedField","newLogs","rowId","resolveRowTimeRangeForSharing","copyText","metadata","hasKeyValueFilter","fieldFilter","hasKeyValueFilterField","lineFiltersVar","logs_popover_line_filter","selectionLength","LogsVolumeActions","TemporaryExemptionsButton","usePluginComponent","streamSelector","dataSourceUid","contextHints","updateContainerHeight","totalLogsCount","formattedTotalCount","maxLines","LINE_LIMIT","calcs","displayMode","LegendDisplayMode","List","setUnit","getTimeSeriesExpr","setLogsVolumeFieldConfigs","setLogsVolumeOption","annotations","displayVisibleRange","containerLayout","innerHeight","updatedLogSeries","visibleRange","getSeriesVisibleRange","getVisibleRangeFrame","levelFilter","level_in_logs_volume_clicked","ShareButtonScene","setIsOpen","onCopyLink","shorten","absTime","createAndCopyShortLink","global","isAbsoluteTime","protocol","host","lastSelected","defaultMode","MenuActions","menuOptions","getUrl","constructAbsoluteUrl","getSceneTimeRange","Menu","groupOption","MenuGroup","Item","narrow","getRelativeURLPath","createShortLink","getBackendSrv","post","shortLink","alertSuccess","toUtc","getUrlSearchParams","toISOString","pathname","onPatternClick","filteredPatterns","staleIndex","pattern_selected","logsStatsRow","logsStatsRowActive","logsStatsRowLabel","logsStatsRowValue","logsStatsRowCount","logsStatsRowPercent","logsStatsRowBar","logsStatsRowInnerBar","PatternFieldLabelStatsRow","count","proportion","style","percent","barStyle","logsStats","wordBreak","logsStatsHeader","medium","logsStatsTitle","logsStatsClose","logsStatsBody","PatternFieldLabelStats","stats","topRows","activeRow","otherRows","otherCount","combinedRows","stat","PatternNameLabel","exploration","patternIndices","indices","currentIndex","extractPatternIndices","setStats","statsError","setStatsError","previousQueryRef","previousTimeRangeRef","handlePatternClick","pattern_field_clicked","patternExtractor","_value","constructQuery","currentTimeRange","requestId","intervalMs","targets","timezone","app","startTime","fieldCount","fieldStatsMap","toArray","fieldStats","convertResultToStats","parts","part","Toggletip","onOpen","Spinner","emphasize","PatternsLogsSampleScene","queryWithFilters","LOG_STREAM_SELECTOR_EXPR","replacePatternsInQuery","queryRunnerWithFilters","onQueryWithFiltersResult","pendingPattern","VAR_PATTERNS_EXPR","removePatternFromFilterExclusion","patternsViewTableScene","PatternsViewTableScene","patternsNotMatchingFilters","setWarningMessage","noticeFlexItem","getNoticeFlexItem","vizFlexItem","getVizFlexItem","getFlexItemChildren","excludeThisPatternFromFiltering","patternsThatDontMatchCurrentFilters","filterVariable","onQueryError","traceIds","request","panelFlexItem","queryWithoutFilters","PATTERNS_SAMPLE_SELECTOR_EXPR","queryRunnerWithoutFilters","PatternsTableExpandedRow","tableViz","expandedRows","rowScene","newRowScene","SCALED_UNITS","appliedPatterns","getColumnStyles","cell","panelData","original","dataNode","SceneDataNode","timeSeries","TooltipDisplayMode","None","AxisPlacement","Hidden","setDisplayMode","tableTimeSeriesWrap","tableTimeSeries","sortType","scaledUnits","countTextWrap","toFixed","getTablePatternTextStyles","tablePatternTextDefault","getExplorationFor","disableGrow","existingPattern","appliedPattern","includeLink","excludeLink","undoLink","patternFrames","legendSyncPatterns","logExploration","patternFrame","getTableStyles","patternsFrameScene","PatternsFrameScene","patternFramesRaw","patternsBreakdownScene","PatternsBreakdownScene","previousValue","tableData","buildTableData","buildColumns","tableWrapper","InteractiveTable","getRowId","renderExpandedRow","theme2","overflowWrap","th","pointerEvents","palette","visualization","newFrame","$patternsData","prevFrame","patternFilter","forEachChild","getTimeseriesDataNode","getSingleViewLayout","originalOnToggleSeriesVisibility","override","patternsToShow","names","getTimeSeries","asTable","setLinks","targetBlank","fixedColor","overrideToFixedColor","logsByServiceScene","PatternsViewTextSearch","onSearchResult","setFilteredPatterns","patternFramesOverride","filteredPatternFrames","clearSearch","handleSearchChange","setEmptySearch","PatternsNotDetected","TextLink","external","PatternsTooOld","PATTERNS_MAX_AGE_HOURS","setBody","onDataChange","ySizing","updatePatternFrames","dataFrames","dataFrameToPatternFrame","prevFrames","Loading","controlsRight","controlsLeft","justifyItems","patternMissingText","timeRangeTooOld","dateTime","textAlignment","code","TabNames","breakdownViewsDefinitions","testId","tabLogs","behaviors","sync","DashboardCursorSync","Crosshair","tabLabels","buildFieldsBreakdownActionScene","changeFieldNumber","tabFields","tabPatterns","valueBreakdownViews","buildLabelValuesBreakdownActionScene","buildFieldValuesBreakdownActionScene","ActionBarScene","dataSource","shareButtonScene","currentBreakdownViewSlug","allowNavToParent","drilldownValueSlug","getDrilldownValueSlug","loadingStates","Box","paddingY","TabsBar","tab","Tab","counter","getCounter","totalCount","getLogsCountStyles","logsCountStyles","emptyCountStyles","LogsCount","getDrillDownTabLink","onChangeTab","action_view_changed","newActionView","previousActionView","patternsCount","labelsCount","md","right","removeEscapeChar","charsEscapedByEscapeRegExp","char","stringArray","nextChar","isNextCharRegex","LOGS_PANEL_QUERY_REFID","LOGS_COUNT_QUERY_REFID","setSubscribeToLabelsVariable","redirectToStart","prevRouteMatch","replaceSlash","$logsCount","newPrimaryLabelValue","isAdHocFilterValueUserInput","stripAdHocFilterUserInputPrefix","isExact","resetTabCount","navigateToDrilldownPage","getMetadataService","setServiceSceneState","showVariables","getServiceSceneState","getMetadata","resetBodyAndData","setBreakdownView","subscribeToPatternsQuery","subscribeToDetectedLabelsQuery","subscribeToDetectedFieldsQuery","subscribeToLogsQuery","subscribeToLogsCountQuery","subscribeToFieldsVariable","subscribeToMetadataVariable","subscribeToLevelsVariableChangedEvent","subscribeToLevelsVariableFiltersState","subscribeToDataSourceVariable","subscribeToPatternsVariable","subscribeToLineFiltersVariable","subscribeToTimeRange","deprecatedLineFilterArray","deprecatedLineFilter","globalLineFilterVars","caseSensitiveMatches","caseInsensitiveMatches","migrateLineFilterV1","parentSlug","updateLoadingState","patternsResponse","setPatternsCount","detectedLabelsResponse","detectedLabelsFields","removeSpecialFields","setLabelsCount","updateFieldsCount","detectedFieldsFields","setFieldsCount","getServiceSceneQueryRunner","getPatternsQueryRunner","getDetectedLabelsQueryRunner","getDetectedFieldsQueryRunner","getLogCountQueryRunner","buildGraphScene","breakdownView","breakdownViewDef","valueBreakdownView","valueBreakdownViewDef","getResourceQueryRunner","buildResourceQuery","VAR_LABELS_EXPR","queryType","FavoriteServiceHeaderActionScene","setHover","isFavorite","removeFromFavorites","tooltipCopy","onMouseOver","SelectServiceButton","getLabelDrilldownLink","selectLabel","primaryLabelName","primaryLabelValue","service_selected","clonedVar","urlSync","selectServiceButton","ConfigureVolumeError","NoServiceSearchResults","TabPopoverScene","serviceSelectionScene","serviceSelectionTabsScene","ServiceSelectionTabsScene","tabOptions","tabOptionsWithIcon","saved","toggleShowPopover","setSelectedTab","getLabelsFromQueryRunnerState","$labelsData","populatePrimaryLabelsVariableOptions","selectedTab","getSelectedTab","savedTabs","getFavoriteTabsFromStorage","savedIndex","runDetectedLabels","runDetectedLabelsSubs","getServiceSelectionPrimaryLabel","selectDefaultLabelTab","removeSavedTab","removeTabFromLocalStorage","getTabsStyles","tabs","tabLabel","truncateText","addTab","NoServiceVolume","AddLabelToFiltersHeaderActionScene","isSelected","included","add_to_filters","ServiceSelectionPaginationScene","getPageCountStyles","searchPageCountWrap","searchFieldPlaceholderText","textWrapMode","PageCount","countPerPage","delta","roundedTotalCount","getCountOptionsFromTotal","lastOptionValue","currentPage","setServiceSelectionPageCount","pagination","float","paginationWrap","paginationWrapMd","Pagination","numberOfPages","onNavigate","toPage","showSmallVersion","aggregatedMetricsEnabled","AGGREGATED_SERVICE_NAME","primaryLabelUrlKey","datasourceUrlKey","getSelectedTabFromUrl","addDatasourceChangeToBrowserHistory","newDs","dsUrl","currentUrl","newUrl","pushUrlHandler","addLabelChangeToBrowserHistory","newKey","primaryLabelRaw","primaryLabelSplit","addTabToLocalStorage","clearServiceSelectionSearchVariable","setServiceSelectionPrimaryLabelKey","buildServiceLayout","serviceLabelVar","primaryLabelVar","datasourceVar","splitDuration","isAggregatedMetricsActive","getMetricExpression","step","cssGridItem","runner","runPanelQuery","toolbar","getQueryOptionsToolbar","formatPrimaryLabelForUI","setVolumeQueryRunner","buildVolumeQuery","VAR_PRIMARY_LABEL_EXPR","VAR_LABELS_REPLICA_EXPR","subscribeToVolume","doVariablesNeedSync","labelsVarPrimary","labelsVarReplica","getLabelsVariableReplica","activeTab","filteredFilters","needsSync","syncVariables","fixRequiredUrlParams","subscribeToPrimaryLabelsVariable","subscribeToLabelFilterChanges","subscribeToActiveTabVariable","runVolumeOnActivate","subscribeToDatasource","subscribeToAggregatedMetricToggle","subscribeToAggregatedMetricVariable","isTimeRangeTooEarlyForAggMetrics","onUnsupportedAggregatedMetricTimeRange","runVolumeQuery","onSupportedAggregatedMetricTimeRange","getAggregatedMetricsVariable","isBefore","resetQueryRunner","updateAggregatedMetricVariable","updateTabs","getGridItems","requestTimeRange","fromDiff","abs","toDiff","labelsToQuery","getLabels","paginationScene","existingChildren","aggregatedMetricsVariable","datasourceVariable","existing","newChildTs","newChildLogs","buildServiceLogsLayout","serviceIndex","getLogExpression","labelsByVolume","dsString","searchString","getServiceSelectionSearchVariable","services","favoriteServicesToQuery","service","createListOfLabelsToQuery","getServiceSelectionPageCount","VAR_PRIMARY_LABEL_SEARCH","VAR_AGGREGATED_METRICS","hideLabel","VAR_PRIMARY_LABEL","renderPrimaryLabelFilters","VAR_LABELS_REPLICA","serviceLevel","onSearchServicesChange","primaryLabelSearch","searchVar","search_services_changed","searchQuery","getLevelFilterForService","serviceLevels","Off","allLevels","getLevelLabelsFromSeries","toggleLevelVisibility","updateServiceLogs","headingWrapper","loadingText","bodyWrapper","searchPaginationWrap","searchWrapper","searchField","serviceStringVariable","hasSearch","isLogVolumeLoading","volumeApiError","filterLabel","customValue","customLabel","unwrapWildcardSearch","serviceName","onSearchChange","goToLabelDrillDownLink","MultiValueVariable","getValueOptions","of","MultiOrSingleValueSelect","equalsFilters","notEqualsFilters","regexEqualFilters","regexNotEqualFilters","getCombinedLabelFilters","adHocFilters","operatorFilters","joinedValues","joinCombinedFiltersValues","ltFilters","lteFilters","gtFilters","gteFilters","filtersString","buildLabelsLogQLFromFilters","getLabelsExpr","joinMatchFilters","decodeFilters","getExpr","filterSeparator","equalFiltersStrings","notEqualsFiltersStrings","regexEqualFiltersStrings","regexNotEqualFiltersStrings","ltFiltersStrings","lteFiltersStrings","gtFiltersStrings","gteFiltersStrings","allFilters","buildJoinedFilters","LabelFilterOp","RegexEqual","RegexNotEqual","getFilterValues","buildFilter","NumericFilterOp","allFiltersString","combineValues","equal","notEqual","regexEqual","regexNotEqual","groupFiltersByKey","combineFiltersValues","mergeFilters","removeStaleOperators","filterStrings","filtersWithSameOperatorsAndKeys","isOperatorNumeric","buildFilterString","positiveFilterValueSeparator","negativeFilterValueSeparator","expectedOperator","operatorTo","filtersFrom","filtersTo","valuesToMove","mergeCombinedFiltersValues","separator","filterCombinedValues","filtersByKey","multipleValuesOperator","updatedOperatorAndEscapedValues","currentOperator","narrowFilterOperator","updatedOperator","firstFilter","filterString","escapeFieldValue","escapeFieldValues","isUserInput","sceneUtils","escapeLabelValueInExactSelector","escapeLabelValueInRegexSelector","quoteChar","ignoreKeys","positiveMatch","positiveRegex","isOperatorExclusive","positiveMatchGroup","groupBy","positiveRegexGroup","negativeMatchGroup","negativeRegexGroup","gtGroup","gteGroup","ltGroup","lteGroup","getExpressionBuilderDebug","page","createInteractionName","open_in_explore_clicked","wasm_not_supported","interval_too_long","arr1","arr2","set1","set2","isLogsQuery","nodeType","isQueryWithNode","iterate","enter","MetricExpr","requestSupportsSharding","isLogsRequest","isInstantQuery","SHARDING_PLACEHOLDER","addShardingPlaceholderSelector","interpolateShardingSelector","shards","shardValue","RegExp","combineResponses","currentResult","newResult","cloneDataFrame","currentFrame","frame1","frame2","frameType1","frameType2","TimeSeriesMulti","field1","field2","compareLabels","customType1","frameType","customType2","shouldCombine","dest","destTimeField","destIdField","sourceTimeField","sourceIdField","sourceTimeValues","totalFields","destIdx","resolveIdx","entryExistsInDest","compareEntries","sourceField","findSourceField","nanos","getCombinedMetadataStats","mergeFrames","mergedErrors","mergedError","mergedTraceIds","destField","idx","closestIdx","destIndex","sameTimestamp","compareNsTimestamps","referenceField","sourceFields","candidates","TOTAL_BYTES_STAT","destStats","sourceStats","destStat","s","sourceStat","eitherStat","runShardSplitQuery","interpolateVariablesInQueries","splittingTargets","shouldStop","mergedResponse","uuidv4","subquerySubscription","retriesMap","retryTimer","runNextRequest","subscriber","cycle","groupSize","nextGroupSize","retrying","done","next","complete","nextRequest","nextCycle","retry","isRetriableError","traces","floor","sqrt","retries","pow","shardsToQuery","groupShardRequests","subRequest","partialResponse","maxFactor","constrainGroupSize","currentSize","metaExecutionTime","executionTime","updateGroupSizeFromResponse","runNonSplitRequest","Observable","selector","getNodesFromQuery","getSelectorForShardValues","isValidQuery","fetchLabelValues","getInitialGroupSize","catch","splitQueriesByStreamShard","WRAPPED_LOKI_DS_UID","DETECTED_FIELDS_NAME_FIELD","DETECTED_FIELDS_CARDINALITY_NAME","DETECTED_FIELDS_PARSER_NAME","DETECTED_FIELDS_TYPE_NAME","WrappedLokiDatasource","RuntimeDataSource","__sceneObject","valueOf","lokiDs","targetsSet","resource","getVolume","getPatterns","getDetectedLabels","getDetectedFields","shardingEnabled","exploreLogsShardSplitting","updatedRequest","sanitizeStreamSelector","interpolatedTarget","dsResponse","utc","headers","lokiPatterns","maxValue","minValue","timeValues","countValues","samples","createDataFrame","preferredVisualisationType","targetsInterpolated","sortLabelsByCardinality","detectedLabelFields","nameField","cardinalityField","parserField","typeField","FIELDS_TO_REMOVE","primaryLabel","volumeResponse","lhs","rhs","lVolumeCount","rVolumeCount","df","metric","labelsResponse","testDatasource","registerRuntimeDataSource","streamSelectorName","excludeEmpty","metadataExpressionToAdd","VAR_METADATA_EXPR","VAR_LINE_FILTERS_EXPR","VAR_FIELDS_EXPR","JSON_FORMAT_EXPR","LOGS_FORMAT_EXPR","DETECTED_LEVELS_VALUES_EXPR","DETECTED_FIELD_AND_METADATA_VALUES_EXPR","rerenderFavorites","forceRender","addToFavoriteLabelValueInStorage","removeFromFavoritesInStorage","getReducerId","extractParserFromString","parserString","extractFieldTypeFromString","fieldString","parsersSet","parsersArray","namesField","sortByScene","labelKey","frameIndex","reducerID","selectFrameTransformation","setDisplayName","labelType","getLabelTypeFromFrame","LabelType","Parsed","Indexed","StructuredMetadata","getFilterTypeFromLabelType","parserForThisField","typesField","optionType","parserFromFilterValue","fieldExpressionToAdd","structuredMetadataToAdd","getLogsStreamSelector","buildFieldsQuery","labelOptions","optionName","labelExpressionToAdd","getLabelsFromSeries","labelsVariable","getVisibleLabels","allLabels","getVisibleFilters","getVisibleFields","getVisibleMetadata","inclusiveFilters","exclusiveLabels","visibleLevels","SeriesVisibilityChangeMode","ToggleSelection","existingLevel","getVisibleLevels","levelsFilter","wantedLevels","normalizeLevelName","unwantedLevels","getField","cache","getFieldByName","DATAPLANE_TIMESTAMP_NAME","DATAPLANE_BODY_NAME","DATAPLANE_SEVERITY_NAME","DATAPLANE_ID_NAME","logFrameLabelsToLabels","logFrameLabels","k","FieldCache","timestampField","severityField","labelsField","getLogFrameLabels","timeNanosecondField","getLabelFieldName","parseDataplaneLogsFrame","getFirstFieldOfType","getL","lineField","lineLabels","makeLabelsArray","makeLabelsGetter","parseLegacyLogsFrame","oldestFirst","VISIBLE_RANGE_NAME","arrayToDataFrame","timeEnd","isRegion","dataTopic","DataTopic","Annotations","metadataService","initializeMetadataService","MetadataService","serviceSceneState","previousRoute","buildDrilldownPageUrl","extraQueryParams","buildDrilldownPageRoute","newPath","urlLabelName","urlLabelValue","urlPath","buildValueBreakdownUrl","fullUrl","drilldownLink","serviceUrl","buildServicesUrl","getSearch","LogsSceneQueryRunner","UNKNOWN_LEVEL_LOGS","INFO_LEVEL_FIELD_NAME_REGEX","DEBUG_LEVEL_FIELD_NAME_REGEX","WARNING_LEVEL_FIELD_NAME_REGEX","ERROR_LEVEL_FIELD_NAME_REGEX","CRITICAL_LEVEL_FIELD_NAME_REGEX","UNKNOWN_LEVEL_FIELD_NAME_REGEX","matchFieldsWithNameByRegex","overrideColor","builder","setValueSummaryFieldConfigs","setLabelSeriesOverrides","overrideConfig","FieldMatcherID","byNames","readOnly","overrideCustomFieldConfig","__systemRef","focusedLevels","FieldConfigBuilders","FieldConfigBuilder","onFieldConfigChange","focusedLabels","setColorByDisplayNameTransformation","getFieldDisplayName","FieldColorModeId","PaletteClassicByName","sortLevelTransformation","aName","aVal","bName","queryRunnerOptions","hasLevel","isLogPanelQuery","LokiQueryDirection","Backward","Forward","route","queryParamsOverrides","defaultQueryParams","VAR_DATASOURCE_EXPR","editorMode","supportingQueryType","addAdHocFilterUserInputPrefix","getLevelsExpr","getMetadataExpr","getFieldsExpr","escapeDoubleQuotedLineFilter","buildLogQlLineFilter","breakdownLabelName","startOfUrl","routeParams","locationArray","buildServicesRoute","sceneObject","PRETTY_LOG_STREAM_SELECTOR_EXPR","check","returnType","uf","uFuzzy","intraMode","intraIns","intraSub","intraTrn","intraDel","idxs","order","haystackOrder","matchesSet","mark","matched","infoIdx","highlight","ranges","debounceLodash","memoize","sortSeriesByName","initOutlierDetector","fieldReducer","calculateDataFrameChangepoints","calculateOutlierValue","doStandardCalcs","seriesCalcs","firstTimestamp","lastTimestamp","firstValue","lastValue","allSeriesKey","wasmSupported","dataPoints","samplingStep","sample","Float64Array","ChangepointDetector","defaultArgpcp","detectChangepoints","valueA","valueB","localeCompare","joined","outerJoinDataFrames","points","detector","OutlierDetector","dbscan","preprocess","outliers","detect","seriesResults","isOutlier","outlierIntervals","support","WebAssembly","FAVORITE_PRIMARY_LABEL_VALUES_LOCALSTORAGE_KEY","FAVORITE_PRIMARY_LABEL_NAME_LOCALSTORAGE_KEY","DS_LOCALSTORAGE_KEY","SCENE_LAYOUT_LOCALSTORAGE_KEY","dsKey","createPrimaryLabelLocalStorageKey","labelValues","servicesToStore","createTabsLocalStorageKey","tabName","tabNames","SORT_BY_LOCALSTORAGE_KEY","defaultSortBy","defaultDirection","getExplorationPrefix","getDataSourceName","getServiceName","PREFIX","storedFields","LOG_OPTIONS_LOCALSTORAGE_KEY","defaultValue","localStorageResult","storedValue","LOGS_VOLUME_LOCALSTORAGE_KEY","removeItem","VISUALIZATION_TYPE_LOCALSTORAGE_KEY","storedType","LINE_FILTER_OPTIONS_LOCALSTORAGE_KEY","PANEL_OPTIONS_LOCALSTORAGE_KEY","EXPRESSION_BUILDER_DEBUG_LOCALSTORAGE_KEY","SERVICE_SELECTION_PAGE_COUNT_KEY","pageCount","appConfig","apiKey","apiUrl","refreshPicker","combobox","addNewLabelTab","searchLabelValueInput","openExplore","logsPanelHeader","radio","isSecureContext","writeText","createElement","appendChild","execCommand","removeChild","paramName","relativeUrl","charAt","toUpperCase","ellipsis","timeEpochMs","VAR_LEVELS_EXPR","lookupVariable","encodedValue","narrowFieldValue","adHocFiltersVariableState","getServiceNameFromVariableState","variablesToClear","wip","_wip","includeOperators","isLabelsVar","inclusiveOperatorCount","isEditingOnlyFilter","isAddingFirstFilter","numericOperators"],"sourceRoot":""} \ No newline at end of file diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/3d96a93cfcb32df74eef.svg b/compose/grafana/plugins/grafana-lokiexplore-app/3d96a93cfcb32df74eef.svg new file mode 100644 index 0000000..a929f6d --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/3d96a93cfcb32df74eef.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/470.js b/compose/grafana/plugins/grafana-lokiexplore-app/470.js new file mode 100644 index 0000000..2c9a925 --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/470.js @@ -0,0 +1,3 @@ +/*! For license information please see 470.js.LICENSE.txt */ +"use strict";(self.webpackChunkgrafana_lokiexplore_app=self.webpackChunkgrafana_lokiexplore_app||[]).push([[470],{4470:(t,e,s)=>{s.r(e),s.d(e,{RE2JS:()=>at,RE2JSCompileException:()=>f,RE2JSException:()=>g,RE2JSFlagsException:()=>_,RE2JSGroupException:()=>A,RE2JSSyntaxException:()=>E});class i{static FOLD_CASE=1;static LITERAL=2;static CLASS_NL=4;static DOT_NL=8;static ONE_LINE=16;static NON_GREEDY=32;static PERL_X=64;static UNICODE_GROUPS=128;static WAS_DOLLAR=256;static MATCH_NL=(()=>i.CLASS_NL|i.DOT_NL)();static PERL=(()=>i.CLASS_NL|i.ONE_LINE|i.PERL_X|i.UNICODE_GROUPS)();static POSIX=0;static UNANCHORED=0;static ANCHOR_START=1;static ANCHOR_BOTH=2}class n{static CODES=(()=>new Map([["",7],["\b",8],["\t",9],["\n",10],["\v",11],["\f",12],["\r",13],[" ",32],['"',34],["$",36],["&",38],["(",40],[")",41],["*",42],["+",43],["-",45],[".",46],["0",48],["1",49],["2",50],["3",51],["4",52],["5",53],["6",54],["7",55],["8",56],["9",57],[":",58],["<",60],[">",62],["?",63],["A",65],["B",66],["C",67],["F",70],["P",80],["Q",81],["U",85],["Z",90],["[",91],["\\",92],["]",93],["^",94],["_",95],["a",97],["b",98],["f",102],["i",105],["m",109],["n",110],["r",114],["s",115],["t",116],["v",118],["x",120],["z",122],["{",123],["|",124],["}",125]]))();static toUpperCase(t){const e=String.fromCodePoint(t).toUpperCase();if(e.length>1)return t;const s=String.fromCodePoint(e.codePointAt(0)).toLowerCase();return s.length>1||s.codePointAt(0)!==t?t:e.codePointAt(0)}static toLowerCase(t){const e=String.fromCodePoint(t).toLowerCase();if(e.length>1)return t;const s=String.fromCodePoint(e.codePointAt(0)).toUpperCase();return s.length>1||s.codePointAt(0)!==t?t:e.codePointAt(0)}}class a{static CASE_ORBIT=(()=>new Map([[75,107],[107,8490],[8490,75],[83,115],[115,383],[383,83],[181,924],[924,956],[956,181],[197,229],[229,8491],[8491,197],[452,453],[453,454],[454,452],[455,456],[456,457],[457,455],[458,459],[459,460],[460,458],[497,498],[498,499],[499,497],[837,921],[921,953],[953,8126],[8126,837],[914,946],[946,976],[976,914],[917,949],[949,1013],[1013,917],[920,952],[952,977],[977,1012],[1012,920],[922,954],[954,1008],[1008,922],[928,960],[960,982],[982,928],[929,961],[961,1009],[1009,929],[931,962],[962,963],[963,931],[934,966],[966,981],[981,934],[937,969],[969,8486],[8486,937],[1042,1074],[1074,7296],[7296,1042],[1044,1076],[1076,7297],[7297,1044],[1054,1086],[1086,7298],[7298,1054],[1057,1089],[1089,7299],[7299,1057],[1058,1090],[1090,7300],[7300,7301],[7301,1058],[1066,1098],[1098,7302],[7302,1066],[1122,1123],[1123,7303],[7303,1122],[7304,42570],[42570,42571],[42571,7304],[7305,7306],[7306,7305],[7776,7777],[7777,7835],[7835,7776],[223,7838],[7838,223],[8064,8072],[8072,8064],[8065,8073],[8073,8065],[8066,8074],[8074,8066],[8067,8075],[8075,8067],[8068,8076],[8076,8068],[8069,8077],[8077,8069],[8070,8078],[8078,8070],[8071,8079],[8079,8071],[8080,8088],[8088,8080],[8081,8089],[8089,8081],[8082,8090],[8090,8082],[8083,8091],[8091,8083],[8084,8092],[8092,8084],[8085,8093],[8093,8085],[8086,8094],[8094,8086],[8087,8095],[8095,8087],[8096,8104],[8104,8096],[8097,8105],[8105,8097],[8098,8106],[8106,8098],[8099,8107],[8107,8099],[8100,8108],[8108,8100],[8101,8109],[8109,8101],[8102,8110],[8110,8102],[8103,8111],[8111,8103],[8115,8124],[8124,8115],[8131,8140],[8140,8131],[912,8147],[8147,912],[944,8163],[8163,944],[8179,8188],[8188,8179],[612,42955],[42955,612],[42956,42957],[42957,42956],[42970,42971],[42971,42970],[411,42972],[42972,411],[64261,64262],[64262,64261],[66560,66600],[66600,66560],[66561,66601],[66601,66561],[66562,66602],[66602,66562],[66563,66603],[66603,66563],[66564,66604],[66604,66564],[66565,66605],[66605,66565],[66566,66606],[66606,66566],[66567,66607],[66607,66567],[66568,66608],[66608,66568],[66569,66609],[66609,66569],[66570,66610],[66610,66570],[66571,66611],[66611,66571],[66572,66612],[66612,66572],[66573,66613],[66613,66573],[66574,66614],[66614,66574],[66575,66615],[66615,66575],[66576,66616],[66616,66576],[66577,66617],[66617,66577],[66578,66618],[66618,66578],[66579,66619],[66619,66579],[66580,66620],[66620,66580],[66581,66621],[66621,66581],[66582,66622],[66622,66582],[66583,66623],[66623,66583],[66584,66624],[66624,66584],[66585,66625],[66625,66585],[66586,66626],[66626,66586],[66587,66627],[66627,66587],[66588,66628],[66628,66588],[66589,66629],[66629,66589],[66590,66630],[66630,66590],[66591,66631],[66631,66591],[66592,66632],[66632,66592],[66593,66633],[66633,66593],[66594,66634],[66634,66594],[66595,66635],[66635,66595],[66596,66636],[66636,66596],[66597,66637],[66637,66597],[66598,66638],[66638,66598],[66599,66639],[66639,66599],[66736,66776],[66776,66736],[66737,66777],[66777,66737],[66738,66778],[66778,66738],[66739,66779],[66779,66739],[66740,66780],[66780,66740],[66741,66781],[66781,66741],[66742,66782],[66782,66742],[66743,66783],[66783,66743],[66744,66784],[66784,66744],[66745,66785],[66785,66745],[66746,66786],[66786,66746],[66747,66787],[66787,66747],[66748,66788],[66788,66748],[66749,66789],[66789,66749],[66750,66790],[66790,66750],[66751,66791],[66791,66751],[66752,66792],[66792,66752],[66753,66793],[66793,66753],[66754,66794],[66794,66754],[66755,66795],[66795,66755],[66756,66796],[66796,66756],[66757,66797],[66797,66757],[66758,66798],[66798,66758],[66759,66799],[66799,66759],[66760,66800],[66800,66760],[66761,66801],[66801,66761],[66762,66802],[66802,66762],[66763,66803],[66803,66763],[66764,66804],[66804,66764],[66765,66805],[66805,66765],[66766,66806],[66806,66766],[66767,66807],[66807,66767],[66768,66808],[66808,66768],[66769,66809],[66809,66769],[66770,66810],[66810,66770],[66771,66811],[66811,66771],[66928,66967],[66967,66928],[66929,66968],[66968,66929],[66930,66969],[66969,66930],[66931,66970],[66970,66931],[66932,66971],[66971,66932],[66933,66972],[66972,66933],[66934,66973],[66973,66934],[66935,66974],[66974,66935],[66936,66975],[66975,66936],[66937,66976],[66976,66937],[66938,66977],[66977,66938],[66940,66979],[66979,66940],[66941,66980],[66980,66941],[66942,66981],[66981,66942],[66943,66982],[66982,66943],[66944,66983],[66983,66944],[66945,66984],[66984,66945],[66946,66985],[66985,66946],[66947,66986],[66986,66947],[66948,66987],[66987,66948],[66949,66988],[66988,66949],[66950,66989],[66989,66950],[66951,66990],[66990,66951],[66952,66991],[66991,66952],[66953,66992],[66992,66953],[66954,66993],[66993,66954],[66956,66995],[66995,66956],[66957,66996],[66996,66957],[66958,66997],[66997,66958],[66959,66998],[66998,66959],[66960,66999],[66999,66960],[66961,67e3],[67e3,66961],[66962,67001],[67001,66962],[66964,67003],[67003,66964],[66965,67004],[67004,66965],[68736,68800],[68800,68736],[68737,68801],[68801,68737],[68738,68802],[68802,68738],[68739,68803],[68803,68739],[68740,68804],[68804,68740],[68741,68805],[68805,68741],[68742,68806],[68806,68742],[68743,68807],[68807,68743],[68744,68808],[68808,68744],[68745,68809],[68809,68745],[68746,68810],[68810,68746],[68747,68811],[68811,68747],[68748,68812],[68812,68748],[68749,68813],[68813,68749],[68750,68814],[68814,68750],[68751,68815],[68815,68751],[68752,68816],[68816,68752],[68753,68817],[68817,68753],[68754,68818],[68818,68754],[68755,68819],[68819,68755],[68756,68820],[68820,68756],[68757,68821],[68821,68757],[68758,68822],[68822,68758],[68759,68823],[68823,68759],[68760,68824],[68824,68760],[68761,68825],[68825,68761],[68762,68826],[68826,68762],[68763,68827],[68827,68763],[68764,68828],[68828,68764],[68765,68829],[68829,68765],[68766,68830],[68830,68766],[68767,68831],[68831,68767],[68768,68832],[68832,68768],[68769,68833],[68833,68769],[68770,68834],[68834,68770],[68771,68835],[68835,68771],[68772,68836],[68836,68772],[68773,68837],[68837,68773],[68774,68838],[68838,68774],[68775,68839],[68839,68775],[68776,68840],[68840,68776],[68777,68841],[68841,68777],[68778,68842],[68842,68778],[68779,68843],[68843,68779],[68780,68844],[68844,68780],[68781,68845],[68845,68781],[68782,68846],[68846,68782],[68783,68847],[68847,68783],[68784,68848],[68848,68784],[68785,68849],[68849,68785],[68786,68850],[68850,68786],[68944,68976],[68976,68944],[68945,68977],[68977,68945],[68946,68978],[68978,68946],[68947,68979],[68979,68947],[68948,68980],[68980,68948],[68949,68981],[68981,68949],[68950,68982],[68982,68950],[68951,68983],[68983,68951],[68952,68984],[68984,68952],[68953,68985],[68985,68953],[68954,68986],[68986,68954],[68955,68987],[68987,68955],[68956,68988],[68988,68956],[68957,68989],[68989,68957],[68958,68990],[68990,68958],[68959,68991],[68991,68959],[68960,68992],[68992,68960],[68961,68993],[68993,68961],[68962,68994],[68994,68962],[68963,68995],[68995,68963],[68964,68996],[68996,68964],[68965,68997],[68997,68965],[71840,71872],[71872,71840],[71841,71873],[71873,71841],[71842,71874],[71874,71842],[71843,71875],[71875,71843],[71844,71876],[71876,71844],[71845,71877],[71877,71845],[71846,71878],[71878,71846],[71847,71879],[71879,71847],[71848,71880],[71880,71848],[71849,71881],[71881,71849],[71850,71882],[71882,71850],[71851,71883],[71883,71851],[71852,71884],[71884,71852],[71853,71885],[71885,71853],[71854,71886],[71886,71854],[71855,71887],[71887,71855],[71856,71888],[71888,71856],[71857,71889],[71889,71857],[71858,71890],[71890,71858],[71859,71891],[71891,71859],[71860,71892],[71892,71860],[71861,71893],[71893,71861],[71862,71894],[71894,71862],[71863,71895],[71895,71863],[71864,71896],[71896,71864],[71865,71897],[71897,71865],[71866,71898],[71898,71866],[71867,71899],[71899,71867],[71868,71900],[71900,71868],[71869,71901],[71901,71869],[71870,71902],[71902,71870],[71871,71903],[71903,71871],[93760,93792],[93792,93760],[93761,93793],[93793,93761],[93762,93794],[93794,93762],[93763,93795],[93795,93763],[93764,93796],[93796,93764],[93765,93797],[93797,93765],[93766,93798],[93798,93766],[93767,93799],[93799,93767],[93768,93800],[93800,93768],[93769,93801],[93801,93769],[93770,93802],[93802,93770],[93771,93803],[93803,93771],[93772,93804],[93804,93772],[93773,93805],[93805,93773],[93774,93806],[93806,93774],[93775,93807],[93807,93775],[93776,93808],[93808,93776],[93777,93809],[93809,93777],[93778,93810],[93810,93778],[93779,93811],[93811,93779],[93780,93812],[93812,93780],[93781,93813],[93813,93781],[93782,93814],[93814,93782],[93783,93815],[93815,93783],[93784,93816],[93816,93784],[93785,93817],[93817,93785],[93786,93818],[93818,93786],[93787,93819],[93819,93787],[93788,93820],[93820,93788],[93789,93821],[93821,93789],[93790,93822],[93822,93790],[93791,93823],[93823,93791],[125184,125218],[125218,125184],[125185,125219],[125219,125185],[125186,125220],[125220,125186],[125187,125221],[125221,125187],[125188,125222],[125222,125188],[125189,125223],[125223,125189],[125190,125224],[125224,125190],[125191,125225],[125225,125191],[125192,125226],[125226,125192],[125193,125227],[125227,125193],[125194,125228],[125228,125194],[125195,125229],[125229,125195],[125196,125230],[125230,125196],[125197,125231],[125231,125197],[125198,125232],[125232,125198],[125199,125233],[125233,125199],[125200,125234],[125234,125200],[125201,125235],[125235,125201],[125202,125236],[125236,125202],[125203,125237],[125237,125203],[125204,125238],[125238,125204],[125205,125239],[125239,125205],[125206,125240],[125240,125206],[125207,125241],[125241,125207],[125208,125242],[125242,125208],[125209,125243],[125243,125209],[125210,125244],[125244,125210],[125211,125245],[125245,125211],[125212,125246],[125246,125212],[125213,125247],[125247,125213],[125214,125248],[125248,125214],[125215,125249],[125249,125215],[125216,125250],[125250,125216],[125217,125251],[125251,125217]]))();static C=[[0,31,1],[127,159,1],[173,888,715],[889,896,7],[897,899,1],[907,909,2],[930,1328,398],[1367,1368,1],[1419,1420,1],[1424,1480,56],[1481,1487,1],[1515,1518,1],[1525,1541,1],[1564,1757,193],[1806,1807,1],[1867,1868,1],[1970,1983,1],[2043,2044,1],[2094,2095,1],[2111,2140,29],[2141,2143,2],[2155,2159,1],[2191,2198,1],[2274,2436,162],[2445,2446,1],[2449,2450,1],[2473,2481,8],[2483,2485,1],[2490,2491,1],[2501,2502,1],[2505,2506,1],[2511,2518,1],[2520,2523,1],[2526,2532,6],[2533,2559,26],[2560,2564,4],[2571,2574,1],[2577,2578,1],[2601,2609,8],[2612,2618,3],[2619,2621,2],[2627,2630,1],[2633,2634,1],[2638,2640,1],[2642,2648,1],[2653,2655,2],[2656,2661,1],[2679,2688,1],[2692,2702,10],[2706,2729,23],[2737,2740,3],[2746,2747,1],[2758,2766,4],[2767,2769,2],[2770,2783,1],[2788,2789,1],[2802,2808,1],[2816,2820,4],[2829,2830,1],[2833,2834,1],[2857,2865,8],[2868,2874,6],[2875,2885,10],[2886,2889,3],[2890,2894,4],[2895,2900,1],[2904,2907,1],[2910,2916,6],[2917,2936,19],[2937,2945,1],[2948,2955,7],[2956,2957,1],[2961,2966,5],[2967,2968,1],[2971,2973,2],[2976,2978,1],[2981,2983,1],[2987,2989,1],[3002,3005,1],[3011,3013,1],[3017,3022,5],[3023,3025,2],[3026,3030,1],[3032,3045,1],[3067,3071,1],[3085,3089,4],[3113,3130,17],[3131,3141,10],[3145,3150,5],[3151,3156,1],[3159,3163,4],[3164,3166,2],[3167,3172,5],[3173,3184,11],[3185,3190,1],[3213,3217,4],[3241,3252,11],[3258,3259,1],[3269,3273,4],[3278,3284,1],[3287,3292,1],[3295,3300,5],[3301,3312,11],[3316,3327,1],[3341,3345,4],[3397,3401,4],[3408,3411,1],[3428,3429,1],[3456,3460,4],[3479,3481,1],[3506,3516,10],[3518,3519,1],[3527,3529,1],[3531,3534,1],[3541,3543,2],[3552,3557,1],[3568,3569,1],[3573,3584,1],[3643,3646,1],[3676,3712,1],[3715,3717,2],[3723,3748,25],[3750,3774,24],[3775,3781,6],[3783,3791,8],[3802,3803,1],[3808,3839,1],[3912,3949,37],[3950,3952,1],[3992,4029,37],[4045,4059,14],[4060,4095,1],[4294,4296,2],[4297,4300,1],[4302,4303,1],[4681,4686,5],[4687,4695,8],[4697,4702,5],[4703,4745,42],[4750,4751,1],[4785,4790,5],[4791,4799,8],[4801,4806,5],[4807,4823,16],[4881,4886,5],[4887,4955,68],[4956,4989,33],[4990,4991,1],[5018,5023,1],[5110,5111,1],[5118,5119,1],[5789,5791,1],[5881,5887,1],[5910,5918,1],[5943,5951,1],[5972,5983,1],[5997,6001,4],[6004,6015,1],[6110,6111,1],[6122,6127,1],[6138,6143,1],[6158,6170,12],[6171,6175,1],[6265,6271,1],[6315,6319,1],[6390,6399,1],[6431,6444,13],[6445,6447,1],[6460,6463,1],[6465,6467,1],[6510,6511,1],[6517,6527,1],[6572,6575,1],[6602,6607,1],[6619,6621,1],[6684,6685,1],[6751,6781,30],[6782,6794,12],[6795,6799,1],[6810,6815,1],[6830,6831,1],[6863,6911,1],[6989,7156,167],[7157,7163,1],[7224,7226,1],[7242,7244,1],[7307,7311,1],[7355,7356,1],[7368,7375,1],[7419,7423,1],[7958,7959,1],[7966,7967,1],[8006,8007,1],[8014,8015,1],[8024,8030,2],[8062,8063,1],[8117,8133,16],[8148,8149,1],[8156,8176,20],[8177,8181,4],[8191,8203,12],[8204,8207,1],[8234,8238,1],[8288,8303,1],[8306,8307,1],[8335,8349,14],[8350,8351,1],[8385,8399,1],[8433,8447,1],[8588,8591,1],[9258,9279,1],[9291,9311,1],[11124,11125,1],[11158,11508,350],[11509,11512,1],[11558,11560,2],[11561,11564,1],[11566,11567,1],[11624,11630,1],[11633,11646,1],[11671,11679,1],[11687,11743,8],[11870,11903,1],[11930,12020,90],[12021,12031,1],[12246,12271,1],[12352,12439,87],[12440,12544,104],[12545,12548,1],[12592,12687,95],[12774,12782,1],[12831,42125,29294],[42126,42127,1],[42183,42191,1],[42540,42559,1],[42744,42751,1],[42958,42959,1],[42962,42964,2],[42973,42993,1],[43053,43055,1],[43066,43071,1],[43128,43135,1],[43206,43213,1],[43226,43231,1],[43348,43358,1],[43389,43391,1],[43470,43482,12],[43483,43485,1],[43519,43575,56],[43576,43583,1],[43598,43599,1],[43610,43611,1],[43715,43738,1],[43767,43776,1],[43783,43784,1],[43791,43792,1],[43799,43807,1],[43815,43823,8],[43884,43887,1],[44014,44015,1],[44026,44031,1],[55204,55215,1],[55239,55242,1],[55292,63743,1],[64110,64111,1],[64218,64255,1],[64263,64274,1],[64280,64284,1],[64311,64317,6],[64319,64325,3],[64451,64466,1],[64912,64913,1],[64968,64974,1],[64976,65007,1],[65050,65055,1],[65107,65127,20],[65132,65135,1],[65141,65277,136],[65278,65280,1],[65471,65473,1],[65480,65481,1],[65488,65489,1],[65496,65497,1],[65501,65503,1],[65511,65519,8],[65520,65531,1],[65534,65535,1],[65548,65575,27],[65595,65598,3],[65614,65615,1],[65630,65663,1],[65787,65791,1],[65795,65798,1],[65844,65846,1],[65935,65949,14],[65950,65951,1],[65953,65999,1],[66046,66175,1],[66205,66207,1],[66257,66271,1],[66300,66303,1],[66340,66348,1],[66379,66383,1],[66427,66431,1],[66462,66500,38],[66501,66503,1],[66518,66559,1],[66718,66719,1],[66730,66735,1],[66772,66775,1],[66812,66815,1],[66856,66863,1],[66916,66926,1],[66939,66955,16],[66963,66966,3],[66978,66994,16],[67002,67005,3],[67006,67007,1],[67060,67071,1],[67383,67391,1],[67414,67423,1],[67432,67455,1],[67462,67505,43],[67515,67583,1],[67590,67591,1],[67593,67638,45],[67641,67643,1],[67645,67646,1],[67670,67743,73],[67744,67750,1],[67760,67807,1],[67827,67830,3],[67831,67834,1],[67868,67870,1],[67898,67902,1],[67904,67967,1],[68024,68027,1],[68048,68049,1],[68100,68103,3],[68104,68107,1],[68116,68120,4],[68150,68151,1],[68155,68158,1],[68169,68175,1],[68185,68191,1],[68256,68287,1],[68327,68330,1],[68343,68351,1],[68406,68408,1],[68438,68439,1],[68467,68471,1],[68498,68504,1],[68509,68520,1],[68528,68607,1],[68681,68735,1],[68787,68799,1],[68851,68857,1],[68904,68911,1],[68922,68927,1],[68966,68968,1],[68998,69005,1],[69008,69215,1],[69247,69290,43],[69294,69295,1],[69298,69313,1],[69317,69371,1],[69416,69423,1],[69466,69487,1],[69514,69551,1],[69580,69599,1],[69623,69631,1],[69710,69713,1],[69750,69758,1],[69821,69827,6],[69828,69839,1],[69865,69871,1],[69882,69887,1],[69941,69960,19],[69961,69967,1],[70007,70015,1],[70112,70133,21],[70134,70143,1],[70162,70210,48],[70211,70271,1],[70279,70281,2],[70286,70302,16],[70314,70319,1],[70379,70383,1],[70394,70399,1],[70404,70413,9],[70414,70417,3],[70418,70441,23],[70449,70452,3],[70458,70469,11],[70470,70473,3],[70474,70478,4],[70479,70481,2],[70482,70486,1],[70488,70492,1],[70500,70501,1],[70509,70511,1],[70517,70527,1],[70538,70540,2],[70541,70543,2],[70582,70593,11],[70595,70596,1],[70598,70603,5],[70614,70617,3],[70618,70624,1],[70627,70655,1],[70748,70754,6],[70755,70783,1],[70856,70863,1],[70874,71039,1],[71094,71095,1],[71134,71167,1],[71237,71247,1],[71258,71263,1],[71277,71295,1],[71354,71359,1],[71370,71375,1],[71396,71423,1],[71451,71452,1],[71468,71471,1],[71495,71679,1],[71740,71839,1],[71923,71934,1],[71943,71944,1],[71946,71947,1],[71956,71959,3],[71990,71993,3],[71994,72007,13],[72008,72015,1],[72026,72095,1],[72104,72105,1],[72152,72153,1],[72165,72191,1],[72264,72271,1],[72355,72367,1],[72441,72447,1],[72458,72639,1],[72674,72687,1],[72698,72703,1],[72713,72759,46],[72774,72783,1],[72813,72815,1],[72848,72849,1],[72872,72887,15],[72888,72959,1],[72967,72970,3],[73015,73017,1],[73019,73022,3],[73032,73039,1],[73050,73055,1],[73062,73065,3],[73103,73106,3],[73113,73119,1],[73130,73439,1],[73465,73471,1],[73489,73531,42],[73532,73533,1],[73563,73647,1],[73649,73663,1],[73714,73726,1],[74650,74751,1],[74863,74869,6],[74870,74879,1],[75076,77711,1],[77811,77823,1],[78896,78911,1],[78934,78943,1],[82939,82943,1],[83527,90367,1],[90426,92159,1],[92729,92735,1],[92767,92778,11],[92779,92781,1],[92863,92874,11],[92875,92879,1],[92910,92911,1],[92918,92927,1],[92998,93007,1],[93018,93026,8],[93048,93052,1],[93072,93503,1],[93562,93759,1],[93851,93951,1],[94027,94030,1],[94088,94094,1],[94112,94175,1],[94181,94191,1],[94194,94207,1],[100344,100351,1],[101590,101630,1],[101641,110575,1],[110580,110588,8],[110591,110883,292],[110884,110897,1],[110899,110927,1],[110931,110932,1],[110934,110947,1],[110952,110959,1],[111356,113663,1],[113771,113775,1],[113789,113791,1],[113801,113807,1],[113818,113819,1],[113824,117759,1],[118010,118015,1],[118452,118527,1],[118574,118575,1],[118599,118607,1],[118724,118783,1],[119030,119039,1],[119079,119080,1],[119155,119162,1],[119275,119295,1],[119366,119487,1],[119508,119519,1],[119540,119551,1],[119639,119647,1],[119673,119807,1],[119893,119965,72],[119968,119969,1],[119971,119972,1],[119975,119976,1],[119981,119994,13],[119996,120004,8],[120070,120075,5],[120076,120085,9],[120093,120122,29],[120127,120133,6],[120135,120137,1],[120145,120486,341],[120487,120780,293],[120781,121484,703],[121485,121498,1],[121504,121520,16],[121521,122623,1],[122655,122660,1],[122667,122879,1],[122887,122905,18],[122906,122914,8],[122917,122923,6],[122924,122927,1],[122990,123022,1],[123024,123135,1],[123181,123183,1],[123198,123199,1],[123210,123213,1],[123216,123535,1],[123567,123583,1],[123642,123646,1],[123648,124111,1],[124154,124367,1],[124411,124414,1],[124416,124895,1],[124903,124908,5],[124911,124927,16],[125125,125126,1],[125143,125183,1],[125260,125263,1],[125274,125277,1],[125280,126064,1],[126133,126208,1],[126270,126463,1],[126468,126496,28],[126499,126501,2],[126502,126504,2],[126515,126520,5],[126522,126524,2],[126525,126529,1],[126531,126534,1],[126536,126540,2],[126544,126547,3],[126549,126550,1],[126552,126560,2],[126563,126565,2],[126566,126571,5],[126579,126589,5],[126591,126602,11],[126620,126624,1],[126628,126634,6],[126652,126703,1],[126706,126975,1],[127020,127023,1],[127124,127135,1],[127151,127152,1],[127168,127184,16],[127222,127231,1],[127406,127461,1],[127491,127503,1],[127548,127551,1],[127561,127567,1],[127570,127583,1],[127590,127743,1],[128728,128731,1],[128749,128751,1],[128765,128767,1],[128887,128890,1],[128986,128991,1],[129004,129007,1],[129009,129023,1],[129036,129039,1],[129096,129103,1],[129114,129119,1],[129160,129167,1],[129198,129199,1],[129212,129215,1],[129218,129279,1],[129620,129631,1],[129646,129647,1],[129661,129663,1],[129674,129678,1],[129735,129741,1],[129757,129758,1],[129770,129775,1],[129785,129791,1],[129939,130042,103],[130043,131071,1],[173792,173823,1],[177978,177983,1],[178206,178207,1],[183970,183983,1],[191457,191471,1],[192094,194559,1],[195102,196607,1],[201547,201551,1],[205744,917759,1],[918e3,1114111,1]];static Cc=[[0,31,1],[127,159,1]];static Cf=[[173,1536,1363],[1537,1541,1],[1564,1757,193],[1807,2192,385],[2193,2274,81],[6158,8203,2045],[8204,8207,1],[8234,8238,1],[8288,8292,1],[8294,8303,1],[65279,65529,250],[65530,65531,1],[69821,69837,16],[78896,78911,1],[113824,113827,1],[119155,119162,1],[917505,917536,31],[917537,917631,1]];static Co=[[57344,63743,1],[983040,1048573,1],[1048576,1114109,1]];static Cs=[[55296,57343,1]];static L=[[65,90,1],[97,122,1],[170,181,11],[186,192,6],[193,214,1],[216,246,1],[248,705,1],[710,721,1],[736,740,1],[748,750,2],[880,884,1],[886,887,1],[890,893,1],[895,902,7],[904,906,1],[908,910,2],[911,929,1],[931,1013,1],[1015,1153,1],[1162,1327,1],[1329,1366,1],[1369,1376,7],[1377,1416,1],[1488,1514,1],[1519,1522,1],[1568,1610,1],[1646,1647,1],[1649,1747,1],[1749,1765,16],[1766,1774,8],[1775,1786,11],[1787,1788,1],[1791,1808,17],[1810,1839,1],[1869,1957,1],[1969,1994,25],[1995,2026,1],[2036,2037,1],[2042,2048,6],[2049,2069,1],[2074,2084,10],[2088,2112,24],[2113,2136,1],[2144,2154,1],[2160,2183,1],[2185,2190,1],[2208,2249,1],[2308,2361,1],[2365,2384,19],[2392,2401,1],[2417,2432,1],[2437,2444,1],[2447,2448,1],[2451,2472,1],[2474,2480,1],[2482,2486,4],[2487,2489,1],[2493,2510,17],[2524,2525,1],[2527,2529,1],[2544,2545,1],[2556,2565,9],[2566,2570,1],[2575,2576,1],[2579,2600,1],[2602,2608,1],[2610,2611,1],[2613,2614,1],[2616,2617,1],[2649,2652,1],[2654,2674,20],[2675,2676,1],[2693,2701,1],[2703,2705,1],[2707,2728,1],[2730,2736,1],[2738,2739,1],[2741,2745,1],[2749,2768,19],[2784,2785,1],[2809,2821,12],[2822,2828,1],[2831,2832,1],[2835,2856,1],[2858,2864,1],[2866,2867,1],[2869,2873,1],[2877,2908,31],[2909,2911,2],[2912,2913,1],[2929,2947,18],[2949,2954,1],[2958,2960,1],[2962,2965,1],[2969,2970,1],[2972,2974,2],[2975,2979,4],[2980,2984,4],[2985,2986,1],[2990,3001,1],[3024,3077,53],[3078,3084,1],[3086,3088,1],[3090,3112,1],[3114,3129,1],[3133,3160,27],[3161,3162,1],[3165,3168,3],[3169,3200,31],[3205,3212,1],[3214,3216,1],[3218,3240,1],[3242,3251,1],[3253,3257,1],[3261,3293,32],[3294,3296,2],[3297,3313,16],[3314,3332,18],[3333,3340,1],[3342,3344,1],[3346,3386,1],[3389,3406,17],[3412,3414,1],[3423,3425,1],[3450,3455,1],[3461,3478,1],[3482,3505,1],[3507,3515,1],[3517,3520,3],[3521,3526,1],[3585,3632,1],[3634,3635,1],[3648,3654,1],[3713,3714,1],[3716,3718,2],[3719,3722,1],[3724,3747,1],[3749,3751,2],[3752,3760,1],[3762,3763,1],[3773,3776,3],[3777,3780,1],[3782,3804,22],[3805,3807,1],[3840,3904,64],[3905,3911,1],[3913,3948,1],[3976,3980,1],[4096,4138,1],[4159,4176,17],[4177,4181,1],[4186,4189,1],[4193,4197,4],[4198,4206,8],[4207,4208,1],[4213,4225,1],[4238,4256,18],[4257,4293,1],[4295,4301,6],[4304,4346,1],[4348,4680,1],[4682,4685,1],[4688,4694,1],[4696,4698,2],[4699,4701,1],[4704,4744,1],[4746,4749,1],[4752,4784,1],[4786,4789,1],[4792,4798,1],[4800,4802,2],[4803,4805,1],[4808,4822,1],[4824,4880,1],[4882,4885,1],[4888,4954,1],[4992,5007,1],[5024,5109,1],[5112,5117,1],[5121,5740,1],[5743,5759,1],[5761,5786,1],[5792,5866,1],[5873,5880,1],[5888,5905,1],[5919,5937,1],[5952,5969,1],[5984,5996,1],[5998,6e3,1],[6016,6067,1],[6103,6108,5],[6176,6264,1],[6272,6276,1],[6279,6312,1],[6314,6320,6],[6321,6389,1],[6400,6430,1],[6480,6509,1],[6512,6516,1],[6528,6571,1],[6576,6601,1],[6656,6678,1],[6688,6740,1],[6823,6917,94],[6918,6963,1],[6981,6988,1],[7043,7072,1],[7086,7087,1],[7098,7141,1],[7168,7203,1],[7245,7247,1],[7258,7293,1],[7296,7306,1],[7312,7354,1],[7357,7359,1],[7401,7404,1],[7406,7411,1],[7413,7414,1],[7418,7424,6],[7425,7615,1],[7680,7957,1],[7960,7965,1],[7968,8005,1],[8008,8013,1],[8016,8023,1],[8025,8031,2],[8032,8061,1],[8064,8116,1],[8118,8124,1],[8126,8130,4],[8131,8132,1],[8134,8140,1],[8144,8147,1],[8150,8155,1],[8160,8172,1],[8178,8180,1],[8182,8188,1],[8305,8319,14],[8336,8348,1],[8450,8455,5],[8458,8467,1],[8469,8473,4],[8474,8477,1],[8484,8490,2],[8491,8493,1],[8495,8505,1],[8508,8511,1],[8517,8521,1],[8526,8579,53],[8580,11264,2684],[11265,11492,1],[11499,11502,1],[11506,11507,1],[11520,11557,1],[11559,11565,6],[11568,11623,1],[11631,11648,17],[11649,11670,1],[11680,11686,1],[11688,11694,1],[11696,11702,1],[11704,11710,1],[11712,11718,1],[11720,11726,1],[11728,11734,1],[11736,11742,1],[11823,12293,470],[12294,12337,43],[12338,12341,1],[12347,12348,1],[12353,12438,1],[12445,12447,1],[12449,12538,1],[12540,12543,1],[12549,12591,1],[12593,12686,1],[12704,12735,1],[12784,12799,1],[13312,19903,1],[19968,42124,1],[42192,42237,1],[42240,42508,1],[42512,42527,1],[42538,42539,1],[42560,42606,1],[42623,42653,1],[42656,42725,1],[42775,42783,1],[42786,42888,1],[42891,42957,1],[42960,42961,1],[42963,42965,2],[42966,42972,1],[42994,43009,1],[43011,43013,1],[43015,43018,1],[43020,43042,1],[43072,43123,1],[43138,43187,1],[43250,43255,1],[43259,43261,2],[43262,43274,12],[43275,43301,1],[43312,43334,1],[43360,43388,1],[43396,43442,1],[43471,43488,17],[43489,43492,1],[43494,43503,1],[43514,43518,1],[43520,43560,1],[43584,43586,1],[43588,43595,1],[43616,43638,1],[43642,43646,4],[43647,43695,1],[43697,43701,4],[43702,43705,3],[43706,43709,1],[43712,43714,2],[43739,43741,1],[43744,43754,1],[43762,43764,1],[43777,43782,1],[43785,43790,1],[43793,43798,1],[43808,43814,1],[43816,43822,1],[43824,43866,1],[43868,43881,1],[43888,44002,1],[44032,55203,1],[55216,55238,1],[55243,55291,1],[63744,64109,1],[64112,64217,1],[64256,64262,1],[64275,64279,1],[64285,64287,2],[64288,64296,1],[64298,64310,1],[64312,64316,1],[64318,64320,2],[64321,64323,2],[64324,64326,2],[64327,64433,1],[64467,64829,1],[64848,64911,1],[64914,64967,1],[65008,65019,1],[65136,65140,1],[65142,65276,1],[65313,65338,1],[65345,65370,1],[65382,65470,1],[65474,65479,1],[65482,65487,1],[65490,65495,1],[65498,65500,1],[65536,65547,1],[65549,65574,1],[65576,65594,1],[65596,65597,1],[65599,65613,1],[65616,65629,1],[65664,65786,1],[66176,66204,1],[66208,66256,1],[66304,66335,1],[66349,66368,1],[66370,66377,1],[66384,66421,1],[66432,66461,1],[66464,66499,1],[66504,66511,1],[66560,66717,1],[66736,66771,1],[66776,66811,1],[66816,66855,1],[66864,66915,1],[66928,66938,1],[66940,66954,1],[66956,66962,1],[66964,66965,1],[66967,66977,1],[66979,66993,1],[66995,67001,1],[67003,67004,1],[67008,67059,1],[67072,67382,1],[67392,67413,1],[67424,67431,1],[67456,67461,1],[67463,67504,1],[67506,67514,1],[67584,67589,1],[67592,67594,2],[67595,67637,1],[67639,67640,1],[67644,67647,3],[67648,67669,1],[67680,67702,1],[67712,67742,1],[67808,67826,1],[67828,67829,1],[67840,67861,1],[67872,67897,1],[67968,68023,1],[68030,68031,1],[68096,68112,16],[68113,68115,1],[68117,68119,1],[68121,68149,1],[68192,68220,1],[68224,68252,1],[68288,68295,1],[68297,68324,1],[68352,68405,1],[68416,68437,1],[68448,68466,1],[68480,68497,1],[68608,68680,1],[68736,68786,1],[68800,68850,1],[68864,68899,1],[68938,68965,1],[68975,68997,1],[69248,69289,1],[69296,69297,1],[69314,69316,1],[69376,69404,1],[69415,69424,9],[69425,69445,1],[69488,69505,1],[69552,69572,1],[69600,69622,1],[69635,69687,1],[69745,69746,1],[69749,69763,14],[69764,69807,1],[69840,69864,1],[69891,69926,1],[69956,69959,3],[69968,70002,1],[70006,70019,13],[70020,70066,1],[70081,70084,1],[70106,70108,2],[70144,70161,1],[70163,70187,1],[70207,70208,1],[70272,70278,1],[70280,70282,2],[70283,70285,1],[70287,70301,1],[70303,70312,1],[70320,70366,1],[70405,70412,1],[70415,70416,1],[70419,70440,1],[70442,70448,1],[70450,70451,1],[70453,70457,1],[70461,70480,19],[70493,70497,1],[70528,70537,1],[70539,70542,3],[70544,70581,1],[70583,70609,26],[70611,70656,45],[70657,70708,1],[70727,70730,1],[70751,70753,1],[70784,70831,1],[70852,70853,1],[70855,71040,185],[71041,71086,1],[71128,71131,1],[71168,71215,1],[71236,71296,60],[71297,71338,1],[71352,71424,72],[71425,71450,1],[71488,71494,1],[71680,71723,1],[71840,71903,1],[71935,71942,1],[71945,71948,3],[71949,71955,1],[71957,71958,1],[71960,71983,1],[71999,72001,2],[72096,72103,1],[72106,72144,1],[72161,72163,2],[72192,72203,11],[72204,72242,1],[72250,72272,22],[72284,72329,1],[72349,72368,19],[72369,72440,1],[72640,72672,1],[72704,72712,1],[72714,72750,1],[72768,72818,50],[72819,72847,1],[72960,72966,1],[72968,72969,1],[72971,73008,1],[73030,73056,26],[73057,73061,1],[73063,73064,1],[73066,73097,1],[73112,73440,328],[73441,73458,1],[73474,73476,2],[73477,73488,1],[73490,73523,1],[73648,73728,80],[73729,74649,1],[74880,75075,1],[77712,77808,1],[77824,78895,1],[78913,78918,1],[78944,82938,1],[82944,83526,1],[90368,90397,1],[92160,92728,1],[92736,92766,1],[92784,92862,1],[92880,92909,1],[92928,92975,1],[92992,92995,1],[93027,93047,1],[93053,93071,1],[93504,93548,1],[93760,93823,1],[93952,94026,1],[94032,94099,67],[94100,94111,1],[94176,94177,1],[94179,94208,29],[94209,100343,1],[100352,101589,1],[101631,101640,1],[110576,110579,1],[110581,110587,1],[110589,110590,1],[110592,110882,1],[110898,110928,30],[110929,110930,1],[110933,110948,15],[110949,110951,1],[110960,111355,1],[113664,113770,1],[113776,113788,1],[113792,113800,1],[113808,113817,1],[119808,119892,1],[119894,119964,1],[119966,119967,1],[119970,119973,3],[119974,119977,3],[119978,119980,1],[119982,119993,1],[119995,119997,2],[119998,120003,1],[120005,120069,1],[120071,120074,1],[120077,120084,1],[120086,120092,1],[120094,120121,1],[120123,120126,1],[120128,120132,1],[120134,120138,4],[120139,120144,1],[120146,120485,1],[120488,120512,1],[120514,120538,1],[120540,120570,1],[120572,120596,1],[120598,120628,1],[120630,120654,1],[120656,120686,1],[120688,120712,1],[120714,120744,1],[120746,120770,1],[120772,120779,1],[122624,122654,1],[122661,122666,1],[122928,122989,1],[123136,123180,1],[123191,123197,1],[123214,123536,322],[123537,123565,1],[123584,123627,1],[124112,124139,1],[124368,124397,1],[124400,124896,496],[124897,124902,1],[124904,124907,1],[124909,124910,1],[124912,124926,1],[124928,125124,1],[125184,125251,1],[125259,126464,1205],[126465,126467,1],[126469,126495,1],[126497,126498,1],[126500,126503,3],[126505,126514,1],[126516,126519,1],[126521,126523,2],[126530,126535,5],[126537,126541,2],[126542,126543,1],[126545,126546,1],[126548,126551,3],[126553,126561,2],[126562,126564,2],[126567,126570,1],[126572,126578,1],[126580,126583,1],[126585,126588,1],[126590,126592,2],[126593,126601,1],[126603,126619,1],[126625,126627,1],[126629,126633,1],[126635,126651,1],[131072,173791,1],[173824,177977,1],[177984,178205,1],[178208,183969,1],[183984,191456,1],[191472,192093,1],[194560,195101,1],[196608,201546,1],[201552,205743,1]];static foldL=[[837,837,1]];static Ll=[[97,122,1],[181,223,42],[224,246,1],[248,255,1],[257,311,2],[312,328,2],[329,375,2],[378,382,2],[383,384,1],[387,389,2],[392,396,4],[397,402,5],[405,409,4],[410,411,1],[414,417,3],[419,421,2],[424,426,2],[427,429,2],[432,436,4],[438,441,3],[442,445,3],[446,447,1],[454,460,3],[462,476,2],[477,495,2],[496,499,3],[501,505,4],[507,563,2],[564,569,1],[572,575,3],[576,578,2],[583,591,2],[592,659,1],[661,687,1],[881,883,2],[887,891,4],[892,893,1],[912,940,28],[941,974,1],[976,977,1],[981,983,1],[985,1007,2],[1008,1011,1],[1013,1019,3],[1020,1072,52],[1073,1119,1],[1121,1153,2],[1163,1215,2],[1218,1230,2],[1231,1327,2],[1376,1416,1],[4304,4346,1],[4349,4351,1],[5112,5117,1],[7296,7304,1],[7306,7424,118],[7425,7467,1],[7531,7543,1],[7545,7578,1],[7681,7829,2],[7830,7837,1],[7839,7935,2],[7936,7943,1],[7952,7957,1],[7968,7975,1],[7984,7991,1],[8e3,8005,1],[8016,8023,1],[8032,8039,1],[8048,8061,1],[8064,8071,1],[8080,8087,1],[8096,8103,1],[8112,8116,1],[8118,8119,1],[8126,8130,4],[8131,8132,1],[8134,8135,1],[8144,8147,1],[8150,8151,1],[8160,8167,1],[8178,8180,1],[8182,8183,1],[8458,8462,4],[8463,8467,4],[8495,8505,5],[8508,8509,1],[8518,8521,1],[8526,8580,54],[11312,11359,1],[11361,11365,4],[11366,11372,2],[11377,11379,2],[11380,11382,2],[11383,11387,1],[11393,11491,2],[11492,11500,8],[11502,11507,5],[11520,11557,1],[11559,11565,6],[42561,42605,2],[42625,42651,2],[42787,42799,2],[42800,42801,1],[42803,42865,2],[42866,42872,1],[42874,42876,2],[42879,42887,2],[42892,42894,2],[42897,42899,2],[42900,42901,1],[42903,42921,2],[42927,42933,6],[42935,42947,2],[42952,42954,2],[42957,42961,4],[42963,42971,2],[42998,43002,4],[43824,43866,1],[43872,43880,1],[43888,43967,1],[64256,64262,1],[64275,64279,1],[65345,65370,1],[66600,66639,1],[66776,66811,1],[66967,66977,1],[66979,66993,1],[66995,67001,1],[67003,67004,1],[68800,68850,1],[68976,68997,1],[71872,71903,1],[93792,93823,1],[119834,119859,1],[119886,119892,1],[119894,119911,1],[119938,119963,1],[119990,119993,1],[119995,119997,2],[119998,120003,1],[120005,120015,1],[120042,120067,1],[120094,120119,1],[120146,120171,1],[120198,120223,1],[120250,120275,1],[120302,120327,1],[120354,120379,1],[120406,120431,1],[120458,120485,1],[120514,120538,1],[120540,120545,1],[120572,120596,1],[120598,120603,1],[120630,120654,1],[120656,120661,1],[120688,120712,1],[120714,120719,1],[120746,120770,1],[120772,120777,1],[120779,122624,1845],[122625,122633,1],[122635,122654,1],[122661,122666,1],[125218,125251,1]];static foldLl=[[65,90,1],[192,214,1],[216,222,1],[256,302,2],[306,310,2],[313,327,2],[330,376,2],[377,381,2],[385,386,1],[388,390,2],[391,393,2],[394,395,1],[398,401,1],[403,404,1],[406,408,1],[412,413,1],[415,416,1],[418,422,2],[423,425,2],[428,430,2],[431,433,2],[434,435,1],[437,439,2],[440,444,4],[452,453,1],[455,456,1],[458,459,1],[461,475,2],[478,494,2],[497,498,1],[500,502,2],[503,504,1],[506,562,2],[570,571,1],[573,574,1],[577,579,2],[580,582,1],[584,590,2],[837,880,43],[882,886,4],[895,902,7],[904,906,1],[908,910,2],[911,913,2],[914,929,1],[931,939,1],[975,984,9],[986,1006,2],[1012,1015,3],[1017,1018,1],[1021,1071,1],[1120,1152,2],[1162,1216,2],[1217,1229,2],[1232,1326,2],[1329,1366,1],[4256,4293,1],[4295,4301,6],[5024,5109,1],[7305,7312,7],[7313,7354,1],[7357,7359,1],[7680,7828,2],[7838,7934,2],[7944,7951,1],[7960,7965,1],[7976,7983,1],[7992,7999,1],[8008,8013,1],[8025,8031,2],[8040,8047,1],[8072,8079,1],[8088,8095,1],[8104,8111,1],[8120,8124,1],[8136,8140,1],[8152,8155,1],[8168,8172,1],[8184,8188,1],[8486,8490,4],[8491,8498,7],[8579,11264,2685],[11265,11311,1],[11360,11362,2],[11363,11364,1],[11367,11373,2],[11374,11376,1],[11378,11381,3],[11390,11392,1],[11394,11490,2],[11499,11501,2],[11506,42560,31054],[42562,42604,2],[42624,42650,2],[42786,42798,2],[42802,42862,2],[42873,42877,2],[42878,42886,2],[42891,42893,2],[42896,42898,2],[42902,42922,2],[42923,42926,1],[42928,42932,1],[42934,42948,2],[42949,42951,1],[42953,42955,2],[42956,42960,4],[42966,42972,2],[42997,65313,22316],[65314,65338,1],[66560,66599,1],[66736,66771,1],[66928,66938,1],[66940,66954,1],[66956,66962,1],[66964,66965,1],[68736,68786,1],[68944,68965,1],[71840,71871,1],[93760,93791,1],[125184,125217,1]];static Lm=[[688,705,1],[710,721,1],[736,740,1],[748,750,2],[884,890,6],[1369,1600,231],[1765,1766,1],[2036,2037,1],[2042,2074,32],[2084,2088,4],[2249,2417,168],[3654,3782,128],[4348,6103,1755],[6211,6823,612],[7288,7293,1],[7468,7530,1],[7544,7579,35],[7580,7615,1],[8305,8319,14],[8336,8348,1],[11388,11389,1],[11631,11823,192],[12293,12337,44],[12338,12341,1],[12347,12445,98],[12446,12540,94],[12541,12542,1],[40981,42232,1251],[42233,42237,1],[42508,42623,115],[42652,42653,1],[42775,42783,1],[42864,42888,24],[42994,42996,1],[43e3,43001,1],[43471,43494,23],[43632,43741,109],[43763,43764,1],[43868,43871,1],[43881,65392,21511],[65438,65439,1],[67456,67461,1],[67463,67504,1],[67506,67514,1],[68942,68975,33],[92992,92995,1],[93504,93506,1],[93547,93548,1],[94099,94111,1],[94176,94177,1],[94179,110576,16397],[110577,110579,1],[110581,110587,1],[110589,110590,1],[122928,122989,1],[123191,123197,1],[124139,125259,1120]];static Lo=[[170,186,16],[443,448,5],[449,451,1],[660,1488,828],[1489,1514,1],[1519,1522,1],[1568,1599,1],[1601,1610,1],[1646,1647,1],[1649,1747,1],[1749,1774,25],[1775,1786,11],[1787,1788,1],[1791,1808,17],[1810,1839,1],[1869,1957,1],[1969,1994,25],[1995,2026,1],[2048,2069,1],[2112,2136,1],[2144,2154,1],[2160,2183,1],[2185,2190,1],[2208,2248,1],[2308,2361,1],[2365,2384,19],[2392,2401,1],[2418,2432,1],[2437,2444,1],[2447,2448,1],[2451,2472,1],[2474,2480,1],[2482,2486,4],[2487,2489,1],[2493,2510,17],[2524,2525,1],[2527,2529,1],[2544,2545,1],[2556,2565,9],[2566,2570,1],[2575,2576,1],[2579,2600,1],[2602,2608,1],[2610,2611,1],[2613,2614,1],[2616,2617,1],[2649,2652,1],[2654,2674,20],[2675,2676,1],[2693,2701,1],[2703,2705,1],[2707,2728,1],[2730,2736,1],[2738,2739,1],[2741,2745,1],[2749,2768,19],[2784,2785,1],[2809,2821,12],[2822,2828,1],[2831,2832,1],[2835,2856,1],[2858,2864,1],[2866,2867,1],[2869,2873,1],[2877,2908,31],[2909,2911,2],[2912,2913,1],[2929,2947,18],[2949,2954,1],[2958,2960,1],[2962,2965,1],[2969,2970,1],[2972,2974,2],[2975,2979,4],[2980,2984,4],[2985,2986,1],[2990,3001,1],[3024,3077,53],[3078,3084,1],[3086,3088,1],[3090,3112,1],[3114,3129,1],[3133,3160,27],[3161,3162,1],[3165,3168,3],[3169,3200,31],[3205,3212,1],[3214,3216,1],[3218,3240,1],[3242,3251,1],[3253,3257,1],[3261,3293,32],[3294,3296,2],[3297,3313,16],[3314,3332,18],[3333,3340,1],[3342,3344,1],[3346,3386,1],[3389,3406,17],[3412,3414,1],[3423,3425,1],[3450,3455,1],[3461,3478,1],[3482,3505,1],[3507,3515,1],[3517,3520,3],[3521,3526,1],[3585,3632,1],[3634,3635,1],[3648,3653,1],[3713,3714,1],[3716,3718,2],[3719,3722,1],[3724,3747,1],[3749,3751,2],[3752,3760,1],[3762,3763,1],[3773,3776,3],[3777,3780,1],[3804,3807,1],[3840,3904,64],[3905,3911,1],[3913,3948,1],[3976,3980,1],[4096,4138,1],[4159,4176,17],[4177,4181,1],[4186,4189,1],[4193,4197,4],[4198,4206,8],[4207,4208,1],[4213,4225,1],[4238,4352,114],[4353,4680,1],[4682,4685,1],[4688,4694,1],[4696,4698,2],[4699,4701,1],[4704,4744,1],[4746,4749,1],[4752,4784,1],[4786,4789,1],[4792,4798,1],[4800,4802,2],[4803,4805,1],[4808,4822,1],[4824,4880,1],[4882,4885,1],[4888,4954,1],[4992,5007,1],[5121,5740,1],[5743,5759,1],[5761,5786,1],[5792,5866,1],[5873,5880,1],[5888,5905,1],[5919,5937,1],[5952,5969,1],[5984,5996,1],[5998,6e3,1],[6016,6067,1],[6108,6176,68],[6177,6210,1],[6212,6264,1],[6272,6276,1],[6279,6312,1],[6314,6320,6],[6321,6389,1],[6400,6430,1],[6480,6509,1],[6512,6516,1],[6528,6571,1],[6576,6601,1],[6656,6678,1],[6688,6740,1],[6917,6963,1],[6981,6988,1],[7043,7072,1],[7086,7087,1],[7098,7141,1],[7168,7203,1],[7245,7247,1],[7258,7287,1],[7401,7404,1],[7406,7411,1],[7413,7414,1],[7418,8501,1083],[8502,8504,1],[11568,11623,1],[11648,11670,1],[11680,11686,1],[11688,11694,1],[11696,11702,1],[11704,11710,1],[11712,11718,1],[11720,11726,1],[11728,11734,1],[11736,11742,1],[12294,12348,54],[12353,12438,1],[12447,12449,2],[12450,12538,1],[12543,12549,6],[12550,12591,1],[12593,12686,1],[12704,12735,1],[12784,12799,1],[13312,19903,1],[19968,40980,1],[40982,42124,1],[42192,42231,1],[42240,42507,1],[42512,42527,1],[42538,42539,1],[42606,42656,50],[42657,42725,1],[42895,42999,104],[43003,43009,1],[43011,43013,1],[43015,43018,1],[43020,43042,1],[43072,43123,1],[43138,43187,1],[43250,43255,1],[43259,43261,2],[43262,43274,12],[43275,43301,1],[43312,43334,1],[43360,43388,1],[43396,43442,1],[43488,43492,1],[43495,43503,1],[43514,43518,1],[43520,43560,1],[43584,43586,1],[43588,43595,1],[43616,43631,1],[43633,43638,1],[43642,43646,4],[43647,43695,1],[43697,43701,4],[43702,43705,3],[43706,43709,1],[43712,43714,2],[43739,43740,1],[43744,43754,1],[43762,43777,15],[43778,43782,1],[43785,43790,1],[43793,43798,1],[43808,43814,1],[43816,43822,1],[43968,44002,1],[44032,55203,1],[55216,55238,1],[55243,55291,1],[63744,64109,1],[64112,64217,1],[64285,64287,2],[64288,64296,1],[64298,64310,1],[64312,64316,1],[64318,64320,2],[64321,64323,2],[64324,64326,2],[64327,64433,1],[64467,64829,1],[64848,64911,1],[64914,64967,1],[65008,65019,1],[65136,65140,1],[65142,65276,1],[65382,65391,1],[65393,65437,1],[65440,65470,1],[65474,65479,1],[65482,65487,1],[65490,65495,1],[65498,65500,1],[65536,65547,1],[65549,65574,1],[65576,65594,1],[65596,65597,1],[65599,65613,1],[65616,65629,1],[65664,65786,1],[66176,66204,1],[66208,66256,1],[66304,66335,1],[66349,66368,1],[66370,66377,1],[66384,66421,1],[66432,66461,1],[66464,66499,1],[66504,66511,1],[66640,66717,1],[66816,66855,1],[66864,66915,1],[67008,67059,1],[67072,67382,1],[67392,67413,1],[67424,67431,1],[67584,67589,1],[67592,67594,2],[67595,67637,1],[67639,67640,1],[67644,67647,3],[67648,67669,1],[67680,67702,1],[67712,67742,1],[67808,67826,1],[67828,67829,1],[67840,67861,1],[67872,67897,1],[67968,68023,1],[68030,68031,1],[68096,68112,16],[68113,68115,1],[68117,68119,1],[68121,68149,1],[68192,68220,1],[68224,68252,1],[68288,68295,1],[68297,68324,1],[68352,68405,1],[68416,68437,1],[68448,68466,1],[68480,68497,1],[68608,68680,1],[68864,68899,1],[68938,68941,1],[68943,69248,305],[69249,69289,1],[69296,69297,1],[69314,69316,1],[69376,69404,1],[69415,69424,9],[69425,69445,1],[69488,69505,1],[69552,69572,1],[69600,69622,1],[69635,69687,1],[69745,69746,1],[69749,69763,14],[69764,69807,1],[69840,69864,1],[69891,69926,1],[69956,69959,3],[69968,70002,1],[70006,70019,13],[70020,70066,1],[70081,70084,1],[70106,70108,2],[70144,70161,1],[70163,70187,1],[70207,70208,1],[70272,70278,1],[70280,70282,2],[70283,70285,1],[70287,70301,1],[70303,70312,1],[70320,70366,1],[70405,70412,1],[70415,70416,1],[70419,70440,1],[70442,70448,1],[70450,70451,1],[70453,70457,1],[70461,70480,19],[70493,70497,1],[70528,70537,1],[70539,70542,3],[70544,70581,1],[70583,70609,26],[70611,70656,45],[70657,70708,1],[70727,70730,1],[70751,70753,1],[70784,70831,1],[70852,70853,1],[70855,71040,185],[71041,71086,1],[71128,71131,1],[71168,71215,1],[71236,71296,60],[71297,71338,1],[71352,71424,72],[71425,71450,1],[71488,71494,1],[71680,71723,1],[71935,71942,1],[71945,71948,3],[71949,71955,1],[71957,71958,1],[71960,71983,1],[71999,72001,2],[72096,72103,1],[72106,72144,1],[72161,72163,2],[72192,72203,11],[72204,72242,1],[72250,72272,22],[72284,72329,1],[72349,72368,19],[72369,72440,1],[72640,72672,1],[72704,72712,1],[72714,72750,1],[72768,72818,50],[72819,72847,1],[72960,72966,1],[72968,72969,1],[72971,73008,1],[73030,73056,26],[73057,73061,1],[73063,73064,1],[73066,73097,1],[73112,73440,328],[73441,73458,1],[73474,73476,2],[73477,73488,1],[73490,73523,1],[73648,73728,80],[73729,74649,1],[74880,75075,1],[77712,77808,1],[77824,78895,1],[78913,78918,1],[78944,82938,1],[82944,83526,1],[90368,90397,1],[92160,92728,1],[92736,92766,1],[92784,92862,1],[92880,92909,1],[92928,92975,1],[93027,93047,1],[93053,93071,1],[93507,93546,1],[93952,94026,1],[94032,94208,176],[94209,100343,1],[100352,101589,1],[101631,101640,1],[110592,110882,1],[110898,110928,30],[110929,110930,1],[110933,110948,15],[110949,110951,1],[110960,111355,1],[113664,113770,1],[113776,113788,1],[113792,113800,1],[113808,113817,1],[122634,123136,502],[123137,123180,1],[123214,123536,322],[123537,123565,1],[123584,123627,1],[124112,124138,1],[124368,124397,1],[124400,124896,496],[124897,124902,1],[124904,124907,1],[124909,124910,1],[124912,124926,1],[124928,125124,1],[126464,126467,1],[126469,126495,1],[126497,126498,1],[126500,126503,3],[126505,126514,1],[126516,126519,1],[126521,126523,2],[126530,126535,5],[126537,126541,2],[126542,126543,1],[126545,126546,1],[126548,126551,3],[126553,126561,2],[126562,126564,2],[126567,126570,1],[126572,126578,1],[126580,126583,1],[126585,126588,1],[126590,126592,2],[126593,126601,1],[126603,126619,1],[126625,126627,1],[126629,126633,1],[126635,126651,1],[131072,173791,1],[173824,177977,1],[177984,178205,1],[178208,183969,1],[183984,191456,1],[191472,192093,1],[194560,195101,1],[196608,201546,1],[201552,205743,1]];static Lt=[[453,459,3],[498,8072,7574],[8073,8079,1],[8088,8095,1],[8104,8111,1],[8124,8140,16],[8188,8188,1]];static foldLt=[[452,454,2],[455,457,2],[458,460,2],[497,499,2],[8064,8071,1],[8080,8087,1],[8096,8103,1],[8115,8131,16],[8179,8179,1]];static Lu=[[65,90,1],[192,214,1],[216,222,1],[256,310,2],[313,327,2],[330,376,2],[377,381,2],[385,386,1],[388,390,2],[391,393,2],[394,395,1],[398,401,1],[403,404,1],[406,408,1],[412,413,1],[415,416,1],[418,422,2],[423,425,2],[428,430,2],[431,433,2],[434,435,1],[437,439,2],[440,444,4],[452,461,3],[463,475,2],[478,494,2],[497,500,3],[502,504,1],[506,562,2],[570,571,1],[573,574,1],[577,579,2],[580,582,1],[584,590,2],[880,882,2],[886,895,9],[902,904,2],[905,906,1],[908,910,2],[911,913,2],[914,929,1],[931,939,1],[975,978,3],[979,980,1],[984,1006,2],[1012,1015,3],[1017,1018,1],[1021,1071,1],[1120,1152,2],[1162,1216,2],[1217,1229,2],[1232,1326,2],[1329,1366,1],[4256,4293,1],[4295,4301,6],[5024,5109,1],[7305,7312,7],[7313,7354,1],[7357,7359,1],[7680,7828,2],[7838,7934,2],[7944,7951,1],[7960,7965,1],[7976,7983,1],[7992,7999,1],[8008,8013,1],[8025,8031,2],[8040,8047,1],[8120,8123,1],[8136,8139,1],[8152,8155,1],[8168,8172,1],[8184,8187,1],[8450,8455,5],[8459,8461,1],[8464,8466,1],[8469,8473,4],[8474,8477,1],[8484,8490,2],[8491,8493,1],[8496,8499,1],[8510,8511,1],[8517,8579,62],[11264,11311,1],[11360,11362,2],[11363,11364,1],[11367,11373,2],[11374,11376,1],[11378,11381,3],[11390,11392,1],[11394,11490,2],[11499,11501,2],[11506,42560,31054],[42562,42604,2],[42624,42650,2],[42786,42798,2],[42802,42862,2],[42873,42877,2],[42878,42886,2],[42891,42893,2],[42896,42898,2],[42902,42922,2],[42923,42926,1],[42928,42932,1],[42934,42948,2],[42949,42951,1],[42953,42955,2],[42956,42960,4],[42966,42972,2],[42997,65313,22316],[65314,65338,1],[66560,66599,1],[66736,66771,1],[66928,66938,1],[66940,66954,1],[66956,66962,1],[66964,66965,1],[68736,68786,1],[68944,68965,1],[71840,71871,1],[93760,93791,1],[119808,119833,1],[119860,119885,1],[119912,119937,1],[119964,119966,2],[119967,119973,3],[119974,119977,3],[119978,119980,1],[119982,119989,1],[120016,120041,1],[120068,120069,1],[120071,120074,1],[120077,120084,1],[120086,120092,1],[120120,120121,1],[120123,120126,1],[120128,120132,1],[120134,120138,4],[120139,120144,1],[120172,120197,1],[120224,120249,1],[120276,120301,1],[120328,120353,1],[120380,120405,1],[120432,120457,1],[120488,120512,1],[120546,120570,1],[120604,120628,1],[120662,120686,1],[120720,120744,1],[120778,125184,4406],[125185,125217,1]];static Upper=this.Lu;static foldLu=[[97,122,1],[181,223,42],[224,246,1],[248,255,1],[257,303,2],[307,311,2],[314,328,2],[331,375,2],[378,382,2],[383,384,1],[387,389,2],[392,396,4],[402,405,3],[409,411,1],[414,417,3],[419,421,2],[424,429,5],[432,436,4],[438,441,3],[445,447,2],[453,454,1],[456,457,1],[459,460,1],[462,476,2],[477,495,2],[498,499,1],[501,505,4],[507,543,2],[547,563,2],[572,575,3],[576,578,2],[583,591,2],[592,596,1],[598,599,1],[601,603,2],[604,608,4],[609,611,2],[612,614,1],[616,620,1],[623,625,2],[626,629,3],[637,640,3],[642,643,1],[647,652,1],[658,669,11],[670,837,167],[881,883,2],[887,891,4],[892,893,1],[940,943,1],[945,974,1],[976,977,1],[981,983,1],[985,1007,2],[1008,1011,1],[1013,1019,3],[1072,1119,1],[1121,1153,2],[1163,1215,2],[1218,1230,2],[1231,1327,2],[1377,1414,1],[4304,4346,1],[4349,4351,1],[5112,5117,1],[7296,7304,1],[7306,7545,239],[7549,7566,17],[7681,7829,2],[7835,7841,6],[7843,7935,2],[7936,7943,1],[7952,7957,1],[7968,7975,1],[7984,7991,1],[8e3,8005,1],[8017,8023,2],[8032,8039,1],[8048,8061,1],[8112,8113,1],[8126,8144,18],[8145,8160,15],[8161,8165,4],[8526,8580,54],[11312,11359,1],[11361,11365,4],[11366,11372,2],[11379,11382,3],[11393,11491,2],[11500,11502,2],[11507,11520,13],[11521,11557,1],[11559,11565,6],[42561,42605,2],[42625,42651,2],[42787,42799,2],[42803,42863,2],[42874,42876,2],[42879,42887,2],[42892,42897,5],[42899,42900,1],[42903,42921,2],[42933,42947,2],[42952,42954,2],[42957,42961,4],[42967,42971,2],[42998,43859,861],[43888,43967,1],[65345,65370,1],[66600,66639,1],[66776,66811,1],[66967,66977,1],[66979,66993,1],[66995,67001,1],[67003,67004,1],[68800,68850,1],[68976,68997,1],[71872,71903,1],[93792,93823,1],[125218,125251,1]];static M=[[768,879,1],[1155,1161,1],[1425,1469,1],[1471,1473,2],[1474,1476,2],[1477,1479,2],[1552,1562,1],[1611,1631,1],[1648,1750,102],[1751,1756,1],[1759,1764,1],[1767,1768,1],[1770,1773,1],[1809,1840,31],[1841,1866,1],[1958,1968,1],[2027,2035,1],[2045,2070,25],[2071,2073,1],[2075,2083,1],[2085,2087,1],[2089,2093,1],[2137,2139,1],[2199,2207,1],[2250,2273,1],[2275,2307,1],[2362,2364,1],[2366,2383,1],[2385,2391,1],[2402,2403,1],[2433,2435,1],[2492,2494,2],[2495,2500,1],[2503,2504,1],[2507,2509,1],[2519,2530,11],[2531,2558,27],[2561,2563,1],[2620,2622,2],[2623,2626,1],[2631,2632,1],[2635,2637,1],[2641,2672,31],[2673,2677,4],[2689,2691,1],[2748,2750,2],[2751,2757,1],[2759,2761,1],[2763,2765,1],[2786,2787,1],[2810,2815,1],[2817,2819,1],[2876,2878,2],[2879,2884,1],[2887,2888,1],[2891,2893,1],[2901,2903,1],[2914,2915,1],[2946,3006,60],[3007,3010,1],[3014,3016,1],[3018,3021,1],[3031,3072,41],[3073,3076,1],[3132,3134,2],[3135,3140,1],[3142,3144,1],[3146,3149,1],[3157,3158,1],[3170,3171,1],[3201,3203,1],[3260,3262,2],[3263,3268,1],[3270,3272,1],[3274,3277,1],[3285,3286,1],[3298,3299,1],[3315,3328,13],[3329,3331,1],[3387,3388,1],[3390,3396,1],[3398,3400,1],[3402,3405,1],[3415,3426,11],[3427,3457,30],[3458,3459,1],[3530,3535,5],[3536,3540,1],[3542,3544,2],[3545,3551,1],[3570,3571,1],[3633,3636,3],[3637,3642,1],[3655,3662,1],[3761,3764,3],[3765,3772,1],[3784,3790,1],[3864,3865,1],[3893,3897,2],[3902,3903,1],[3953,3972,1],[3974,3975,1],[3981,3991,1],[3993,4028,1],[4038,4139,101],[4140,4158,1],[4182,4185,1],[4190,4192,1],[4194,4196,1],[4199,4205,1],[4209,4212,1],[4226,4237,1],[4239,4250,11],[4251,4253,1],[4957,4959,1],[5906,5909,1],[5938,5940,1],[5970,5971,1],[6002,6003,1],[6068,6099,1],[6109,6155,46],[6156,6157,1],[6159,6277,118],[6278,6313,35],[6432,6443,1],[6448,6459,1],[6679,6683,1],[6741,6750,1],[6752,6780,1],[6783,6832,49],[6833,6862,1],[6912,6916,1],[6964,6980,1],[7019,7027,1],[7040,7042,1],[7073,7085,1],[7142,7155,1],[7204,7223,1],[7376,7378,1],[7380,7400,1],[7405,7412,7],[7415,7417,1],[7616,7679,1],[8400,8432,1],[11503,11505,1],[11647,11744,97],[11745,11775,1],[12330,12335,1],[12441,12442,1],[42607,42610,1],[42612,42621,1],[42654,42655,1],[42736,42737,1],[43010,43014,4],[43019,43043,24],[43044,43047,1],[43052,43136,84],[43137,43188,51],[43189,43205,1],[43232,43249,1],[43263,43302,39],[43303,43309,1],[43335,43347,1],[43392,43395,1],[43443,43456,1],[43493,43561,68],[43562,43574,1],[43587,43596,9],[43597,43643,46],[43644,43645,1],[43696,43698,2],[43699,43700,1],[43703,43704,1],[43710,43711,1],[43713,43755,42],[43756,43759,1],[43765,43766,1],[44003,44010,1],[44012,44013,1],[64286,65024,738],[65025,65039,1],[65056,65071,1],[66045,66272,227],[66422,66426,1],[68097,68099,1],[68101,68102,1],[68108,68111,1],[68152,68154,1],[68159,68325,166],[68326,68900,574],[68901,68903,1],[68969,68973,1],[69291,69292,1],[69372,69375,1],[69446,69456,1],[69506,69509,1],[69632,69634,1],[69688,69702,1],[69744,69747,3],[69748,69759,11],[69760,69762,1],[69808,69818,1],[69826,69888,62],[69889,69890,1],[69927,69940,1],[69957,69958,1],[70003,70016,13],[70017,70018,1],[70067,70080,1],[70089,70092,1],[70094,70095,1],[70188,70199,1],[70206,70209,3],[70367,70378,1],[70400,70403,1],[70459,70460,1],[70462,70468,1],[70471,70472,1],[70475,70477,1],[70487,70498,11],[70499,70502,3],[70503,70508,1],[70512,70516,1],[70584,70592,1],[70594,70597,3],[70599,70602,1],[70604,70608,1],[70610,70625,15],[70626,70709,83],[70710,70726,1],[70750,70832,82],[70833,70851,1],[71087,71093,1],[71096,71104,1],[71132,71133,1],[71216,71232,1],[71339,71351,1],[71453,71467,1],[71724,71738,1],[71984,71989,1],[71991,71992,1],[71995,71998,1],[72e3,72002,2],[72003,72145,142],[72146,72151,1],[72154,72160,1],[72164,72193,29],[72194,72202,1],[72243,72249,1],[72251,72254,1],[72263,72273,10],[72274,72283,1],[72330,72345,1],[72751,72758,1],[72760,72767,1],[72850,72871,1],[72873,72886,1],[73009,73014,1],[73018,73020,2],[73021,73023,2],[73024,73029,1],[73031,73098,67],[73099,73102,1],[73104,73105,1],[73107,73111,1],[73459,73462,1],[73472,73473,1],[73475,73524,49],[73525,73530,1],[73534,73538,1],[73562,78912,5350],[78919,78933,1],[90398,90415,1],[92912,92916,1],[92976,92982,1],[94031,94033,2],[94034,94087,1],[94095,94098,1],[94180,94192,12],[94193,113821,19628],[113822,118528,4706],[118529,118573,1],[118576,118598,1],[119141,119145,1],[119149,119154,1],[119163,119170,1],[119173,119179,1],[119210,119213,1],[119362,119364,1],[121344,121398,1],[121403,121452,1],[121461,121476,15],[121499,121503,1],[121505,121519,1],[122880,122886,1],[122888,122904,1],[122907,122913,1],[122915,122916,1],[122918,122922,1],[123023,123184,161],[123185,123190,1],[123566,123628,62],[123629,123631,1],[124140,124143,1],[124398,124399,1],[125136,125142,1],[125252,125258,1],[917760,917999,1]];static foldM=[[921,953,32],[8126,8126,1]];static Mc=[[2307,2363,56],[2366,2368,1],[2377,2380,1],[2382,2383,1],[2434,2435,1],[2494,2496,1],[2503,2504,1],[2507,2508,1],[2519,2563,44],[2622,2624,1],[2691,2750,59],[2751,2752,1],[2761,2763,2],[2764,2818,54],[2819,2878,59],[2880,2887,7],[2888,2891,3],[2892,2903,11],[3006,3007,1],[3009,3010,1],[3014,3016,1],[3018,3020,1],[3031,3073,42],[3074,3075,1],[3137,3140,1],[3202,3203,1],[3262,3264,2],[3265,3268,1],[3271,3272,1],[3274,3275,1],[3285,3286,1],[3315,3330,15],[3331,3390,59],[3391,3392,1],[3398,3400,1],[3402,3404,1],[3415,3458,43],[3459,3535,76],[3536,3537,1],[3544,3551,1],[3570,3571,1],[3902,3903,1],[3967,4139,172],[4140,4145,5],[4152,4155,3],[4156,4182,26],[4183,4194,11],[4195,4196,1],[4199,4205,1],[4227,4228,1],[4231,4236,1],[4239,4250,11],[4251,4252,1],[5909,5940,31],[6070,6078,8],[6079,6085,1],[6087,6088,1],[6435,6438,1],[6441,6443,1],[6448,6449,1],[6451,6456,1],[6681,6682,1],[6741,6743,2],[6753,6755,2],[6756,6765,9],[6766,6770,1],[6916,6965,49],[6971,6973,2],[6974,6977,1],[6979,6980,1],[7042,7073,31],[7078,7079,1],[7082,7143,61],[7146,7148,1],[7150,7154,4],[7155,7204,49],[7205,7211,1],[7220,7221,1],[7393,7415,22],[12334,12335,1],[43043,43044,1],[43047,43136,89],[43137,43188,51],[43189,43203,1],[43346,43347,1],[43395,43444,49],[43445,43450,5],[43451,43454,3],[43455,43456,1],[43567,43568,1],[43571,43572,1],[43597,43643,46],[43645,43755,110],[43758,43759,1],[43765,44003,238],[44004,44006,2],[44007,44009,2],[44010,44012,2],[69632,69634,2],[69762,69808,46],[69809,69810,1],[69815,69816,1],[69932,69957,25],[69958,70018,60],[70067,70069,1],[70079,70080,1],[70094,70188,94],[70189,70190,1],[70194,70195,1],[70197,70368,171],[70369,70370,1],[70402,70403,1],[70462,70463,1],[70465,70468,1],[70471,70472,1],[70475,70477,1],[70487,70498,11],[70499,70584,85],[70585,70586,1],[70594,70597,3],[70599,70602,1],[70604,70605,1],[70607,70709,102],[70710,70711,1],[70720,70721,1],[70725,70832,107],[70833,70834,1],[70841,70843,2],[70844,70846,1],[70849,71087,238],[71088,71089,1],[71096,71099,1],[71102,71216,114],[71217,71218,1],[71227,71228,1],[71230,71340,110],[71342,71343,1],[71350,71454,104],[71456,71457,1],[71462,71724,262],[71725,71726,1],[71736,71984,248],[71985,71989,1],[71991,71992,1],[71997,72e3,3],[72002,72145,143],[72146,72147,1],[72156,72159,1],[72164,72249,85],[72279,72280,1],[72343,72751,408],[72766,72873,107],[72881,72884,3],[73098,73102,1],[73107,73108,1],[73110,73461,351],[73462,73475,13],[73524,73525,1],[73534,73535,1],[73537,90410,16873],[90411,90412,1],[94033,94087,1],[94192,94193,1],[119141,119142,1],[119149,119154,1]];static Me=[[1160,1161,1],[6846,8413,1567],[8414,8416,1],[8418,8420,1],[42608,42610,1]];static Mn=[[768,879,1],[1155,1159,1],[1425,1469,1],[1471,1473,2],[1474,1476,2],[1477,1479,2],[1552,1562,1],[1611,1631,1],[1648,1750,102],[1751,1756,1],[1759,1764,1],[1767,1768,1],[1770,1773,1],[1809,1840,31],[1841,1866,1],[1958,1968,1],[2027,2035,1],[2045,2070,25],[2071,2073,1],[2075,2083,1],[2085,2087,1],[2089,2093,1],[2137,2139,1],[2199,2207,1],[2250,2273,1],[2275,2306,1],[2362,2364,2],[2369,2376,1],[2381,2385,4],[2386,2391,1],[2402,2403,1],[2433,2492,59],[2497,2500,1],[2509,2530,21],[2531,2558,27],[2561,2562,1],[2620,2625,5],[2626,2631,5],[2632,2635,3],[2636,2637,1],[2641,2672,31],[2673,2677,4],[2689,2690,1],[2748,2753,5],[2754,2757,1],[2759,2760,1],[2765,2786,21],[2787,2810,23],[2811,2815,1],[2817,2876,59],[2879,2881,2],[2882,2884,1],[2893,2901,8],[2902,2914,12],[2915,2946,31],[3008,3021,13],[3072,3076,4],[3132,3134,2],[3135,3136,1],[3142,3144,1],[3146,3149,1],[3157,3158,1],[3170,3171,1],[3201,3260,59],[3263,3270,7],[3276,3277,1],[3298,3299,1],[3328,3329,1],[3387,3388,1],[3393,3396,1],[3405,3426,21],[3427,3457,30],[3530,3538,8],[3539,3540,1],[3542,3633,91],[3636,3642,1],[3655,3662,1],[3761,3764,3],[3765,3772,1],[3784,3790,1],[3864,3865,1],[3893,3897,2],[3953,3966,1],[3968,3972,1],[3974,3975,1],[3981,3991,1],[3993,4028,1],[4038,4141,103],[4142,4144,1],[4146,4151,1],[4153,4154,1],[4157,4158,1],[4184,4185,1],[4190,4192,1],[4209,4212,1],[4226,4229,3],[4230,4237,7],[4253,4957,704],[4958,4959,1],[5906,5908,1],[5938,5939,1],[5970,5971,1],[6002,6003,1],[6068,6069,1],[6071,6077,1],[6086,6089,3],[6090,6099,1],[6109,6155,46],[6156,6157,1],[6159,6277,118],[6278,6313,35],[6432,6434,1],[6439,6440,1],[6450,6457,7],[6458,6459,1],[6679,6680,1],[6683,6742,59],[6744,6750,1],[6752,6754,2],[6757,6764,1],[6771,6780,1],[6783,6832,49],[6833,6845,1],[6847,6862,1],[6912,6915,1],[6964,6966,2],[6967,6970,1],[6972,6978,6],[7019,7027,1],[7040,7041,1],[7074,7077,1],[7080,7081,1],[7083,7085,1],[7142,7144,2],[7145,7149,4],[7151,7153,1],[7212,7219,1],[7222,7223,1],[7376,7378,1],[7380,7392,1],[7394,7400,1],[7405,7412,7],[7416,7417,1],[7616,7679,1],[8400,8412,1],[8417,8421,4],[8422,8432,1],[11503,11505,1],[11647,11744,97],[11745,11775,1],[12330,12333,1],[12441,12442,1],[42607,42612,5],[42613,42621,1],[42654,42655,1],[42736,42737,1],[43010,43014,4],[43019,43045,26],[43046,43052,6],[43204,43205,1],[43232,43249,1],[43263,43302,39],[43303,43309,1],[43335,43345,1],[43392,43394,1],[43443,43446,3],[43447,43449,1],[43452,43453,1],[43493,43561,68],[43562,43566,1],[43569,43570,1],[43573,43574,1],[43587,43596,9],[43644,43696,52],[43698,43700,1],[43703,43704,1],[43710,43711,1],[43713,43756,43],[43757,43766,9],[44005,44008,3],[44013,64286,20273],[65024,65039,1],[65056,65071,1],[66045,66272,227],[66422,66426,1],[68097,68099,1],[68101,68102,1],[68108,68111,1],[68152,68154,1],[68159,68325,166],[68326,68900,574],[68901,68903,1],[68969,68973,1],[69291,69292,1],[69372,69375,1],[69446,69456,1],[69506,69509,1],[69633,69688,55],[69689,69702,1],[69744,69747,3],[69748,69759,11],[69760,69761,1],[69811,69814,1],[69817,69818,1],[69826,69888,62],[69889,69890,1],[69927,69931,1],[69933,69940,1],[70003,70016,13],[70017,70070,53],[70071,70078,1],[70089,70092,1],[70095,70191,96],[70192,70193,1],[70196,70198,2],[70199,70206,7],[70209,70367,158],[70371,70378,1],[70400,70401,1],[70459,70460,1],[70464,70502,38],[70503,70508,1],[70512,70516,1],[70587,70592,1],[70606,70610,2],[70625,70626,1],[70712,70719,1],[70722,70724,1],[70726,70750,24],[70835,70840,1],[70842,70847,5],[70848,70850,2],[70851,71090,239],[71091,71093,1],[71100,71101,1],[71103,71104,1],[71132,71133,1],[71219,71226,1],[71229,71231,2],[71232,71339,107],[71341,71344,3],[71345,71349,1],[71351,71453,102],[71455,71458,3],[71459,71461,1],[71463,71467,1],[71727,71735,1],[71737,71738,1],[71995,71996,1],[71998,72003,5],[72148,72151,1],[72154,72155,1],[72160,72193,33],[72194,72202,1],[72243,72248,1],[72251,72254,1],[72263,72273,10],[72274,72278,1],[72281,72283,1],[72330,72342,1],[72344,72345,1],[72752,72758,1],[72760,72765,1],[72767,72850,83],[72851,72871,1],[72874,72880,1],[72882,72883,1],[72885,72886,1],[73009,73014,1],[73018,73020,2],[73021,73023,2],[73024,73029,1],[73031,73104,73],[73105,73109,4],[73111,73459,348],[73460,73472,12],[73473,73526,53],[73527,73530,1],[73536,73538,2],[73562,78912,5350],[78919,78933,1],[90398,90409,1],[90413,90415,1],[92912,92916,1],[92976,92982,1],[94031,94095,64],[94096,94098,1],[94180,113821,19641],[113822,118528,4706],[118529,118573,1],[118576,118598,1],[119143,119145,1],[119163,119170,1],[119173,119179,1],[119210,119213,1],[119362,119364,1],[121344,121398,1],[121403,121452,1],[121461,121476,15],[121499,121503,1],[121505,121519,1],[122880,122886,1],[122888,122904,1],[122907,122913,1],[122915,122916,1],[122918,122922,1],[123023,123184,161],[123185,123190,1],[123566,123628,62],[123629,123631,1],[124140,124143,1],[124398,124399,1],[125136,125142,1],[125252,125258,1],[917760,917999,1]];static foldMn=[[921,953,32],[8126,8126,1]];static N=[[48,57,1],[178,179,1],[185,188,3],[189,190,1],[1632,1641,1],[1776,1785,1],[1984,1993,1],[2406,2415,1],[2534,2543,1],[2548,2553,1],[2662,2671,1],[2790,2799,1],[2918,2927,1],[2930,2935,1],[3046,3058,1],[3174,3183,1],[3192,3198,1],[3302,3311,1],[3416,3422,1],[3430,3448,1],[3558,3567,1],[3664,3673,1],[3792,3801,1],[3872,3891,1],[4160,4169,1],[4240,4249,1],[4969,4988,1],[5870,5872,1],[6112,6121,1],[6128,6137,1],[6160,6169,1],[6470,6479,1],[6608,6618,1],[6784,6793,1],[6800,6809,1],[6992,7001,1],[7088,7097,1],[7232,7241,1],[7248,7257,1],[8304,8308,4],[8309,8313,1],[8320,8329,1],[8528,8578,1],[8581,8585,1],[9312,9371,1],[9450,9471,1],[10102,10131,1],[11517,12295,778],[12321,12329,1],[12344,12346,1],[12690,12693,1],[12832,12841,1],[12872,12879,1],[12881,12895,1],[12928,12937,1],[12977,12991,1],[42528,42537,1],[42726,42735,1],[43056,43061,1],[43216,43225,1],[43264,43273,1],[43472,43481,1],[43504,43513,1],[43600,43609,1],[44016,44025,1],[65296,65305,1],[65799,65843,1],[65856,65912,1],[65930,65931,1],[66273,66299,1],[66336,66339,1],[66369,66378,9],[66513,66517,1],[66720,66729,1],[67672,67679,1],[67705,67711,1],[67751,67759,1],[67835,67839,1],[67862,67867,1],[68028,68029,1],[68032,68047,1],[68050,68095,1],[68160,68168,1],[68221,68222,1],[68253,68255,1],[68331,68335,1],[68440,68447,1],[68472,68479,1],[68521,68527,1],[68858,68863,1],[68912,68921,1],[68928,68937,1],[69216,69246,1],[69405,69414,1],[69457,69460,1],[69573,69579,1],[69714,69743,1],[69872,69881,1],[69942,69951,1],[70096,70105,1],[70113,70132,1],[70384,70393,1],[70736,70745,1],[70864,70873,1],[71248,71257,1],[71360,71369,1],[71376,71395,1],[71472,71483,1],[71904,71922,1],[72016,72025,1],[72688,72697,1],[72784,72812,1],[73040,73049,1],[73120,73129,1],[73552,73561,1],[73664,73684,1],[74752,74862,1],[90416,90425,1],[92768,92777,1],[92864,92873,1],[93008,93017,1],[93019,93025,1],[93552,93561,1],[93824,93846,1],[118e3,118009,1],[119488,119507,1],[119520,119539,1],[119648,119672,1],[120782,120831,1],[123200,123209,1],[123632,123641,1],[124144,124153,1],[124401,124410,1],[125127,125135,1],[125264,125273,1],[126065,126123,1],[126125,126127,1],[126129,126132,1],[126209,126253,1],[126255,126269,1],[127232,127244,1],[130032,130041,1]];static Nd=[[48,57,1],[1632,1641,1],[1776,1785,1],[1984,1993,1],[2406,2415,1],[2534,2543,1],[2662,2671,1],[2790,2799,1],[2918,2927,1],[3046,3055,1],[3174,3183,1],[3302,3311,1],[3430,3439,1],[3558,3567,1],[3664,3673,1],[3792,3801,1],[3872,3881,1],[4160,4169,1],[4240,4249,1],[6112,6121,1],[6160,6169,1],[6470,6479,1],[6608,6617,1],[6784,6793,1],[6800,6809,1],[6992,7001,1],[7088,7097,1],[7232,7241,1],[7248,7257,1],[42528,42537,1],[43216,43225,1],[43264,43273,1],[43472,43481,1],[43504,43513,1],[43600,43609,1],[44016,44025,1],[65296,65305,1],[66720,66729,1],[68912,68921,1],[68928,68937,1],[69734,69743,1],[69872,69881,1],[69942,69951,1],[70096,70105,1],[70384,70393,1],[70736,70745,1],[70864,70873,1],[71248,71257,1],[71360,71369,1],[71376,71395,1],[71472,71481,1],[71904,71913,1],[72016,72025,1],[72688,72697,1],[72784,72793,1],[73040,73049,1],[73120,73129,1],[73552,73561,1],[90416,90425,1],[92768,92777,1],[92864,92873,1],[93008,93017,1],[93552,93561,1],[118e3,118009,1],[120782,120831,1],[123200,123209,1],[123632,123641,1],[124144,124153,1],[124401,124410,1],[125264,125273,1],[130032,130041,1]];static Nl=[[5870,5872,1],[8544,8578,1],[8581,8584,1],[12295,12321,26],[12322,12329,1],[12344,12346,1],[42726,42735,1],[65856,65908,1],[66369,66378,9],[66513,66517,1],[74752,74862,1]];static No=[[178,179,1],[185,188,3],[189,190,1],[2548,2553,1],[2930,2935,1],[3056,3058,1],[3192,3198,1],[3416,3422,1],[3440,3448,1],[3882,3891,1],[4969,4988,1],[6128,6137,1],[6618,8304,1686],[8308,8313,1],[8320,8329,1],[8528,8543,1],[8585,9312,727],[9313,9371,1],[9450,9471,1],[10102,10131,1],[11517,12690,1173],[12691,12693,1],[12832,12841,1],[12872,12879,1],[12881,12895,1],[12928,12937,1],[12977,12991,1],[43056,43061,1],[65799,65843,1],[65909,65912,1],[65930,65931,1],[66273,66299,1],[66336,66339,1],[67672,67679,1],[67705,67711,1],[67751,67759,1],[67835,67839,1],[67862,67867,1],[68028,68029,1],[68032,68047,1],[68050,68095,1],[68160,68168,1],[68221,68222,1],[68253,68255,1],[68331,68335,1],[68440,68447,1],[68472,68479,1],[68521,68527,1],[68858,68863,1],[69216,69246,1],[69405,69414,1],[69457,69460,1],[69573,69579,1],[69714,69733,1],[70113,70132,1],[71482,71483,1],[71914,71922,1],[72794,72812,1],[73664,73684,1],[93019,93025,1],[93824,93846,1],[119488,119507,1],[119520,119539,1],[119648,119672,1],[125127,125135,1],[126065,126123,1],[126125,126127,1],[126129,126132,1],[126209,126253,1],[126255,126269,1],[127232,127244,1]];static P=[[33,35,1],[37,42,1],[44,47,1],[58,59,1],[63,64,1],[91,93,1],[95,123,28],[125,161,36],[167,171,4],[182,183,1],[187,191,4],[894,903,9],[1370,1375,1],[1417,1418,1],[1470,1472,2],[1475,1478,3],[1523,1524,1],[1545,1546,1],[1548,1549,1],[1563,1565,2],[1566,1567,1],[1642,1645,1],[1748,1792,44],[1793,1805,1],[2039,2041,1],[2096,2110,1],[2142,2404,262],[2405,2416,11],[2557,2678,121],[2800,3191,391],[3204,3572,368],[3663,3674,11],[3675,3844,169],[3845,3858,1],[3860,3898,38],[3899,3901,1],[3973,4048,75],[4049,4052,1],[4057,4058,1],[4170,4175,1],[4347,4960,613],[4961,4968,1],[5120,5742,622],[5787,5788,1],[5867,5869,1],[5941,5942,1],[6100,6102,1],[6104,6106,1],[6144,6154,1],[6468,6469,1],[6686,6687,1],[6816,6822,1],[6824,6829,1],[6990,6991,1],[7002,7008,1],[7037,7039,1],[7164,7167,1],[7227,7231,1],[7294,7295,1],[7360,7367,1],[7379,8208,829],[8209,8231,1],[8240,8259,1],[8261,8273,1],[8275,8286,1],[8317,8318,1],[8333,8334,1],[8968,8971,1],[9001,9002,1],[10088,10101,1],[10181,10182,1],[10214,10223,1],[10627,10648,1],[10712,10715,1],[10748,10749,1],[11513,11516,1],[11518,11519,1],[11632,11776,144],[11777,11822,1],[11824,11855,1],[11858,11869,1],[12289,12291,1],[12296,12305,1],[12308,12319,1],[12336,12349,13],[12448,12539,91],[42238,42239,1],[42509,42511,1],[42611,42622,11],[42738,42743,1],[43124,43127,1],[43214,43215,1],[43256,43258,1],[43260,43310,50],[43311,43359,48],[43457,43469,1],[43486,43487,1],[43612,43615,1],[43742,43743,1],[43760,43761,1],[44011,64830,20819],[64831,65040,209],[65041,65049,1],[65072,65106,1],[65108,65121,1],[65123,65128,5],[65130,65131,1],[65281,65283,1],[65285,65290,1],[65292,65295,1],[65306,65307,1],[65311,65312,1],[65339,65341,1],[65343,65371,28],[65373,65375,2],[65376,65381,1],[65792,65794,1],[66463,66512,49],[66927,67671,744],[67871,67903,32],[68176,68184,1],[68223,68336,113],[68337,68342,1],[68409,68415,1],[68505,68508,1],[68974,69293,319],[69461,69465,1],[69510,69513,1],[69703,69709,1],[69819,69820,1],[69822,69825,1],[69952,69955,1],[70004,70005,1],[70085,70088,1],[70093,70107,14],[70109,70111,1],[70200,70205,1],[70313,70612,299],[70613,70615,2],[70616,70731,115],[70732,70735,1],[70746,70747,1],[70749,70854,105],[71105,71127,1],[71233,71235,1],[71264,71276,1],[71353,71484,131],[71485,71486,1],[71739,72004,265],[72005,72006,1],[72162,72255,93],[72256,72262,1],[72346,72348,1],[72350,72354,1],[72448,72457,1],[72673,72769,96],[72770,72773,1],[72816,72817,1],[73463,73464,1],[73539,73551,1],[73727,74864,1137],[74865,74868,1],[77809,77810,1],[92782,92783,1],[92917,92983,66],[92984,92987,1],[92996,93549,553],[93550,93551,1],[93847,93850,1],[94178,113823,19645],[121479,121483,1],[124415,125278,863],[125279,125279,1]];static Pc=[[95,8255,8160],[8256,8276,20],[65075,65076,1],[65101,65103,1],[65343,65343,1]];static Pd=[[45,1418,1373],[1470,5120,3650],[6150,8208,2058],[8209,8213,1],[11799,11802,3],[11834,11835,1],[11840,11869,29],[12316,12336,20],[12448,65073,52625],[65074,65112,38],[65123,65293,170],[68974,69293,319]];static Pe=[[41,93,52],[125,3899,3774],[3901,5788,1887],[8262,8318,56],[8334,8969,635],[8971,9002,31],[10089,10101,2],[10182,10215,33],[10217,10223,2],[10628,10648,2],[10713,10715,2],[10749,11811,1062],[11813,11817,2],[11862,11868,2],[12297,12305,2],[12309,12315,2],[12318,12319,1],[64830,65048,218],[65078,65092,2],[65096,65114,18],[65116,65118,2],[65289,65341,52],[65373,65379,3]];static Pf=[[187,8217,8030],[8221,8250,29],[11779,11781,2],[11786,11789,3],[11805,11809,4]];static Pi=[[171,8216,8045],[8219,8220,1],[8223,8249,26],[11778,11780,2],[11785,11788,3],[11804,11808,4]];static Po=[[33,35,1],[37,39,1],[42,46,2],[47,58,11],[59,63,4],[64,92,28],[161,167,6],[182,183,1],[191,894,703],[903,1370,467],[1371,1375,1],[1417,1472,55],[1475,1478,3],[1523,1524,1],[1545,1546,1],[1548,1549,1],[1563,1565,2],[1566,1567,1],[1642,1645,1],[1748,1792,44],[1793,1805,1],[2039,2041,1],[2096,2110,1],[2142,2404,262],[2405,2416,11],[2557,2678,121],[2800,3191,391],[3204,3572,368],[3663,3674,11],[3675,3844,169],[3845,3858,1],[3860,3973,113],[4048,4052,1],[4057,4058,1],[4170,4175,1],[4347,4960,613],[4961,4968,1],[5742,5867,125],[5868,5869,1],[5941,5942,1],[6100,6102,1],[6104,6106,1],[6144,6149,1],[6151,6154,1],[6468,6469,1],[6686,6687,1],[6816,6822,1],[6824,6829,1],[6990,6991,1],[7002,7008,1],[7037,7039,1],[7164,7167,1],[7227,7231,1],[7294,7295,1],[7360,7367,1],[7379,8214,835],[8215,8224,9],[8225,8231,1],[8240,8248,1],[8251,8254,1],[8257,8259,1],[8263,8273,1],[8275,8277,2],[8278,8286,1],[11513,11516,1],[11518,11519,1],[11632,11776,144],[11777,11782,5],[11783,11784,1],[11787,11790,3],[11791,11798,1],[11800,11801,1],[11803,11806,3],[11807,11818,11],[11819,11822,1],[11824,11833,1],[11836,11839,1],[11841,11843,2],[11844,11855,1],[11858,11860,1],[12289,12291,1],[12349,12539,190],[42238,42239,1],[42509,42511,1],[42611,42622,11],[42738,42743,1],[43124,43127,1],[43214,43215,1],[43256,43258,1],[43260,43310,50],[43311,43359,48],[43457,43469,1],[43486,43487,1],[43612,43615,1],[43742,43743,1],[43760,43761,1],[44011,65040,21029],[65041,65046,1],[65049,65072,23],[65093,65094,1],[65097,65100,1],[65104,65106,1],[65108,65111,1],[65119,65121,1],[65128,65130,2],[65131,65281,150],[65282,65283,1],[65285,65287,1],[65290,65294,2],[65295,65306,11],[65307,65311,4],[65312,65340,28],[65377,65380,3],[65381,65792,411],[65793,65794,1],[66463,66512,49],[66927,67671,744],[67871,67903,32],[68176,68184,1],[68223,68336,113],[68337,68342,1],[68409,68415,1],[68505,68508,1],[69461,69465,1],[69510,69513,1],[69703,69709,1],[69819,69820,1],[69822,69825,1],[69952,69955,1],[70004,70005,1],[70085,70088,1],[70093,70107,14],[70109,70111,1],[70200,70205,1],[70313,70612,299],[70613,70615,2],[70616,70731,115],[70732,70735,1],[70746,70747,1],[70749,70854,105],[71105,71127,1],[71233,71235,1],[71264,71276,1],[71353,71484,131],[71485,71486,1],[71739,72004,265],[72005,72006,1],[72162,72255,93],[72256,72262,1],[72346,72348,1],[72350,72354,1],[72448,72457,1],[72673,72769,96],[72770,72773,1],[72816,72817,1],[73463,73464,1],[73539,73551,1],[73727,74864,1137],[74865,74868,1],[77809,77810,1],[92782,92783,1],[92917,92983,66],[92984,92987,1],[92996,93549,553],[93550,93551,1],[93847,93850,1],[94178,113823,19645],[121479,121483,1],[124415,125278,863],[125279,125279,1]];static Ps=[[40,91,51],[123,3898,3775],[3900,5787,1887],[8218,8222,4],[8261,8317,56],[8333,8968,635],[8970,9001,31],[10088,10100,2],[10181,10214,33],[10216,10222,2],[10627,10647,2],[10712,10714,2],[10748,11810,1062],[11812,11816,2],[11842,11861,19],[11863,11867,2],[12296,12304,2],[12308,12314,2],[12317,64831,52514],[65047,65077,30],[65079,65091,2],[65095,65113,18],[65115,65117,2],[65288,65339,51],[65371,65375,4],[65378,65378,1]];static S=[[36,43,7],[60,62,1],[94,96,2],[124,126,2],[162,166,1],[168,169,1],[172,174,2],[175,177,1],[180,184,4],[215,247,32],[706,709,1],[722,735,1],[741,747,1],[749,751,2],[752,767,1],[885,900,15],[901,1014,113],[1154,1421,267],[1422,1423,1],[1542,1544,1],[1547,1550,3],[1551,1758,207],[1769,1789,20],[1790,2038,248],[2046,2047,1],[2184,2546,362],[2547,2554,7],[2555,2801,246],[2928,3059,131],[3060,3066,1],[3199,3407,208],[3449,3647,198],[3841,3843,1],[3859,3861,2],[3862,3863,1],[3866,3871,1],[3892,3896,2],[4030,4037,1],[4039,4044,1],[4046,4047,1],[4053,4056,1],[4254,4255,1],[5008,5017,1],[5741,6107,366],[6464,6622,158],[6623,6655,1],[7009,7018,1],[7028,7036,1],[8125,8127,2],[8128,8129,1],[8141,8143,1],[8157,8159,1],[8173,8175,1],[8189,8190,1],[8260,8274,14],[8314,8316,1],[8330,8332,1],[8352,8384,1],[8448,8449,1],[8451,8454,1],[8456,8457,1],[8468,8470,2],[8471,8472,1],[8478,8483,1],[8485,8489,2],[8494,8506,12],[8507,8512,5],[8513,8516,1],[8522,8525,1],[8527,8586,59],[8587,8592,5],[8593,8967,1],[8972,9e3,1],[9003,9257,1],[9280,9290,1],[9372,9449,1],[9472,10087,1],[10132,10180,1],[10183,10213,1],[10224,10626,1],[10649,10711,1],[10716,10747,1],[10750,11123,1],[11126,11157,1],[11159,11263,1],[11493,11498,1],[11856,11857,1],[11904,11929,1],[11931,12019,1],[12032,12245,1],[12272,12287,1],[12292,12306,14],[12307,12320,13],[12342,12343,1],[12350,12351,1],[12443,12444,1],[12688,12689,1],[12694,12703,1],[12736,12773,1],[12783,12800,17],[12801,12830,1],[12842,12871,1],[12880,12896,16],[12897,12927,1],[12938,12976,1],[12992,13311,1],[19904,19967,1],[42128,42182,1],[42752,42774,1],[42784,42785,1],[42889,42890,1],[43048,43051,1],[43062,43065,1],[43639,43641,1],[43867,43882,15],[43883,64297,20414],[64434,64450,1],[64832,64847,1],[64975,65020,45],[65021,65023,1],[65122,65124,2],[65125,65126,1],[65129,65284,155],[65291,65308,17],[65309,65310,1],[65342,65344,2],[65372,65374,2],[65504,65510,1],[65512,65518,1],[65532,65533,1],[65847,65855,1],[65913,65929,1],[65932,65934,1],[65936,65948,1],[65952,66e3,48],[66001,66044,1],[67703,67704,1],[68296,69006,710],[69007,71487,2480],[73685,73713,1],[92988,92991,1],[92997,113820,20823],[117760,117999,1],[118016,118451,1],[118608,118723,1],[118784,119029,1],[119040,119078,1],[119081,119140,1],[119146,119148,1],[119171,119172,1],[119180,119209,1],[119214,119274,1],[119296,119361,1],[119365,119552,187],[119553,119638,1],[120513,120539,26],[120571,120597,26],[120629,120655,26],[120687,120713,26],[120745,120771,26],[120832,121343,1],[121399,121402,1],[121453,121460,1],[121462,121475,1],[121477,121478,1],[123215,123647,432],[126124,126128,4],[126254,126704,450],[126705,126976,271],[126977,127019,1],[127024,127123,1],[127136,127150,1],[127153,127167,1],[127169,127183,1],[127185,127221,1],[127245,127405,1],[127462,127490,1],[127504,127547,1],[127552,127560,1],[127568,127569,1],[127584,127589,1],[127744,128727,1],[128732,128748,1],[128752,128764,1],[128768,128886,1],[128891,128985,1],[128992,129003,1],[129008,129024,16],[129025,129035,1],[129040,129095,1],[129104,129113,1],[129120,129159,1],[129168,129197,1],[129200,129211,1],[129216,129217,1],[129280,129619,1],[129632,129645,1],[129648,129660,1],[129664,129673,1],[129679,129734,1],[129742,129756,1],[129759,129769,1],[129776,129784,1],[129792,129938,1],[129940,130031,1]];static Sc=[[36,162,126],[163,165,1],[1423,1547,124],[2046,2047,1],[2546,2547,1],[2555,2801,246],[3065,3647,582],[6107,8352,2245],[8353,8384,1],[43064,65020,21956],[65129,65284,155],[65504,65505,1],[65509,65510,1],[73693,73696,1],[123647,126128,2481]];static Sk=[[94,96,2],[168,175,7],[180,184,4],[706,709,1],[722,735,1],[741,747,1],[749,751,2],[752,767,1],[885,900,15],[901,2184,1283],[8125,8127,2],[8128,8129,1],[8141,8143,1],[8157,8159,1],[8173,8175,1],[8189,8190,1],[12443,12444,1],[42752,42774,1],[42784,42785,1],[42889,42890,1],[43867,43882,15],[43883,64434,20551],[64435,64450,1],[65342,65344,2],[65507,127995,62488],[127996,127999,1]];static Sm=[[43,60,17],[61,62,1],[124,126,2],[172,177,5],[215,247,32],[1014,1542,528],[1543,1544,1],[8260,8274,14],[8314,8316,1],[8330,8332,1],[8472,8512,40],[8513,8516,1],[8523,8592,69],[8593,8596,1],[8602,8603,1],[8608,8614,3],[8622,8654,32],[8655,8658,3],[8660,8692,32],[8693,8959,1],[8992,8993,1],[9084,9115,31],[9116,9139,1],[9180,9185,1],[9655,9665,10],[9720,9727,1],[9839,10176,337],[10177,10180,1],[10183,10213,1],[10224,10239,1],[10496,10626,1],[10649,10711,1],[10716,10747,1],[10750,11007,1],[11056,11076,1],[11079,11084,1],[64297,65122,825],[65124,65126,1],[65291,65308,17],[65309,65310,1],[65372,65374,2],[65506,65513,7],[65514,65516,1],[69006,69007,1],[120513,120539,26],[120571,120597,26],[120629,120655,26],[120687,120713,26],[120745,120771,26],[126704,126705,1]];static So=[[166,169,3],[174,176,2],[1154,1421,267],[1422,1550,128],[1551,1758,207],[1769,1789,20],[1790,2038,248],[2554,2928,374],[3059,3064,1],[3066,3199,133],[3407,3449,42],[3841,3843,1],[3859,3861,2],[3862,3863,1],[3866,3871,1],[3892,3896,2],[4030,4037,1],[4039,4044,1],[4046,4047,1],[4053,4056,1],[4254,4255,1],[5008,5017,1],[5741,6464,723],[6622,6655,1],[7009,7018,1],[7028,7036,1],[8448,8449,1],[8451,8454,1],[8456,8457,1],[8468,8470,2],[8471,8478,7],[8479,8483,1],[8485,8489,2],[8494,8506,12],[8507,8522,15],[8524,8525,1],[8527,8586,59],[8587,8597,10],[8598,8601,1],[8604,8607,1],[8609,8610,1],[8612,8613,1],[8615,8621,1],[8623,8653,1],[8656,8657,1],[8659,8661,2],[8662,8691,1],[8960,8967,1],[8972,8991,1],[8994,9e3,1],[9003,9083,1],[9085,9114,1],[9140,9179,1],[9186,9257,1],[9280,9290,1],[9372,9449,1],[9472,9654,1],[9656,9664,1],[9666,9719,1],[9728,9838,1],[9840,10087,1],[10132,10175,1],[10240,10495,1],[11008,11055,1],[11077,11078,1],[11085,11123,1],[11126,11157,1],[11159,11263,1],[11493,11498,1],[11856,11857,1],[11904,11929,1],[11931,12019,1],[12032,12245,1],[12272,12287,1],[12292,12306,14],[12307,12320,13],[12342,12343,1],[12350,12351,1],[12688,12689,1],[12694,12703,1],[12736,12773,1],[12783,12800,17],[12801,12830,1],[12842,12871,1],[12880,12896,16],[12897,12927,1],[12938,12976,1],[12992,13311,1],[19904,19967,1],[42128,42182,1],[43048,43051,1],[43062,43063,1],[43065,43639,574],[43640,43641,1],[64832,64847,1],[64975,65021,46],[65022,65023,1],[65508,65512,4],[65517,65518,1],[65532,65533,1],[65847,65855,1],[65913,65929,1],[65932,65934,1],[65936,65948,1],[65952,66e3,48],[66001,66044,1],[67703,67704,1],[68296,71487,3191],[73685,73692,1],[73697,73713,1],[92988,92991,1],[92997,113820,20823],[117760,117999,1],[118016,118451,1],[118608,118723,1],[118784,119029,1],[119040,119078,1],[119081,119140,1],[119146,119148,1],[119171,119172,1],[119180,119209,1],[119214,119274,1],[119296,119361,1],[119365,119552,187],[119553,119638,1],[120832,121343,1],[121399,121402,1],[121453,121460,1],[121462,121475,1],[121477,121478,1],[123215,126124,2909],[126254,126976,722],[126977,127019,1],[127024,127123,1],[127136,127150,1],[127153,127167,1],[127169,127183,1],[127185,127221,1],[127245,127405,1],[127462,127490,1],[127504,127547,1],[127552,127560,1],[127568,127569,1],[127584,127589,1],[127744,127994,1],[128e3,128727,1],[128732,128748,1],[128752,128764,1],[128768,128886,1],[128891,128985,1],[128992,129003,1],[129008,129024,16],[129025,129035,1],[129040,129095,1],[129104,129113,1],[129120,129159,1],[129168,129197,1],[129200,129211,1],[129216,129217,1],[129280,129619,1],[129632,129645,1],[129648,129660,1],[129664,129673,1],[129679,129734,1],[129742,129756,1],[129759,129769,1],[129776,129784,1],[129792,129938,1],[129940,130031,1]];static Z=[[32,160,128],[5760,8192,2432],[8193,8202,1],[8232,8233,1],[8239,8287,48],[12288,12288,1]];static Zl=[[8232,8232,1]];static Zp=[[8233,8233,1]];static Zs=[[32,160,128],[5760,8192,2432],[8193,8202,1],[8239,8287,48],[12288,12288,1]];static Adlam=[[125184,125259,1],[125264,125273,1],[125278,125279,1]];static Ahom=[[71424,71450,1],[71453,71467,1],[71472,71494,1]];static Anatolian_Hieroglyphs=[[82944,83526,1]];static Arabic=[[1536,1540,1],[1542,1547,1],[1549,1562,1],[1564,1566,1],[1568,1599,1],[1601,1610,1],[1622,1647,1],[1649,1756,1],[1758,1791,1],[1872,1919,1],[2160,2190,1],[2192,2193,1],[2199,2273,1],[2275,2303,1],[64336,64450,1],[64467,64829,1],[64832,64911,1],[64914,64967,1],[64975,65008,33],[65009,65023,1],[65136,65140,1],[65142,65276,1],[69216,69246,1],[69314,69316,1],[69372,69375,1],[126464,126467,1],[126469,126495,1],[126497,126498,1],[126500,126503,3],[126505,126514,1],[126516,126519,1],[126521,126523,2],[126530,126535,5],[126537,126541,2],[126542,126543,1],[126545,126546,1],[126548,126551,3],[126553,126561,2],[126562,126564,2],[126567,126570,1],[126572,126578,1],[126580,126583,1],[126585,126588,1],[126590,126592,2],[126593,126601,1],[126603,126619,1],[126625,126627,1],[126629,126633,1],[126635,126651,1],[126704,126705,1]];static Armenian=[[1329,1366,1],[1369,1418,1],[1421,1423,1],[64275,64279,1]];static Avestan=[[68352,68405,1],[68409,68415,1]];static Balinese=[[6912,6988,1],[6990,7039,1]];static Bamum=[[42656,42743,1],[92160,92728,1]];static Bassa_Vah=[[92880,92909,1],[92912,92917,1]];static Batak=[[7104,7155,1],[7164,7167,1]];static Bengali=[[2432,2435,1],[2437,2444,1],[2447,2448,1],[2451,2472,1],[2474,2480,1],[2482,2486,4],[2487,2489,1],[2492,2500,1],[2503,2504,1],[2507,2510,1],[2519,2524,5],[2525,2527,2],[2528,2531,1],[2534,2558,1]];static Bhaiksuki=[[72704,72712,1],[72714,72758,1],[72760,72773,1],[72784,72812,1]];static Bopomofo=[[746,747,1],[12549,12591,1],[12704,12735,1]];static Brahmi=[[69632,69709,1],[69714,69749,1],[69759,69759,1]];static Braille=[[10240,10495,1]];static Buginese=[[6656,6683,1],[6686,6687,1]];static Buhid=[[5952,5971,1]];static Canadian_Aboriginal=[[5120,5759,1],[6320,6389,1],[72368,72383,1]];static Carian=[[66208,66256,1]];static Caucasian_Albanian=[[66864,66915,1],[66927,66927,1]];static Chakma=[[69888,69940,1],[69942,69959,1]];static Cham=[[43520,43574,1],[43584,43597,1],[43600,43609,1],[43612,43615,1]];static Cherokee=[[5024,5109,1],[5112,5117,1],[43888,43967,1]];static Chorasmian=[[69552,69579,1]];static Common=[[0,64,1],[91,96,1],[123,169,1],[171,185,1],[187,191,1],[215,247,32],[697,735,1],[741,745,1],[748,767,1],[884,894,10],[901,903,2],[1541,1548,7],[1563,1567,4],[1600,1757,157],[2274,2404,130],[2405,3647,1242],[4053,4056,1],[4347,5867,1520],[5868,5869,1],[5941,5942,1],[6146,6147,1],[6149,7379,1230],[7393,7401,8],[7402,7404,1],[7406,7411,1],[7413,7415,1],[7418,8192,774],[8193,8203,1],[8206,8292,1],[8294,8304,1],[8308,8318,1],[8320,8334,1],[8352,8384,1],[8448,8485,1],[8487,8489,1],[8492,8497,1],[8499,8525,1],[8527,8543,1],[8585,8587,1],[8592,9257,1],[9280,9290,1],[9312,10239,1],[10496,11123,1],[11126,11157,1],[11159,11263,1],[11776,11869,1],[12272,12292,1],[12294,12296,2],[12297,12320,1],[12336,12343,1],[12348,12351,1],[12443,12444,1],[12448,12539,91],[12540,12688,148],[12689,12703,1],[12736,12773,1],[12783,12832,49],[12833,12895,1],[12927,13007,1],[13055,13144,89],[13145,13311,1],[19904,19967,1],[42752,42785,1],[42888,42890,1],[43056,43065,1],[43310,43471,161],[43867,43882,15],[43883,64830,20947],[64831,65040,209],[65041,65049,1],[65072,65106,1],[65108,65126,1],[65128,65131,1],[65279,65281,2],[65282,65312,1],[65339,65344,1],[65371,65381,1],[65392,65438,46],[65439,65504,65],[65505,65510,1],[65512,65518,1],[65529,65533,1],[65792,65794,1],[65799,65843,1],[65847,65855,1],[65936,65948,1],[66e3,66044,1],[66273,66299,1],[113824,113827,1],[117760,118009,1],[118016,118451,1],[118608,118723,1],[118784,119029,1],[119040,119078,1],[119081,119142,1],[119146,119162,1],[119171,119172,1],[119180,119209,1],[119214,119274,1],[119488,119507,1],[119520,119539,1],[119552,119638,1],[119648,119672,1],[119808,119892,1],[119894,119964,1],[119966,119967,1],[119970,119973,3],[119974,119977,3],[119978,119980,1],[119982,119993,1],[119995,119997,2],[119998,120003,1],[120005,120069,1],[120071,120074,1],[120077,120084,1],[120086,120092,1],[120094,120121,1],[120123,120126,1],[120128,120132,1],[120134,120138,4],[120139,120144,1],[120146,120485,1],[120488,120779,1],[120782,120831,1],[126065,126132,1],[126209,126269,1],[126976,127019,1],[127024,127123,1],[127136,127150,1],[127153,127167,1],[127169,127183,1],[127185,127221,1],[127232,127405,1],[127462,127487,1],[127489,127490,1],[127504,127547,1],[127552,127560,1],[127568,127569,1],[127584,127589,1],[127744,128727,1],[128732,128748,1],[128752,128764,1],[128768,128886,1],[128891,128985,1],[128992,129003,1],[129008,129024,16],[129025,129035,1],[129040,129095,1],[129104,129113,1],[129120,129159,1],[129168,129197,1],[129200,129211,1],[129216,129217,1],[129280,129619,1],[129632,129645,1],[129648,129660,1],[129664,129673,1],[129679,129734,1],[129742,129756,1],[129759,129769,1],[129776,129784,1],[129792,129938,1],[129940,130041,1],[917505,917536,31],[917537,917631,1]];static foldCommon=[[924,956,32]];static Coptic=[[994,1007,1],[11392,11507,1],[11513,11519,1]];static Cuneiform=[[73728,74649,1],[74752,74862,1],[74864,74868,1],[74880,75075,1]];static Cypriot=[[67584,67589,1],[67592,67594,2],[67595,67637,1],[67639,67640,1],[67644,67647,3]];static Cypro_Minoan=[[77712,77810,1]];static Cyrillic=[[1024,1156,1],[1159,1327,1],[7296,7306,1],[7467,7544,77],[11744,11775,1],[42560,42655,1],[65070,65071,1],[122928,122989,1],[123023,123023,1]];static Deseret=[[66560,66639,1]];static Devanagari=[[2304,2384,1],[2389,2403,1],[2406,2431,1],[43232,43263,1],[72448,72457,1]];static Dives_Akuru=[[71936,71942,1],[71945,71948,3],[71949,71955,1],[71957,71958,1],[71960,71989,1],[71991,71992,1],[71995,72006,1],[72016,72025,1]];static Dogra=[[71680,71739,1]];static Duployan=[[113664,113770,1],[113776,113788,1],[113792,113800,1],[113808,113817,1],[113820,113823,1]];static Egyptian_Hieroglyphs=[[77824,78933,1],[78944,82938,1]];static Elbasan=[[66816,66855,1]];static Elymaic=[[69600,69622,1]];static Ethiopic=[[4608,4680,1],[4682,4685,1],[4688,4694,1],[4696,4698,2],[4699,4701,1],[4704,4744,1],[4746,4749,1],[4752,4784,1],[4786,4789,1],[4792,4798,1],[4800,4802,2],[4803,4805,1],[4808,4822,1],[4824,4880,1],[4882,4885,1],[4888,4954,1],[4957,4988,1],[4992,5017,1],[11648,11670,1],[11680,11686,1],[11688,11694,1],[11696,11702,1],[11704,11710,1],[11712,11718,1],[11720,11726,1],[11728,11734,1],[11736,11742,1],[43777,43782,1],[43785,43790,1],[43793,43798,1],[43808,43814,1],[43816,43822,1],[124896,124902,1],[124904,124907,1],[124909,124910,1],[124912,124926,1]];static Garay=[[68928,68965,1],[68969,68997,1],[69006,69007,1]];static Georgian=[[4256,4293,1],[4295,4301,6],[4304,4346,1],[4348,4351,1],[7312,7354,1],[7357,7359,1],[11520,11557,1],[11559,11565,6]];static Glagolitic=[[11264,11359,1],[122880,122886,1],[122888,122904,1],[122907,122913,1],[122915,122916,1],[122918,122922,1]];static Gothic=[[66352,66378,1]];static Grantha=[[70400,70403,1],[70405,70412,1],[70415,70416,1],[70419,70440,1],[70442,70448,1],[70450,70451,1],[70453,70457,1],[70460,70468,1],[70471,70472,1],[70475,70477,1],[70480,70487,7],[70493,70499,1],[70502,70508,1],[70512,70516,1]];static Greek=[[880,883,1],[885,887,1],[890,893,1],[895,900,5],[902,904,2],[905,906,1],[908,910,2],[911,929,1],[931,993,1],[1008,1023,1],[7462,7466,1],[7517,7521,1],[7526,7530,1],[7615,7936,321],[7937,7957,1],[7960,7965,1],[7968,8005,1],[8008,8013,1],[8016,8023,1],[8025,8031,2],[8032,8061,1],[8064,8116,1],[8118,8132,1],[8134,8147,1],[8150,8155,1],[8157,8175,1],[8178,8180,1],[8182,8190,1],[8486,43877,35391],[65856,65934,1],[65952,119296,53344],[119297,119365,1]];static foldGreek=[[181,837,656]];static Gujarati=[[2689,2691,1],[2693,2701,1],[2703,2705,1],[2707,2728,1],[2730,2736,1],[2738,2739,1],[2741,2745,1],[2748,2757,1],[2759,2761,1],[2763,2765,1],[2768,2784,16],[2785,2787,1],[2790,2801,1],[2809,2815,1]];static Gunjala_Gondi=[[73056,73061,1],[73063,73064,1],[73066,73102,1],[73104,73105,1],[73107,73112,1],[73120,73129,1]];static Gurmukhi=[[2561,2563,1],[2565,2570,1],[2575,2576,1],[2579,2600,1],[2602,2608,1],[2610,2611,1],[2613,2614,1],[2616,2617,1],[2620,2622,2],[2623,2626,1],[2631,2632,1],[2635,2637,1],[2641,2649,8],[2650,2652,1],[2654,2662,8],[2663,2678,1]];static Gurung_Khema=[[90368,90425,1]];static Han=[[11904,11929,1],[11931,12019,1],[12032,12245,1],[12293,12295,2],[12321,12329,1],[12344,12347,1],[13312,19903,1],[19968,40959,1],[63744,64109,1],[64112,64217,1],[94178,94179,1],[94192,94193,1],[131072,173791,1],[173824,177977,1],[177984,178205,1],[178208,183969,1],[183984,191456,1],[191472,192093,1],[194560,195101,1],[196608,201546,1],[201552,205743,1]];static Hangul=[[4352,4607,1],[12334,12335,1],[12593,12686,1],[12800,12830,1],[12896,12926,1],[43360,43388,1],[44032,55203,1],[55216,55238,1],[55243,55291,1],[65440,65470,1],[65474,65479,1],[65482,65487,1],[65490,65495,1],[65498,65500,1]];static Hanifi_Rohingya=[[68864,68903,1],[68912,68921,1]];static Hanunoo=[[5920,5940,1]];static Hatran=[[67808,67826,1],[67828,67829,1],[67835,67839,1]];static Hebrew=[[1425,1479,1],[1488,1514,1],[1519,1524,1],[64285,64310,1],[64312,64316,1],[64318,64320,2],[64321,64323,2],[64324,64326,2],[64327,64335,1]];static Hiragana=[[12353,12438,1],[12445,12447,1],[110593,110879,1],[110898,110928,30],[110929,110930,1],[127488,127488,1]];static Imperial_Aramaic=[[67648,67669,1],[67671,67679,1]];static Inherited=[[768,879,1],[1157,1158,1],[1611,1621,1],[1648,2385,737],[2386,2388,1],[6832,6862,1],[7376,7378,1],[7380,7392,1],[7394,7400,1],[7405,7412,7],[7416,7417,1],[7616,7679,1],[8204,8205,1],[8400,8432,1],[12330,12333,1],[12441,12442,1],[65024,65039,1],[65056,65069,1],[66045,66272,227],[70459,118528,48069],[118529,118573,1],[118576,118598,1],[119143,119145,1],[119163,119170,1],[119173,119179,1],[119210,119213,1],[917760,917999,1]];static foldInherited=[[921,953,32],[8126,8126,1]];static Inscriptional_Pahlavi=[[68448,68466,1],[68472,68479,1]];static Inscriptional_Parthian=[[68416,68437,1],[68440,68447,1]];static Javanese=[[43392,43469,1],[43472,43481,1],[43486,43487,1]];static Kaithi=[[69760,69826,1],[69837,69837,1]];static Kannada=[[3200,3212,1],[3214,3216,1],[3218,3240,1],[3242,3251,1],[3253,3257,1],[3260,3268,1],[3270,3272,1],[3274,3277,1],[3285,3286,1],[3293,3294,1],[3296,3299,1],[3302,3311,1],[3313,3315,1]];static Katakana=[[12449,12538,1],[12541,12543,1],[12784,12799,1],[13008,13054,1],[13056,13143,1],[65382,65391,1],[65393,65437,1],[110576,110579,1],[110581,110587,1],[110589,110590,1],[110592,110880,288],[110881,110882,1],[110933,110948,15],[110949,110951,1]];static Kawi=[[73472,73488,1],[73490,73530,1],[73534,73562,1]];static Kayah_Li=[[43264,43309,1],[43311,43311,1]];static Kharoshthi=[[68096,68099,1],[68101,68102,1],[68108,68115,1],[68117,68119,1],[68121,68149,1],[68152,68154,1],[68159,68168,1],[68176,68184,1]];static Khitan_Small_Script=[[94180,101120,6940],[101121,101589,1],[101631,101631,1]];static Khmer=[[6016,6109,1],[6112,6121,1],[6128,6137,1],[6624,6655,1]];static Khojki=[[70144,70161,1],[70163,70209,1]];static Khudawadi=[[70320,70378,1],[70384,70393,1]];static Kirat_Rai=[[93504,93561,1]];static Lao=[[3713,3714,1],[3716,3718,2],[3719,3722,1],[3724,3747,1],[3749,3751,2],[3752,3773,1],[3776,3780,1],[3782,3784,2],[3785,3790,1],[3792,3801,1],[3804,3807,1]];static Latin=[[65,90,1],[97,122,1],[170,186,16],[192,214,1],[216,246,1],[248,696,1],[736,740,1],[7424,7461,1],[7468,7516,1],[7522,7525,1],[7531,7543,1],[7545,7614,1],[7680,7935,1],[8305,8319,14],[8336,8348,1],[8490,8491,1],[8498,8526,28],[8544,8584,1],[11360,11391,1],[42786,42887,1],[42891,42957,1],[42960,42961,1],[42963,42965,2],[42966,42972,1],[42994,43007,1],[43824,43866,1],[43868,43876,1],[43878,43881,1],[64256,64262,1],[65313,65338,1],[65345,65370,1],[67456,67461,1],[67463,67504,1],[67506,67514,1],[122624,122654,1],[122661,122666,1]];static Lepcha=[[7168,7223,1],[7227,7241,1],[7245,7247,1]];static Limbu=[[6400,6430,1],[6432,6443,1],[6448,6459,1],[6464,6468,4],[6469,6479,1]];static Linear_A=[[67072,67382,1],[67392,67413,1],[67424,67431,1]];static Linear_B=[[65536,65547,1],[65549,65574,1],[65576,65594,1],[65596,65597,1],[65599,65613,1],[65616,65629,1],[65664,65786,1]];static Lisu=[[42192,42239,1],[73648,73648,1]];static Lycian=[[66176,66204,1]];static Lydian=[[67872,67897,1],[67903,67903,1]];static Mahajani=[[69968,70006,1]];static Makasar=[[73440,73464,1]];static Malayalam=[[3328,3340,1],[3342,3344,1],[3346,3396,1],[3398,3400,1],[3402,3407,1],[3412,3427,1],[3430,3455,1]];static Mandaic=[[2112,2139,1],[2142,2142,1]];static Manichaean=[[68288,68326,1],[68331,68342,1]];static Marchen=[[72816,72847,1],[72850,72871,1],[72873,72886,1]];static Masaram_Gondi=[[72960,72966,1],[72968,72969,1],[72971,73014,1],[73018,73020,2],[73021,73023,2],[73024,73031,1],[73040,73049,1]];static Medefaidrin=[[93760,93850,1]];static Meetei_Mayek=[[43744,43766,1],[43968,44013,1],[44016,44025,1]];static Mende_Kikakui=[[124928,125124,1],[125127,125142,1]];static Meroitic_Cursive=[[68e3,68023,1],[68028,68047,1],[68050,68095,1]];static Meroitic_Hieroglyphs=[[67968,67999,1]];static Miao=[[93952,94026,1],[94031,94087,1],[94095,94111,1]];static Modi=[[71168,71236,1],[71248,71257,1]];static Mongolian=[[6144,6145,1],[6148,6150,2],[6151,6169,1],[6176,6264,1],[6272,6314,1],[71264,71276,1]];static Mro=[[92736,92766,1],[92768,92777,1],[92782,92783,1]];static Multani=[[70272,70278,1],[70280,70282,2],[70283,70285,1],[70287,70301,1],[70303,70313,1]];static Myanmar=[[4096,4255,1],[43488,43518,1],[43616,43647,1],[71376,71395,1]];static Nabataean=[[67712,67742,1],[67751,67759,1]];static Nag_Mundari=[[124112,124153,1]];static Nandinagari=[[72096,72103,1],[72106,72151,1],[72154,72164,1]];static New_Tai_Lue=[[6528,6571,1],[6576,6601,1],[6608,6618,1],[6622,6623,1]];static Newa=[[70656,70747,1],[70749,70753,1]];static Nko=[[1984,2042,1],[2045,2047,1]];static Nushu=[[94177,110960,16783],[110961,111355,1]];static Nyiakeng_Puachue_Hmong=[[123136,123180,1],[123184,123197,1],[123200,123209,1],[123214,123215,1]];static Ogham=[[5760,5788,1]];static Ol_Chiki=[[7248,7295,1]];static Ol_Onal=[[124368,124410,1],[124415,124415,1]];static Old_Hungarian=[[68736,68786,1],[68800,68850,1],[68858,68863,1]];static Old_Italic=[[66304,66339,1],[66349,66351,1]];static Old_North_Arabian=[[68224,68255,1]];static Old_Permic=[[66384,66426,1]];static Old_Persian=[[66464,66499,1],[66504,66517,1]];static Old_Sogdian=[[69376,69415,1]];static Old_South_Arabian=[[68192,68223,1]];static Old_Turkic=[[68608,68680,1]];static Old_Uyghur=[[69488,69513,1]];static Oriya=[[2817,2819,1],[2821,2828,1],[2831,2832,1],[2835,2856,1],[2858,2864,1],[2866,2867,1],[2869,2873,1],[2876,2884,1],[2887,2888,1],[2891,2893,1],[2901,2903,1],[2908,2909,1],[2911,2915,1],[2918,2935,1]];static Osage=[[66736,66771,1],[66776,66811,1]];static Osmanya=[[66688,66717,1],[66720,66729,1]];static Pahawh_Hmong=[[92928,92997,1],[93008,93017,1],[93019,93025,1],[93027,93047,1],[93053,93071,1]];static Palmyrene=[[67680,67711,1]];static Pau_Cin_Hau=[[72384,72440,1]];static Phags_Pa=[[43072,43127,1]];static Phoenician=[[67840,67867,1],[67871,67871,1]];static Psalter_Pahlavi=[[68480,68497,1],[68505,68508,1],[68521,68527,1]];static Rejang=[[43312,43347,1],[43359,43359,1]];static Runic=[[5792,5866,1],[5870,5880,1]];static Samaritan=[[2048,2093,1],[2096,2110,1]];static Saurashtra=[[43136,43205,1],[43214,43225,1]];static Sharada=[[70016,70111,1]];static Shavian=[[66640,66687,1]];static Siddham=[[71040,71093,1],[71096,71133,1]];static SignWriting=[[120832,121483,1],[121499,121503,1],[121505,121519,1]];static Sinhala=[[3457,3459,1],[3461,3478,1],[3482,3505,1],[3507,3515,1],[3517,3520,3],[3521,3526,1],[3530,3535,5],[3536,3540,1],[3542,3544,2],[3545,3551,1],[3558,3567,1],[3570,3572,1],[70113,70132,1]];static Sogdian=[[69424,69465,1]];static Sora_Sompeng=[[69840,69864,1],[69872,69881,1]];static Soyombo=[[72272,72354,1]];static Sundanese=[[7040,7103,1],[7360,7367,1]];static Sunuwar=[[72640,72673,1],[72688,72697,1]];static Syloti_Nagri=[[43008,43052,1]];static Syriac=[[1792,1805,1],[1807,1866,1],[1869,1871,1],[2144,2154,1]];static Tagalog=[[5888,5909,1],[5919,5919,1]];static Tagbanwa=[[5984,5996,1],[5998,6e3,1],[6002,6003,1]];static Tai_Le=[[6480,6509,1],[6512,6516,1]];static Tai_Tham=[[6688,6750,1],[6752,6780,1],[6783,6793,1],[6800,6809,1],[6816,6829,1]];static Tai_Viet=[[43648,43714,1],[43739,43743,1]];static Takri=[[71296,71353,1],[71360,71369,1]];static Tamil=[[2946,2947,1],[2949,2954,1],[2958,2960,1],[2962,2965,1],[2969,2970,1],[2972,2974,2],[2975,2979,4],[2980,2984,4],[2985,2986,1],[2990,3001,1],[3006,3010,1],[3014,3016,1],[3018,3021,1],[3024,3031,7],[3046,3066,1],[73664,73713,1],[73727,73727,1]];static Tangsa=[[92784,92862,1],[92864,92873,1]];static Tangut=[[94176,94208,32],[94209,100343,1],[100352,101119,1],[101632,101640,1]];static Telugu=[[3072,3084,1],[3086,3088,1],[3090,3112,1],[3114,3129,1],[3132,3140,1],[3142,3144,1],[3146,3149,1],[3157,3158,1],[3160,3162,1],[3165,3168,3],[3169,3171,1],[3174,3183,1],[3191,3199,1]];static Thaana=[[1920,1969,1]];static Thai=[[3585,3642,1],[3648,3675,1]];static Tibetan=[[3840,3911,1],[3913,3948,1],[3953,3991,1],[3993,4028,1],[4030,4044,1],[4046,4052,1],[4057,4058,1]];static Tifinagh=[[11568,11623,1],[11631,11632,1],[11647,11647,1]];static Tirhuta=[[70784,70855,1],[70864,70873,1]];static Todhri=[[67008,67059,1]];static Toto=[[123536,123566,1]];static Tulu_Tigalari=[[70528,70537,1],[70539,70542,3],[70544,70581,1],[70583,70592,1],[70594,70597,3],[70599,70602,1],[70604,70613,1],[70615,70616,1],[70625,70626,1]];static Ugaritic=[[66432,66461,1],[66463,66463,1]];static Vai=[[42240,42539,1]];static Vithkuqi=[[66928,66938,1],[66940,66954,1],[66956,66962,1],[66964,66965,1],[66967,66977,1],[66979,66993,1],[66995,67001,1],[67003,67004,1]];static Wancho=[[123584,123641,1],[123647,123647,1]];static Warang_Citi=[[71840,71922,1],[71935,71935,1]];static Yezidi=[[69248,69289,1],[69291,69293,1],[69296,69297,1]];static Yi=[[40960,42124,1],[42128,42182,1]];static Zanabazar_Square=[[72192,72263,1]];static CATEGORIES=(()=>new Map([["C",a.C],["Cc",a.Cc],["Cf",a.Cf],["Co",a.Co],["Cs",a.Cs],["L",a.L],["Ll",a.Ll],["Lm",a.Lm],["Lo",a.Lo],["Lt",a.Lt],["Lu",a.Lu],["M",a.M],["Mc",a.Mc],["Me",a.Me],["Mn",a.Mn],["N",a.N],["Nd",a.Nd],["Nl",a.Nl],["No",a.No],["P",a.P],["Pc",a.Pc],["Pd",a.Pd],["Pe",a.Pe],["Pf",a.Pf],["Pi",a.Pi],["Po",a.Po],["Ps",a.Ps],["S",a.S],["Sc",a.Sc],["Sk",a.Sk],["Sm",a.Sm],["So",a.So],["Z",a.Z],["Zl",a.Zl],["Zp",a.Zp],["Zs",a.Zs]]))();static SCRIPTS=(()=>new Map([["Adlam",a.Adlam],["Ahom",a.Ahom],["Anatolian_Hieroglyphs",a.Anatolian_Hieroglyphs],["Arabic",a.Arabic],["Armenian",a.Armenian],["Avestan",a.Avestan],["Balinese",a.Balinese],["Bamum",a.Bamum],["Bassa_Vah",a.Bassa_Vah],["Batak",a.Batak],["Bengali",a.Bengali],["Bhaiksuki",a.Bhaiksuki],["Bopomofo",a.Bopomofo],["Brahmi",a.Brahmi],["Braille",a.Braille],["Buginese",a.Buginese],["Buhid",a.Buhid],["Canadian_Aboriginal",a.Canadian_Aboriginal],["Carian",a.Carian],["Caucasian_Albanian",a.Caucasian_Albanian],["Chakma",a.Chakma],["Cham",a.Cham],["Cherokee",a.Cherokee],["Chorasmian",a.Chorasmian],["Common",a.Common],["Coptic",a.Coptic],["Cuneiform",a.Cuneiform],["Cypriot",a.Cypriot],["Cypro_Minoan",a.Cypro_Minoan],["Cyrillic",a.Cyrillic],["Deseret",a.Deseret],["Devanagari",a.Devanagari],["Dives_Akuru",a.Dives_Akuru],["Dogra",a.Dogra],["Duployan",a.Duployan],["Egyptian_Hieroglyphs",a.Egyptian_Hieroglyphs],["Elbasan",a.Elbasan],["Elymaic",a.Elymaic],["Ethiopic",a.Ethiopic],["Garay",a.Garay],["Georgian",a.Georgian],["Glagolitic",a.Glagolitic],["Gothic",a.Gothic],["Grantha",a.Grantha],["Greek",a.Greek],["Gujarati",a.Gujarati],["Gunjala_Gondi",a.Gunjala_Gondi],["Gurmukhi",a.Gurmukhi],["Gurung_Khema",a.Gurung_Khema],["Han",a.Han],["Hangul",a.Hangul],["Hanifi_Rohingya",a.Hanifi_Rohingya],["Hanunoo",a.Hanunoo],["Hatran",a.Hatran],["Hebrew",a.Hebrew],["Hiragana",a.Hiragana],["Imperial_Aramaic",a.Imperial_Aramaic],["Inherited",a.Inherited],["Inscriptional_Pahlavi",a.Inscriptional_Pahlavi],["Inscriptional_Parthian",a.Inscriptional_Parthian],["Javanese",a.Javanese],["Kaithi",a.Kaithi],["Kannada",a.Kannada],["Katakana",a.Katakana],["Kawi",a.Kawi],["Kayah_Li",a.Kayah_Li],["Kharoshthi",a.Kharoshthi],["Khitan_Small_Script",a.Khitan_Small_Script],["Khmer",a.Khmer],["Khojki",a.Khojki],["Khudawadi",a.Khudawadi],["Kirat_Rai",a.Kirat_Rai],["Lao",a.Lao],["Latin",a.Latin],["Lepcha",a.Lepcha],["Limbu",a.Limbu],["Linear_A",a.Linear_A],["Linear_B",a.Linear_B],["Lisu",a.Lisu],["Lycian",a.Lycian],["Lydian",a.Lydian],["Mahajani",a.Mahajani],["Makasar",a.Makasar],["Malayalam",a.Malayalam],["Mandaic",a.Mandaic],["Manichaean",a.Manichaean],["Marchen",a.Marchen],["Masaram_Gondi",a.Masaram_Gondi],["Medefaidrin",a.Medefaidrin],["Meetei_Mayek",a.Meetei_Mayek],["Mende_Kikakui",a.Mende_Kikakui],["Meroitic_Cursive",a.Meroitic_Cursive],["Meroitic_Hieroglyphs",a.Meroitic_Hieroglyphs],["Miao",a.Miao],["Modi",a.Modi],["Mongolian",a.Mongolian],["Mro",a.Mro],["Multani",a.Multani],["Myanmar",a.Myanmar],["Nabataean",a.Nabataean],["Nag_Mundari",a.Nag_Mundari],["Nandinagari",a.Nandinagari],["New_Tai_Lue",a.New_Tai_Lue],["Newa",a.Newa],["Nko",a.Nko],["Nushu",a.Nushu],["Nyiakeng_Puachue_Hmong",a.Nyiakeng_Puachue_Hmong],["Ogham",a.Ogham],["Ol_Chiki",a.Ol_Chiki],["Ol_Onal",a.Ol_Onal],["Old_Hungarian",a.Old_Hungarian],["Old_Italic",a.Old_Italic],["Old_North_Arabian",a.Old_North_Arabian],["Old_Permic",a.Old_Permic],["Old_Persian",a.Old_Persian],["Old_Sogdian",a.Old_Sogdian],["Old_South_Arabian",a.Old_South_Arabian],["Old_Turkic",a.Old_Turkic],["Old_Uyghur",a.Old_Uyghur],["Oriya",a.Oriya],["Osage",a.Osage],["Osmanya",a.Osmanya],["Pahawh_Hmong",a.Pahawh_Hmong],["Palmyrene",a.Palmyrene],["Pau_Cin_Hau",a.Pau_Cin_Hau],["Phags_Pa",a.Phags_Pa],["Phoenician",a.Phoenician],["Psalter_Pahlavi",a.Psalter_Pahlavi],["Rejang",a.Rejang],["Runic",a.Runic],["Samaritan",a.Samaritan],["Saurashtra",a.Saurashtra],["Sharada",a.Sharada],["Shavian",a.Shavian],["Siddham",a.Siddham],["SignWriting",a.SignWriting],["Sinhala",a.Sinhala],["Sogdian",a.Sogdian],["Sora_Sompeng",a.Sora_Sompeng],["Soyombo",a.Soyombo],["Sundanese",a.Sundanese],["Sunuwar",a.Sunuwar],["Syloti_Nagri",a.Syloti_Nagri],["Syriac",a.Syriac],["Tagalog",a.Tagalog],["Tagbanwa",a.Tagbanwa],["Tai_Le",a.Tai_Le],["Tai_Tham",a.Tai_Tham],["Tai_Viet",a.Tai_Viet],["Takri",a.Takri],["Tamil",a.Tamil],["Tangsa",a.Tangsa],["Tangut",a.Tangut],["Telugu",a.Telugu],["Thaana",a.Thaana],["Thai",a.Thai],["Tibetan",a.Tibetan],["Tifinagh",a.Tifinagh],["Tirhuta",a.Tirhuta],["Todhri",a.Todhri],["Toto",a.Toto],["Tulu_Tigalari",a.Tulu_Tigalari],["Ugaritic",a.Ugaritic],["Vai",a.Vai],["Vithkuqi",a.Vithkuqi],["Wancho",a.Wancho],["Warang_Citi",a.Warang_Citi],["Yezidi",a.Yezidi],["Yi",a.Yi],["Zanabazar_Square",a.Zanabazar_Square]]))();static FOLD_CATEGORIES=(()=>new Map([["L",a.foldL],["Ll",a.foldLl],["Lt",a.foldLt],["Lu",a.foldLu],["M",a.foldM],["Mn",a.foldMn]]))();static FOLD_SCRIPT=(()=>new Map([["Common",a.foldCommon],["Greek",a.foldGreek],["Inherited",a.foldInherited]]))()}class r{static MAX_RUNE=1114111;static MAX_ASCII=127;static MAX_LATIN1=255;static MAX_BMP=65535;static MIN_FOLD=65;static MAX_FOLD=125251;static is32(t,e){let s=0,i=t.length;for(;ss[1]))return!(e0&&e>=t[0][0]&&this.is32(t,e)}static isUpper(t){if(t<=this.MAX_LATIN1){const e=String.fromCodePoint(t);return e.toUpperCase()===e&&e.toLowerCase()!==e}return this.is(a.Upper,t)}static isPrint(t){return t<=this.MAX_LATIN1?t>=32&&t<127||t>=161&&173!==t:this.is(a.L,t)||this.is(a.M,t)||this.is(a.N,t)||this.is(a.P,t)||this.is(a.S,t)}static simpleFold(t){if(a.CASE_ORBIT.has(t))return a.CASE_ORBIT.get(t);const e=n.toLowerCase(t);return e!==t?e:n.toUpperCase(t)}static equalsIgnoreCase(t,e){if(t<0||e<0||t===e)return!0;if(t<=this.MAX_ASCII&&e<=this.MAX_ASCII)return n.CODES.get("A")<=t&&t<=n.CODES.get("Z")&&(t|=32),n.CODES.get("A")<=e&&e<=n.CODES.get("Z")&&(e|=32),t===e;for(let s=this.simpleFold(t);s!==t;s=this.simpleFold(s))if(s===e)return!0;return!1}}class o{static METACHARACTERS="\\.+*?()|[]{}^$";static EMPTY_BEGIN_LINE=1;static EMPTY_END_LINE=2;static EMPTY_BEGIN_TEXT=4;static EMPTY_END_TEXT=8;static EMPTY_WORD_BOUNDARY=16;static EMPTY_NO_WORD_BOUNDARY=32;static EMPTY_ALL=-1;static emptyInts(){return[]}static isalnum(t){return n.CODES.get("0")<=t&&t<=n.CODES.get("9")||n.CODES.get("a")<=t&&t<=n.CODES.get("z")||n.CODES.get("A")<=t&&t<=n.CODES.get("Z")}static unhex(t){return n.CODES.get("0")<=t&&t<=n.CODES.get("9")?t-n.CODES.get("0"):n.CODES.get("a")<=t&&t<=n.CODES.get("f")?t-n.CODES.get("a")+10:n.CODES.get("A")<=t&&t<=n.CODES.get("F")?t-n.CODES.get("A")+10:-1}static escapeRune(t){let e="";if(r.isPrint(t))this.METACHARACTERS.indexOf(String.fromCodePoint(t))>=0&&(e+="\\"),e+=String.fromCodePoint(t);else switch(t){case n.CODES.get('"'):e+='\\"';break;case n.CODES.get("\\"):e+="\\\\";break;case n.CODES.get("\t"):e+="\\t";break;case n.CODES.get("\n"):e+="\\n";break;case n.CODES.get("\r"):e+="\\r";break;case n.CODES.get("\b"):e+="\\b";break;case n.CODES.get("\f"):e+="\\f";break;default:{let s=t.toString(16);t<256?(e+="\\x",1===s.length&&(e+="0"),e+=s):e+=`\\x{${s}}`;break}}return e}static stringToRunes(t){return String(t).split("").map((t=>t.codePointAt(0)))}static runeToString(t){return String.fromCodePoint(t)}static isWordRune(t){return n.CODES.get("a")<=t&&t<=n.CODES.get("z")||n.CODES.get("A")<=t&&t<=n.CODES.get("Z")||n.CODES.get("0")<=t&&t<=n.CODES.get("9")||t===n.CODES.get("_")}static emptyOpContext(t,e){let s=0;return t<0&&(s|=this.EMPTY_BEGIN_TEXT|this.EMPTY_BEGIN_LINE),t===n.CODES.get("\n")&&(s|=this.EMPTY_BEGIN_LINE),e<0&&(s|=this.EMPTY_END_TEXT|this.EMPTY_END_LINE),e===n.CODES.get("\n")&&(s|=this.EMPTY_END_LINE),this.isWordRune(t)!==this.isWordRune(e)?s|=this.EMPTY_WORD_BOUNDARY:s|=this.EMPTY_NO_WORD_BOUNDARY,s}static quoteMeta(t){return t.split("").map((t=>this.METACHARACTERS.indexOf(t)>=0?`\\${t}`:t)).join("")}static charCount(t){return t>r.MAX_BMP?2:1}static stringToUtf8ByteArray(t){if(globalThis.TextEncoder)return Array.from((new TextEncoder).encode(t));{let e=[],s=0;for(let i=0;i>6|192,e[s++]=63&n|128):55296==(64512&n)&&i+1>18|240,e[s++]=n>>12&63|128,e[s++]=n>>6&63|128,e[s++]=63&n|128):(e[s++]=n>>12|224,e[s++]=n>>6&63|128,e[s++]=63&n|128)}return e}}static utf8ByteArrayToString(t){if(globalThis.TextDecoder)return new TextDecoder("utf-8").decode(new Uint8Array(t));{let e=[],s=0,i=0;for(;s191&&n<224){let a=t[s++];e[i++]=String.fromCharCode((31&n)<<6|63&a)}else if(n>239&&n<365){let a=((7&n)<<18|(63&t[s++])<<12|(63&t[s++])<<6|63&t[s++])-65536;e[i++]=String.fromCharCode(55296+(a>>10)),e[i++]=String.fromCharCode(56320+(1023&a))}else{let a=t[s++],r=t[s++];e[i++]=String.fromCharCode((15&n)<<12|(63&a)<<6|63&r)}}return e.join("")}}}const h=(t=[],e=0)=>{const s={};for(let i=0;ih(["UTF_16","UTF_8"]))();getEncoding(){throw Error("not implemented")}isUTF8Encoding(){return this.getEncoding()===c.Encoding.UTF_8}isUTF16Encoding(){return this.getEncoding()===c.Encoding.UTF_16}}class l extends c{constructor(t=null){super(),this.bytes=t}getEncoding(){return c.Encoding.UTF_8}asCharSequence(){return o.utf8ByteArrayToString(this.bytes)}asBytes(){return this.bytes}length(){return this.bytes.length}}class u extends c{constructor(t=null){super(),this.charSequence=t}getEncoding(){return c.Encoding.UTF_16}asCharSequence(){return this.charSequence}asBytes(){return this.charSequence.toString().split("").map((t=>t.codePointAt(0)))}length(){return this.charSequence.length}}class p{static utf16(t){return new u(t)}static utf8(t){return Array.isArray(t)?new l(t):new l(o.stringToUtf8ByteArray(t))}}class g extends Error{constructor(t){super(t),this.name="RE2JSException"}}class E extends g{constructor(t,e=null){let s=`error parsing regexp: ${t}`;e&&(s+=`: \`${e}\``),super(s),this.name="RE2JSSyntaxException",this.message=s,this.error=t,this.input=e}getDescription(){return this.error}getPattern(){return this.input}}class f extends g{constructor(t){super(t),this.name="RE2JSCompileException"}}class A extends g{constructor(t){super(t),this.name="RE2JSGroupException"}}class _ extends g{constructor(t){super(t),this.name="RE2JSFlagsException"}}class C{static quoteReplacement(t){return t.indexOf("\\")<0&&t.indexOf("$")<0?t:t.split("").map((t=>{const e=t.codePointAt(0);return e===n.CODES["\\"]||e===n.CODES.$?`\\${t}`:t})).join("")}constructor(t,e){if(null===t)throw new Error("pattern is null");this.patternInput=t;const s=this.patternInput.re2();this.patternGroupCount=s.numberOfCapturingGroups(),this.groups=[],this.namedGroups=s.namedGroups,this.numberOfInstructions=s.numberOfInstructions(),e instanceof c?this.resetMatcherInput(e):Array.isArray(e)?this.resetMatcherInput(p.utf8(e)):this.resetMatcherInput(p.utf16(e))}pattern(){return this.patternInput}reset(){return this.matcherInputLength=this.matcherInput.length(),this.appendPos=0,this.hasMatch=!1,this.hasGroups=!1,this.anchorFlag=0,this}resetMatcherInput(t){if(null===t)throw new Error("input is null");return this.matcherInput=t,this.reset(),this}start(t=0){if("string"==typeof t){const e=this.namedGroups[t];if(!Number.isFinite(e))throw new A(`group '${t}' not found`);t=e}return this.loadGroup(t),this.groups[2*t]}end(t=0){if("string"==typeof t){const e=this.namedGroups[t];if(!Number.isFinite(e))throw new A(`group '${t}' not found`);t=e}return this.loadGroup(t),this.groups[2*t+1]}programSize(){return this.numberOfInstructions}group(t=0){if("string"==typeof t){const e=this.namedGroups[t];if(!Number.isFinite(e))throw new A(`group '${t}' not found`);t=e}const e=this.start(t),s=this.end(t);return e<0&&s<0?null:this.substring(e,s)}groupCount(){return this.patternGroupCount}loadGroup(t){if(t<0||t>this.patternGroupCount)throw new A(`Group index out of bounds: ${t}`);if(!this.hasMatch)throw new A("perhaps no match attempted");if(0===t||this.hasGroups)return;let e=this.groups[1]+1;e>this.matcherInputLength&&(e=this.matcherInputLength);const s=this.patternInput.re2().matchMachineInput(this.matcherInput,this.groups[0],e,this.anchorFlag,1+this.patternGroupCount);if(!s[0])throw new A("inconsistency in matching group data");this.groups=s[1],this.hasGroups=!0}matches(){return this.genMatch(0,i.ANCHOR_BOTH)}lookingAt(){return this.genMatch(0,i.ANCHOR_START)}find(t=null){if(null!==t){if(t<0||t>this.matcherInputLength)throw new A(`start index out of bounds: ${t}`);return this.reset(),this.genMatch(t,0)}return t=0,this.hasMatch&&(t=this.groups[1],this.groups[0]===this.groups[1]&&t++),this.genMatch(t,i.UNANCHORED)}genMatch(t,e){const s=this.patternInput.re2().matchMachineInput(this.matcherInput,t,this.matcherInputLength,e,1);return!!s[0]&&(this.groups=s[1],this.hasMatch=!0,this.hasGroups=!1,this.anchorFlag=e,!0)}substring(t,e){return this.matcherInput.isUTF8Encoding()?o.utf8ByteArrayToString(this.matcherInput.asBytes().slice(t,e)):this.matcherInput.asCharSequence().substring(t,e).toString()}inputLength(){return this.matcherInputLength}appendReplacement(t,e=!1){let s="";const i=this.start(),n=this.end();return this.appendPosn.CODES.get("9")||10*o+r-n.CODES.get("0")>this.patternGroupCount));a++)o=10*o+r-n.CODES.get("0");if(o>this.patternGroupCount)throw new A(`n > number of groups: ${o}`);const h=this.group(o);null!==h&&(e+=h),s=a,a--;continue}if(r===n.CODES.get("{")){sn.CODES.get("9")||10*o+r-n.CODES.get("0")>this.patternGroupCount));a++)o=10*o+r-n.CODES.get("0");if(o>this.patternGroupCount){e+=`$${o}`,s=a,a--;continue}const h=this.group(o);null!==h&&(e+=h),s=a,a--;continue}if(r===n.CODES.get("<")){s")&&t.codePointAt(i)!==n.CODES.get(" ");)i++;if(i===t.length||t.codePointAt(i)!==n.CODES.get(">")){e+=t.substring(a-1,i+1),s=i+1;continue}const r=t.substring(a+1,i);Object.prototype.hasOwnProperty.call(this.namedGroups,r)?e+=this.group(r):e+=`$<${r}>`,s=i+1}}return s=this.end)return O.EOF();let e=255&this.bytes[t++];return 128&e?192==(224&e)?(e&=31,t>=this.end?O.EOF():(e=e<<6|63&this.bytes[t++],e<<3|2)):224==(240&e)?(e&=15,t+1>=this.end?O.EOF():(e=e<<6|63&this.bytes[t++],e=e<<6|63&this.bytes[t++],e<<3|3)):(e&=7,t+2>=this.end?O.EOF():(e=e<<6|63&this.bytes[t++],e=e<<6|63&this.bytes[t++],e=e<<6|63&this.bytes[t++],e<<3|4)):e<<3|1}index(t,e){e+=this.start;const s=this.indexOf(this.bytes,t.prefixUTF8,e);return s<0?s:s-e}context(t){let e=-1;if((t+=this.start)>this.start&&t<=this.end){let s=t-1;if(e=this.bytes[s--],e>=128){let i=t-4;for(i=i&&128==(192&this.bytes[s]);)s--;s>3}}const s=t>3:-1;return o.emptyOpContext(e,s)}indexOf(t,e,s=0){let i=e.length;if(0===i)return-1;let n=t.length;for(let a=s;a<=n-i;a++)for(let s=0;s0&&t<=this.charSequence.length?this.charSequence.codePointAt(t-1):-1,s=t ${this.out}, ${this.arg}`;case T.ALT_MATCH:return`altmatch -> ${this.out}, ${this.arg}`;case T.CAPTURE:return`cap ${this.arg} -> ${this.out}`;case T.EMPTY_WIDTH:return`empty ${this.arg} -> ${this.out}`;case T.MATCH:return"match";case T.FAIL:return"fail";case T.NOP:return`nop -> ${this.out}`;case T.RUNE:return null===this.runes?"rune ":["rune ",T.escapeRunes(this.runes),this.arg&i.FOLD_CASE?"/i":""," -> ",this.out].join("");case T.RUNE1:return`rune1 ${T.escapeRunes(this.runes)} -> ${this.out}`;case T.RUNE_ANY:return`any -> ${this.out}`;case T.RUNE_ANY_NOT_NL:return`anynotnl -> ${this.out}`;default:throw new Error("unhandled case in Inst.toString")}}}class R{constructor(){this.inst=null,this.cap=[]}}class N{constructor(){this.sparse=[],this.densePcs=[],this.denseThreads=[],this.size=0}contains(t){const e=this.sparse[t];return ethis.matchcap.length?this.initNewCap(t):this.resetCap(t)}resetCap(t){for(let e=0;e0?(this.poolSize--,e=this.pool[this.poolSize]):e=new R,e.inst=t,e}freeQueue(t,e=0){const s=t.size-e,i=this.poolSize+s;this.pool.length>3,u=7&c,p=-1,g=0;for(c!==O.EOF()&&(c=t.step(e+u),p=c>>3,g=7&c),a=0===e?o.emptyOpContext(-1,l):t.context(e);;){if(r.isEmpty()){if(n&o.EMPTY_BEGIN_TEXT&&0!==e)break;if(this.matched)break;if(0!==this.re2.prefix.length&&p!==this.re2.prefixRune&&t.canCheckPrefix()){const s=t.index(this.re2,e);if(s<0)break;e+=s,c=t.step(e),l=c>>3,u=7&c,c=t.step(e+u),p=c>>3,g=7&c}}this.matched||0!==e&&s!==i.UNANCHORED||(this.ncap>0&&(this.matchcap[0]=e),this.add(r,this.prog.start,e,this.matchcap,a,null));const E=e+u;if(a=t.context(E),this.step(r,h,e,E,l,a,s,e===t.endPos()),0===u)break;if(0===this.ncap&&this.matched)break;e+=u,l=p,u=g,-1!==l&&(c=t.step(e+u),p=c>>3,g=7&c);const f=r;r=h,h=f}return this.freeQueue(h),this.matched}step(t,e,s,a,r,o,h,c){const l=this.re2.longest;for(let u=0;u0&&this.matchcap[0]0&&(!l||!this.matched||this.matchcap[1]0&&a.cap!==i&&(a.cap=i.slice(0,this.ncap)),t.denseThreads[r]=a,a=null;break;default:throw new Error("unhandled")}return a}}class L{static Op=(()=>h(["NO_MATCH","EMPTY_MATCH","LITERAL","CHAR_CLASS","ANY_CHAR_NOT_NL","ANY_CHAR","BEGIN_LINE","END_LINE","BEGIN_TEXT","END_TEXT","WORD_BOUNDARY","NO_WORD_BOUNDARY","CAPTURE","STAR","PLUS","QUEST","REPEAT","CONCAT","ALTERNATE","LEFT_PAREN","VERTICAL_BAR"]))();static isPseudoOp(t){return t>=L.Op.LEFT_PAREN}static emptySubs(){return[]}static quoteIfHyphen(t){return t===n.CODES.get("-")?"\\":""}static fromRegexp(t){const e=new L(t.op);return e.flags=t.flags,e.subs=t.subs,e.runes=t.runes,e.cap=t.cap,e.min=t.min,e.max=t.max,e.name=t.name,e.namedGroups=t.namedGroups,e}constructor(t){this.op=t,this.flags=0,this.subs=L.emptySubs(),this.runes=[],this.min=0,this.max=0,this.cap=0,this.name=null,this.namedGroups={}}reinit(){this.flags=0,this.subs=L.emptySubs(),this.runes=[],this.cap=0,this.min=0,this.max=0,this.name=null,this.namedGroups={}}toString(){return this.appendTo()}appendTo(){let t="";switch(this.op){case L.Op.NO_MATCH:t+="[^\\x00-\\x{10FFFF}]";break;case L.Op.EMPTY_MATCH:t+="(?:)";break;case L.Op.STAR:case L.Op.PLUS:case L.Op.QUEST:case L.Op.REPEAT:{const e=this.subs[0];switch(e.op>L.Op.CAPTURE||e.op===L.Op.LITERAL&&e.runes.length>1?t+=`(?:${e.appendTo()})`:t+=e.appendTo(),this.op){case L.Op.STAR:t+="*";break;case L.Op.PLUS:t+="+";break;case L.Op.QUEST:t+="?";break;case L.Op.REPEAT:t+=`{${this.min}`,this.min!==this.max&&(t+=",",this.max>=0&&(t+=this.max)),t+="}"}this.flags&i.NON_GREEDY&&(t+="?");break}case L.Op.CONCAT:for(let e of this.subs)e.op===L.Op.ALTERNATE?t+=`(?:${e.appendTo()})`:t+=e.appendTo();break;case L.Op.ALTERNATE:{let e="";for(let s of this.subs)t+=e,e="|",t+=s.appendTo();break}case L.Op.LITERAL:this.flags&i.FOLD_CASE&&(t+="(?i:");for(let e of this.runes)t+=o.escapeRune(e);this.flags&i.FOLD_CASE&&(t+=")");break;case L.Op.ANY_CHAR_NOT_NL:t+="(?-s:.)";break;case L.Op.ANY_CHAR:t+="(?s:.)";break;case L.Op.CAPTURE:null===this.name||0===this.name.length?t+="(":t+=`(?P<${this.name}>`,this.subs[0].op!==L.Op.EMPTY_MATCH&&(t+=this.subs[0].appendTo()),t+=")";break;case L.Op.BEGIN_TEXT:t+="\\A";break;case L.Op.END_TEXT:this.flags&i.WAS_DOLLAR?t+="(?-m:$)":t+="\\z";break;case L.Op.BEGIN_LINE:t+="^";break;case L.Op.END_LINE:t+="$";break;case L.Op.WORD_BOUNDARY:t+="\\b";break;case L.Op.NO_WORD_BOUNDARY:t+="\\B";break;case L.Op.CHAR_CLASS:if(this.runes.length%2!=0){t+="[invalid char class]";break}if(t+="[",0===this.runes.length)t+="^\\x00-\\x{10FFFF}";else if(0===this.runes[0]&&this.runes[this.runes.length-1]===r.MAX_RUNE){t+="^";for(let e=1;e>1];return 1&t?e.arg:e.out}patch(t,e){for(;0!==t;){const s=this.inst[t>>1];1&t?(t=s.arg,s.arg=e):(t=s.out,s.out=e)}}append(t,e){if(0===t)return e;if(0===e)return t;let s=t;for(;;){const t=this.next(s);if(0===t)break;s=t}const i=this.inst[s>>1];return 1&s?i.arg=e:i.out=e,t}toString(){let t="";for(let e=0;e0){s=[];for(let i=0;it.min){let i=k.simplify1(L.Op.QUEST,t.flags,e,null);for(let s=t.min+1;s0&&(s+=" ");const e=t[i],n=t[i+1];s+=e===n?`0x${e.toString(16)}`:`0x${e.toString(16)}-0x${n.toString(16)}`}return s+="]",s}static cmp(t,e,s,i){const n=t[e]-s;return 0!==n?n:i-t[e+1]}static qsortIntPair(t,e,s){const i=(e+s)/2&-2,n=t[i],a=t[i+1];let r=e,o=s;for(;r<=o;){for(;re&&Q.cmp(t,o,n,a)>0;)o-=2;if(r<=o){if(r!==o){let e=t[r];t[r]=t[o],t[o]=e,e=t[r+1],t[r+1]=t[o+1],t[o+1]=e}r+=2,o-=2}}ethis.r[t-1]&&(this.r[t-1]=i);continue}this.r[t]=s,this.r[t+1]=i,t+=2}return this.len=t,this}appendLiteral(t,e){return e&i.FOLD_CASE?this.appendFoldedRange(t,t):this.appendRange(t,t)}appendRange(t,e){if(this.len>0)for(let s=2;s<=4;s+=2)if(this.len>=s){const i=this.r[this.len-s],n=this.r[this.len-s+1];if(t<=n+1&&i<=e+1)return tn&&(this.r[this.len-s+1]=e),this}return this.r[this.len++]=t,this.r[this.len++]=e,this}appendFoldedRange(t,e){if(t<=r.MIN_FOLD&&e>=r.MAX_FOLD)return this.appendRange(t,e);if(er.MAX_FOLD)return this.appendRange(t,e);tr.MAX_FOLD&&(this.appendRange(r.MAX_FOLD+1,e),e=r.MAX_FOLD);for(let s=t;s<=e;s++){this.appendRange(s,s);for(let t=r.simpleFold(s);t!==s;t=r.simpleFold(t))this.appendRange(t,t)}return this}appendClass(t){for(let e=0;er.MAX_FOLD)return t;let e=t;const s=t;for(t=r.simpleFold(t);t!==s;t=r.simpleFold(t))e>t&&(e=t);return e}static leadingRegexp(t){if(t.op===L.Op.EMPTY_MATCH)return null;if(t.op===L.Op.CONCAT&&t.subs.length>0){const e=t.subs[0];return e.op===L.Op.EMPTY_MATCH?null:e}return t}static literalRegexp(t,e){const s=new L(L.Op.LITERAL);return s.flags=e,s.runes=o.stringToRunes(t),s}static parse(t,e){return new et(t,e).parseInternal()}static parseRepeat(t){const e=t.pos();if(!t.more()||!t.lookingAt("{"))return-1;t.skip(1);const s=et.parseInt(t);if(-1===s)return-1;if(!t.more())return-1;let i;if(t.lookingAt(",")){if(t.skip(1),!t.more())return-1;if(t.lookingAt("}"))i=-1;else if(-1===(i=et.parseInt(t)))return-1}else i=s;if(!t.more()||!t.lookingAt("}"))return-1;if(t.skip(1),s<0||s>1e3||-2===i||i>1e3||i>=0&&s>i)throw new E(et.ERR_INVALID_REPEAT_SIZE,t.from(e));return s<<16|i&r.MAX_BMP}static isValidCaptureName(t){if(0===t.length)return!1;for(let e=0;e=n.CODES.get("0")&&t.peek()<=n.CODES.get("9");)t.skip(1);const s=t.from(e);return 0===s.length||s.length>1&&s.codePointAt(0)===n.CODES.get("0")?-1:s.length>8?-2:parseFloat(s,10)}static isCharClass(t){return t.op===L.Op.LITERAL&&1===t.runes.length||t.op===L.Op.CHAR_CLASS||t.op===L.Op.ANY_CHAR_NOT_NL||t.op===L.Op.ANY_CHAR}static matchRune(t,e){switch(t.op){case L.Op.LITERAL:return 1===t.runes.length&&t.runes[0]===e;case L.Op.CHAR_CLASS:for(let s=0;sn.CODES.get("7"))break;case n.CODES.get("0"):{let e=s-n.CODES.get("0");for(let s=1;s<3&&!(!t.more()||t.peek()n.CODES.get("7"));s++)e=8*e+t.peek()-n.CODES.get("0"),t.skip(1);return e}case n.CODES.get("x"):{if(!t.more())break;if(s=t.pop(),s===n.CODES.get("{")){let e=0,i=0;for(;;){if(!t.more())break t;if(s=t.pop(),s===n.CODES.get("}"))break;const a=o.unhex(s);if(a<0)break t;if(i=16*i+a,i>r.MAX_RUNE)break t;e++}if(0===e)break t;return i}const e=o.unhex(s);if(!t.more())break;s=t.pop();const i=o.unhex(s);if(e<0||i<0)break;return 16*e+i}case n.CODES.get("a"):return n.CODES.get("");case n.CODES.get("f"):return n.CODES.get("\f");case n.CODES.get("n"):return n.CODES.get("\n");case n.CODES.get("r"):return n.CODES.get("\r");case n.CODES.get("t"):return n.CODES.get("\t");case n.CODES.get("v"):return n.CODES.get("\v");default:if(s<=r.MAX_ASCII&&!o.isalnum(s))return s}throw new E(et.ERR_INVALID_ESCAPE,t.from(e))}static parseClassChar(t,e){if(!t.more())throw new E(et.ERR_MISSING_BRACKET,t.from(e));return t.lookingAt("\\")?et.parseEscape(t):t.pop()}static concatRunes(t,e){return[...t,...e]}constructor(t,e=0){this.wholeRegexp=t,this.flags=e,this.numCap=0,this.namedGroups={},this.stack=[],this.free=null,this.numRegexp=0,this.numRunes=0,this.repeats=0,this.height=null,this.size=null}newRegexp(t){let e=this.free;return null!==e&&null!==e.subs&&e.subs.length>0?(this.free=e.subs[0],e.reinit(),e.op=t):(e=new L(t),this.numRegexp+=1),e}reuse(t){null!==this.height&&Object.prototype.hasOwnProperty.call(this.height,t)&&delete this.height[t],null!==t.subs&&t.subs.length>0&&(t.subs[0]=this.free),this.free=t}checkLimits(t){if(this.numRunes>et.MAX_RUNES)throw new E(et.ERR_LARGE);this.checkSize(t),this.checkHeight(t)}checkSize(t){if(null===this.size){if(0===this.repeats&&(this.repeats=1),t.op===L.Op.REPEAT){let e=t.max;-1===e&&(e=t.min),e<=0&&(e=1),e>et.MAX_SIZE/this.repeats?this.repeats=et.MAX_SIZE:this.repeats*=e}if(this.numRegexpet.MAX_SIZE)throw new E(et.ERR_LARGE)}calcSize(t,e=!1){if(!e&&Object.prototype.hasOwnProperty.call(this.size,t))return this.size[t];let s=0;switch(t.op){case L.Op.LITERAL:s=t.runes.length;break;case L.Op.CAPTURE:case L.Op.STAR:s=2+this.calcSize(t.subs[0]);break;case L.Op.PLUS:case L.Op.QUEST:s=1+this.calcSize(t.subs[0]);break;case L.Op.CONCAT:for(let e of t.subs)s+=this.calcSize(e);break;case L.Op.ALTERNATE:for(let e of t.subs)s+=this.calcSize(e);t.subs.length>1&&(s=s+t.subs.length-1);break;case L.Op.REPEAT:{let e=this.calcSize(t.subs[0]);if(-1===t.max){s=0===t.min?2+e:1+t.min*e;break}s=t.max*e+(t.max-t.min);break}}return s=Math.max(1,s),this.size[t]=s,s}checkHeight(t){if(!(this.numRegexpet.MAX_HEIGHT)throw new E(et.ERR_NESTING_DEPTH)}}calcHeight(t,e=!1){if(!e&&Object.prototype.hasOwnProperty.call(this.height,t))return this.height[t];let s=1;for(let e of t.subs){const t=this.calcHeight(e);s<1+t&&(s=1+t)}return this.height[t]=s,s}pop(){return this.stack.pop()}popToPseudo(){const t=this.stack.length;let e=t;for(;e>0&&!L.isPseudoOp(this.stack[e-1].op);)e--;const s=this.stack.slice(e,t);return this.stack=this.stack.slice(0,e),s}push(t){if(this.numRunes+=t.runes.length,t.op===L.Op.CHAR_CLASS&&2===t.runes.length&&t.runes[0]===t.runes[1]){if(this.maybeConcat(t.runes[0],-2&this.flags))return null;t.op=L.Op.LITERAL,t.runes=[t.runes[0]],t.flags=-2&this.flags}else if(t.op===L.Op.CHAR_CLASS&&4===t.runes.length&&t.runes[0]===t.runes[1]&&t.runes[2]===t.runes[3]&&r.simpleFold(t.runes[0])===t.runes[2]&&r.simpleFold(t.runes[2])===t.runes[0]||t.op===L.Op.CHAR_CLASS&&2===t.runes.length&&t.runes[0]+1===t.runes[1]&&r.simpleFold(t.runes[0])===t.runes[1]&&r.simpleFold(t.runes[1])===t.runes[0]){if(this.maybeConcat(t.runes[0],this.flags|i.FOLD_CASE))return null;t.op=L.Op.LITERAL,t.runes=[t.runes[0]],t.flags=this.flags|i.FOLD_CASE}else this.maybeConcat(-1,0);return this.stack.push(t),this.checkLimits(t),t}maybeConcat(t,e){const s=this.stack.length;if(s<2)return!1;const n=this.stack[s-1],a=this.stack[s-2];return n.op===L.Op.LITERAL&&a.op===L.Op.LITERAL&&(n.flags&i.FOLD_CASE)==(a.flags&i.FOLD_CASE)&&(a.runes=et.concatRunes(a.runes,n.runes),t>=0?(n.runes=[t],n.flags=e,!0):(this.pop(),this.reuse(n),!1))}newLiteral(t,e){const s=this.newRegexp(L.Op.LITERAL);return s.flags=e,e&i.FOLD_CASE&&(t=et.minFoldRune(t)),s.runes=[t],s}literal(t){this.push(this.newLiteral(t,this.flags))}op(t){const e=this.newRegexp(t);return e.flags=this.flags,this.push(e)}repeat(t,e,s,n,a,r){let o=this.flags;if(o&i.PERL_X&&(a.more()&&a.lookingAt("?")&&(a.skip(1),o^=i.NON_GREEDY),-1!==r))throw new E(et.ERR_INVALID_REPEAT_OP,a.from(r));const h=this.stack.length;if(0===h)throw new E(et.ERR_MISSING_REPEAT_ARGUMENT,a.from(n));const c=this.stack[h-1];if(L.isPseudoOp(c.op))throw new E(et.ERR_MISSING_REPEAT_ARGUMENT,a.from(n));const l=this.newRegexp(t);if(l.min=e,l.max=s,l.flags=o,l.subs=[c],this.stack[h-1]=l,this.checkLimits(l),t===L.Op.REPEAT&&(e>=2||s>=2)&&!this.repeatIsValid(l,1e3))throw new E(et.ERR_INVALID_REPEAT_SIZE,a.from(n))}repeatIsValid(t,e){if(t.op===L.Op.REPEAT){let s=t.max;if(0===s)return!0;if(s<0&&(s=t.min),s>e)return!1;s>0&&(e=Math.trunc(e/s))}for(let s of t.subs)if(!this.repeatIsValid(s,e))return!1;return!0}concat(){this.maybeConcat(-1,0);const t=this.popToPseudo();return 0===t.length?this.push(this.newRegexp(L.Op.EMPTY_MATCH)):this.push(this.collapse(t,L.Op.CONCAT))}alternate(){const t=this.popToPseudo();return t.length>0&&this.cleanAlt(t[t.length-1]),0===t.length?this.push(this.newRegexp(L.Op.NO_MATCH)):this.push(this.collapse(t,L.Op.ALTERNATE))}cleanAlt(t){t.op===L.Op.CHAR_CLASS&&(t.runes=new Q(t.runes).cleanClass().toArray(),2===t.runes.length&&0===t.runes[0]&&t.runes[1]===r.MAX_RUNE?(t.runes=[],t.op=L.Op.ANY_CHAR):4===t.runes.length&&0===t.runes[0]&&t.runes[1]===n.CODES.get("\n")-1&&t.runes[2]===n.CODES.get("\n")+1&&t.runes[3]===r.MAX_RUNE&&(t.runes=[],t.op=L.Op.ANY_CHAR_NOT_NL))}collapse(t,e){if(1===t.length)return t[0];let s=0;for(let i of t)s+=i.op===e?i.subs.length:1;let i=new Array(s).fill(null),n=0;for(let s of t)s.op===e?(i.splice(n,s.subs.length,...s.subs),n+=s.subs.length,this.reuse(s)):i[n++]=s;let a=this.newRegexp(e);if(a.subs=i,e===L.Op.ALTERNATE&&(a.subs=this.factor(a.subs),1===a.subs.length)){const t=a;a=a.subs[0],this.reuse(t)}return a}factor(t){if(t.length<2)return t;let e=0,s=t.length,n=0,a=null,r=0,o=0,h=0;for(let c=0;c<=s;c++){let l=null,u=0,p=0;if(c0&&(s=s.subs[0]),s.op===L.Op.LITERAL&&(l=s.runes,u=s.runes.length,p=s.flags&i.FOLD_CASE),p===o){let t=0;for(;t0){r=t;continue}}}if(c===h);else if(c===h+1)t[n++]=t[e+h];else{const s=this.newRegexp(L.Op.LITERAL);s.flags=o,s.runes=a.slice(0,r);for(let s=h;s0){const s=this.removeLeadingString(t.subs[0],e);if(t.subs[0]=s,s.op===L.Op.EMPTY_MATCH)switch(this.reuse(s),t.subs.length){case 0:case 1:t.op=L.Op.EMPTY_MATCH,t.subs=null;break;case 2:{const e=t;t=t.subs[1],this.reuse(e);break}default:t.subs=t.subs.slice(1,t.subs.length)}return t}return t.op===L.Op.LITERAL&&(t.runes=t.runes.slice(e,t.runes.length),0===t.runes.length&&(t.op=L.Op.EMPTY_MATCH)),t}removeLeadingRegexp(t,e){if(t.op===L.Op.CONCAT&&t.subs.length>0){switch(e&&this.reuse(t.subs[0]),t.subs=t.subs.slice(1,t.subs.length),t.subs.length){case 0:t.op=L.Op.EMPTY_MATCH,t.subs=L.emptySubs();break;case 1:{const e=t;t=t.subs[0],this.reuse(e);break}}return t}return e&&this.reuse(t),this.newRegexp(L.Op.EMPTY_MATCH)}parseInternal(){if(this.flags&i.LITERAL)return et.literalRegexp(this.wholeRegexp,this.flags);let t=-1,e=-1,s=-1;const a=new tt(this.wholeRegexp);for(;a.more();){let h=-1;t:switch(a.peek()){case n.CODES.get("("):if(this.flags&i.PERL_X&&a.lookingAt("(?")){this.parsePerlFlags(a);break}this.op(L.Op.LEFT_PAREN).cap=++this.numCap,a.skip(1);break;case n.CODES.get("|"):this.parseVerticalBar(),a.skip(1);break;case n.CODES.get(")"):this.parseRightParen(),a.skip(1);break;case n.CODES.get("^"):this.flags&i.ONE_LINE?this.op(L.Op.BEGIN_TEXT):this.op(L.Op.BEGIN_LINE),a.skip(1);break;case n.CODES.get("$"):this.flags&i.ONE_LINE?this.op(L.Op.END_TEXT).flags|=i.WAS_DOLLAR:this.op(L.Op.END_LINE),a.skip(1);break;case n.CODES.get("."):this.flags&i.DOT_NL?this.op(L.Op.ANY_CHAR):this.op(L.Op.ANY_CHAR_NOT_NL),a.skip(1);break;case n.CODES.get("["):this.parseClass(a);break;case n.CODES.get("*"):case n.CODES.get("+"):case n.CODES.get("?"):{h=a.pos();let i=null;switch(a.pop()){case n.CODES.get("*"):i=L.Op.STAR;break;case n.CODES.get("+"):i=L.Op.PLUS;break;case n.CODES.get("?"):i=L.Op.QUEST}this.repeat(i,e,s,h,a,t);break}case n.CODES.get("{"):{h=a.pos();const i=et.parseRepeat(a);if(i<0){a.rewindTo(h),this.literal(a.pop());break}e=i>>16,s=(i&r.MAX_BMP)<<16>>16,this.repeat(L.Op.REPEAT,e,s,h,a,t);break}case n.CODES.get("\\"):{const t=a.pos();if(a.skip(1),this.flags&i.PERL_X&&a.more()){switch(a.pop()){case n.CODES.get("A"):this.op(L.Op.BEGIN_TEXT);break t;case n.CODES.get("b"):this.op(L.Op.WORD_BOUNDARY);break t;case n.CODES.get("B"):this.op(L.Op.NO_WORD_BOUNDARY);break t;case n.CODES.get("C"):throw new E(et.ERR_INVALID_ESCAPE,"\\C");case n.CODES.get("Q"):{let t=a.rest();const e=t.indexOf("\\E");e>=0&&(t=t.substring(0,e)),a.skipString(t),a.skipString("\\E");let s=0;for(;s");if(i<0)throw new E(et.ERR_INVALID_NAMED_CAPTURE,s);const n=s.substring(e,i);if(t.skipString(n),t.skip(e+1),!et.isValidCaptureName(n))throw new E(et.ERR_INVALID_NAMED_CAPTURE,s.substring(0,i+1));const a=this.op(L.Op.LEFT_PAREN);if(a.cap=++this.numCap,this.namedGroups[n])throw new E(et.ERR_DUPLICATE_NAMED_CAPTURE,n);return this.namedGroups[n]=this.numCap,void(a.name=n)}t.skip(2);let a=this.flags,r=1,o=!1;t:for(;t.more();){const e=t.pop();switch(e){case n.CODES.get("i"):a|=i.FOLD_CASE,o=!0;break;case n.CODES.get("m"):a&=-17,o=!0;break;case n.CODES.get("s"):a|=i.DOT_NL,o=!0;break;case n.CODES.get("U"):a|=i.NON_GREEDY,o=!0;break;case n.CODES.get("-"):if(r<0)break t;r=-1,a=~a,o=!1;break;case n.CODES.get(":"):case n.CODES.get(")"):if(r<0){if(!o)break t;a=~a}return e===n.CODES.get(":")&&this.op(L.Op.LEFT_PAREN),void(this.flags=a);default:break t}}throw new E(et.ERR_INVALID_PERL_OP,t.from(e))}parseVerticalBar(){this.concat(),this.swapVerticalBar()||this.op(L.Op.VERTICAL_BAR)}swapVerticalBar(){const t=this.stack.length;if(t>=3&&this.stack[t-2].op===L.Op.VERTICAL_BAR&&et.isCharClass(this.stack[t-1])&&et.isCharClass(this.stack[t-3])){let e=this.stack[t-1],s=this.stack[t-3];if(e.op>s.op){const i=s;s=e,e=i,this.stack[t-3]=s}return et.mergeCharClass(s,e),this.reuse(e),this.pop(),!0}if(t>=2){const e=this.stack[t-1],s=this.stack[t-2];if(s.op===L.Op.VERTICAL_BAR)return t>=3&&this.cleanAlt(this.stack[t-3]),this.stack[t-2]=e,this.stack[t-1]=s,!0}return!1}parseRightParen(){this.concat(),this.swapVerticalBar()&&this.pop(),this.alternate();if(this.stack.length<2)throw new E(et.ERR_UNEXPECTED_PAREN,this.wholeRegexp);const t=this.pop(),e=this.pop();if(e.op!==L.Op.LEFT_PAREN)throw new E(et.ERR_UNEXPECTED_PAREN,this.wholeRegexp);this.flags=e.flags,0===e.cap?this.push(t):(e.op=L.Op.CAPTURE,e.subs=[t],this.push(e))}parsePerlClassEscape(t,e){const s=t.pos();if(!(this.flags&i.PERL_X&&t.more()&&t.pop()===n.CODES.get("\\")&&t.more()))return!1;t.pop();const a=t.from(s),r=y.has(a)?y.get(a):null;return null!==r&&(e.appendGroup(r,!!(this.flags&i.FOLD_CASE)),!0)}parseNamedClass(t,e){const s=t.rest(),n=s.indexOf(":]");if(n<0)return!1;const a=s.substring(0,n+2);t.skipString(a);const r=j.has(a)?j.get(a):null;if(null===r)throw new E(et.ERR_INVALID_CHAR_RANGE,a);return e.appendGroup(r,!!(this.flags&i.FOLD_CASE)),!0}parseUnicodeClass(t,e){const s=t.pos();if(!(this.flags&i.UNICODE_GROUPS)||!t.lookingAt("\\p")&&!t.lookingAt("\\P"))return!1;t.skip(1);let a,r=1,h=t.pop();if(h===n.CODES.get("P")&&(r=-1),!t.more())throw t.rewindTo(s),new E(et.ERR_INVALID_CHAR_RANGE,t.rest());if(h=t.pop(),h!==n.CODES.get("{"))a=o.runeToString(h);else{const e=t.rest(),i=e.indexOf("}");if(i<0)throw t.rewindTo(s),new E(et.ERR_INVALID_CHAR_RANGE,t.rest());a=e.substring(0,i),t.skipString(a),t.skip(1)}0!==a.length&&a.codePointAt(0)===n.CODES.get("^")&&(r=0-r,a=a.substring(1));const c=et.unicodeTable(a);if(null===c)throw new E(et.ERR_INVALID_CHAR_RANGE,t.from(s));const l=c.first,u=c.second;if(this.flags&i.FOLD_CASE&&null!==u){const t=(new Q).appendTable(l).appendTable(u).cleanClass().toArray();e.appendClassWithSign(t,r)}else e.appendTableWithSign(l,r);return!0}parseClass(t){const e=t.pos();t.skip(1);const s=this.newRegexp(L.Op.CHAR_CLASS);s.flags=this.flags;const a=new Q;let r=1;t.more()&&t.lookingAt("^")&&(r=-1,t.skip(1),this.flags&i.CLASS_NL||a.appendRange(n.CODES.get("\n"),n.CODES.get("\n")));let o=!0;for(;!t.more()||t.peek()!==n.CODES.get("]")||o;){if(t.more()&&t.lookingAt("-")&&!(this.flags&i.PERL_X)&&!o){const s=t.rest();if("-"===s||!s.startsWith("-]"))throw t.rewindTo(e),new E(et.ERR_INVALID_CHAR_RANGE,t.rest())}o=!1;const s=t.pos();if(t.lookingAt("[:")){if(this.parseNamedClass(t,a))continue;t.rewindTo(s)}if(this.parseUnicodeClass(t,a))continue;if(this.parsePerlClassEscape(t,a))continue;t.rewindTo(s);const n=et.parseClassChar(t,e);let r=n;if(t.more()&&t.lookingAt("-"))if(t.skip(1),t.more()&&t.lookingAt("]"))t.skip(-1);else if(r=et.parseClassChar(t,e),r0&&(r.prefixRune=r.prefix.codePointAt(0)),r.namedGroups=i.namedGroups,r}static match(t,e){return it.compile(t).match(e)}constructor(t,e,s=0,i=0){this.expr=t,this.prog=e,this.numSubexp=s,this.longest=i,this.cond=e.startCond(),this.prefix=null,this.prefixUTF8=null,this.prefixComplete=!1,this.prefixRune=0,this.pooled=new st}numberOfCapturingGroups(){return this.numSubexp}numberOfInstructions(){return this.prog.numInst()}get(){let t;do{t=this.pooled.get()}while(t&&!this.pooled.compareAndSet(t,t.next));return t}reset(){this.pooled.set(null)}put(t,e){let s=this.pooled.get();do{s=this.pooled.get(),!e&&s&&(t=b.fromMachine(t),e=!0),t.next!==s&&(t.next=s)}while(!this.pooled.compareAndSet(s,t))}toString(){return this.expr}doExecute(t,e,s,i){let n=this.get(),a=!1;n?null!==n.next&&(n=b.fromMachine(n),a=!0):(n=b.fromRE2(this),a=!0),n.init(i);const r=n.match(t,e,s)?n.submatches():null;return this.put(n,a),r}match(t){return null!==this.doExecute(S.fromUTF16(t),0,i.UNANCHORED,0)}matchWithGroup(t,e,s,i,n){return t instanceof c||(t=p.utf16(t)),this.matchMachineInput(t,e,s,i,n)}matchMachineInput(t,e,s,i,n){if(e>s)return[!1,null];const a=t.isUTF16Encoding()?S.fromUTF16(t.asCharSequence(),0,s):S.fromUTF8(t.asBytes(),0,s),r=this.doExecute(a,e,i,2*n);return null===r?[!1,null]:[!0,r]}matchUTF8(t){return null!==this.doExecute(S.fromUTF8(t),0,i.UNANCHORED,0)}replaceAll(t,e){return this.replaceAllFunc(t,(()=>e),2*t.length+1)}replaceFirst(t,e){return this.replaceAllFunc(t,(()=>e),1)}replaceAllFunc(t,e,s){let n=0,a=0,r="";const o=S.fromUTF16(t);let h=0;for(;a<=t.length;){const c=this.doExecute(o,a,i.UNANCHORED,2);if(null===c||0===c.length)break;r+=t.substring(n,c[0]),(c[1]>n||0===c[0])&&(r+=e(t.substring(c[0],c[1])),h++),n=c[1];const l=7&o.step(a);if(a+l>c[1]?a+=l:a+1>c[1]?a++:a=c[1],h>=s)break}return r+=t.substring(n),r}pad(t){if(null===t)return null;let e=2*(1+this.numSubexp);if(t.lengtht){let n=[];const a=t.endPos();e<0&&(e=a+1);let r=0,o=0,h=-1;for(;o=0&&(s[i]=t.slice(e[2*i],e[2*i+1]));return s}findUTF8SubmatchIndex(t){return this.pad(this.doExecute(S.fromUTF8(t),0,i.UNANCHORED,this.prog.numCap))}findSubmatch(t){const e=this.doExecute(S.fromUTF16(t),0,i.UNANCHORED,this.prog.numCap);if(null===e)return null;const s=new Array(1+this.numSubexp).fill(null);for(let i=0;i=0&&(s[i]=t.substring(e[2*i],e[2*i+1]));return s}findSubmatchIndex(t){return this.pad(this.doExecute(S.fromUTF16(t),0,i.UNANCHORED,this.prog.numCap))}findAllUTF8(t,e){const s=this.allMatches(S.fromUTF8(t),e,(e=>t.slice(e[0],e[1])));return 0===s.length?null:s}findAllUTF8Index(t,e){const s=this.allMatches(S.fromUTF8(t),e,(t=>t.slice(0,2)));return 0===s.length?null:s}findAll(t,e){const s=this.allMatches(S.fromUTF16(t),e,(e=>t.substring(e[0],e[1])));return 0===s.length?null:s}findAllIndex(t,e){const s=this.allMatches(S.fromUTF16(t),e,(t=>t.slice(0,2)));return 0===s.length?null:s}findAllUTF8Submatch(t,e){const s=this.allMatches(S.fromUTF8(t),e,(e=>{let s=new Array(e.length/2|0).fill(null);for(let i=0;i=0&&(s[i]=t.slice(e[2*i],e[2*i+1]));return s}));return 0===s.length?null:s}findAllUTF8SubmatchIndex(t,e){const s=this.allMatches(S.fromUTF8(t),e);return 0===s.length?null:s}findAllSubmatch(t,e){const s=this.allMatches(S.fromUTF16(t),e,(e=>{let s=new Array(e.length/2|0).fill(null);for(let i=0;i=0&&(s[i]=t.substring(e[2*i],e[2*i+1]));return s}));return 0===s.length?null:s}findAllSubmatchIndex(t,e){const s=this.allMatches(S.fromUTF16(t),e);return 0===s.length?null:s}}class nt{static isUpperCaseAlpha(t){return"A"<=t&&t<="Z"}static isHexadecimal(t){return"0"<=t&&t<="9"||"A"<=t&&t<="F"||"a"<=t&&t<="f"}static getUtf8CharSize(t){const e=t.charCodeAt(0);return e<128?1:e<2048?2:e<65536?3:4}static translate(t){if("string"!=typeof t)return t;let e="",s=!1,i=t.length;0===i&&(e="(?:)",s=!0);let n=0;for(;n>4).toString(16).toUpperCase(),e+=(i.charCodeAt(0)-64&15).toString(16).toUpperCase(),n+=3,s=!0;continue}}e+="\\c",n+=2;continue;case"u":if(n+2=i||"="!==t[n+3]&&"!"!==t[n+3])){e+="(?P<",n+=3,s=!0;continue}}let r=nt.getUtf8CharSize(a);e+=t.substring(n,n+r),n+=r}return s?e:t}}class at{static CASE_INSENSITIVE=1;static DOTALL=2;static MULTILINE=4;static DISABLE_UNICODE_GROUPS=8;static LONGEST_MATCH=16;static quote(t){return o.quoteMeta(t)}static translateRegExp(t){return nt.translate(t)}static compile(t,e=0){let s=t;if(e&at.CASE_INSENSITIVE&&(s=`(?i)${s}`),e&at.DOTALL&&(s=`(?s)${s}`),e&at.MULTILINE&&(s=`(?m)${s}`),e&~(at.MULTILINE|at.DOTALL|at.CASE_INSENSITIVE|at.DISABLE_UNICODE_GROUPS|at.LONGEST_MATCH))throw new _("Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH");let n=i.PERL;e&at.DISABLE_UNICODE_GROUPS&&(n&=-129);const a=new at(t,e);return a.re2Input=it.compileImpl(s,n,!!(e&at.LONGEST_MATCH)),a}static matches(t,e){return at.compile(t).matcher(e).matches()}static initTest(t,e,s){if(null==t)throw new Error("pattern is null");if(null==s)throw new Error("re2 is null");const i=new at(t,e);return i.re2Input=s,i}constructor(t,e){this.patternInput=t,this.flagsInput=e}reset(){this.re2Input.reset()}flags(){return this.flagsInput}pattern(){return this.patternInput}re2(){return this.re2Input}matches(t){return this.matcher(t).matches()}matcher(t){return Array.isArray(t)&&(t=p.utf8(t)),new C(this,t)}split(t,e=0){const s=this.matcher(t),i=[];let n=0,a=0;for(;s.find();)if(0!==a||0!==s.end()){if(e>0&&i.length===e-1)break;if(a===s.start()){if(0===e){n+=1,a=s.end();continue}}else for(;n>0;)i.push(""),n-=1;i.push(s.substring(a,s.start())),a=s.end()}else a=s.end();if(0===e&&a!==s.inputLength()){for(;n>0;)i.push(""),n-=1;i.push(s.substring(a,s.inputLength()))}return 0===e&&0!==i.length||i.push(s.substring(a,s.inputLength())),i}toString(){return this.patternInput}programSize(){return this.re2Input.numberOfInstructions()}groupCount(){return this.re2Input.numberOfCapturingGroups()}namedGroups(){return this.re2Input.namedGroups}equals(t){return this===t||null!==t&&this.constructor===t.constructor&&(this.flagsInput===t.flagsInput&&this.patternInput===t.patternInput)}}}}]); +//# sourceMappingURL=470.js.map?_cache=3204c8fc47e32152da72 \ No newline at end of file diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/470.js.LICENSE.txt b/compose/grafana/plugins/grafana-lokiexplore-app/470.js.LICENSE.txt new file mode 100644 index 0000000..0fac0b7 --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/470.js.LICENSE.txt @@ -0,0 +1,10 @@ +/*! + * re2js + * RE2JS is the JavaScript port of RE2, a regular expression engine that provides linear time matching + * + * @version v1.1.0 + * @author Alexey Vasiliev + * @homepage https://github.com/le0pard/re2js#readme + * @repository github:le0pard/re2js + * @license MIT + */ diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/470.js.map b/compose/grafana/plugins/grafana-lokiexplore-app/470.js.map new file mode 100644 index 0000000..6409185 --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/470.js.map @@ -0,0 +1 @@ +{"version":3,"file":"470.js?_cache=3204c8fc47e32152da72","mappings":";8RAWA,MAAMA,EAEJC,iBAAmB,EAEnBA,eAAiB,EAEjBA,gBAAkB,EAElBA,cAAgB,EAGhBA,gBAAkB,GAElBA,kBAAoB,GAapBA,cAAgB,GAEhBA,sBAAwB,IAExBA,kBAAoB,IACpBA,gBAAkB,KAAOD,EAASE,SAAWF,EAASG,OAApC,GAElBF,YAAc,KAAOD,EAASE,SAAWF,EAASI,SAAWJ,EAASK,OAASL,EAASM,eAA1E,GAEdL,aAAe,EAEfA,kBAAoB,EACpBA,oBAAsB,EACtBA,mBAAqB,EAMvB,MAAMM,EAEJN,aAAe,KAAO,IAAIO,IAAI,CAAC,CAAC,IAAQ,GAAI,CAAC,KAAM,GAAI,CAAC,KAAM,GAAI,CAAC,KAAM,IAAK,CAAC,KAAM,IAAK,CAAC,KAAM,IAAK,CAAC,KAAM,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,KAAM,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,IAAK,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,OAAvqB,GAIf,kBAAOC,CAAYC,GACjB,MAAMC,EAAIC,OAAOC,cAAcH,GAAWD,cAC1C,GAAIE,EAAEG,OAAS,EACb,OAAOJ,EAET,MAAMK,EAAUH,OAAOC,cAAcF,EAAEK,YAAY,IAAIC,cACvD,OAAIF,EAAQD,OAAS,GAAKC,EAAQC,YAAY,KAAON,EAC5CA,EAEFC,EAAEK,YAAY,EACvB,CAIA,kBAAOC,CAAYP,GACjB,MAAMC,EAAIC,OAAOC,cAAcH,GAAWO,cAC1C,GAAIN,EAAEG,OAAS,EACb,OAAOJ,EAET,MAAMK,EAAUH,OAAOC,cAAcF,EAAEK,YAAY,IAAIP,cACvD,OAAIM,EAAQD,OAAS,GAAKC,EAAQC,YAAY,KAAON,EAC5CA,EAEFC,EAAEK,YAAY,EACvB,EAMF,MAAME,EACJjB,kBAAoB,KAAO,IAAIO,IAAI,CAAC,CAAC,GAAI,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,IAAK,CAAC,GAAI,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,IAAK,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,IAAK,MAAO,CAAC,KAAM,KAAM,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,OAAQ,CAAC,MAAO,KAAM,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,IAAK,OAAQ,CAAC,MAAO,KAAM,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,MAAQ,CAAC,KAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,MAAO,OAAQ,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,UAA7/V,GACpBP,SAAW,CAAC,CAAC,EAAG,GAAI,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,KAAM,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OA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AAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,IAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,MAAO,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAC/lXA,aAAe,CAAC,CAAC,IAAK,IAAK,IAC3BA,UAAY,CAAC,CAAC,GAAI,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,IAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,MAAO,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAC95FA,cAAgB,CAAC,CAAC,GAAI,GAAI,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,IAClhEA,UAAY,CAAC,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,KAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,OACpkCA,UAAY,CAAC,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,IAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAC5lSA,UAAY,CAAC,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IACjIA,cAAgB,CAAC,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAC/JA,UAAY,CAAC,CAAC,GAAI,GAAI,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,MAAO,CAAC,OAAQ,OAAQ,IAC1pFA,aAAekB,KAAKC,GACpBnB,cAAgB,CAAC,CAAC,GAAI,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,IAAK,KAAM,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,IAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,IACh/DA,SAAW,CAAC,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,KAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,MAAO,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAC3jLA,aAAe,CAAC,CAAC,IAAK,IAAK,IAAK,CAAC,KAAM,KAAM,IAC7CA,UAAY,CAAC,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,KAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IACl/FA,UAAY,CAAC,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,IACnGA,UAAY,CAAC,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,MAAO,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAC5sLA,cAAgB,CAAC,CAAC,IAAK,IAAK,IAAK,CAAC,KAAM,KAAM,IAC9CA,SAAW,CAAC,CAAC,GAAI,GAAI,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IACllFA,UAAY,CAAC,CAAC,GAAI,GAAI,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAChyCA,UAAY,CAAC,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IACrNA,UAAY,CAAC,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAC9zCA,SAAW,CAAC,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,IAAK,IAAK,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,IAC7nGA,UAAY,CAAC,CAAC,GAAI,KAAM,MAAO,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IACtGA,UAAY,CAAC,CAAC,GAAI,KAAM,MAAO,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,MACrPA,UAAY,CAAC,CAAC,GAAI,GAAI,IAAK,CAAC,IAAK,KAAM,MAAO,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAChcA,UAAY,CAAC,CAAC,IAAK,KAAM,MAAO,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IACvGA,UAAY,CAAC,CAAC,IAAK,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IACxHA,UAAY,CAAC,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,IAAK,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,KAAM,CAAC,IAAK,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,IAC7lGA,UAAY,CAAC,CAAC,GAAI,GAAI,IAAK,CAAC,IAAK,KAAM,MAAO,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAC3fA,SAAW,CAAC,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,GAAI,GAAI,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,IAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,KAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAC/zHA,UAAY,CAAC,CAAC,GAAI,IAAK,KAAM,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,OAClSA,UAAY,CAAC,CAAC,GAAI,GAAI,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,IAAK,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,IACldA,UAAY,CAAC,CAAC,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,IAC75BA,UAAY,CAAC,CAAC,IAAK,IAAK,GAAI,CAAC,IAAK,IAAK,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,IAAK,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,IAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,KAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,MAAO,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,MAAO,CAAC,OAAQ,OAAQ,KAAM,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,MAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,IAAK,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,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CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,MAAO,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,KAAM,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,KAAM,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,OAAQ,CAAC,MAAO,MAAO,KAAM,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,IAAK,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,KAAO,MAAO,GAAI,CAAC,MAAO,MAAO,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,CAAC,OAAQ,OAAQ,GAAI,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","sources":["webpack://grafana-lokiexplore-app/../node_modules/re2js/build/index.esm.js"],"sourcesContent":["/*!\n * re2js\n * RE2JS is the JavaScript port of RE2, a regular expression engine that provides linear time matching\n *\n * @version v1.1.0\n * @author Alexey Vasiliev\n * @homepage https://github.com/le0pard/re2js#readme\n * @repository github:le0pard/re2js\n * @license MIT\n */\n//// Parser flags.\nclass RE2Flags {\n // Fold case during matching (case-insensitive).\n static FOLD_CASE = 0x01;\n // Treat pattern as a literal string instead of a regexp.\n static LITERAL = 0x02;\n // Allow character classes like [^a-z] and [[:space:]] to match newline.\n static CLASS_NL = 0x04;\n // Allow '.' to match newline.\n static DOT_NL = 0x08;\n // Treat ^ and $ as only matching at beginning and end of text, not\n // around embedded newlines. (Perl's default).\n static ONE_LINE = 0x10;\n // Make repetition operators default to non-greedy.\n static NON_GREEDY = 0x20;\n // allow Perl extensions:\n // non-capturing parens - (?: )\n // non-greedy operators - *? +? ?? {}?\n // flag edits - (?i) (?-i) (?i: )\n // i - FoldCase\n // m - !OneLine\n // s - DotNL\n // U - NonGreedy\n // line ends: \\A \\z\n // \\Q and \\E to disable/enable metacharacters\n // (?Pexpr) for named captures\n // \\C (any byte) is not supported.\n static PERL_X = 0x40;\n // Allow \\p{Han}, \\P{Han} for Unicode group and negation.\n static UNICODE_GROUPS = 0x80;\n // Regexp END_TEXT was $, not \\z. Internal use only.\n static WAS_DOLLAR = 0x100;\n static MATCH_NL = (() => RE2Flags.CLASS_NL | RE2Flags.DOT_NL)();\n // As close to Perl as possible.\n static PERL = (() => RE2Flags.CLASS_NL | RE2Flags.ONE_LINE | RE2Flags.PERL_X | RE2Flags.UNICODE_GROUPS)();\n // POSIX syntax.\n static POSIX = 0;\n //// Anchors\n static UNANCHORED = 0;\n static ANCHOR_START = 1;\n static ANCHOR_BOTH = 2;\n}\n\n/**\n * Various constants and helper for unicode codepoints.\n */\nclass Codepoint {\n // codePointAt(0)\n static CODES = (() => new Map([['\\x07', 7], ['\\b', 8], ['\\t', 9], ['\\n', 10], ['\\v', 11], ['\\f', 12], ['\\r', 13], [' ', 32], ['\"', 34], ['$', 36], ['&', 38], ['(', 40], [')', 41], ['*', 42], ['+', 43], ['-', 45], ['.', 46], ['0', 48], ['1', 49], ['2', 50], ['3', 51], ['4', 52], ['5', 53], ['6', 54], ['7', 55], ['8', 56], ['9', 57], [':', 58], ['<', 60], ['>', 62], ['?', 63], ['A', 65], ['B', 66], ['C', 67], ['F', 70], ['P', 80], ['Q', 81], ['U', 85], ['Z', 90], ['[', 91], ['\\\\', 92], [']', 93], ['^', 94], ['_', 95], ['a', 97], ['b', 98], ['f', 102], ['i', 105], ['m', 109], ['n', 110], ['r', 114], ['s', 115], ['t', 116], ['v', 118], ['x', 120], ['z', 122], ['{', 123], ['|', 124], ['}', 125]]))();\n\n // convert unicode codepoint to upper case codepoint\n // return same codepoint, if cannot do it (or codepoint not have upper variation)\n static toUpperCase(codepoint) {\n const s = String.fromCodePoint(codepoint).toUpperCase();\n if (s.length > 1) {\n return codepoint;\n }\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toLowerCase();\n if (sOrigin.length > 1 || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint;\n }\n return s.codePointAt(0);\n }\n\n // convert unicode codepoint to lower case codepoint\n // return same codepoint, if cannot do it (or codepoint not have lower variation)\n static toLowerCase(codepoint) {\n const s = String.fromCodePoint(codepoint).toLowerCase();\n if (s.length > 1) {\n return codepoint;\n }\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toUpperCase();\n if (sOrigin.length > 1 || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint;\n }\n return s.codePointAt(0);\n }\n}\n\n// GENERATED BY tools/scripts/genUnicodeTable.js; DO NOT EDIT.\n// yarn node ./tools/scripts/genUnicodeTable.js > src/UnicodeTables.js\n\nclass UnicodeTables {\n static CASE_ORBIT = (() => new Map([[75, 107], [107, 8490], [8490, 75], [83, 115], [115, 383], [383, 83], [181, 924], [924, 956], [956, 181], [197, 229], [229, 8491], [8491, 197], [452, 453], [453, 454], [454, 452], [455, 456], [456, 457], [457, 455], [458, 459], [459, 460], [460, 458], [497, 498], [498, 499], [499, 497], [837, 921], [921, 953], [953, 8126], [8126, 837], [914, 946], [946, 976], [976, 914], [917, 949], [949, 1013], [1013, 917], [920, 952], [952, 977], [977, 1012], [1012, 920], [922, 954], [954, 1008], [1008, 922], [928, 960], [960, 982], [982, 928], [929, 961], [961, 1009], [1009, 929], [931, 962], [962, 963], [963, 931], [934, 966], [966, 981], [981, 934], [937, 969], [969, 8486], [8486, 937], [1042, 1074], [1074, 7296], [7296, 1042], [1044, 1076], [1076, 7297], [7297, 1044], [1054, 1086], [1086, 7298], [7298, 1054], [1057, 1089], [1089, 7299], [7299, 1057], [1058, 1090], [1090, 7300], [7300, 7301], [7301, 1058], [1066, 1098], [1098, 7302], [7302, 1066], [1122, 1123], [1123, 7303], [7303, 1122], [7304, 42570], [42570, 42571], [42571, 7304], [7305, 7306], [7306, 7305], [7776, 7777], [7777, 7835], [7835, 7776], [223, 7838], [7838, 223], [8064, 8072], [8072, 8064], [8065, 8073], [8073, 8065], [8066, 8074], [8074, 8066], [8067, 8075], [8075, 8067], [8068, 8076], [8076, 8068], [8069, 8077], [8077, 8069], [8070, 8078], [8078, 8070], [8071, 8079], [8079, 8071], [8080, 8088], [8088, 8080], [8081, 8089], [8089, 8081], [8082, 8090], [8090, 8082], [8083, 8091], [8091, 8083], [8084, 8092], [8092, 8084], [8085, 8093], [8093, 8085], [8086, 8094], [8094, 8086], [8087, 8095], [8095, 8087], [8096, 8104], [8104, 8096], [8097, 8105], [8105, 8097], [8098, 8106], [8106, 8098], [8099, 8107], [8107, 8099], [8100, 8108], [8108, 8100], [8101, 8109], [8109, 8101], [8102, 8110], [8110, 8102], [8103, 8111], [8111, 8103], [8115, 8124], [8124, 8115], [8131, 8140], [8140, 8131], [912, 8147], [8147, 912], [944, 8163], [8163, 944], [8179, 8188], [8188, 8179], [612, 42955], [42955, 612], [42956, 42957], [42957, 42956], [42970, 42971], [42971, 42970], [411, 42972], [42972, 411], [64261, 64262], [64262, 64261], [66560, 66600], [66600, 66560], [66561, 66601], [66601, 66561], [66562, 66602], [66602, 66562], [66563, 66603], [66603, 66563], [66564, 66604], [66604, 66564], [66565, 66605], [66605, 66565], [66566, 66606], [66606, 66566], [66567, 66607], [66607, 66567], [66568, 66608], [66608, 66568], [66569, 66609], [66609, 66569], [66570, 66610], [66610, 66570], [66571, 66611], [66611, 66571], [66572, 66612], [66612, 66572], [66573, 66613], [66613, 66573], [66574, 66614], [66614, 66574], [66575, 66615], [66615, 66575], [66576, 66616], [66616, 66576], [66577, 66617], [66617, 66577], [66578, 66618], [66618, 66578], [66579, 66619], [66619, 66579], [66580, 66620], [66620, 66580], [66581, 66621], [66621, 66581], [66582, 66622], [66622, 66582], [66583, 66623], [66623, 66583], [66584, 66624], [66624, 66584], [66585, 66625], [66625, 66585], [66586, 66626], [66626, 66586], [66587, 66627], [66627, 66587], [66588, 66628], [66628, 66588], [66589, 66629], [66629, 66589], [66590, 66630], [66630, 66590], [66591, 66631], [66631, 66591], [66592, 66632], [66632, 66592], [66593, 66633], [66633, 66593], [66594, 66634], [66634, 66594], [66595, 66635], [66635, 66595], [66596, 66636], [66636, 66596], [66597, 66637], [66637, 66597], [66598, 66638], [66638, 66598], [66599, 66639], [66639, 66599], [66736, 66776], [66776, 66736], [66737, 66777], [66777, 66737], [66738, 66778], [66778, 66738], [66739, 66779], [66779, 66739], [66740, 66780], [66780, 66740], [66741, 66781], [66781, 66741], [66742, 66782], [66782, 66742], [66743, 66783], [66783, 66743], [66744, 66784], [66784, 66744], [66745, 66785], [66785, 66745], [66746, 66786], [66786, 66746], [66747, 66787], [66787, 66747], [66748, 66788], [66788, 66748], [66749, 66789], [66789, 66749], [66750, 66790], [66790, 66750], [66751, 66791], [66791, 66751], [66752, 66792], [66792, 66752], [66753, 66793], [66793, 66753], [66754, 66794], [66794, 66754], [66755, 66795], [66795, 66755], [66756, 66796], [66796, 66756], [66757, 66797], [66797, 66757], [66758, 66798], [66798, 66758], [66759, 66799], [66799, 66759], [66760, 66800], [66800, 66760], [66761, 66801], [66801, 66761], [66762, 66802], [66802, 66762], [66763, 66803], [66803, 66763], [66764, 66804], [66804, 66764], [66765, 66805], [66805, 66765], [66766, 66806], [66806, 66766], [66767, 66807], [66807, 66767], [66768, 66808], [66808, 66768], [66769, 66809], [66809, 66769], [66770, 66810], [66810, 66770], [66771, 66811], [66811, 66771], [66928, 66967], [66967, 66928], [66929, 66968], [66968, 66929], [66930, 66969], [66969, 66930], [66931, 66970], [66970, 66931], [66932, 66971], [66971, 66932], [66933, 66972], [66972, 66933], [66934, 66973], [66973, 66934], [66935, 66974], [66974, 66935], [66936, 66975], [66975, 66936], [66937, 66976], [66976, 66937], [66938, 66977], [66977, 66938], [66940, 66979], [66979, 66940], [66941, 66980], [66980, 66941], [66942, 66981], [66981, 66942], [66943, 66982], [66982, 66943], [66944, 66983], [66983, 66944], [66945, 66984], [66984, 66945], [66946, 66985], [66985, 66946], [66947, 66986], [66986, 66947], [66948, 66987], [66987, 66948], [66949, 66988], [66988, 66949], [66950, 66989], [66989, 66950], [66951, 66990], [66990, 66951], [66952, 66991], [66991, 66952], [66953, 66992], [66992, 66953], [66954, 66993], [66993, 66954], [66956, 66995], [66995, 66956], [66957, 66996], [66996, 66957], [66958, 66997], [66997, 66958], [66959, 66998], [66998, 66959], [66960, 66999], [66999, 66960], [66961, 67000], [67000, 66961], [66962, 67001], [67001, 66962], [66964, 67003], [67003, 66964], [66965, 67004], [67004, 66965], [68736, 68800], [68800, 68736], [68737, 68801], [68801, 68737], [68738, 68802], [68802, 68738], [68739, 68803], [68803, 68739], [68740, 68804], [68804, 68740], [68741, 68805], [68805, 68741], [68742, 68806], [68806, 68742], [68743, 68807], [68807, 68743], [68744, 68808], [68808, 68744], [68745, 68809], [68809, 68745], [68746, 68810], [68810, 68746], [68747, 68811], [68811, 68747], [68748, 68812], [68812, 68748], [68749, 68813], [68813, 68749], [68750, 68814], [68814, 68750], [68751, 68815], [68815, 68751], [68752, 68816], [68816, 68752], [68753, 68817], [68817, 68753], [68754, 68818], [68818, 68754], [68755, 68819], [68819, 68755], [68756, 68820], [68820, 68756], [68757, 68821], [68821, 68757], [68758, 68822], [68822, 68758], [68759, 68823], [68823, 68759], [68760, 68824], [68824, 68760], [68761, 68825], [68825, 68761], [68762, 68826], [68826, 68762], [68763, 68827], [68827, 68763], [68764, 68828], [68828, 68764], [68765, 68829], [68829, 68765], [68766, 68830], [68830, 68766], [68767, 68831], [68831, 68767], [68768, 68832], [68832, 68768], [68769, 68833], [68833, 68769], [68770, 68834], [68834, 68770], [68771, 68835], [68835, 68771], [68772, 68836], [68836, 68772], [68773, 68837], [68837, 68773], [68774, 68838], [68838, 68774], [68775, 68839], [68839, 68775], [68776, 68840], [68840, 68776], [68777, 68841], [68841, 68777], [68778, 68842], [68842, 68778], [68779, 68843], [68843, 68779], [68780, 68844], [68844, 68780], [68781, 68845], [68845, 68781], [68782, 68846], [68846, 68782], [68783, 68847], [68847, 68783], [68784, 68848], [68848, 68784], [68785, 68849], [68849, 68785], [68786, 68850], [68850, 68786], [68944, 68976], [68976, 68944], [68945, 68977], [68977, 68945], [68946, 68978], [68978, 68946], [68947, 68979], [68979, 68947], [68948, 68980], [68980, 68948], [68949, 68981], [68981, 68949], [68950, 68982], [68982, 68950], [68951, 68983], [68983, 68951], [68952, 68984], [68984, 68952], [68953, 68985], [68985, 68953], [68954, 68986], [68986, 68954], [68955, 68987], [68987, 68955], [68956, 68988], [68988, 68956], [68957, 68989], [68989, 68957], [68958, 68990], [68990, 68958], [68959, 68991], [68991, 68959], [68960, 68992], [68992, 68960], [68961, 68993], [68993, 68961], [68962, 68994], [68994, 68962], [68963, 68995], [68995, 68963], [68964, 68996], [68996, 68964], [68965, 68997], [68997, 68965], [71840, 71872], [71872, 71840], [71841, 71873], [71873, 71841], [71842, 71874], [71874, 71842], [71843, 71875], [71875, 71843], [71844, 71876], [71876, 71844], [71845, 71877], [71877, 71845], [71846, 71878], [71878, 71846], [71847, 71879], [71879, 71847], [71848, 71880], [71880, 71848], [71849, 71881], [71881, 71849], [71850, 71882], [71882, 71850], [71851, 71883], [71883, 71851], [71852, 71884], [71884, 71852], [71853, 71885], [71885, 71853], [71854, 71886], [71886, 71854], [71855, 71887], [71887, 71855], [71856, 71888], [71888, 71856], [71857, 71889], [71889, 71857], [71858, 71890], [71890, 71858], [71859, 71891], [71891, 71859], [71860, 71892], [71892, 71860], [71861, 71893], [71893, 71861], [71862, 71894], [71894, 71862], [71863, 71895], [71895, 71863], [71864, 71896], [71896, 71864], [71865, 71897], [71897, 71865], [71866, 71898], [71898, 71866], [71867, 71899], [71899, 71867], [71868, 71900], [71900, 71868], [71869, 71901], [71901, 71869], [71870, 71902], [71902, 71870], [71871, 71903], [71903, 71871], [93760, 93792], [93792, 93760], [93761, 93793], [93793, 93761], [93762, 93794], [93794, 93762], [93763, 93795], [93795, 93763], [93764, 93796], [93796, 93764], [93765, 93797], [93797, 93765], [93766, 93798], [93798, 93766], [93767, 93799], [93799, 93767], [93768, 93800], [93800, 93768], [93769, 93801], [93801, 93769], [93770, 93802], [93802, 93770], [93771, 93803], [93803, 93771], [93772, 93804], [93804, 93772], [93773, 93805], [93805, 93773], [93774, 93806], [93806, 93774], [93775, 93807], [93807, 93775], [93776, 93808], [93808, 93776], [93777, 93809], [93809, 93777], [93778, 93810], [93810, 93778], [93779, 93811], [93811, 93779], [93780, 93812], [93812, 93780], [93781, 93813], [93813, 93781], [93782, 93814], [93814, 93782], [93783, 93815], [93815, 93783], [93784, 93816], [93816, 93784], [93785, 93817], [93817, 93785], [93786, 93818], [93818, 93786], [93787, 93819], [93819, 93787], [93788, 93820], [93820, 93788], [93789, 93821], [93821, 93789], [93790, 93822], [93822, 93790], [93791, 93823], [93823, 93791], [125184, 125218], [125218, 125184], [125185, 125219], [125219, 125185], [125186, 125220], [125220, 125186], [125187, 125221], [125221, 125187], [125188, 125222], [125222, 125188], [125189, 125223], [125223, 125189], [125190, 125224], [125224, 125190], [125191, 125225], [125225, 125191], [125192, 125226], [125226, 125192], [125193, 125227], [125227, 125193], [125194, 125228], [125228, 125194], [125195, 125229], [125229, 125195], [125196, 125230], [125230, 125196], [125197, 125231], [125231, 125197], [125198, 125232], [125232, 125198], [125199, 125233], [125233, 125199], [125200, 125234], [125234, 125200], [125201, 125235], [125235, 125201], [125202, 125236], [125236, 125202], [125203, 125237], [125237, 125203], [125204, 125238], [125238, 125204], [125205, 125239], [125239, 125205], [125206, 125240], [125240, 125206], [125207, 125241], [125241, 125207], [125208, 125242], [125242, 125208], [125209, 125243], [125243, 125209], [125210, 125244], [125244, 125210], [125211, 125245], [125245, 125211], [125212, 125246], [125246, 125212], [125213, 125247], [125247, 125213], [125214, 125248], [125248, 125214], [125215, 125249], [125249, 125215], [125216, 125250], [125250, 125216], [125217, 125251], [125251, 125217]]))();\n static C = [[0, 31, 1], [127, 159, 1], [173, 888, 715], [889, 896, 7], [897, 899, 1], [907, 909, 2], [930, 1328, 398], [1367, 1368, 1], [1419, 1420, 1], [1424, 1480, 56], [1481, 1487, 1], [1515, 1518, 1], [1525, 1541, 1], [1564, 1757, 193], [1806, 1807, 1], [1867, 1868, 1], [1970, 1983, 1], [2043, 2044, 1], [2094, 2095, 1], [2111, 2140, 29], [2141, 2143, 2], [2155, 2159, 1], [2191, 2198, 1], [2274, 2436, 162], [2445, 2446, 1], [2449, 2450, 1], [2473, 2481, 8], [2483, 2485, 1], [2490, 2491, 1], [2501, 2502, 1], [2505, 2506, 1], [2511, 2518, 1], [2520, 2523, 1], [2526, 2532, 6], [2533, 2559, 26], [2560, 2564, 4], [2571, 2574, 1], [2577, 2578, 1], [2601, 2609, 8], [2612, 2618, 3], [2619, 2621, 2], [2627, 2630, 1], [2633, 2634, 1], [2638, 2640, 1], [2642, 2648, 1], [2653, 2655, 2], [2656, 2661, 1], [2679, 2688, 1], [2692, 2702, 10], [2706, 2729, 23], [2737, 2740, 3], [2746, 2747, 1], [2758, 2766, 4], [2767, 2769, 2], [2770, 2783, 1], [2788, 2789, 1], [2802, 2808, 1], [2816, 2820, 4], [2829, 2830, 1], [2833, 2834, 1], [2857, 2865, 8], [2868, 2874, 6], [2875, 2885, 10], [2886, 2889, 3], [2890, 2894, 4], [2895, 2900, 1], [2904, 2907, 1], [2910, 2916, 6], [2917, 2936, 19], [2937, 2945, 1], [2948, 2955, 7], [2956, 2957, 1], [2961, 2966, 5], [2967, 2968, 1], [2971, 2973, 2], [2976, 2978, 1], [2981, 2983, 1], [2987, 2989, 1], [3002, 3005, 1], [3011, 3013, 1], [3017, 3022, 5], [3023, 3025, 2], [3026, 3030, 1], [3032, 3045, 1], [3067, 3071, 1], [3085, 3089, 4], [3113, 3130, 17], [3131, 3141, 10], [3145, 3150, 5], [3151, 3156, 1], [3159, 3163, 4], [3164, 3166, 2], [3167, 3172, 5], [3173, 3184, 11], [3185, 3190, 1], [3213, 3217, 4], [3241, 3252, 11], [3258, 3259, 1], [3269, 3273, 4], [3278, 3284, 1], [3287, 3292, 1], [3295, 3300, 5], [3301, 3312, 11], [3316, 3327, 1], [3341, 3345, 4], [3397, 3401, 4], [3408, 3411, 1], [3428, 3429, 1], [3456, 3460, 4], [3479, 3481, 1], [3506, 3516, 10], [3518, 3519, 1], [3527, 3529, 1], [3531, 3534, 1], [3541, 3543, 2], [3552, 3557, 1], [3568, 3569, 1], [3573, 3584, 1], [3643, 3646, 1], [3676, 3712, 1], [3715, 3717, 2], [3723, 3748, 25], [3750, 3774, 24], [3775, 3781, 6], [3783, 3791, 8], [3802, 3803, 1], [3808, 3839, 1], [3912, 3949, 37], [3950, 3952, 1], [3992, 4029, 37], [4045, 4059, 14], [4060, 4095, 1], [4294, 4296, 2], [4297, 4300, 1], [4302, 4303, 1], [4681, 4686, 5], [4687, 4695, 8], [4697, 4702, 5], [4703, 4745, 42], [4750, 4751, 1], [4785, 4790, 5], [4791, 4799, 8], [4801, 4806, 5], [4807, 4823, 16], [4881, 4886, 5], [4887, 4955, 68], [4956, 4989, 33], [4990, 4991, 1], [5018, 5023, 1], [5110, 5111, 1], [5118, 5119, 1], [5789, 5791, 1], [5881, 5887, 1], [5910, 5918, 1], [5943, 5951, 1], [5972, 5983, 1], [5997, 6001, 4], [6004, 6015, 1], [6110, 6111, 1], [6122, 6127, 1], [6138, 6143, 1], [6158, 6170, 12], [6171, 6175, 1], [6265, 6271, 1], [6315, 6319, 1], [6390, 6399, 1], [6431, 6444, 13], [6445, 6447, 1], [6460, 6463, 1], [6465, 6467, 1], [6510, 6511, 1], [6517, 6527, 1], [6572, 6575, 1], [6602, 6607, 1], [6619, 6621, 1], [6684, 6685, 1], [6751, 6781, 30], [6782, 6794, 12], [6795, 6799, 1], [6810, 6815, 1], [6830, 6831, 1], [6863, 6911, 1], [6989, 7156, 167], [7157, 7163, 1], [7224, 7226, 1], [7242, 7244, 1], [7307, 7311, 1], [7355, 7356, 1], [7368, 7375, 1], [7419, 7423, 1], [7958, 7959, 1], [7966, 7967, 1], [8006, 8007, 1], [8014, 8015, 1], [8024, 8030, 2], [8062, 8063, 1], [8117, 8133, 16], [8148, 8149, 1], [8156, 8176, 20], [8177, 8181, 4], [8191, 8203, 12], [8204, 8207, 1], [8234, 8238, 1], [8288, 8303, 1], [8306, 8307, 1], [8335, 8349, 14], [8350, 8351, 1], [8385, 8399, 1], [8433, 8447, 1], [8588, 8591, 1], [9258, 9279, 1], [9291, 9311, 1], [11124, 11125, 1], [11158, 11508, 350], [11509, 11512, 1], [11558, 11560, 2], [11561, 11564, 1], [11566, 11567, 1], [11624, 11630, 1], [11633, 11646, 1], [11671, 11679, 1], [11687, 11743, 8], [11870, 11903, 1], [11930, 12020, 90], [12021, 12031, 1], [12246, 12271, 1], [12352, 12439, 87], [12440, 12544, 104], [12545, 12548, 1], [12592, 12687, 95], [12774, 12782, 1], [12831, 42125, 29294], [42126, 42127, 1], [42183, 42191, 1], [42540, 42559, 1], [42744, 42751, 1], [42958, 42959, 1], [42962, 42964, 2], [42973, 42993, 1], [43053, 43055, 1], [43066, 43071, 1], [43128, 43135, 1], [43206, 43213, 1], [43226, 43231, 1], [43348, 43358, 1], [43389, 43391, 1], [43470, 43482, 12], [43483, 43485, 1], [43519, 43575, 56], [43576, 43583, 1], [43598, 43599, 1], [43610, 43611, 1], [43715, 43738, 1], [43767, 43776, 1], [43783, 43784, 1], [43791, 43792, 1], [43799, 43807, 1], [43815, 43823, 8], [43884, 43887, 1], [44014, 44015, 1], [44026, 44031, 1], [55204, 55215, 1], [55239, 55242, 1], [55292, 63743, 1], [64110, 64111, 1], [64218, 64255, 1], [64263, 64274, 1], [64280, 64284, 1], [64311, 64317, 6], [64319, 64325, 3], [64451, 64466, 1], [64912, 64913, 1], [64968, 64974, 1], [64976, 65007, 1], [65050, 65055, 1], [65107, 65127, 20], [65132, 65135, 1], [65141, 65277, 136], [65278, 65280, 1], [65471, 65473, 1], [65480, 65481, 1], [65488, 65489, 1], [65496, 65497, 1], [65501, 65503, 1], [65511, 65519, 8], [65520, 65531, 1], [65534, 65535, 1], [65548, 65575, 27], [65595, 65598, 3], [65614, 65615, 1], [65630, 65663, 1], [65787, 65791, 1], [65795, 65798, 1], [65844, 65846, 1], [65935, 65949, 14], [65950, 65951, 1], [65953, 65999, 1], [66046, 66175, 1], [66205, 66207, 1], [66257, 66271, 1], [66300, 66303, 1], [66340, 66348, 1], [66379, 66383, 1], [66427, 66431, 1], [66462, 66500, 38], [66501, 66503, 1], [66518, 66559, 1], [66718, 66719, 1], [66730, 66735, 1], [66772, 66775, 1], [66812, 66815, 1], [66856, 66863, 1], [66916, 66926, 1], [66939, 66955, 16], [66963, 66966, 3], [66978, 66994, 16], [67002, 67005, 3], [67006, 67007, 1], [67060, 67071, 1], [67383, 67391, 1], [67414, 67423, 1], [67432, 67455, 1], [67462, 67505, 43], [67515, 67583, 1], [67590, 67591, 1], [67593, 67638, 45], [67641, 67643, 1], [67645, 67646, 1], [67670, 67743, 73], [67744, 67750, 1], [67760, 67807, 1], [67827, 67830, 3], [67831, 67834, 1], [67868, 67870, 1], [67898, 67902, 1], [67904, 67967, 1], [68024, 68027, 1], [68048, 68049, 1], [68100, 68103, 3], [68104, 68107, 1], [68116, 68120, 4], [68150, 68151, 1], [68155, 68158, 1], [68169, 68175, 1], [68185, 68191, 1], [68256, 68287, 1], [68327, 68330, 1], [68343, 68351, 1], [68406, 68408, 1], [68438, 68439, 1], [68467, 68471, 1], [68498, 68504, 1], [68509, 68520, 1], [68528, 68607, 1], [68681, 68735, 1], [68787, 68799, 1], [68851, 68857, 1], [68904, 68911, 1], [68922, 68927, 1], [68966, 68968, 1], [68998, 69005, 1], [69008, 69215, 1], [69247, 69290, 43], [69294, 69295, 1], [69298, 69313, 1], [69317, 69371, 1], [69416, 69423, 1], [69466, 69487, 1], [69514, 69551, 1], [69580, 69599, 1], [69623, 69631, 1], [69710, 69713, 1], [69750, 69758, 1], [69821, 69827, 6], [69828, 69839, 1], [69865, 69871, 1], [69882, 69887, 1], [69941, 69960, 19], [69961, 69967, 1], [70007, 70015, 1], [70112, 70133, 21], [70134, 70143, 1], [70162, 70210, 48], [70211, 70271, 1], [70279, 70281, 2], [70286, 70302, 16], [70314, 70319, 1], [70379, 70383, 1], [70394, 70399, 1], [70404, 70413, 9], [70414, 70417, 3], [70418, 70441, 23], [70449, 70452, 3], [70458, 70469, 11], [70470, 70473, 3], [70474, 70478, 4], [70479, 70481, 2], [70482, 70486, 1], [70488, 70492, 1], [70500, 70501, 1], [70509, 70511, 1], [70517, 70527, 1], [70538, 70540, 2], [70541, 70543, 2], [70582, 70593, 11], [70595, 70596, 1], [70598, 70603, 5], [70614, 70617, 3], [70618, 70624, 1], [70627, 70655, 1], [70748, 70754, 6], [70755, 70783, 1], [70856, 70863, 1], [70874, 71039, 1], [71094, 71095, 1], [71134, 71167, 1], [71237, 71247, 1], [71258, 71263, 1], [71277, 71295, 1], [71354, 71359, 1], [71370, 71375, 1], [71396, 71423, 1], [71451, 71452, 1], [71468, 71471, 1], [71495, 71679, 1], [71740, 71839, 1], [71923, 71934, 1], [71943, 71944, 1], [71946, 71947, 1], [71956, 71959, 3], [71990, 71993, 3], [71994, 72007, 13], [72008, 72015, 1], [72026, 72095, 1], [72104, 72105, 1], [72152, 72153, 1], [72165, 72191, 1], [72264, 72271, 1], [72355, 72367, 1], [72441, 72447, 1], [72458, 72639, 1], [72674, 72687, 1], [72698, 72703, 1], [72713, 72759, 46], [72774, 72783, 1], [72813, 72815, 1], [72848, 72849, 1], [72872, 72887, 15], [72888, 72959, 1], [72967, 72970, 3], [73015, 73017, 1], [73019, 73022, 3], [73032, 73039, 1], [73050, 73055, 1], [73062, 73065, 3], [73103, 73106, 3], [73113, 73119, 1], [73130, 73439, 1], [73465, 73471, 1], [73489, 73531, 42], [73532, 73533, 1], [73563, 73647, 1], [73649, 73663, 1], [73714, 73726, 1], [74650, 74751, 1], [74863, 74869, 6], [74870, 74879, 1], [75076, 77711, 1], [77811, 77823, 1], [78896, 78911, 1], [78934, 78943, 1], [82939, 82943, 1], [83527, 90367, 1], [90426, 92159, 1], [92729, 92735, 1], [92767, 92778, 11], [92779, 92781, 1], [92863, 92874, 11], [92875, 92879, 1], [92910, 92911, 1], [92918, 92927, 1], [92998, 93007, 1], [93018, 93026, 8], [93048, 93052, 1], [93072, 93503, 1], [93562, 93759, 1], [93851, 93951, 1], [94027, 94030, 1], [94088, 94094, 1], [94112, 94175, 1], [94181, 94191, 1], [94194, 94207, 1], [100344, 100351, 1], [101590, 101630, 1], [101641, 110575, 1], [110580, 110588, 8], [110591, 110883, 292], [110884, 110897, 1], [110899, 110927, 1], [110931, 110932, 1], [110934, 110947, 1], [110952, 110959, 1], [111356, 113663, 1], [113771, 113775, 1], [113789, 113791, 1], [113801, 113807, 1], [113818, 113819, 1], [113824, 117759, 1], [118010, 118015, 1], [118452, 118527, 1], [118574, 118575, 1], [118599, 118607, 1], [118724, 118783, 1], [119030, 119039, 1], [119079, 119080, 1], [119155, 119162, 1], [119275, 119295, 1], [119366, 119487, 1], [119508, 119519, 1], [119540, 119551, 1], [119639, 119647, 1], [119673, 119807, 1], [119893, 119965, 72], [119968, 119969, 1], [119971, 119972, 1], [119975, 119976, 1], [119981, 119994, 13], [119996, 120004, 8], [120070, 120075, 5], [120076, 120085, 9], [120093, 120122, 29], [120127, 120133, 6], [120135, 120137, 1], [120145, 120486, 341], [120487, 120780, 293], [120781, 121484, 703], [121485, 121498, 1], [121504, 121520, 16], [121521, 122623, 1], [122655, 122660, 1], [122667, 122879, 1], [122887, 122905, 18], [122906, 122914, 8], [122917, 122923, 6], [122924, 122927, 1], [122990, 123022, 1], [123024, 123135, 1], [123181, 123183, 1], [123198, 123199, 1], [123210, 123213, 1], [123216, 123535, 1], [123567, 123583, 1], [123642, 123646, 1], [123648, 124111, 1], [124154, 124367, 1], [124411, 124414, 1], [124416, 124895, 1], [124903, 124908, 5], [124911, 124927, 16], [125125, 125126, 1], [125143, 125183, 1], [125260, 125263, 1], [125274, 125277, 1], [125280, 126064, 1], [126133, 126208, 1], [126270, 126463, 1], [126468, 126496, 28], [126499, 126501, 2], [126502, 126504, 2], [126515, 126520, 5], [126522, 126524, 2], [126525, 126529, 1], [126531, 126534, 1], [126536, 126540, 2], [126544, 126547, 3], [126549, 126550, 1], [126552, 126560, 2], [126563, 126565, 2], [126566, 126571, 5], [126579, 126589, 5], [126591, 126602, 11], [126620, 126624, 1], [126628, 126634, 6], [126652, 126703, 1], [126706, 126975, 1], [127020, 127023, 1], [127124, 127135, 1], [127151, 127152, 1], [127168, 127184, 16], [127222, 127231, 1], [127406, 127461, 1], [127491, 127503, 1], [127548, 127551, 1], [127561, 127567, 1], [127570, 127583, 1], [127590, 127743, 1], [128728, 128731, 1], [128749, 128751, 1], [128765, 128767, 1], [128887, 128890, 1], [128986, 128991, 1], [129004, 129007, 1], [129009, 129023, 1], [129036, 129039, 1], [129096, 129103, 1], [129114, 129119, 1], [129160, 129167, 1], [129198, 129199, 1], [129212, 129215, 1], [129218, 129279, 1], [129620, 129631, 1], [129646, 129647, 1], [129661, 129663, 1], [129674, 129678, 1], [129735, 129741, 1], [129757, 129758, 1], [129770, 129775, 1], [129785, 129791, 1], [129939, 130042, 103], [130043, 131071, 1], [173792, 173823, 1], [177978, 177983, 1], [178206, 178207, 1], [183970, 183983, 1], [191457, 191471, 1], [192094, 194559, 1], [195102, 196607, 1], [201547, 201551, 1], [205744, 917759, 1], [918000, 1114111, 1]];\n static Cc = [[0, 31, 1], [127, 159, 1]];\n static Cf = [[173, 1536, 1363], [1537, 1541, 1], [1564, 1757, 193], [1807, 2192, 385], [2193, 2274, 81], [6158, 8203, 2045], [8204, 8207, 1], [8234, 8238, 1], [8288, 8292, 1], [8294, 8303, 1], [65279, 65529, 250], [65530, 65531, 1], [69821, 69837, 16], [78896, 78911, 1], [113824, 113827, 1], [119155, 119162, 1], [917505, 917536, 31], [917537, 917631, 1]];\n static Co = [[57344, 63743, 1], [983040, 1048573, 1], [1048576, 1114109, 1]];\n static Cs = [[55296, 57343, 1]];\n static L = [[65, 90, 1], [97, 122, 1], [170, 181, 11], [186, 192, 6], [193, 214, 1], [216, 246, 1], [248, 705, 1], [710, 721, 1], [736, 740, 1], [748, 750, 2], [880, 884, 1], [886, 887, 1], [890, 893, 1], [895, 902, 7], [904, 906, 1], [908, 910, 2], [911, 929, 1], [931, 1013, 1], [1015, 1153, 1], [1162, 1327, 1], [1329, 1366, 1], [1369, 1376, 7], [1377, 1416, 1], [1488, 1514, 1], [1519, 1522, 1], [1568, 1610, 1], [1646, 1647, 1], [1649, 1747, 1], [1749, 1765, 16], [1766, 1774, 8], [1775, 1786, 11], [1787, 1788, 1], [1791, 1808, 17], [1810, 1839, 1], [1869, 1957, 1], [1969, 1994, 25], [1995, 2026, 1], [2036, 2037, 1], [2042, 2048, 6], [2049, 2069, 1], [2074, 2084, 10], [2088, 2112, 24], [2113, 2136, 1], [2144, 2154, 1], [2160, 2183, 1], [2185, 2190, 1], [2208, 2249, 1], [2308, 2361, 1], [2365, 2384, 19], [2392, 2401, 1], [2417, 2432, 1], [2437, 2444, 1], [2447, 2448, 1], [2451, 2472, 1], [2474, 2480, 1], [2482, 2486, 4], [2487, 2489, 1], [2493, 2510, 17], [2524, 2525, 1], [2527, 2529, 1], [2544, 2545, 1], [2556, 2565, 9], [2566, 2570, 1], [2575, 2576, 1], [2579, 2600, 1], [2602, 2608, 1], [2610, 2611, 1], [2613, 2614, 1], [2616, 2617, 1], [2649, 2652, 1], [2654, 2674, 20], [2675, 2676, 1], [2693, 2701, 1], [2703, 2705, 1], [2707, 2728, 1], [2730, 2736, 1], [2738, 2739, 1], [2741, 2745, 1], [2749, 2768, 19], [2784, 2785, 1], [2809, 2821, 12], [2822, 2828, 1], [2831, 2832, 1], [2835, 2856, 1], [2858, 2864, 1], [2866, 2867, 1], [2869, 2873, 1], [2877, 2908, 31], [2909, 2911, 2], [2912, 2913, 1], [2929, 2947, 18], [2949, 2954, 1], [2958, 2960, 1], [2962, 2965, 1], [2969, 2970, 1], [2972, 2974, 2], [2975, 2979, 4], [2980, 2984, 4], [2985, 2986, 1], [2990, 3001, 1], [3024, 3077, 53], [3078, 3084, 1], [3086, 3088, 1], [3090, 3112, 1], [3114, 3129, 1], [3133, 3160, 27], [3161, 3162, 1], [3165, 3168, 3], [3169, 3200, 31], [3205, 3212, 1], [3214, 3216, 1], [3218, 3240, 1], [3242, 3251, 1], [3253, 3257, 1], [3261, 3293, 32], [3294, 3296, 2], [3297, 3313, 16], [3314, 3332, 18], [3333, 3340, 1], [3342, 3344, 1], [3346, 3386, 1], [3389, 3406, 17], [3412, 3414, 1], [3423, 3425, 1], [3450, 3455, 1], [3461, 3478, 1], [3482, 3505, 1], [3507, 3515, 1], [3517, 3520, 3], [3521, 3526, 1], [3585, 3632, 1], [3634, 3635, 1], [3648, 3654, 1], [3713, 3714, 1], [3716, 3718, 2], [3719, 3722, 1], [3724, 3747, 1], [3749, 3751, 2], [3752, 3760, 1], [3762, 3763, 1], [3773, 3776, 3], [3777, 3780, 1], [3782, 3804, 22], [3805, 3807, 1], [3840, 3904, 64], [3905, 3911, 1], [3913, 3948, 1], [3976, 3980, 1], [4096, 4138, 1], [4159, 4176, 17], [4177, 4181, 1], [4186, 4189, 1], [4193, 4197, 4], [4198, 4206, 8], [4207, 4208, 1], [4213, 4225, 1], [4238, 4256, 18], [4257, 4293, 1], [4295, 4301, 6], [4304, 4346, 1], [4348, 4680, 1], [4682, 4685, 1], [4688, 4694, 1], [4696, 4698, 2], [4699, 4701, 1], [4704, 4744, 1], [4746, 4749, 1], [4752, 4784, 1], [4786, 4789, 1], [4792, 4798, 1], [4800, 4802, 2], [4803, 4805, 1], [4808, 4822, 1], [4824, 4880, 1], [4882, 4885, 1], [4888, 4954, 1], [4992, 5007, 1], [5024, 5109, 1], [5112, 5117, 1], [5121, 5740, 1], [5743, 5759, 1], [5761, 5786, 1], [5792, 5866, 1], [5873, 5880, 1], [5888, 5905, 1], [5919, 5937, 1], [5952, 5969, 1], [5984, 5996, 1], [5998, 6000, 1], [6016, 6067, 1], [6103, 6108, 5], [6176, 6264, 1], [6272, 6276, 1], [6279, 6312, 1], [6314, 6320, 6], [6321, 6389, 1], [6400, 6430, 1], [6480, 6509, 1], [6512, 6516, 1], [6528, 6571, 1], [6576, 6601, 1], [6656, 6678, 1], [6688, 6740, 1], [6823, 6917, 94], [6918, 6963, 1], [6981, 6988, 1], [7043, 7072, 1], [7086, 7087, 1], [7098, 7141, 1], [7168, 7203, 1], [7245, 7247, 1], [7258, 7293, 1], [7296, 7306, 1], [7312, 7354, 1], [7357, 7359, 1], [7401, 7404, 1], [7406, 7411, 1], [7413, 7414, 1], [7418, 7424, 6], [7425, 7615, 1], [7680, 7957, 1], [7960, 7965, 1], [7968, 8005, 1], [8008, 8013, 1], [8016, 8023, 1], [8025, 8031, 2], [8032, 8061, 1], [8064, 8116, 1], [8118, 8124, 1], [8126, 8130, 4], [8131, 8132, 1], [8134, 8140, 1], [8144, 8147, 1], [8150, 8155, 1], [8160, 8172, 1], [8178, 8180, 1], [8182, 8188, 1], [8305, 8319, 14], [8336, 8348, 1], [8450, 8455, 5], [8458, 8467, 1], [8469, 8473, 4], [8474, 8477, 1], [8484, 8490, 2], [8491, 8493, 1], [8495, 8505, 1], [8508, 8511, 1], [8517, 8521, 1], [8526, 8579, 53], [8580, 11264, 2684], [11265, 11492, 1], [11499, 11502, 1], [11506, 11507, 1], [11520, 11557, 1], [11559, 11565, 6], [11568, 11623, 1], [11631, 11648, 17], [11649, 11670, 1], [11680, 11686, 1], [11688, 11694, 1], [11696, 11702, 1], [11704, 11710, 1], [11712, 11718, 1], [11720, 11726, 1], [11728, 11734, 1], [11736, 11742, 1], [11823, 12293, 470], [12294, 12337, 43], [12338, 12341, 1], [12347, 12348, 1], [12353, 12438, 1], [12445, 12447, 1], [12449, 12538, 1], [12540, 12543, 1], [12549, 12591, 1], [12593, 12686, 1], [12704, 12735, 1], [12784, 12799, 1], [13312, 19903, 1], [19968, 42124, 1], [42192, 42237, 1], [42240, 42508, 1], [42512, 42527, 1], [42538, 42539, 1], [42560, 42606, 1], [42623, 42653, 1], [42656, 42725, 1], [42775, 42783, 1], [42786, 42888, 1], [42891, 42957, 1], [42960, 42961, 1], [42963, 42965, 2], [42966, 42972, 1], [42994, 43009, 1], [43011, 43013, 1], [43015, 43018, 1], [43020, 43042, 1], [43072, 43123, 1], [43138, 43187, 1], [43250, 43255, 1], [43259, 43261, 2], [43262, 43274, 12], [43275, 43301, 1], [43312, 43334, 1], [43360, 43388, 1], [43396, 43442, 1], [43471, 43488, 17], [43489, 43492, 1], [43494, 43503, 1], [43514, 43518, 1], [43520, 43560, 1], [43584, 43586, 1], [43588, 43595, 1], [43616, 43638, 1], [43642, 43646, 4], [43647, 43695, 1], [43697, 43701, 4], [43702, 43705, 3], [43706, 43709, 1], [43712, 43714, 2], [43739, 43741, 1], [43744, 43754, 1], [43762, 43764, 1], [43777, 43782, 1], [43785, 43790, 1], [43793, 43798, 1], [43808, 43814, 1], [43816, 43822, 1], [43824, 43866, 1], [43868, 43881, 1], [43888, 44002, 1], [44032, 55203, 1], [55216, 55238, 1], [55243, 55291, 1], [63744, 64109, 1], [64112, 64217, 1], [64256, 64262, 1], [64275, 64279, 1], [64285, 64287, 2], [64288, 64296, 1], [64298, 64310, 1], [64312, 64316, 1], [64318, 64320, 2], [64321, 64323, 2], [64324, 64326, 2], [64327, 64433, 1], [64467, 64829, 1], [64848, 64911, 1], [64914, 64967, 1], [65008, 65019, 1], [65136, 65140, 1], [65142, 65276, 1], [65313, 65338, 1], [65345, 65370, 1], [65382, 65470, 1], [65474, 65479, 1], [65482, 65487, 1], [65490, 65495, 1], [65498, 65500, 1], [65536, 65547, 1], [65549, 65574, 1], [65576, 65594, 1], [65596, 65597, 1], [65599, 65613, 1], [65616, 65629, 1], [65664, 65786, 1], [66176, 66204, 1], [66208, 66256, 1], [66304, 66335, 1], [66349, 66368, 1], [66370, 66377, 1], [66384, 66421, 1], [66432, 66461, 1], [66464, 66499, 1], [66504, 66511, 1], [66560, 66717, 1], [66736, 66771, 1], [66776, 66811, 1], [66816, 66855, 1], [66864, 66915, 1], [66928, 66938, 1], [66940, 66954, 1], [66956, 66962, 1], [66964, 66965, 1], [66967, 66977, 1], [66979, 66993, 1], [66995, 67001, 1], [67003, 67004, 1], [67008, 67059, 1], [67072, 67382, 1], [67392, 67413, 1], [67424, 67431, 1], [67456, 67461, 1], [67463, 67504, 1], [67506, 67514, 1], [67584, 67589, 1], [67592, 67594, 2], [67595, 67637, 1], [67639, 67640, 1], [67644, 67647, 3], [67648, 67669, 1], [67680, 67702, 1], [67712, 67742, 1], [67808, 67826, 1], [67828, 67829, 1], [67840, 67861, 1], [67872, 67897, 1], [67968, 68023, 1], [68030, 68031, 1], [68096, 68112, 16], [68113, 68115, 1], [68117, 68119, 1], [68121, 68149, 1], [68192, 68220, 1], [68224, 68252, 1], [68288, 68295, 1], [68297, 68324, 1], [68352, 68405, 1], [68416, 68437, 1], [68448, 68466, 1], [68480, 68497, 1], [68608, 68680, 1], [68736, 68786, 1], [68800, 68850, 1], [68864, 68899, 1], [68938, 68965, 1], [68975, 68997, 1], [69248, 69289, 1], [69296, 69297, 1], [69314, 69316, 1], [69376, 69404, 1], [69415, 69424, 9], [69425, 69445, 1], [69488, 69505, 1], [69552, 69572, 1], [69600, 69622, 1], [69635, 69687, 1], [69745, 69746, 1], [69749, 69763, 14], [69764, 69807, 1], [69840, 69864, 1], [69891, 69926, 1], [69956, 69959, 3], [69968, 70002, 1], [70006, 70019, 13], [70020, 70066, 1], [70081, 70084, 1], [70106, 70108, 2], [70144, 70161, 1], [70163, 70187, 1], [70207, 70208, 1], [70272, 70278, 1], [70280, 70282, 2], [70283, 70285, 1], [70287, 70301, 1], [70303, 70312, 1], [70320, 70366, 1], [70405, 70412, 1], [70415, 70416, 1], [70419, 70440, 1], [70442, 70448, 1], [70450, 70451, 1], [70453, 70457, 1], [70461, 70480, 19], [70493, 70497, 1], [70528, 70537, 1], [70539, 70542, 3], [70544, 70581, 1], [70583, 70609, 26], [70611, 70656, 45], [70657, 70708, 1], [70727, 70730, 1], [70751, 70753, 1], [70784, 70831, 1], [70852, 70853, 1], [70855, 71040, 185], [71041, 71086, 1], [71128, 71131, 1], [71168, 71215, 1], [71236, 71296, 60], [71297, 71338, 1], [71352, 71424, 72], [71425, 71450, 1], [71488, 71494, 1], [71680, 71723, 1], [71840, 71903, 1], [71935, 71942, 1], [71945, 71948, 3], [71949, 71955, 1], [71957, 71958, 1], [71960, 71983, 1], [71999, 72001, 2], [72096, 72103, 1], [72106, 72144, 1], [72161, 72163, 2], [72192, 72203, 11], [72204, 72242, 1], [72250, 72272, 22], [72284, 72329, 1], [72349, 72368, 19], [72369, 72440, 1], [72640, 72672, 1], [72704, 72712, 1], [72714, 72750, 1], [72768, 72818, 50], [72819, 72847, 1], [72960, 72966, 1], [72968, 72969, 1], [72971, 73008, 1], [73030, 73056, 26], [73057, 73061, 1], [73063, 73064, 1], [73066, 73097, 1], [73112, 73440, 328], [73441, 73458, 1], [73474, 73476, 2], [73477, 73488, 1], [73490, 73523, 1], [73648, 73728, 80], [73729, 74649, 1], [74880, 75075, 1], [77712, 77808, 1], [77824, 78895, 1], [78913, 78918, 1], [78944, 82938, 1], [82944, 83526, 1], [90368, 90397, 1], [92160, 92728, 1], [92736, 92766, 1], [92784, 92862, 1], [92880, 92909, 1], [92928, 92975, 1], [92992, 92995, 1], [93027, 93047, 1], [93053, 93071, 1], [93504, 93548, 1], [93760, 93823, 1], [93952, 94026, 1], [94032, 94099, 67], [94100, 94111, 1], [94176, 94177, 1], [94179, 94208, 29], [94209, 100343, 1], [100352, 101589, 1], [101631, 101640, 1], [110576, 110579, 1], [110581, 110587, 1], [110589, 110590, 1], [110592, 110882, 1], [110898, 110928, 30], [110929, 110930, 1], [110933, 110948, 15], [110949, 110951, 1], [110960, 111355, 1], [113664, 113770, 1], [113776, 113788, 1], [113792, 113800, 1], [113808, 113817, 1], [119808, 119892, 1], [119894, 119964, 1], [119966, 119967, 1], [119970, 119973, 3], [119974, 119977, 3], [119978, 119980, 1], [119982, 119993, 1], [119995, 119997, 2], [119998, 120003, 1], [120005, 120069, 1], [120071, 120074, 1], [120077, 120084, 1], [120086, 120092, 1], [120094, 120121, 1], [120123, 120126, 1], [120128, 120132, 1], [120134, 120138, 4], [120139, 120144, 1], [120146, 120485, 1], [120488, 120512, 1], [120514, 120538, 1], [120540, 120570, 1], [120572, 120596, 1], [120598, 120628, 1], [120630, 120654, 1], [120656, 120686, 1], [120688, 120712, 1], [120714, 120744, 1], [120746, 120770, 1], [120772, 120779, 1], [122624, 122654, 1], [122661, 122666, 1], [122928, 122989, 1], [123136, 123180, 1], [123191, 123197, 1], [123214, 123536, 322], [123537, 123565, 1], [123584, 123627, 1], [124112, 124139, 1], [124368, 124397, 1], [124400, 124896, 496], [124897, 124902, 1], [124904, 124907, 1], [124909, 124910, 1], [124912, 124926, 1], [124928, 125124, 1], [125184, 125251, 1], [125259, 126464, 1205], [126465, 126467, 1], [126469, 126495, 1], [126497, 126498, 1], [126500, 126503, 3], [126505, 126514, 1], [126516, 126519, 1], [126521, 126523, 2], [126530, 126535, 5], [126537, 126541, 2], [126542, 126543, 1], [126545, 126546, 1], [126548, 126551, 3], [126553, 126561, 2], [126562, 126564, 2], [126567, 126570, 1], [126572, 126578, 1], [126580, 126583, 1], [126585, 126588, 1], [126590, 126592, 2], [126593, 126601, 1], [126603, 126619, 1], [126625, 126627, 1], [126629, 126633, 1], [126635, 126651, 1], [131072, 173791, 1], [173824, 177977, 1], [177984, 178205, 1], [178208, 183969, 1], [183984, 191456, 1], [191472, 192093, 1], [194560, 195101, 1], [196608, 201546, 1], [201552, 205743, 1]];\n static foldL = [[837, 837, 1]];\n static Ll = [[97, 122, 1], [181, 223, 42], [224, 246, 1], [248, 255, 1], [257, 311, 2], [312, 328, 2], [329, 375, 2], [378, 382, 2], [383, 384, 1], [387, 389, 2], [392, 396, 4], [397, 402, 5], [405, 409, 4], [410, 411, 1], [414, 417, 3], [419, 421, 2], [424, 426, 2], [427, 429, 2], [432, 436, 4], [438, 441, 3], [442, 445, 3], [446, 447, 1], [454, 460, 3], [462, 476, 2], [477, 495, 2], [496, 499, 3], [501, 505, 4], [507, 563, 2], [564, 569, 1], [572, 575, 3], [576, 578, 2], [583, 591, 2], [592, 659, 1], [661, 687, 1], [881, 883, 2], [887, 891, 4], [892, 893, 1], [912, 940, 28], [941, 974, 1], [976, 977, 1], [981, 983, 1], [985, 1007, 2], [1008, 1011, 1], [1013, 1019, 3], [1020, 1072, 52], [1073, 1119, 1], [1121, 1153, 2], [1163, 1215, 2], [1218, 1230, 2], [1231, 1327, 2], [1376, 1416, 1], [4304, 4346, 1], [4349, 4351, 1], [5112, 5117, 1], [7296, 7304, 1], [7306, 7424, 118], [7425, 7467, 1], [7531, 7543, 1], [7545, 7578, 1], [7681, 7829, 2], [7830, 7837, 1], [7839, 7935, 2], [7936, 7943, 1], [7952, 7957, 1], [7968, 7975, 1], [7984, 7991, 1], [8000, 8005, 1], [8016, 8023, 1], [8032, 8039, 1], [8048, 8061, 1], [8064, 8071, 1], [8080, 8087, 1], [8096, 8103, 1], [8112, 8116, 1], [8118, 8119, 1], [8126, 8130, 4], [8131, 8132, 1], [8134, 8135, 1], [8144, 8147, 1], [8150, 8151, 1], [8160, 8167, 1], [8178, 8180, 1], [8182, 8183, 1], [8458, 8462, 4], [8463, 8467, 4], [8495, 8505, 5], [8508, 8509, 1], [8518, 8521, 1], [8526, 8580, 54], [11312, 11359, 1], [11361, 11365, 4], [11366, 11372, 2], [11377, 11379, 2], [11380, 11382, 2], [11383, 11387, 1], [11393, 11491, 2], [11492, 11500, 8], [11502, 11507, 5], [11520, 11557, 1], [11559, 11565, 6], [42561, 42605, 2], [42625, 42651, 2], [42787, 42799, 2], [42800, 42801, 1], [42803, 42865, 2], [42866, 42872, 1], [42874, 42876, 2], [42879, 42887, 2], [42892, 42894, 2], [42897, 42899, 2], [42900, 42901, 1], [42903, 42921, 2], [42927, 42933, 6], [42935, 42947, 2], [42952, 42954, 2], [42957, 42961, 4], [42963, 42971, 2], [42998, 43002, 4], [43824, 43866, 1], [43872, 43880, 1], [43888, 43967, 1], [64256, 64262, 1], [64275, 64279, 1], [65345, 65370, 1], [66600, 66639, 1], [66776, 66811, 1], [66967, 66977, 1], [66979, 66993, 1], [66995, 67001, 1], [67003, 67004, 1], [68800, 68850, 1], [68976, 68997, 1], [71872, 71903, 1], [93792, 93823, 1], [119834, 119859, 1], [119886, 119892, 1], [119894, 119911, 1], [119938, 119963, 1], [119990, 119993, 1], [119995, 119997, 2], [119998, 120003, 1], [120005, 120015, 1], [120042, 120067, 1], [120094, 120119, 1], [120146, 120171, 1], [120198, 120223, 1], [120250, 120275, 1], [120302, 120327, 1], [120354, 120379, 1], [120406, 120431, 1], [120458, 120485, 1], [120514, 120538, 1], [120540, 120545, 1], [120572, 120596, 1], [120598, 120603, 1], [120630, 120654, 1], [120656, 120661, 1], [120688, 120712, 1], [120714, 120719, 1], [120746, 120770, 1], [120772, 120777, 1], [120779, 122624, 1845], [122625, 122633, 1], [122635, 122654, 1], [122661, 122666, 1], [125218, 125251, 1]];\n static foldLl = [[65, 90, 1], [192, 214, 1], [216, 222, 1], [256, 302, 2], [306, 310, 2], [313, 327, 2], [330, 376, 2], [377, 381, 2], [385, 386, 1], [388, 390, 2], [391, 393, 2], [394, 395, 1], [398, 401, 1], [403, 404, 1], [406, 408, 1], [412, 413, 1], [415, 416, 1], [418, 422, 2], [423, 425, 2], [428, 430, 2], [431, 433, 2], [434, 435, 1], [437, 439, 2], [440, 444, 4], [452, 453, 1], [455, 456, 1], [458, 459, 1], [461, 475, 2], [478, 494, 2], [497, 498, 1], [500, 502, 2], [503, 504, 1], [506, 562, 2], [570, 571, 1], [573, 574, 1], [577, 579, 2], [580, 582, 1], [584, 590, 2], [837, 880, 43], [882, 886, 4], [895, 902, 7], [904, 906, 1], [908, 910, 2], [911, 913, 2], [914, 929, 1], [931, 939, 1], [975, 984, 9], [986, 1006, 2], [1012, 1015, 3], [1017, 1018, 1], [1021, 1071, 1], [1120, 1152, 2], [1162, 1216, 2], [1217, 1229, 2], [1232, 1326, 2], [1329, 1366, 1], [4256, 4293, 1], [4295, 4301, 6], [5024, 5109, 1], [7305, 7312, 7], [7313, 7354, 1], [7357, 7359, 1], [7680, 7828, 2], [7838, 7934, 2], [7944, 7951, 1], [7960, 7965, 1], [7976, 7983, 1], [7992, 7999, 1], [8008, 8013, 1], [8025, 8031, 2], [8040, 8047, 1], [8072, 8079, 1], [8088, 8095, 1], [8104, 8111, 1], [8120, 8124, 1], [8136, 8140, 1], [8152, 8155, 1], [8168, 8172, 1], [8184, 8188, 1], [8486, 8490, 4], [8491, 8498, 7], [8579, 11264, 2685], [11265, 11311, 1], [11360, 11362, 2], [11363, 11364, 1], [11367, 11373, 2], [11374, 11376, 1], [11378, 11381, 3], [11390, 11392, 1], [11394, 11490, 2], [11499, 11501, 2], [11506, 42560, 31054], [42562, 42604, 2], [42624, 42650, 2], [42786, 42798, 2], [42802, 42862, 2], [42873, 42877, 2], [42878, 42886, 2], [42891, 42893, 2], [42896, 42898, 2], [42902, 42922, 2], [42923, 42926, 1], [42928, 42932, 1], [42934, 42948, 2], [42949, 42951, 1], [42953, 42955, 2], [42956, 42960, 4], [42966, 42972, 2], [42997, 65313, 22316], [65314, 65338, 1], [66560, 66599, 1], [66736, 66771, 1], [66928, 66938, 1], [66940, 66954, 1], [66956, 66962, 1], [66964, 66965, 1], [68736, 68786, 1], [68944, 68965, 1], [71840, 71871, 1], [93760, 93791, 1], [125184, 125217, 1]];\n static Lm = [[688, 705, 1], [710, 721, 1], [736, 740, 1], [748, 750, 2], [884, 890, 6], [1369, 1600, 231], [1765, 1766, 1], [2036, 2037, 1], [2042, 2074, 32], [2084, 2088, 4], [2249, 2417, 168], [3654, 3782, 128], [4348, 6103, 1755], [6211, 6823, 612], [7288, 7293, 1], [7468, 7530, 1], [7544, 7579, 35], [7580, 7615, 1], [8305, 8319, 14], [8336, 8348, 1], [11388, 11389, 1], [11631, 11823, 192], [12293, 12337, 44], [12338, 12341, 1], [12347, 12445, 98], [12446, 12540, 94], [12541, 12542, 1], [40981, 42232, 1251], [42233, 42237, 1], [42508, 42623, 115], [42652, 42653, 1], [42775, 42783, 1], [42864, 42888, 24], [42994, 42996, 1], [43000, 43001, 1], [43471, 43494, 23], [43632, 43741, 109], [43763, 43764, 1], [43868, 43871, 1], [43881, 65392, 21511], [65438, 65439, 1], [67456, 67461, 1], [67463, 67504, 1], [67506, 67514, 1], [68942, 68975, 33], [92992, 92995, 1], [93504, 93506, 1], [93547, 93548, 1], [94099, 94111, 1], [94176, 94177, 1], [94179, 110576, 16397], [110577, 110579, 1], [110581, 110587, 1], [110589, 110590, 1], [122928, 122989, 1], [123191, 123197, 1], [124139, 125259, 1120]];\n static Lo = [[170, 186, 16], [443, 448, 5], [449, 451, 1], [660, 1488, 828], [1489, 1514, 1], [1519, 1522, 1], [1568, 1599, 1], [1601, 1610, 1], [1646, 1647, 1], [1649, 1747, 1], [1749, 1774, 25], [1775, 1786, 11], [1787, 1788, 1], [1791, 1808, 17], [1810, 1839, 1], [1869, 1957, 1], [1969, 1994, 25], [1995, 2026, 1], [2048, 2069, 1], [2112, 2136, 1], [2144, 2154, 1], [2160, 2183, 1], [2185, 2190, 1], [2208, 2248, 1], [2308, 2361, 1], [2365, 2384, 19], [2392, 2401, 1], [2418, 2432, 1], [2437, 2444, 1], [2447, 2448, 1], [2451, 2472, 1], [2474, 2480, 1], [2482, 2486, 4], [2487, 2489, 1], [2493, 2510, 17], [2524, 2525, 1], [2527, 2529, 1], [2544, 2545, 1], [2556, 2565, 9], [2566, 2570, 1], [2575, 2576, 1], [2579, 2600, 1], [2602, 2608, 1], [2610, 2611, 1], [2613, 2614, 1], [2616, 2617, 1], [2649, 2652, 1], [2654, 2674, 20], [2675, 2676, 1], [2693, 2701, 1], [2703, 2705, 1], [2707, 2728, 1], [2730, 2736, 1], [2738, 2739, 1], [2741, 2745, 1], [2749, 2768, 19], [2784, 2785, 1], [2809, 2821, 12], [2822, 2828, 1], [2831, 2832, 1], [2835, 2856, 1], [2858, 2864, 1], [2866, 2867, 1], [2869, 2873, 1], [2877, 2908, 31], [2909, 2911, 2], [2912, 2913, 1], [2929, 2947, 18], [2949, 2954, 1], [2958, 2960, 1], [2962, 2965, 1], [2969, 2970, 1], [2972, 2974, 2], [2975, 2979, 4], [2980, 2984, 4], [2985, 2986, 1], [2990, 3001, 1], [3024, 3077, 53], [3078, 3084, 1], [3086, 3088, 1], [3090, 3112, 1], [3114, 3129, 1], [3133, 3160, 27], [3161, 3162, 1], [3165, 3168, 3], [3169, 3200, 31], [3205, 3212, 1], [3214, 3216, 1], [3218, 3240, 1], [3242, 3251, 1], [3253, 3257, 1], [3261, 3293, 32], [3294, 3296, 2], [3297, 3313, 16], [3314, 3332, 18], [3333, 3340, 1], [3342, 3344, 1], [3346, 3386, 1], [3389, 3406, 17], [3412, 3414, 1], [3423, 3425, 1], [3450, 3455, 1], [3461, 3478, 1], [3482, 3505, 1], [3507, 3515, 1], [3517, 3520, 3], [3521, 3526, 1], [3585, 3632, 1], [3634, 3635, 1], [3648, 3653, 1], [3713, 3714, 1], [3716, 3718, 2], [3719, 3722, 1], [3724, 3747, 1], [3749, 3751, 2], [3752, 3760, 1], [3762, 3763, 1], [3773, 3776, 3], [3777, 3780, 1], [3804, 3807, 1], [3840, 3904, 64], [3905, 3911, 1], [3913, 3948, 1], [3976, 3980, 1], [4096, 4138, 1], [4159, 4176, 17], [4177, 4181, 1], [4186, 4189, 1], [4193, 4197, 4], [4198, 4206, 8], [4207, 4208, 1], [4213, 4225, 1], [4238, 4352, 114], [4353, 4680, 1], [4682, 4685, 1], [4688, 4694, 1], [4696, 4698, 2], [4699, 4701, 1], [4704, 4744, 1], [4746, 4749, 1], [4752, 4784, 1], [4786, 4789, 1], [4792, 4798, 1], [4800, 4802, 2], [4803, 4805, 1], [4808, 4822, 1], [4824, 4880, 1], [4882, 4885, 1], [4888, 4954, 1], [4992, 5007, 1], [5121, 5740, 1], [5743, 5759, 1], [5761, 5786, 1], [5792, 5866, 1], [5873, 5880, 1], [5888, 5905, 1], [5919, 5937, 1], [5952, 5969, 1], [5984, 5996, 1], [5998, 6000, 1], [6016, 6067, 1], [6108, 6176, 68], [6177, 6210, 1], [6212, 6264, 1], [6272, 6276, 1], [6279, 6312, 1], [6314, 6320, 6], [6321, 6389, 1], [6400, 6430, 1], [6480, 6509, 1], [6512, 6516, 1], [6528, 6571, 1], [6576, 6601, 1], [6656, 6678, 1], [6688, 6740, 1], [6917, 6963, 1], [6981, 6988, 1], [7043, 7072, 1], [7086, 7087, 1], [7098, 7141, 1], [7168, 7203, 1], [7245, 7247, 1], [7258, 7287, 1], [7401, 7404, 1], [7406, 7411, 1], [7413, 7414, 1], [7418, 8501, 1083], [8502, 8504, 1], [11568, 11623, 1], [11648, 11670, 1], [11680, 11686, 1], [11688, 11694, 1], [11696, 11702, 1], [11704, 11710, 1], [11712, 11718, 1], [11720, 11726, 1], [11728, 11734, 1], [11736, 11742, 1], [12294, 12348, 54], [12353, 12438, 1], [12447, 12449, 2], [12450, 12538, 1], [12543, 12549, 6], [12550, 12591, 1], [12593, 12686, 1], [12704, 12735, 1], [12784, 12799, 1], [13312, 19903, 1], [19968, 40980, 1], [40982, 42124, 1], [42192, 42231, 1], [42240, 42507, 1], [42512, 42527, 1], [42538, 42539, 1], [42606, 42656, 50], [42657, 42725, 1], [42895, 42999, 104], [43003, 43009, 1], [43011, 43013, 1], [43015, 43018, 1], [43020, 43042, 1], [43072, 43123, 1], [43138, 43187, 1], [43250, 43255, 1], [43259, 43261, 2], [43262, 43274, 12], [43275, 43301, 1], [43312, 43334, 1], [43360, 43388, 1], [43396, 43442, 1], [43488, 43492, 1], [43495, 43503, 1], [43514, 43518, 1], [43520, 43560, 1], [43584, 43586, 1], [43588, 43595, 1], [43616, 43631, 1], [43633, 43638, 1], [43642, 43646, 4], [43647, 43695, 1], [43697, 43701, 4], [43702, 43705, 3], [43706, 43709, 1], [43712, 43714, 2], [43739, 43740, 1], [43744, 43754, 1], [43762, 43777, 15], [43778, 43782, 1], [43785, 43790, 1], [43793, 43798, 1], [43808, 43814, 1], [43816, 43822, 1], [43968, 44002, 1], [44032, 55203, 1], [55216, 55238, 1], [55243, 55291, 1], [63744, 64109, 1], [64112, 64217, 1], [64285, 64287, 2], [64288, 64296, 1], [64298, 64310, 1], [64312, 64316, 1], [64318, 64320, 2], [64321, 64323, 2], [64324, 64326, 2], [64327, 64433, 1], [64467, 64829, 1], [64848, 64911, 1], [64914, 64967, 1], [65008, 65019, 1], [65136, 65140, 1], [65142, 65276, 1], [65382, 65391, 1], [65393, 65437, 1], [65440, 65470, 1], [65474, 65479, 1], [65482, 65487, 1], [65490, 65495, 1], [65498, 65500, 1], [65536, 65547, 1], [65549, 65574, 1], [65576, 65594, 1], [65596, 65597, 1], [65599, 65613, 1], [65616, 65629, 1], [65664, 65786, 1], [66176, 66204, 1], [66208, 66256, 1], [66304, 66335, 1], [66349, 66368, 1], [66370, 66377, 1], [66384, 66421, 1], [66432, 66461, 1], [66464, 66499, 1], [66504, 66511, 1], [66640, 66717, 1], [66816, 66855, 1], [66864, 66915, 1], [67008, 67059, 1], [67072, 67382, 1], [67392, 67413, 1], [67424, 67431, 1], [67584, 67589, 1], [67592, 67594, 2], [67595, 67637, 1], [67639, 67640, 1], [67644, 67647, 3], [67648, 67669, 1], [67680, 67702, 1], [67712, 67742, 1], [67808, 67826, 1], [67828, 67829, 1], [67840, 67861, 1], [67872, 67897, 1], [67968, 68023, 1], [68030, 68031, 1], [68096, 68112, 16], [68113, 68115, 1], [68117, 68119, 1], [68121, 68149, 1], [68192, 68220, 1], [68224, 68252, 1], [68288, 68295, 1], [68297, 68324, 1], [68352, 68405, 1], [68416, 68437, 1], [68448, 68466, 1], [68480, 68497, 1], [68608, 68680, 1], [68864, 68899, 1], [68938, 68941, 1], [68943, 69248, 305], [69249, 69289, 1], [69296, 69297, 1], [69314, 69316, 1], [69376, 69404, 1], [69415, 69424, 9], [69425, 69445, 1], [69488, 69505, 1], [69552, 69572, 1], [69600, 69622, 1], [69635, 69687, 1], [69745, 69746, 1], [69749, 69763, 14], [69764, 69807, 1], [69840, 69864, 1], [69891, 69926, 1], [69956, 69959, 3], [69968, 70002, 1], [70006, 70019, 13], [70020, 70066, 1], [70081, 70084, 1], [70106, 70108, 2], [70144, 70161, 1], [70163, 70187, 1], [70207, 70208, 1], [70272, 70278, 1], [70280, 70282, 2], [70283, 70285, 1], [70287, 70301, 1], [70303, 70312, 1], [70320, 70366, 1], [70405, 70412, 1], [70415, 70416, 1], [70419, 70440, 1], [70442, 70448, 1], [70450, 70451, 1], [70453, 70457, 1], [70461, 70480, 19], [70493, 70497, 1], [70528, 70537, 1], [70539, 70542, 3], [70544, 70581, 1], [70583, 70609, 26], [70611, 70656, 45], [70657, 70708, 1], [70727, 70730, 1], [70751, 70753, 1], [70784, 70831, 1], [70852, 70853, 1], [70855, 71040, 185], [71041, 71086, 1], [71128, 71131, 1], [71168, 71215, 1], [71236, 71296, 60], [71297, 71338, 1], [71352, 71424, 72], [71425, 71450, 1], [71488, 71494, 1], [71680, 71723, 1], [71935, 71942, 1], [71945, 71948, 3], [71949, 71955, 1], [71957, 71958, 1], [71960, 71983, 1], [71999, 72001, 2], [72096, 72103, 1], [72106, 72144, 1], [72161, 72163, 2], [72192, 72203, 11], [72204, 72242, 1], [72250, 72272, 22], [72284, 72329, 1], [72349, 72368, 19], [72369, 72440, 1], [72640, 72672, 1], [72704, 72712, 1], [72714, 72750, 1], [72768, 72818, 50], [72819, 72847, 1], [72960, 72966, 1], [72968, 72969, 1], [72971, 73008, 1], [73030, 73056, 26], [73057, 73061, 1], [73063, 73064, 1], [73066, 73097, 1], [73112, 73440, 328], [73441, 73458, 1], [73474, 73476, 2], [73477, 73488, 1], [73490, 73523, 1], [73648, 73728, 80], [73729, 74649, 1], [74880, 75075, 1], [77712, 77808, 1], [77824, 78895, 1], [78913, 78918, 1], [78944, 82938, 1], [82944, 83526, 1], [90368, 90397, 1], [92160, 92728, 1], [92736, 92766, 1], [92784, 92862, 1], [92880, 92909, 1], [92928, 92975, 1], [93027, 93047, 1], [93053, 93071, 1], [93507, 93546, 1], [93952, 94026, 1], [94032, 94208, 176], [94209, 100343, 1], [100352, 101589, 1], [101631, 101640, 1], [110592, 110882, 1], [110898, 110928, 30], [110929, 110930, 1], [110933, 110948, 15], [110949, 110951, 1], [110960, 111355, 1], [113664, 113770, 1], [113776, 113788, 1], [113792, 113800, 1], [113808, 113817, 1], [122634, 123136, 502], [123137, 123180, 1], [123214, 123536, 322], [123537, 123565, 1], [123584, 123627, 1], [124112, 124138, 1], [124368, 124397, 1], [124400, 124896, 496], [124897, 124902, 1], [124904, 124907, 1], [124909, 124910, 1], [124912, 124926, 1], [124928, 125124, 1], [126464, 126467, 1], [126469, 126495, 1], [126497, 126498, 1], [126500, 126503, 3], [126505, 126514, 1], [126516, 126519, 1], [126521, 126523, 2], [126530, 126535, 5], [126537, 126541, 2], [126542, 126543, 1], [126545, 126546, 1], [126548, 126551, 3], [126553, 126561, 2], [126562, 126564, 2], [126567, 126570, 1], [126572, 126578, 1], [126580, 126583, 1], [126585, 126588, 1], [126590, 126592, 2], [126593, 126601, 1], [126603, 126619, 1], [126625, 126627, 1], [126629, 126633, 1], [126635, 126651, 1], [131072, 173791, 1], [173824, 177977, 1], [177984, 178205, 1], [178208, 183969, 1], [183984, 191456, 1], [191472, 192093, 1], [194560, 195101, 1], [196608, 201546, 1], [201552, 205743, 1]];\n static Lt = [[453, 459, 3], [498, 8072, 7574], [8073, 8079, 1], [8088, 8095, 1], [8104, 8111, 1], [8124, 8140, 16], [8188, 8188, 1]];\n static foldLt = [[452, 454, 2], [455, 457, 2], [458, 460, 2], [497, 499, 2], [8064, 8071, 1], [8080, 8087, 1], [8096, 8103, 1], [8115, 8131, 16], [8179, 8179, 1]];\n static Lu = [[65, 90, 1], [192, 214, 1], [216, 222, 1], [256, 310, 2], [313, 327, 2], [330, 376, 2], [377, 381, 2], [385, 386, 1], [388, 390, 2], [391, 393, 2], [394, 395, 1], [398, 401, 1], [403, 404, 1], [406, 408, 1], [412, 413, 1], [415, 416, 1], [418, 422, 2], [423, 425, 2], [428, 430, 2], [431, 433, 2], [434, 435, 1], [437, 439, 2], [440, 444, 4], [452, 461, 3], [463, 475, 2], [478, 494, 2], [497, 500, 3], [502, 504, 1], [506, 562, 2], [570, 571, 1], [573, 574, 1], [577, 579, 2], [580, 582, 1], [584, 590, 2], [880, 882, 2], [886, 895, 9], [902, 904, 2], [905, 906, 1], [908, 910, 2], [911, 913, 2], [914, 929, 1], [931, 939, 1], [975, 978, 3], [979, 980, 1], [984, 1006, 2], [1012, 1015, 3], [1017, 1018, 1], [1021, 1071, 1], [1120, 1152, 2], [1162, 1216, 2], [1217, 1229, 2], [1232, 1326, 2], [1329, 1366, 1], [4256, 4293, 1], [4295, 4301, 6], [5024, 5109, 1], [7305, 7312, 7], [7313, 7354, 1], [7357, 7359, 1], [7680, 7828, 2], [7838, 7934, 2], [7944, 7951, 1], [7960, 7965, 1], [7976, 7983, 1], [7992, 7999, 1], [8008, 8013, 1], [8025, 8031, 2], [8040, 8047, 1], [8120, 8123, 1], [8136, 8139, 1], [8152, 8155, 1], [8168, 8172, 1], [8184, 8187, 1], [8450, 8455, 5], [8459, 8461, 1], [8464, 8466, 1], [8469, 8473, 4], [8474, 8477, 1], [8484, 8490, 2], [8491, 8493, 1], [8496, 8499, 1], [8510, 8511, 1], [8517, 8579, 62], [11264, 11311, 1], [11360, 11362, 2], [11363, 11364, 1], [11367, 11373, 2], [11374, 11376, 1], [11378, 11381, 3], [11390, 11392, 1], [11394, 11490, 2], [11499, 11501, 2], [11506, 42560, 31054], [42562, 42604, 2], [42624, 42650, 2], [42786, 42798, 2], [42802, 42862, 2], [42873, 42877, 2], [42878, 42886, 2], [42891, 42893, 2], [42896, 42898, 2], [42902, 42922, 2], [42923, 42926, 1], [42928, 42932, 1], [42934, 42948, 2], [42949, 42951, 1], [42953, 42955, 2], [42956, 42960, 4], [42966, 42972, 2], [42997, 65313, 22316], [65314, 65338, 1], [66560, 66599, 1], [66736, 66771, 1], [66928, 66938, 1], [66940, 66954, 1], [66956, 66962, 1], [66964, 66965, 1], [68736, 68786, 1], [68944, 68965, 1], [71840, 71871, 1], [93760, 93791, 1], [119808, 119833, 1], [119860, 119885, 1], [119912, 119937, 1], [119964, 119966, 2], [119967, 119973, 3], [119974, 119977, 3], [119978, 119980, 1], [119982, 119989, 1], [120016, 120041, 1], [120068, 120069, 1], [120071, 120074, 1], [120077, 120084, 1], [120086, 120092, 1], [120120, 120121, 1], [120123, 120126, 1], [120128, 120132, 1], [120134, 120138, 4], [120139, 120144, 1], [120172, 120197, 1], [120224, 120249, 1], [120276, 120301, 1], [120328, 120353, 1], [120380, 120405, 1], [120432, 120457, 1], [120488, 120512, 1], [120546, 120570, 1], [120604, 120628, 1], [120662, 120686, 1], [120720, 120744, 1], [120778, 125184, 4406], [125185, 125217, 1]];\n static Upper = this.Lu;\n static foldLu = [[97, 122, 1], [181, 223, 42], [224, 246, 1], [248, 255, 1], [257, 303, 2], [307, 311, 2], [314, 328, 2], [331, 375, 2], [378, 382, 2], [383, 384, 1], [387, 389, 2], [392, 396, 4], [402, 405, 3], [409, 411, 1], [414, 417, 3], [419, 421, 2], [424, 429, 5], [432, 436, 4], [438, 441, 3], [445, 447, 2], [453, 454, 1], [456, 457, 1], [459, 460, 1], [462, 476, 2], [477, 495, 2], [498, 499, 1], [501, 505, 4], [507, 543, 2], [547, 563, 2], [572, 575, 3], [576, 578, 2], [583, 591, 2], [592, 596, 1], [598, 599, 1], [601, 603, 2], [604, 608, 4], [609, 611, 2], [612, 614, 1], [616, 620, 1], [623, 625, 2], [626, 629, 3], [637, 640, 3], [642, 643, 1], [647, 652, 1], [658, 669, 11], [670, 837, 167], [881, 883, 2], [887, 891, 4], [892, 893, 1], [940, 943, 1], [945, 974, 1], [976, 977, 1], [981, 983, 1], [985, 1007, 2], [1008, 1011, 1], [1013, 1019, 3], [1072, 1119, 1], [1121, 1153, 2], [1163, 1215, 2], [1218, 1230, 2], [1231, 1327, 2], [1377, 1414, 1], [4304, 4346, 1], [4349, 4351, 1], [5112, 5117, 1], [7296, 7304, 1], [7306, 7545, 239], [7549, 7566, 17], [7681, 7829, 2], [7835, 7841, 6], [7843, 7935, 2], [7936, 7943, 1], [7952, 7957, 1], [7968, 7975, 1], [7984, 7991, 1], [8000, 8005, 1], [8017, 8023, 2], [8032, 8039, 1], [8048, 8061, 1], [8112, 8113, 1], [8126, 8144, 18], [8145, 8160, 15], [8161, 8165, 4], [8526, 8580, 54], [11312, 11359, 1], [11361, 11365, 4], [11366, 11372, 2], [11379, 11382, 3], [11393, 11491, 2], [11500, 11502, 2], [11507, 11520, 13], [11521, 11557, 1], [11559, 11565, 6], [42561, 42605, 2], [42625, 42651, 2], [42787, 42799, 2], [42803, 42863, 2], [42874, 42876, 2], [42879, 42887, 2], [42892, 42897, 5], [42899, 42900, 1], [42903, 42921, 2], [42933, 42947, 2], [42952, 42954, 2], [42957, 42961, 4], [42967, 42971, 2], [42998, 43859, 861], [43888, 43967, 1], [65345, 65370, 1], [66600, 66639, 1], [66776, 66811, 1], [66967, 66977, 1], [66979, 66993, 1], [66995, 67001, 1], [67003, 67004, 1], [68800, 68850, 1], [68976, 68997, 1], [71872, 71903, 1], [93792, 93823, 1], [125218, 125251, 1]];\n static M = [[768, 879, 1], [1155, 1161, 1], [1425, 1469, 1], [1471, 1473, 2], [1474, 1476, 2], [1477, 1479, 2], [1552, 1562, 1], [1611, 1631, 1], [1648, 1750, 102], [1751, 1756, 1], [1759, 1764, 1], [1767, 1768, 1], [1770, 1773, 1], [1809, 1840, 31], [1841, 1866, 1], [1958, 1968, 1], [2027, 2035, 1], [2045, 2070, 25], [2071, 2073, 1], [2075, 2083, 1], [2085, 2087, 1], [2089, 2093, 1], [2137, 2139, 1], [2199, 2207, 1], [2250, 2273, 1], [2275, 2307, 1], [2362, 2364, 1], [2366, 2383, 1], [2385, 2391, 1], [2402, 2403, 1], [2433, 2435, 1], [2492, 2494, 2], [2495, 2500, 1], [2503, 2504, 1], [2507, 2509, 1], [2519, 2530, 11], [2531, 2558, 27], [2561, 2563, 1], [2620, 2622, 2], [2623, 2626, 1], [2631, 2632, 1], [2635, 2637, 1], [2641, 2672, 31], [2673, 2677, 4], [2689, 2691, 1], [2748, 2750, 2], [2751, 2757, 1], [2759, 2761, 1], [2763, 2765, 1], [2786, 2787, 1], [2810, 2815, 1], [2817, 2819, 1], [2876, 2878, 2], [2879, 2884, 1], [2887, 2888, 1], [2891, 2893, 1], [2901, 2903, 1], [2914, 2915, 1], [2946, 3006, 60], [3007, 3010, 1], [3014, 3016, 1], [3018, 3021, 1], [3031, 3072, 41], [3073, 3076, 1], [3132, 3134, 2], [3135, 3140, 1], [3142, 3144, 1], [3146, 3149, 1], [3157, 3158, 1], [3170, 3171, 1], [3201, 3203, 1], [3260, 3262, 2], [3263, 3268, 1], [3270, 3272, 1], [3274, 3277, 1], [3285, 3286, 1], [3298, 3299, 1], [3315, 3328, 13], [3329, 3331, 1], [3387, 3388, 1], [3390, 3396, 1], [3398, 3400, 1], [3402, 3405, 1], [3415, 3426, 11], [3427, 3457, 30], [3458, 3459, 1], [3530, 3535, 5], [3536, 3540, 1], [3542, 3544, 2], [3545, 3551, 1], [3570, 3571, 1], [3633, 3636, 3], [3637, 3642, 1], [3655, 3662, 1], [3761, 3764, 3], [3765, 3772, 1], [3784, 3790, 1], [3864, 3865, 1], [3893, 3897, 2], [3902, 3903, 1], [3953, 3972, 1], [3974, 3975, 1], [3981, 3991, 1], [3993, 4028, 1], [4038, 4139, 101], [4140, 4158, 1], [4182, 4185, 1], [4190, 4192, 1], [4194, 4196, 1], [4199, 4205, 1], [4209, 4212, 1], [4226, 4237, 1], [4239, 4250, 11], [4251, 4253, 1], [4957, 4959, 1], [5906, 5909, 1], [5938, 5940, 1], [5970, 5971, 1], [6002, 6003, 1], [6068, 6099, 1], [6109, 6155, 46], [6156, 6157, 1], [6159, 6277, 118], [6278, 6313, 35], [6432, 6443, 1], [6448, 6459, 1], [6679, 6683, 1], [6741, 6750, 1], [6752, 6780, 1], [6783, 6832, 49], [6833, 6862, 1], [6912, 6916, 1], [6964, 6980, 1], [7019, 7027, 1], [7040, 7042, 1], [7073, 7085, 1], [7142, 7155, 1], [7204, 7223, 1], [7376, 7378, 1], [7380, 7400, 1], [7405, 7412, 7], [7415, 7417, 1], [7616, 7679, 1], [8400, 8432, 1], [11503, 11505, 1], [11647, 11744, 97], [11745, 11775, 1], [12330, 12335, 1], [12441, 12442, 1], [42607, 42610, 1], [42612, 42621, 1], [42654, 42655, 1], [42736, 42737, 1], [43010, 43014, 4], [43019, 43043, 24], [43044, 43047, 1], [43052, 43136, 84], [43137, 43188, 51], [43189, 43205, 1], [43232, 43249, 1], [43263, 43302, 39], [43303, 43309, 1], [43335, 43347, 1], [43392, 43395, 1], [43443, 43456, 1], [43493, 43561, 68], [43562, 43574, 1], [43587, 43596, 9], [43597, 43643, 46], [43644, 43645, 1], [43696, 43698, 2], [43699, 43700, 1], [43703, 43704, 1], [43710, 43711, 1], [43713, 43755, 42], [43756, 43759, 1], [43765, 43766, 1], [44003, 44010, 1], [44012, 44013, 1], [64286, 65024, 738], [65025, 65039, 1], [65056, 65071, 1], [66045, 66272, 227], [66422, 66426, 1], [68097, 68099, 1], [68101, 68102, 1], [68108, 68111, 1], [68152, 68154, 1], [68159, 68325, 166], [68326, 68900, 574], [68901, 68903, 1], [68969, 68973, 1], [69291, 69292, 1], [69372, 69375, 1], [69446, 69456, 1], [69506, 69509, 1], [69632, 69634, 1], [69688, 69702, 1], [69744, 69747, 3], [69748, 69759, 11], [69760, 69762, 1], [69808, 69818, 1], [69826, 69888, 62], [69889, 69890, 1], [69927, 69940, 1], [69957, 69958, 1], [70003, 70016, 13], [70017, 70018, 1], [70067, 70080, 1], [70089, 70092, 1], [70094, 70095, 1], [70188, 70199, 1], [70206, 70209, 3], [70367, 70378, 1], [70400, 70403, 1], [70459, 70460, 1], [70462, 70468, 1], [70471, 70472, 1], [70475, 70477, 1], [70487, 70498, 11], [70499, 70502, 3], [70503, 70508, 1], [70512, 70516, 1], [70584, 70592, 1], [70594, 70597, 3], [70599, 70602, 1], [70604, 70608, 1], [70610, 70625, 15], [70626, 70709, 83], [70710, 70726, 1], [70750, 70832, 82], [70833, 70851, 1], [71087, 71093, 1], [71096, 71104, 1], [71132, 71133, 1], [71216, 71232, 1], [71339, 71351, 1], [71453, 71467, 1], [71724, 71738, 1], [71984, 71989, 1], [71991, 71992, 1], [71995, 71998, 1], [72000, 72002, 2], [72003, 72145, 142], [72146, 72151, 1], [72154, 72160, 1], [72164, 72193, 29], [72194, 72202, 1], [72243, 72249, 1], [72251, 72254, 1], [72263, 72273, 10], [72274, 72283, 1], [72330, 72345, 1], [72751, 72758, 1], [72760, 72767, 1], [72850, 72871, 1], [72873, 72886, 1], [73009, 73014, 1], [73018, 73020, 2], [73021, 73023, 2], [73024, 73029, 1], [73031, 73098, 67], [73099, 73102, 1], [73104, 73105, 1], [73107, 73111, 1], [73459, 73462, 1], [73472, 73473, 1], [73475, 73524, 49], [73525, 73530, 1], [73534, 73538, 1], [73562, 78912, 5350], [78919, 78933, 1], [90398, 90415, 1], [92912, 92916, 1], [92976, 92982, 1], [94031, 94033, 2], [94034, 94087, 1], [94095, 94098, 1], [94180, 94192, 12], [94193, 113821, 19628], [113822, 118528, 4706], [118529, 118573, 1], [118576, 118598, 1], [119141, 119145, 1], [119149, 119154, 1], [119163, 119170, 1], [119173, 119179, 1], [119210, 119213, 1], [119362, 119364, 1], [121344, 121398, 1], [121403, 121452, 1], [121461, 121476, 15], [121499, 121503, 1], [121505, 121519, 1], [122880, 122886, 1], [122888, 122904, 1], [122907, 122913, 1], [122915, 122916, 1], [122918, 122922, 1], [123023, 123184, 161], [123185, 123190, 1], [123566, 123628, 62], [123629, 123631, 1], [124140, 124143, 1], [124398, 124399, 1], [125136, 125142, 1], [125252, 125258, 1], [917760, 917999, 1]];\n static foldM = [[921, 953, 32], [8126, 8126, 1]];\n static Mc = [[2307, 2363, 56], [2366, 2368, 1], [2377, 2380, 1], [2382, 2383, 1], [2434, 2435, 1], [2494, 2496, 1], [2503, 2504, 1], [2507, 2508, 1], [2519, 2563, 44], [2622, 2624, 1], [2691, 2750, 59], [2751, 2752, 1], [2761, 2763, 2], [2764, 2818, 54], [2819, 2878, 59], [2880, 2887, 7], [2888, 2891, 3], [2892, 2903, 11], [3006, 3007, 1], [3009, 3010, 1], [3014, 3016, 1], [3018, 3020, 1], [3031, 3073, 42], [3074, 3075, 1], [3137, 3140, 1], [3202, 3203, 1], [3262, 3264, 2], [3265, 3268, 1], [3271, 3272, 1], [3274, 3275, 1], [3285, 3286, 1], [3315, 3330, 15], [3331, 3390, 59], [3391, 3392, 1], [3398, 3400, 1], [3402, 3404, 1], [3415, 3458, 43], [3459, 3535, 76], [3536, 3537, 1], [3544, 3551, 1], [3570, 3571, 1], [3902, 3903, 1], [3967, 4139, 172], [4140, 4145, 5], [4152, 4155, 3], [4156, 4182, 26], [4183, 4194, 11], [4195, 4196, 1], [4199, 4205, 1], [4227, 4228, 1], [4231, 4236, 1], [4239, 4250, 11], [4251, 4252, 1], [5909, 5940, 31], [6070, 6078, 8], [6079, 6085, 1], [6087, 6088, 1], [6435, 6438, 1], [6441, 6443, 1], [6448, 6449, 1], [6451, 6456, 1], [6681, 6682, 1], [6741, 6743, 2], [6753, 6755, 2], [6756, 6765, 9], [6766, 6770, 1], [6916, 6965, 49], [6971, 6973, 2], [6974, 6977, 1], [6979, 6980, 1], [7042, 7073, 31], [7078, 7079, 1], [7082, 7143, 61], [7146, 7148, 1], [7150, 7154, 4], [7155, 7204, 49], [7205, 7211, 1], [7220, 7221, 1], [7393, 7415, 22], [12334, 12335, 1], [43043, 43044, 1], [43047, 43136, 89], [43137, 43188, 51], [43189, 43203, 1], [43346, 43347, 1], [43395, 43444, 49], [43445, 43450, 5], [43451, 43454, 3], [43455, 43456, 1], [43567, 43568, 1], [43571, 43572, 1], [43597, 43643, 46], [43645, 43755, 110], [43758, 43759, 1], [43765, 44003, 238], [44004, 44006, 2], [44007, 44009, 2], [44010, 44012, 2], [69632, 69634, 2], [69762, 69808, 46], [69809, 69810, 1], [69815, 69816, 1], [69932, 69957, 25], [69958, 70018, 60], [70067, 70069, 1], [70079, 70080, 1], [70094, 70188, 94], [70189, 70190, 1], [70194, 70195, 1], [70197, 70368, 171], [70369, 70370, 1], [70402, 70403, 1], [70462, 70463, 1], [70465, 70468, 1], [70471, 70472, 1], [70475, 70477, 1], [70487, 70498, 11], [70499, 70584, 85], [70585, 70586, 1], [70594, 70597, 3], [70599, 70602, 1], [70604, 70605, 1], [70607, 70709, 102], [70710, 70711, 1], [70720, 70721, 1], [70725, 70832, 107], [70833, 70834, 1], [70841, 70843, 2], [70844, 70846, 1], [70849, 71087, 238], [71088, 71089, 1], [71096, 71099, 1], [71102, 71216, 114], [71217, 71218, 1], [71227, 71228, 1], [71230, 71340, 110], [71342, 71343, 1], [71350, 71454, 104], [71456, 71457, 1], [71462, 71724, 262], [71725, 71726, 1], [71736, 71984, 248], [71985, 71989, 1], [71991, 71992, 1], [71997, 72000, 3], [72002, 72145, 143], [72146, 72147, 1], [72156, 72159, 1], [72164, 72249, 85], [72279, 72280, 1], [72343, 72751, 408], [72766, 72873, 107], [72881, 72884, 3], [73098, 73102, 1], [73107, 73108, 1], [73110, 73461, 351], [73462, 73475, 13], [73524, 73525, 1], [73534, 73535, 1], [73537, 90410, 16873], [90411, 90412, 1], [94033, 94087, 1], [94192, 94193, 1], [119141, 119142, 1], [119149, 119154, 1]];\n static Me = [[1160, 1161, 1], [6846, 8413, 1567], [8414, 8416, 1], [8418, 8420, 1], [42608, 42610, 1]];\n static Mn = [[768, 879, 1], [1155, 1159, 1], [1425, 1469, 1], [1471, 1473, 2], [1474, 1476, 2], [1477, 1479, 2], [1552, 1562, 1], [1611, 1631, 1], [1648, 1750, 102], [1751, 1756, 1], [1759, 1764, 1], [1767, 1768, 1], [1770, 1773, 1], [1809, 1840, 31], [1841, 1866, 1], [1958, 1968, 1], [2027, 2035, 1], [2045, 2070, 25], [2071, 2073, 1], [2075, 2083, 1], [2085, 2087, 1], [2089, 2093, 1], [2137, 2139, 1], [2199, 2207, 1], [2250, 2273, 1], [2275, 2306, 1], [2362, 2364, 2], [2369, 2376, 1], [2381, 2385, 4], [2386, 2391, 1], [2402, 2403, 1], [2433, 2492, 59], [2497, 2500, 1], [2509, 2530, 21], [2531, 2558, 27], [2561, 2562, 1], [2620, 2625, 5], [2626, 2631, 5], [2632, 2635, 3], [2636, 2637, 1], [2641, 2672, 31], [2673, 2677, 4], [2689, 2690, 1], [2748, 2753, 5], [2754, 2757, 1], [2759, 2760, 1], [2765, 2786, 21], [2787, 2810, 23], [2811, 2815, 1], [2817, 2876, 59], [2879, 2881, 2], [2882, 2884, 1], [2893, 2901, 8], [2902, 2914, 12], [2915, 2946, 31], [3008, 3021, 13], [3072, 3076, 4], [3132, 3134, 2], [3135, 3136, 1], [3142, 3144, 1], [3146, 3149, 1], [3157, 3158, 1], [3170, 3171, 1], [3201, 3260, 59], [3263, 3270, 7], [3276, 3277, 1], [3298, 3299, 1], [3328, 3329, 1], [3387, 3388, 1], [3393, 3396, 1], [3405, 3426, 21], [3427, 3457, 30], [3530, 3538, 8], [3539, 3540, 1], [3542, 3633, 91], [3636, 3642, 1], [3655, 3662, 1], [3761, 3764, 3], [3765, 3772, 1], [3784, 3790, 1], [3864, 3865, 1], [3893, 3897, 2], [3953, 3966, 1], [3968, 3972, 1], [3974, 3975, 1], [3981, 3991, 1], [3993, 4028, 1], [4038, 4141, 103], [4142, 4144, 1], [4146, 4151, 1], [4153, 4154, 1], [4157, 4158, 1], [4184, 4185, 1], [4190, 4192, 1], [4209, 4212, 1], [4226, 4229, 3], [4230, 4237, 7], [4253, 4957, 704], [4958, 4959, 1], [5906, 5908, 1], [5938, 5939, 1], [5970, 5971, 1], [6002, 6003, 1], [6068, 6069, 1], [6071, 6077, 1], [6086, 6089, 3], [6090, 6099, 1], [6109, 6155, 46], [6156, 6157, 1], [6159, 6277, 118], [6278, 6313, 35], [6432, 6434, 1], [6439, 6440, 1], [6450, 6457, 7], [6458, 6459, 1], [6679, 6680, 1], [6683, 6742, 59], [6744, 6750, 1], [6752, 6754, 2], [6757, 6764, 1], [6771, 6780, 1], [6783, 6832, 49], [6833, 6845, 1], [6847, 6862, 1], [6912, 6915, 1], [6964, 6966, 2], [6967, 6970, 1], [6972, 6978, 6], [7019, 7027, 1], [7040, 7041, 1], [7074, 7077, 1], [7080, 7081, 1], [7083, 7085, 1], [7142, 7144, 2], [7145, 7149, 4], [7151, 7153, 1], [7212, 7219, 1], [7222, 7223, 1], [7376, 7378, 1], [7380, 7392, 1], [7394, 7400, 1], [7405, 7412, 7], [7416, 7417, 1], [7616, 7679, 1], [8400, 8412, 1], [8417, 8421, 4], [8422, 8432, 1], [11503, 11505, 1], [11647, 11744, 97], [11745, 11775, 1], [12330, 12333, 1], [12441, 12442, 1], [42607, 42612, 5], [42613, 42621, 1], [42654, 42655, 1], [42736, 42737, 1], [43010, 43014, 4], [43019, 43045, 26], [43046, 43052, 6], [43204, 43205, 1], [43232, 43249, 1], [43263, 43302, 39], [43303, 43309, 1], [43335, 43345, 1], [43392, 43394, 1], [43443, 43446, 3], [43447, 43449, 1], [43452, 43453, 1], [43493, 43561, 68], [43562, 43566, 1], [43569, 43570, 1], [43573, 43574, 1], [43587, 43596, 9], [43644, 43696, 52], [43698, 43700, 1], [43703, 43704, 1], [43710, 43711, 1], [43713, 43756, 43], [43757, 43766, 9], [44005, 44008, 3], [44013, 64286, 20273], [65024, 65039, 1], [65056, 65071, 1], [66045, 66272, 227], [66422, 66426, 1], [68097, 68099, 1], [68101, 68102, 1], [68108, 68111, 1], [68152, 68154, 1], [68159, 68325, 166], [68326, 68900, 574], [68901, 68903, 1], [68969, 68973, 1], [69291, 69292, 1], [69372, 69375, 1], [69446, 69456, 1], [69506, 69509, 1], [69633, 69688, 55], [69689, 69702, 1], [69744, 69747, 3], [69748, 69759, 11], [69760, 69761, 1], [69811, 69814, 1], [69817, 69818, 1], [69826, 69888, 62], [69889, 69890, 1], [69927, 69931, 1], [69933, 69940, 1], [70003, 70016, 13], [70017, 70070, 53], [70071, 70078, 1], [70089, 70092, 1], [70095, 70191, 96], [70192, 70193, 1], [70196, 70198, 2], [70199, 70206, 7], [70209, 70367, 158], [70371, 70378, 1], [70400, 70401, 1], [70459, 70460, 1], [70464, 70502, 38], [70503, 70508, 1], [70512, 70516, 1], [70587, 70592, 1], [70606, 70610, 2], [70625, 70626, 1], [70712, 70719, 1], [70722, 70724, 1], [70726, 70750, 24], [70835, 70840, 1], [70842, 70847, 5], [70848, 70850, 2], [70851, 71090, 239], [71091, 71093, 1], [71100, 71101, 1], [71103, 71104, 1], [71132, 71133, 1], [71219, 71226, 1], [71229, 71231, 2], [71232, 71339, 107], [71341, 71344, 3], [71345, 71349, 1], [71351, 71453, 102], [71455, 71458, 3], [71459, 71461, 1], [71463, 71467, 1], [71727, 71735, 1], [71737, 71738, 1], [71995, 71996, 1], [71998, 72003, 5], [72148, 72151, 1], [72154, 72155, 1], [72160, 72193, 33], [72194, 72202, 1], [72243, 72248, 1], [72251, 72254, 1], [72263, 72273, 10], [72274, 72278, 1], [72281, 72283, 1], [72330, 72342, 1], [72344, 72345, 1], [72752, 72758, 1], [72760, 72765, 1], [72767, 72850, 83], [72851, 72871, 1], [72874, 72880, 1], [72882, 72883, 1], [72885, 72886, 1], [73009, 73014, 1], [73018, 73020, 2], [73021, 73023, 2], [73024, 73029, 1], [73031, 73104, 73], [73105, 73109, 4], [73111, 73459, 348], [73460, 73472, 12], [73473, 73526, 53], [73527, 73530, 1], [73536, 73538, 2], [73562, 78912, 5350], [78919, 78933, 1], [90398, 90409, 1], [90413, 90415, 1], [92912, 92916, 1], [92976, 92982, 1], [94031, 94095, 64], [94096, 94098, 1], [94180, 113821, 19641], [113822, 118528, 4706], [118529, 118573, 1], [118576, 118598, 1], [119143, 119145, 1], [119163, 119170, 1], [119173, 119179, 1], [119210, 119213, 1], [119362, 119364, 1], [121344, 121398, 1], [121403, 121452, 1], [121461, 121476, 15], [121499, 121503, 1], [121505, 121519, 1], [122880, 122886, 1], [122888, 122904, 1], [122907, 122913, 1], [122915, 122916, 1], [122918, 122922, 1], [123023, 123184, 161], [123185, 123190, 1], [123566, 123628, 62], [123629, 123631, 1], [124140, 124143, 1], [124398, 124399, 1], [125136, 125142, 1], [125252, 125258, 1], [917760, 917999, 1]];\n static foldMn = [[921, 953, 32], [8126, 8126, 1]];\n static N = [[48, 57, 1], [178, 179, 1], [185, 188, 3], [189, 190, 1], [1632, 1641, 1], [1776, 1785, 1], [1984, 1993, 1], [2406, 2415, 1], [2534, 2543, 1], [2548, 2553, 1], [2662, 2671, 1], [2790, 2799, 1], [2918, 2927, 1], [2930, 2935, 1], [3046, 3058, 1], [3174, 3183, 1], [3192, 3198, 1], [3302, 3311, 1], [3416, 3422, 1], [3430, 3448, 1], [3558, 3567, 1], [3664, 3673, 1], [3792, 3801, 1], [3872, 3891, 1], [4160, 4169, 1], [4240, 4249, 1], [4969, 4988, 1], [5870, 5872, 1], [6112, 6121, 1], [6128, 6137, 1], [6160, 6169, 1], [6470, 6479, 1], [6608, 6618, 1], [6784, 6793, 1], [6800, 6809, 1], [6992, 7001, 1], [7088, 7097, 1], [7232, 7241, 1], [7248, 7257, 1], [8304, 8308, 4], [8309, 8313, 1], [8320, 8329, 1], [8528, 8578, 1], [8581, 8585, 1], [9312, 9371, 1], [9450, 9471, 1], [10102, 10131, 1], [11517, 12295, 778], [12321, 12329, 1], [12344, 12346, 1], [12690, 12693, 1], [12832, 12841, 1], [12872, 12879, 1], [12881, 12895, 1], [12928, 12937, 1], [12977, 12991, 1], [42528, 42537, 1], [42726, 42735, 1], [43056, 43061, 1], [43216, 43225, 1], [43264, 43273, 1], [43472, 43481, 1], [43504, 43513, 1], [43600, 43609, 1], [44016, 44025, 1], [65296, 65305, 1], [65799, 65843, 1], [65856, 65912, 1], [65930, 65931, 1], [66273, 66299, 1], [66336, 66339, 1], [66369, 66378, 9], [66513, 66517, 1], [66720, 66729, 1], [67672, 67679, 1], [67705, 67711, 1], [67751, 67759, 1], [67835, 67839, 1], [67862, 67867, 1], [68028, 68029, 1], [68032, 68047, 1], [68050, 68095, 1], [68160, 68168, 1], [68221, 68222, 1], [68253, 68255, 1], [68331, 68335, 1], [68440, 68447, 1], [68472, 68479, 1], [68521, 68527, 1], [68858, 68863, 1], [68912, 68921, 1], [68928, 68937, 1], [69216, 69246, 1], [69405, 69414, 1], [69457, 69460, 1], [69573, 69579, 1], [69714, 69743, 1], [69872, 69881, 1], [69942, 69951, 1], [70096, 70105, 1], [70113, 70132, 1], [70384, 70393, 1], [70736, 70745, 1], [70864, 70873, 1], [71248, 71257, 1], [71360, 71369, 1], [71376, 71395, 1], [71472, 71483, 1], [71904, 71922, 1], [72016, 72025, 1], [72688, 72697, 1], [72784, 72812, 1], [73040, 73049, 1], [73120, 73129, 1], [73552, 73561, 1], [73664, 73684, 1], [74752, 74862, 1], [90416, 90425, 1], [92768, 92777, 1], [92864, 92873, 1], [93008, 93017, 1], [93019, 93025, 1], [93552, 93561, 1], [93824, 93846, 1], [118000, 118009, 1], [119488, 119507, 1], [119520, 119539, 1], [119648, 119672, 1], [120782, 120831, 1], [123200, 123209, 1], [123632, 123641, 1], [124144, 124153, 1], [124401, 124410, 1], [125127, 125135, 1], [125264, 125273, 1], [126065, 126123, 1], [126125, 126127, 1], [126129, 126132, 1], [126209, 126253, 1], [126255, 126269, 1], [127232, 127244, 1], [130032, 130041, 1]];\n static Nd = [[48, 57, 1], [1632, 1641, 1], [1776, 1785, 1], [1984, 1993, 1], [2406, 2415, 1], [2534, 2543, 1], [2662, 2671, 1], [2790, 2799, 1], [2918, 2927, 1], [3046, 3055, 1], [3174, 3183, 1], [3302, 3311, 1], [3430, 3439, 1], [3558, 3567, 1], [3664, 3673, 1], [3792, 3801, 1], [3872, 3881, 1], [4160, 4169, 1], [4240, 4249, 1], [6112, 6121, 1], [6160, 6169, 1], [6470, 6479, 1], [6608, 6617, 1], [6784, 6793, 1], [6800, 6809, 1], [6992, 7001, 1], [7088, 7097, 1], [7232, 7241, 1], [7248, 7257, 1], [42528, 42537, 1], [43216, 43225, 1], [43264, 43273, 1], [43472, 43481, 1], [43504, 43513, 1], [43600, 43609, 1], [44016, 44025, 1], [65296, 65305, 1], [66720, 66729, 1], [68912, 68921, 1], [68928, 68937, 1], [69734, 69743, 1], [69872, 69881, 1], [69942, 69951, 1], [70096, 70105, 1], [70384, 70393, 1], [70736, 70745, 1], [70864, 70873, 1], [71248, 71257, 1], [71360, 71369, 1], [71376, 71395, 1], [71472, 71481, 1], [71904, 71913, 1], [72016, 72025, 1], [72688, 72697, 1], [72784, 72793, 1], [73040, 73049, 1], [73120, 73129, 1], [73552, 73561, 1], [90416, 90425, 1], [92768, 92777, 1], [92864, 92873, 1], [93008, 93017, 1], [93552, 93561, 1], [118000, 118009, 1], [120782, 120831, 1], [123200, 123209, 1], [123632, 123641, 1], [124144, 124153, 1], [124401, 124410, 1], [125264, 125273, 1], [130032, 130041, 1]];\n static Nl = [[5870, 5872, 1], [8544, 8578, 1], [8581, 8584, 1], [12295, 12321, 26], [12322, 12329, 1], [12344, 12346, 1], [42726, 42735, 1], [65856, 65908, 1], [66369, 66378, 9], [66513, 66517, 1], [74752, 74862, 1]];\n static No = [[178, 179, 1], [185, 188, 3], [189, 190, 1], [2548, 2553, 1], [2930, 2935, 1], [3056, 3058, 1], [3192, 3198, 1], [3416, 3422, 1], [3440, 3448, 1], [3882, 3891, 1], [4969, 4988, 1], [6128, 6137, 1], [6618, 8304, 1686], [8308, 8313, 1], [8320, 8329, 1], [8528, 8543, 1], [8585, 9312, 727], [9313, 9371, 1], [9450, 9471, 1], [10102, 10131, 1], [11517, 12690, 1173], [12691, 12693, 1], [12832, 12841, 1], [12872, 12879, 1], [12881, 12895, 1], [12928, 12937, 1], [12977, 12991, 1], [43056, 43061, 1], [65799, 65843, 1], [65909, 65912, 1], [65930, 65931, 1], [66273, 66299, 1], [66336, 66339, 1], [67672, 67679, 1], [67705, 67711, 1], [67751, 67759, 1], [67835, 67839, 1], [67862, 67867, 1], [68028, 68029, 1], [68032, 68047, 1], [68050, 68095, 1], [68160, 68168, 1], [68221, 68222, 1], [68253, 68255, 1], [68331, 68335, 1], [68440, 68447, 1], [68472, 68479, 1], [68521, 68527, 1], [68858, 68863, 1], [69216, 69246, 1], [69405, 69414, 1], [69457, 69460, 1], [69573, 69579, 1], [69714, 69733, 1], [70113, 70132, 1], [71482, 71483, 1], [71914, 71922, 1], [72794, 72812, 1], [73664, 73684, 1], [93019, 93025, 1], [93824, 93846, 1], [119488, 119507, 1], [119520, 119539, 1], [119648, 119672, 1], [125127, 125135, 1], [126065, 126123, 1], [126125, 126127, 1], [126129, 126132, 1], [126209, 126253, 1], [126255, 126269, 1], [127232, 127244, 1]];\n static P = [[33, 35, 1], [37, 42, 1], [44, 47, 1], [58, 59, 1], [63, 64, 1], [91, 93, 1], [95, 123, 28], [125, 161, 36], [167, 171, 4], [182, 183, 1], [187, 191, 4], [894, 903, 9], [1370, 1375, 1], [1417, 1418, 1], [1470, 1472, 2], [1475, 1478, 3], [1523, 1524, 1], [1545, 1546, 1], [1548, 1549, 1], [1563, 1565, 2], [1566, 1567, 1], [1642, 1645, 1], [1748, 1792, 44], [1793, 1805, 1], [2039, 2041, 1], [2096, 2110, 1], [2142, 2404, 262], [2405, 2416, 11], [2557, 2678, 121], [2800, 3191, 391], [3204, 3572, 368], [3663, 3674, 11], [3675, 3844, 169], [3845, 3858, 1], [3860, 3898, 38], [3899, 3901, 1], [3973, 4048, 75], [4049, 4052, 1], [4057, 4058, 1], [4170, 4175, 1], [4347, 4960, 613], [4961, 4968, 1], [5120, 5742, 622], [5787, 5788, 1], [5867, 5869, 1], [5941, 5942, 1], [6100, 6102, 1], [6104, 6106, 1], [6144, 6154, 1], [6468, 6469, 1], [6686, 6687, 1], [6816, 6822, 1], [6824, 6829, 1], [6990, 6991, 1], [7002, 7008, 1], [7037, 7039, 1], [7164, 7167, 1], [7227, 7231, 1], [7294, 7295, 1], [7360, 7367, 1], [7379, 8208, 829], [8209, 8231, 1], [8240, 8259, 1], [8261, 8273, 1], [8275, 8286, 1], [8317, 8318, 1], [8333, 8334, 1], [8968, 8971, 1], [9001, 9002, 1], [10088, 10101, 1], [10181, 10182, 1], [10214, 10223, 1], [10627, 10648, 1], [10712, 10715, 1], [10748, 10749, 1], [11513, 11516, 1], [11518, 11519, 1], [11632, 11776, 144], [11777, 11822, 1], [11824, 11855, 1], [11858, 11869, 1], [12289, 12291, 1], [12296, 12305, 1], [12308, 12319, 1], [12336, 12349, 13], [12448, 12539, 91], [42238, 42239, 1], [42509, 42511, 1], [42611, 42622, 11], [42738, 42743, 1], [43124, 43127, 1], [43214, 43215, 1], [43256, 43258, 1], [43260, 43310, 50], [43311, 43359, 48], [43457, 43469, 1], [43486, 43487, 1], [43612, 43615, 1], [43742, 43743, 1], [43760, 43761, 1], [44011, 64830, 20819], [64831, 65040, 209], [65041, 65049, 1], [65072, 65106, 1], [65108, 65121, 1], [65123, 65128, 5], [65130, 65131, 1], [65281, 65283, 1], [65285, 65290, 1], [65292, 65295, 1], [65306, 65307, 1], [65311, 65312, 1], [65339, 65341, 1], [65343, 65371, 28], [65373, 65375, 2], [65376, 65381, 1], [65792, 65794, 1], [66463, 66512, 49], [66927, 67671, 744], [67871, 67903, 32], [68176, 68184, 1], [68223, 68336, 113], [68337, 68342, 1], [68409, 68415, 1], [68505, 68508, 1], [68974, 69293, 319], [69461, 69465, 1], [69510, 69513, 1], [69703, 69709, 1], [69819, 69820, 1], [69822, 69825, 1], [69952, 69955, 1], [70004, 70005, 1], [70085, 70088, 1], [70093, 70107, 14], [70109, 70111, 1], [70200, 70205, 1], [70313, 70612, 299], [70613, 70615, 2], [70616, 70731, 115], [70732, 70735, 1], [70746, 70747, 1], [70749, 70854, 105], [71105, 71127, 1], [71233, 71235, 1], [71264, 71276, 1], [71353, 71484, 131], [71485, 71486, 1], [71739, 72004, 265], [72005, 72006, 1], [72162, 72255, 93], [72256, 72262, 1], [72346, 72348, 1], [72350, 72354, 1], [72448, 72457, 1], [72673, 72769, 96], [72770, 72773, 1], [72816, 72817, 1], [73463, 73464, 1], [73539, 73551, 1], [73727, 74864, 1137], [74865, 74868, 1], [77809, 77810, 1], [92782, 92783, 1], [92917, 92983, 66], [92984, 92987, 1], [92996, 93549, 553], [93550, 93551, 1], [93847, 93850, 1], [94178, 113823, 19645], [121479, 121483, 1], [124415, 125278, 863], [125279, 125279, 1]];\n static Pc = [[95, 8255, 8160], [8256, 8276, 20], [65075, 65076, 1], [65101, 65103, 1], [65343, 65343, 1]];\n static Pd = [[45, 1418, 1373], [1470, 5120, 3650], [6150, 8208, 2058], [8209, 8213, 1], [11799, 11802, 3], [11834, 11835, 1], [11840, 11869, 29], [12316, 12336, 20], [12448, 65073, 52625], [65074, 65112, 38], [65123, 65293, 170], [68974, 69293, 319]];\n static Pe = [[41, 93, 52], [125, 3899, 3774], [3901, 5788, 1887], [8262, 8318, 56], [8334, 8969, 635], [8971, 9002, 31], [10089, 10101, 2], [10182, 10215, 33], [10217, 10223, 2], [10628, 10648, 2], [10713, 10715, 2], [10749, 11811, 1062], [11813, 11817, 2], [11862, 11868, 2], [12297, 12305, 2], [12309, 12315, 2], [12318, 12319, 1], [64830, 65048, 218], [65078, 65092, 2], [65096, 65114, 18], [65116, 65118, 2], [65289, 65341, 52], [65373, 65379, 3]];\n static Pf = [[187, 8217, 8030], [8221, 8250, 29], [11779, 11781, 2], [11786, 11789, 3], [11805, 11809, 4]];\n static Pi = [[171, 8216, 8045], [8219, 8220, 1], [8223, 8249, 26], [11778, 11780, 2], [11785, 11788, 3], [11804, 11808, 4]];\n static Po = [[33, 35, 1], [37, 39, 1], [42, 46, 2], [47, 58, 11], [59, 63, 4], [64, 92, 28], [161, 167, 6], [182, 183, 1], [191, 894, 703], [903, 1370, 467], [1371, 1375, 1], [1417, 1472, 55], [1475, 1478, 3], [1523, 1524, 1], [1545, 1546, 1], [1548, 1549, 1], [1563, 1565, 2], [1566, 1567, 1], [1642, 1645, 1], [1748, 1792, 44], [1793, 1805, 1], [2039, 2041, 1], [2096, 2110, 1], [2142, 2404, 262], [2405, 2416, 11], [2557, 2678, 121], [2800, 3191, 391], [3204, 3572, 368], [3663, 3674, 11], [3675, 3844, 169], [3845, 3858, 1], [3860, 3973, 113], [4048, 4052, 1], [4057, 4058, 1], [4170, 4175, 1], [4347, 4960, 613], [4961, 4968, 1], [5742, 5867, 125], [5868, 5869, 1], [5941, 5942, 1], [6100, 6102, 1], [6104, 6106, 1], [6144, 6149, 1], [6151, 6154, 1], [6468, 6469, 1], [6686, 6687, 1], [6816, 6822, 1], [6824, 6829, 1], [6990, 6991, 1], [7002, 7008, 1], [7037, 7039, 1], [7164, 7167, 1], [7227, 7231, 1], [7294, 7295, 1], [7360, 7367, 1], [7379, 8214, 835], [8215, 8224, 9], [8225, 8231, 1], [8240, 8248, 1], [8251, 8254, 1], [8257, 8259, 1], [8263, 8273, 1], [8275, 8277, 2], [8278, 8286, 1], [11513, 11516, 1], [11518, 11519, 1], [11632, 11776, 144], [11777, 11782, 5], [11783, 11784, 1], [11787, 11790, 3], [11791, 11798, 1], [11800, 11801, 1], [11803, 11806, 3], [11807, 11818, 11], [11819, 11822, 1], [11824, 11833, 1], [11836, 11839, 1], [11841, 11843, 2], [11844, 11855, 1], [11858, 11860, 1], [12289, 12291, 1], [12349, 12539, 190], [42238, 42239, 1], [42509, 42511, 1], [42611, 42622, 11], [42738, 42743, 1], [43124, 43127, 1], [43214, 43215, 1], [43256, 43258, 1], [43260, 43310, 50], [43311, 43359, 48], [43457, 43469, 1], [43486, 43487, 1], [43612, 43615, 1], [43742, 43743, 1], [43760, 43761, 1], [44011, 65040, 21029], [65041, 65046, 1], [65049, 65072, 23], [65093, 65094, 1], [65097, 65100, 1], [65104, 65106, 1], [65108, 65111, 1], [65119, 65121, 1], [65128, 65130, 2], [65131, 65281, 150], [65282, 65283, 1], [65285, 65287, 1], [65290, 65294, 2], [65295, 65306, 11], [65307, 65311, 4], [65312, 65340, 28], [65377, 65380, 3], [65381, 65792, 411], [65793, 65794, 1], [66463, 66512, 49], [66927, 67671, 744], [67871, 67903, 32], [68176, 68184, 1], [68223, 68336, 113], [68337, 68342, 1], [68409, 68415, 1], [68505, 68508, 1], [69461, 69465, 1], [69510, 69513, 1], [69703, 69709, 1], [69819, 69820, 1], [69822, 69825, 1], [69952, 69955, 1], [70004, 70005, 1], [70085, 70088, 1], [70093, 70107, 14], [70109, 70111, 1], [70200, 70205, 1], [70313, 70612, 299], [70613, 70615, 2], [70616, 70731, 115], [70732, 70735, 1], [70746, 70747, 1], [70749, 70854, 105], [71105, 71127, 1], [71233, 71235, 1], [71264, 71276, 1], [71353, 71484, 131], [71485, 71486, 1], [71739, 72004, 265], [72005, 72006, 1], [72162, 72255, 93], [72256, 72262, 1], [72346, 72348, 1], [72350, 72354, 1], [72448, 72457, 1], [72673, 72769, 96], [72770, 72773, 1], [72816, 72817, 1], [73463, 73464, 1], [73539, 73551, 1], [73727, 74864, 1137], [74865, 74868, 1], [77809, 77810, 1], [92782, 92783, 1], [92917, 92983, 66], [92984, 92987, 1], [92996, 93549, 553], [93550, 93551, 1], [93847, 93850, 1], [94178, 113823, 19645], [121479, 121483, 1], [124415, 125278, 863], [125279, 125279, 1]];\n static Ps = [[40, 91, 51], [123, 3898, 3775], [3900, 5787, 1887], [8218, 8222, 4], [8261, 8317, 56], [8333, 8968, 635], [8970, 9001, 31], [10088, 10100, 2], [10181, 10214, 33], [10216, 10222, 2], [10627, 10647, 2], [10712, 10714, 2], [10748, 11810, 1062], [11812, 11816, 2], [11842, 11861, 19], [11863, 11867, 2], [12296, 12304, 2], [12308, 12314, 2], [12317, 64831, 52514], [65047, 65077, 30], [65079, 65091, 2], [65095, 65113, 18], [65115, 65117, 2], [65288, 65339, 51], [65371, 65375, 4], [65378, 65378, 1]];\n static S = [[36, 43, 7], [60, 62, 1], [94, 96, 2], [124, 126, 2], [162, 166, 1], [168, 169, 1], [172, 174, 2], [175, 177, 1], [180, 184, 4], [215, 247, 32], [706, 709, 1], [722, 735, 1], [741, 747, 1], [749, 751, 2], [752, 767, 1], [885, 900, 15], [901, 1014, 113], [1154, 1421, 267], [1422, 1423, 1], [1542, 1544, 1], [1547, 1550, 3], [1551, 1758, 207], [1769, 1789, 20], [1790, 2038, 248], [2046, 2047, 1], [2184, 2546, 362], [2547, 2554, 7], [2555, 2801, 246], [2928, 3059, 131], [3060, 3066, 1], [3199, 3407, 208], [3449, 3647, 198], [3841, 3843, 1], [3859, 3861, 2], [3862, 3863, 1], [3866, 3871, 1], [3892, 3896, 2], [4030, 4037, 1], [4039, 4044, 1], [4046, 4047, 1], [4053, 4056, 1], [4254, 4255, 1], [5008, 5017, 1], [5741, 6107, 366], [6464, 6622, 158], [6623, 6655, 1], [7009, 7018, 1], [7028, 7036, 1], [8125, 8127, 2], [8128, 8129, 1], [8141, 8143, 1], [8157, 8159, 1], [8173, 8175, 1], [8189, 8190, 1], [8260, 8274, 14], [8314, 8316, 1], [8330, 8332, 1], [8352, 8384, 1], [8448, 8449, 1], [8451, 8454, 1], [8456, 8457, 1], [8468, 8470, 2], [8471, 8472, 1], [8478, 8483, 1], [8485, 8489, 2], [8494, 8506, 12], [8507, 8512, 5], [8513, 8516, 1], [8522, 8525, 1], [8527, 8586, 59], [8587, 8592, 5], [8593, 8967, 1], [8972, 9000, 1], [9003, 9257, 1], [9280, 9290, 1], [9372, 9449, 1], [9472, 10087, 1], [10132, 10180, 1], [10183, 10213, 1], [10224, 10626, 1], [10649, 10711, 1], [10716, 10747, 1], [10750, 11123, 1], [11126, 11157, 1], [11159, 11263, 1], [11493, 11498, 1], [11856, 11857, 1], [11904, 11929, 1], [11931, 12019, 1], [12032, 12245, 1], [12272, 12287, 1], [12292, 12306, 14], [12307, 12320, 13], [12342, 12343, 1], [12350, 12351, 1], [12443, 12444, 1], [12688, 12689, 1], [12694, 12703, 1], [12736, 12773, 1], [12783, 12800, 17], [12801, 12830, 1], [12842, 12871, 1], [12880, 12896, 16], [12897, 12927, 1], [12938, 12976, 1], [12992, 13311, 1], [19904, 19967, 1], [42128, 42182, 1], [42752, 42774, 1], [42784, 42785, 1], [42889, 42890, 1], [43048, 43051, 1], [43062, 43065, 1], [43639, 43641, 1], [43867, 43882, 15], [43883, 64297, 20414], [64434, 64450, 1], [64832, 64847, 1], [64975, 65020, 45], [65021, 65023, 1], [65122, 65124, 2], [65125, 65126, 1], [65129, 65284, 155], [65291, 65308, 17], [65309, 65310, 1], [65342, 65344, 2], [65372, 65374, 2], [65504, 65510, 1], [65512, 65518, 1], [65532, 65533, 1], [65847, 65855, 1], [65913, 65929, 1], [65932, 65934, 1], [65936, 65948, 1], [65952, 66000, 48], [66001, 66044, 1], [67703, 67704, 1], [68296, 69006, 710], [69007, 71487, 2480], [73685, 73713, 1], [92988, 92991, 1], [92997, 113820, 20823], [117760, 117999, 1], [118016, 118451, 1], [118608, 118723, 1], [118784, 119029, 1], [119040, 119078, 1], [119081, 119140, 1], [119146, 119148, 1], [119171, 119172, 1], [119180, 119209, 1], [119214, 119274, 1], [119296, 119361, 1], [119365, 119552, 187], [119553, 119638, 1], [120513, 120539, 26], [120571, 120597, 26], [120629, 120655, 26], [120687, 120713, 26], [120745, 120771, 26], [120832, 121343, 1], [121399, 121402, 1], [121453, 121460, 1], [121462, 121475, 1], [121477, 121478, 1], [123215, 123647, 432], [126124, 126128, 4], [126254, 126704, 450], [126705, 126976, 271], [126977, 127019, 1], [127024, 127123, 1], [127136, 127150, 1], [127153, 127167, 1], [127169, 127183, 1], [127185, 127221, 1], [127245, 127405, 1], [127462, 127490, 1], [127504, 127547, 1], [127552, 127560, 1], [127568, 127569, 1], [127584, 127589, 1], [127744, 128727, 1], [128732, 128748, 1], [128752, 128764, 1], [128768, 128886, 1], [128891, 128985, 1], [128992, 129003, 1], [129008, 129024, 16], [129025, 129035, 1], [129040, 129095, 1], [129104, 129113, 1], [129120, 129159, 1], [129168, 129197, 1], [129200, 129211, 1], [129216, 129217, 1], [129280, 129619, 1], [129632, 129645, 1], [129648, 129660, 1], [129664, 129673, 1], [129679, 129734, 1], [129742, 129756, 1], [129759, 129769, 1], [129776, 129784, 1], [129792, 129938, 1], [129940, 130031, 1]];\n static Sc = [[36, 162, 126], [163, 165, 1], [1423, 1547, 124], [2046, 2047, 1], [2546, 2547, 1], [2555, 2801, 246], [3065, 3647, 582], [6107, 8352, 2245], [8353, 8384, 1], [43064, 65020, 21956], [65129, 65284, 155], [65504, 65505, 1], [65509, 65510, 1], [73693, 73696, 1], [123647, 126128, 2481]];\n static Sk = [[94, 96, 2], [168, 175, 7], [180, 184, 4], [706, 709, 1], [722, 735, 1], [741, 747, 1], [749, 751, 2], [752, 767, 1], [885, 900, 15], [901, 2184, 1283], [8125, 8127, 2], [8128, 8129, 1], [8141, 8143, 1], [8157, 8159, 1], [8173, 8175, 1], [8189, 8190, 1], [12443, 12444, 1], [42752, 42774, 1], [42784, 42785, 1], [42889, 42890, 1], [43867, 43882, 15], [43883, 64434, 20551], [64435, 64450, 1], [65342, 65344, 2], [65507, 127995, 62488], [127996, 127999, 1]];\n static Sm = [[43, 60, 17], [61, 62, 1], [124, 126, 2], [172, 177, 5], [215, 247, 32], [1014, 1542, 528], [1543, 1544, 1], [8260, 8274, 14], [8314, 8316, 1], [8330, 8332, 1], [8472, 8512, 40], [8513, 8516, 1], [8523, 8592, 69], [8593, 8596, 1], [8602, 8603, 1], [8608, 8614, 3], [8622, 8654, 32], [8655, 8658, 3], [8660, 8692, 32], [8693, 8959, 1], [8992, 8993, 1], [9084, 9115, 31], [9116, 9139, 1], [9180, 9185, 1], [9655, 9665, 10], [9720, 9727, 1], [9839, 10176, 337], [10177, 10180, 1], [10183, 10213, 1], [10224, 10239, 1], [10496, 10626, 1], [10649, 10711, 1], [10716, 10747, 1], [10750, 11007, 1], [11056, 11076, 1], [11079, 11084, 1], [64297, 65122, 825], [65124, 65126, 1], [65291, 65308, 17], [65309, 65310, 1], [65372, 65374, 2], [65506, 65513, 7], [65514, 65516, 1], [69006, 69007, 1], [120513, 120539, 26], [120571, 120597, 26], [120629, 120655, 26], [120687, 120713, 26], [120745, 120771, 26], [126704, 126705, 1]];\n static So = [[166, 169, 3], [174, 176, 2], [1154, 1421, 267], [1422, 1550, 128], [1551, 1758, 207], [1769, 1789, 20], [1790, 2038, 248], [2554, 2928, 374], [3059, 3064, 1], [3066, 3199, 133], [3407, 3449, 42], [3841, 3843, 1], [3859, 3861, 2], [3862, 3863, 1], [3866, 3871, 1], [3892, 3896, 2], [4030, 4037, 1], [4039, 4044, 1], [4046, 4047, 1], [4053, 4056, 1], [4254, 4255, 1], [5008, 5017, 1], [5741, 6464, 723], [6622, 6655, 1], [7009, 7018, 1], [7028, 7036, 1], [8448, 8449, 1], [8451, 8454, 1], [8456, 8457, 1], [8468, 8470, 2], [8471, 8478, 7], [8479, 8483, 1], [8485, 8489, 2], [8494, 8506, 12], [8507, 8522, 15], [8524, 8525, 1], [8527, 8586, 59], [8587, 8597, 10], [8598, 8601, 1], [8604, 8607, 1], [8609, 8610, 1], [8612, 8613, 1], [8615, 8621, 1], [8623, 8653, 1], [8656, 8657, 1], [8659, 8661, 2], [8662, 8691, 1], [8960, 8967, 1], [8972, 8991, 1], [8994, 9000, 1], [9003, 9083, 1], [9085, 9114, 1], [9140, 9179, 1], [9186, 9257, 1], [9280, 9290, 1], [9372, 9449, 1], [9472, 9654, 1], [9656, 9664, 1], [9666, 9719, 1], [9728, 9838, 1], [9840, 10087, 1], [10132, 10175, 1], [10240, 10495, 1], [11008, 11055, 1], [11077, 11078, 1], [11085, 11123, 1], [11126, 11157, 1], [11159, 11263, 1], [11493, 11498, 1], [11856, 11857, 1], [11904, 11929, 1], [11931, 12019, 1], [12032, 12245, 1], [12272, 12287, 1], [12292, 12306, 14], [12307, 12320, 13], [12342, 12343, 1], [12350, 12351, 1], [12688, 12689, 1], [12694, 12703, 1], [12736, 12773, 1], [12783, 12800, 17], [12801, 12830, 1], [12842, 12871, 1], [12880, 12896, 16], [12897, 12927, 1], [12938, 12976, 1], [12992, 13311, 1], [19904, 19967, 1], [42128, 42182, 1], [43048, 43051, 1], [43062, 43063, 1], [43065, 43639, 574], [43640, 43641, 1], [64832, 64847, 1], [64975, 65021, 46], [65022, 65023, 1], [65508, 65512, 4], [65517, 65518, 1], [65532, 65533, 1], [65847, 65855, 1], [65913, 65929, 1], [65932, 65934, 1], [65936, 65948, 1], [65952, 66000, 48], [66001, 66044, 1], [67703, 67704, 1], [68296, 71487, 3191], [73685, 73692, 1], [73697, 73713, 1], [92988, 92991, 1], [92997, 113820, 20823], [117760, 117999, 1], [118016, 118451, 1], [118608, 118723, 1], [118784, 119029, 1], [119040, 119078, 1], [119081, 119140, 1], [119146, 119148, 1], [119171, 119172, 1], [119180, 119209, 1], [119214, 119274, 1], [119296, 119361, 1], [119365, 119552, 187], [119553, 119638, 1], [120832, 121343, 1], [121399, 121402, 1], [121453, 121460, 1], [121462, 121475, 1], [121477, 121478, 1], [123215, 126124, 2909], [126254, 126976, 722], [126977, 127019, 1], [127024, 127123, 1], [127136, 127150, 1], [127153, 127167, 1], [127169, 127183, 1], [127185, 127221, 1], [127245, 127405, 1], [127462, 127490, 1], [127504, 127547, 1], [127552, 127560, 1], [127568, 127569, 1], [127584, 127589, 1], [127744, 127994, 1], [128000, 128727, 1], [128732, 128748, 1], [128752, 128764, 1], [128768, 128886, 1], [128891, 128985, 1], [128992, 129003, 1], [129008, 129024, 16], [129025, 129035, 1], [129040, 129095, 1], [129104, 129113, 1], [129120, 129159, 1], [129168, 129197, 1], [129200, 129211, 1], [129216, 129217, 1], [129280, 129619, 1], [129632, 129645, 1], [129648, 129660, 1], [129664, 129673, 1], [129679, 129734, 1], [129742, 129756, 1], [129759, 129769, 1], [129776, 129784, 1], [129792, 129938, 1], [129940, 130031, 1]];\n static Z = [[32, 160, 128], [5760, 8192, 2432], [8193, 8202, 1], [8232, 8233, 1], [8239, 8287, 48], [12288, 12288, 1]];\n static Zl = [[8232, 8232, 1]];\n static Zp = [[8233, 8233, 1]];\n static Zs = [[32, 160, 128], [5760, 8192, 2432], [8193, 8202, 1], [8239, 8287, 48], [12288, 12288, 1]];\n static Adlam = [[125184, 125259, 1], [125264, 125273, 1], [125278, 125279, 1]];\n static Ahom = [[71424, 71450, 1], [71453, 71467, 1], [71472, 71494, 1]];\n static Anatolian_Hieroglyphs = [[82944, 83526, 1]];\n static Arabic = [[1536, 1540, 1], [1542, 1547, 1], [1549, 1562, 1], [1564, 1566, 1], [1568, 1599, 1], [1601, 1610, 1], [1622, 1647, 1], [1649, 1756, 1], [1758, 1791, 1], [1872, 1919, 1], [2160, 2190, 1], [2192, 2193, 1], [2199, 2273, 1], [2275, 2303, 1], [64336, 64450, 1], [64467, 64829, 1], [64832, 64911, 1], [64914, 64967, 1], [64975, 65008, 33], [65009, 65023, 1], [65136, 65140, 1], [65142, 65276, 1], [69216, 69246, 1], [69314, 69316, 1], [69372, 69375, 1], [126464, 126467, 1], [126469, 126495, 1], [126497, 126498, 1], [126500, 126503, 3], [126505, 126514, 1], [126516, 126519, 1], [126521, 126523, 2], [126530, 126535, 5], [126537, 126541, 2], [126542, 126543, 1], [126545, 126546, 1], [126548, 126551, 3], [126553, 126561, 2], [126562, 126564, 2], [126567, 126570, 1], [126572, 126578, 1], [126580, 126583, 1], [126585, 126588, 1], [126590, 126592, 2], [126593, 126601, 1], [126603, 126619, 1], [126625, 126627, 1], [126629, 126633, 1], [126635, 126651, 1], [126704, 126705, 1]];\n static Armenian = [[1329, 1366, 1], [1369, 1418, 1], [1421, 1423, 1], [64275, 64279, 1]];\n static Avestan = [[68352, 68405, 1], [68409, 68415, 1]];\n static Balinese = [[6912, 6988, 1], [6990, 7039, 1]];\n static Bamum = [[42656, 42743, 1], [92160, 92728, 1]];\n static Bassa_Vah = [[92880, 92909, 1], [92912, 92917, 1]];\n static Batak = [[7104, 7155, 1], [7164, 7167, 1]];\n static Bengali = [[2432, 2435, 1], [2437, 2444, 1], [2447, 2448, 1], [2451, 2472, 1], [2474, 2480, 1], [2482, 2486, 4], [2487, 2489, 1], [2492, 2500, 1], [2503, 2504, 1], [2507, 2510, 1], [2519, 2524, 5], [2525, 2527, 2], [2528, 2531, 1], [2534, 2558, 1]];\n static Bhaiksuki = [[72704, 72712, 1], [72714, 72758, 1], [72760, 72773, 1], [72784, 72812, 1]];\n static Bopomofo = [[746, 747, 1], [12549, 12591, 1], [12704, 12735, 1]];\n static Brahmi = [[69632, 69709, 1], [69714, 69749, 1], [69759, 69759, 1]];\n static Braille = [[10240, 10495, 1]];\n static Buginese = [[6656, 6683, 1], [6686, 6687, 1]];\n static Buhid = [[5952, 5971, 1]];\n static Canadian_Aboriginal = [[5120, 5759, 1], [6320, 6389, 1], [72368, 72383, 1]];\n static Carian = [[66208, 66256, 1]];\n static Caucasian_Albanian = [[66864, 66915, 1], [66927, 66927, 1]];\n static Chakma = [[69888, 69940, 1], [69942, 69959, 1]];\n static Cham = [[43520, 43574, 1], [43584, 43597, 1], [43600, 43609, 1], [43612, 43615, 1]];\n static Cherokee = [[5024, 5109, 1], [5112, 5117, 1], [43888, 43967, 1]];\n static Chorasmian = [[69552, 69579, 1]];\n static Common = [[0, 64, 1], [91, 96, 1], [123, 169, 1], [171, 185, 1], [187, 191, 1], [215, 247, 32], [697, 735, 1], [741, 745, 1], [748, 767, 1], [884, 894, 10], [901, 903, 2], [1541, 1548, 7], [1563, 1567, 4], [1600, 1757, 157], [2274, 2404, 130], [2405, 3647, 1242], [4053, 4056, 1], [4347, 5867, 1520], [5868, 5869, 1], [5941, 5942, 1], [6146, 6147, 1], [6149, 7379, 1230], [7393, 7401, 8], [7402, 7404, 1], [7406, 7411, 1], [7413, 7415, 1], [7418, 8192, 774], [8193, 8203, 1], [8206, 8292, 1], [8294, 8304, 1], [8308, 8318, 1], [8320, 8334, 1], [8352, 8384, 1], [8448, 8485, 1], [8487, 8489, 1], [8492, 8497, 1], [8499, 8525, 1], [8527, 8543, 1], [8585, 8587, 1], [8592, 9257, 1], [9280, 9290, 1], [9312, 10239, 1], [10496, 11123, 1], [11126, 11157, 1], [11159, 11263, 1], [11776, 11869, 1], [12272, 12292, 1], [12294, 12296, 2], [12297, 12320, 1], [12336, 12343, 1], [12348, 12351, 1], [12443, 12444, 1], [12448, 12539, 91], [12540, 12688, 148], [12689, 12703, 1], [12736, 12773, 1], [12783, 12832, 49], [12833, 12895, 1], [12927, 13007, 1], [13055, 13144, 89], [13145, 13311, 1], [19904, 19967, 1], [42752, 42785, 1], [42888, 42890, 1], [43056, 43065, 1], [43310, 43471, 161], [43867, 43882, 15], [43883, 64830, 20947], [64831, 65040, 209], [65041, 65049, 1], [65072, 65106, 1], [65108, 65126, 1], [65128, 65131, 1], [65279, 65281, 2], [65282, 65312, 1], [65339, 65344, 1], [65371, 65381, 1], [65392, 65438, 46], [65439, 65504, 65], [65505, 65510, 1], [65512, 65518, 1], [65529, 65533, 1], [65792, 65794, 1], [65799, 65843, 1], [65847, 65855, 1], [65936, 65948, 1], [66000, 66044, 1], [66273, 66299, 1], [113824, 113827, 1], [117760, 118009, 1], [118016, 118451, 1], [118608, 118723, 1], [118784, 119029, 1], [119040, 119078, 1], [119081, 119142, 1], [119146, 119162, 1], [119171, 119172, 1], [119180, 119209, 1], [119214, 119274, 1], [119488, 119507, 1], [119520, 119539, 1], [119552, 119638, 1], [119648, 119672, 1], [119808, 119892, 1], [119894, 119964, 1], [119966, 119967, 1], [119970, 119973, 3], [119974, 119977, 3], [119978, 119980, 1], [119982, 119993, 1], [119995, 119997, 2], [119998, 120003, 1], [120005, 120069, 1], [120071, 120074, 1], [120077, 120084, 1], [120086, 120092, 1], [120094, 120121, 1], [120123, 120126, 1], [120128, 120132, 1], [120134, 120138, 4], [120139, 120144, 1], [120146, 120485, 1], [120488, 120779, 1], [120782, 120831, 1], [126065, 126132, 1], [126209, 126269, 1], [126976, 127019, 1], [127024, 127123, 1], [127136, 127150, 1], [127153, 127167, 1], [127169, 127183, 1], [127185, 127221, 1], [127232, 127405, 1], [127462, 127487, 1], [127489, 127490, 1], [127504, 127547, 1], [127552, 127560, 1], [127568, 127569, 1], [127584, 127589, 1], [127744, 128727, 1], [128732, 128748, 1], [128752, 128764, 1], [128768, 128886, 1], [128891, 128985, 1], [128992, 129003, 1], [129008, 129024, 16], [129025, 129035, 1], [129040, 129095, 1], [129104, 129113, 1], [129120, 129159, 1], [129168, 129197, 1], [129200, 129211, 1], [129216, 129217, 1], [129280, 129619, 1], [129632, 129645, 1], [129648, 129660, 1], [129664, 129673, 1], [129679, 129734, 1], [129742, 129756, 1], [129759, 129769, 1], [129776, 129784, 1], [129792, 129938, 1], [129940, 130041, 1], [917505, 917536, 31], [917537, 917631, 1]];\n static foldCommon = [[924, 956, 32]];\n static Coptic = [[994, 1007, 1], [11392, 11507, 1], [11513, 11519, 1]];\n static Cuneiform = [[73728, 74649, 1], [74752, 74862, 1], [74864, 74868, 1], [74880, 75075, 1]];\n static Cypriot = [[67584, 67589, 1], [67592, 67594, 2], [67595, 67637, 1], [67639, 67640, 1], [67644, 67647, 3]];\n static Cypro_Minoan = [[77712, 77810, 1]];\n static Cyrillic = [[1024, 1156, 1], [1159, 1327, 1], [7296, 7306, 1], [7467, 7544, 77], [11744, 11775, 1], [42560, 42655, 1], [65070, 65071, 1], [122928, 122989, 1], [123023, 123023, 1]];\n static Deseret = [[66560, 66639, 1]];\n static Devanagari = [[2304, 2384, 1], [2389, 2403, 1], [2406, 2431, 1], [43232, 43263, 1], [72448, 72457, 1]];\n static Dives_Akuru = [[71936, 71942, 1], [71945, 71948, 3], [71949, 71955, 1], [71957, 71958, 1], [71960, 71989, 1], [71991, 71992, 1], [71995, 72006, 1], [72016, 72025, 1]];\n static Dogra = [[71680, 71739, 1]];\n static Duployan = [[113664, 113770, 1], [113776, 113788, 1], [113792, 113800, 1], [113808, 113817, 1], [113820, 113823, 1]];\n static Egyptian_Hieroglyphs = [[77824, 78933, 1], [78944, 82938, 1]];\n static Elbasan = [[66816, 66855, 1]];\n static Elymaic = [[69600, 69622, 1]];\n static Ethiopic = [[4608, 4680, 1], [4682, 4685, 1], [4688, 4694, 1], [4696, 4698, 2], [4699, 4701, 1], [4704, 4744, 1], [4746, 4749, 1], [4752, 4784, 1], [4786, 4789, 1], [4792, 4798, 1], [4800, 4802, 2], [4803, 4805, 1], [4808, 4822, 1], [4824, 4880, 1], [4882, 4885, 1], [4888, 4954, 1], [4957, 4988, 1], [4992, 5017, 1], [11648, 11670, 1], [11680, 11686, 1], [11688, 11694, 1], [11696, 11702, 1], [11704, 11710, 1], [11712, 11718, 1], [11720, 11726, 1], [11728, 11734, 1], [11736, 11742, 1], [43777, 43782, 1], [43785, 43790, 1], [43793, 43798, 1], [43808, 43814, 1], [43816, 43822, 1], [124896, 124902, 1], [124904, 124907, 1], [124909, 124910, 1], [124912, 124926, 1]];\n static Garay = [[68928, 68965, 1], [68969, 68997, 1], [69006, 69007, 1]];\n static Georgian = [[4256, 4293, 1], [4295, 4301, 6], [4304, 4346, 1], [4348, 4351, 1], [7312, 7354, 1], [7357, 7359, 1], [11520, 11557, 1], [11559, 11565, 6]];\n static Glagolitic = [[11264, 11359, 1], [122880, 122886, 1], [122888, 122904, 1], [122907, 122913, 1], [122915, 122916, 1], [122918, 122922, 1]];\n static Gothic = [[66352, 66378, 1]];\n static Grantha = [[70400, 70403, 1], [70405, 70412, 1], [70415, 70416, 1], [70419, 70440, 1], [70442, 70448, 1], [70450, 70451, 1], [70453, 70457, 1], [70460, 70468, 1], [70471, 70472, 1], [70475, 70477, 1], [70480, 70487, 7], [70493, 70499, 1], [70502, 70508, 1], [70512, 70516, 1]];\n static Greek = [[880, 883, 1], [885, 887, 1], [890, 893, 1], [895, 900, 5], [902, 904, 2], [905, 906, 1], [908, 910, 2], [911, 929, 1], [931, 993, 1], [1008, 1023, 1], [7462, 7466, 1], [7517, 7521, 1], [7526, 7530, 1], [7615, 7936, 321], [7937, 7957, 1], [7960, 7965, 1], [7968, 8005, 1], [8008, 8013, 1], [8016, 8023, 1], [8025, 8031, 2], [8032, 8061, 1], [8064, 8116, 1], [8118, 8132, 1], [8134, 8147, 1], [8150, 8155, 1], [8157, 8175, 1], [8178, 8180, 1], [8182, 8190, 1], [8486, 43877, 35391], [65856, 65934, 1], [65952, 119296, 53344], [119297, 119365, 1]];\n static foldGreek = [[181, 837, 656]];\n static Gujarati = [[2689, 2691, 1], [2693, 2701, 1], [2703, 2705, 1], [2707, 2728, 1], [2730, 2736, 1], [2738, 2739, 1], [2741, 2745, 1], [2748, 2757, 1], [2759, 2761, 1], [2763, 2765, 1], [2768, 2784, 16], [2785, 2787, 1], [2790, 2801, 1], [2809, 2815, 1]];\n static Gunjala_Gondi = [[73056, 73061, 1], [73063, 73064, 1], [73066, 73102, 1], [73104, 73105, 1], [73107, 73112, 1], [73120, 73129, 1]];\n static Gurmukhi = [[2561, 2563, 1], [2565, 2570, 1], [2575, 2576, 1], [2579, 2600, 1], [2602, 2608, 1], [2610, 2611, 1], [2613, 2614, 1], [2616, 2617, 1], [2620, 2622, 2], [2623, 2626, 1], [2631, 2632, 1], [2635, 2637, 1], [2641, 2649, 8], [2650, 2652, 1], [2654, 2662, 8], [2663, 2678, 1]];\n static Gurung_Khema = [[90368, 90425, 1]];\n static Han = [[11904, 11929, 1], [11931, 12019, 1], [12032, 12245, 1], [12293, 12295, 2], [12321, 12329, 1], [12344, 12347, 1], [13312, 19903, 1], [19968, 40959, 1], [63744, 64109, 1], [64112, 64217, 1], [94178, 94179, 1], [94192, 94193, 1], [131072, 173791, 1], [173824, 177977, 1], [177984, 178205, 1], [178208, 183969, 1], [183984, 191456, 1], [191472, 192093, 1], [194560, 195101, 1], [196608, 201546, 1], [201552, 205743, 1]];\n static Hangul = [[4352, 4607, 1], [12334, 12335, 1], [12593, 12686, 1], [12800, 12830, 1], [12896, 12926, 1], [43360, 43388, 1], [44032, 55203, 1], [55216, 55238, 1], [55243, 55291, 1], [65440, 65470, 1], [65474, 65479, 1], [65482, 65487, 1], [65490, 65495, 1], [65498, 65500, 1]];\n static Hanifi_Rohingya = [[68864, 68903, 1], [68912, 68921, 1]];\n static Hanunoo = [[5920, 5940, 1]];\n static Hatran = [[67808, 67826, 1], [67828, 67829, 1], [67835, 67839, 1]];\n static Hebrew = [[1425, 1479, 1], [1488, 1514, 1], [1519, 1524, 1], [64285, 64310, 1], [64312, 64316, 1], [64318, 64320, 2], [64321, 64323, 2], [64324, 64326, 2], [64327, 64335, 1]];\n static Hiragana = [[12353, 12438, 1], [12445, 12447, 1], [110593, 110879, 1], [110898, 110928, 30], [110929, 110930, 1], [127488, 127488, 1]];\n static Imperial_Aramaic = [[67648, 67669, 1], [67671, 67679, 1]];\n static Inherited = [[768, 879, 1], [1157, 1158, 1], [1611, 1621, 1], [1648, 2385, 737], [2386, 2388, 1], [6832, 6862, 1], [7376, 7378, 1], [7380, 7392, 1], [7394, 7400, 1], [7405, 7412, 7], [7416, 7417, 1], [7616, 7679, 1], [8204, 8205, 1], [8400, 8432, 1], [12330, 12333, 1], [12441, 12442, 1], [65024, 65039, 1], [65056, 65069, 1], [66045, 66272, 227], [70459, 118528, 48069], [118529, 118573, 1], [118576, 118598, 1], [119143, 119145, 1], [119163, 119170, 1], [119173, 119179, 1], [119210, 119213, 1], [917760, 917999, 1]];\n static foldInherited = [[921, 953, 32], [8126, 8126, 1]];\n static Inscriptional_Pahlavi = [[68448, 68466, 1], [68472, 68479, 1]];\n static Inscriptional_Parthian = [[68416, 68437, 1], [68440, 68447, 1]];\n static Javanese = [[43392, 43469, 1], [43472, 43481, 1], [43486, 43487, 1]];\n static Kaithi = [[69760, 69826, 1], [69837, 69837, 1]];\n static Kannada = [[3200, 3212, 1], [3214, 3216, 1], [3218, 3240, 1], [3242, 3251, 1], [3253, 3257, 1], [3260, 3268, 1], [3270, 3272, 1], [3274, 3277, 1], [3285, 3286, 1], [3293, 3294, 1], [3296, 3299, 1], [3302, 3311, 1], [3313, 3315, 1]];\n static Katakana = [[12449, 12538, 1], [12541, 12543, 1], [12784, 12799, 1], [13008, 13054, 1], [13056, 13143, 1], [65382, 65391, 1], [65393, 65437, 1], [110576, 110579, 1], [110581, 110587, 1], [110589, 110590, 1], [110592, 110880, 288], [110881, 110882, 1], [110933, 110948, 15], [110949, 110951, 1]];\n static Kawi = [[73472, 73488, 1], [73490, 73530, 1], [73534, 73562, 1]];\n static Kayah_Li = [[43264, 43309, 1], [43311, 43311, 1]];\n static Kharoshthi = [[68096, 68099, 1], [68101, 68102, 1], [68108, 68115, 1], [68117, 68119, 1], [68121, 68149, 1], [68152, 68154, 1], [68159, 68168, 1], [68176, 68184, 1]];\n static Khitan_Small_Script = [[94180, 101120, 6940], [101121, 101589, 1], [101631, 101631, 1]];\n static Khmer = [[6016, 6109, 1], [6112, 6121, 1], [6128, 6137, 1], [6624, 6655, 1]];\n static Khojki = [[70144, 70161, 1], [70163, 70209, 1]];\n static Khudawadi = [[70320, 70378, 1], [70384, 70393, 1]];\n static Kirat_Rai = [[93504, 93561, 1]];\n static Lao = [[3713, 3714, 1], [3716, 3718, 2], [3719, 3722, 1], [3724, 3747, 1], [3749, 3751, 2], [3752, 3773, 1], [3776, 3780, 1], [3782, 3784, 2], [3785, 3790, 1], [3792, 3801, 1], [3804, 3807, 1]];\n static Latin = [[65, 90, 1], [97, 122, 1], [170, 186, 16], [192, 214, 1], [216, 246, 1], [248, 696, 1], [736, 740, 1], [7424, 7461, 1], [7468, 7516, 1], [7522, 7525, 1], [7531, 7543, 1], [7545, 7614, 1], [7680, 7935, 1], [8305, 8319, 14], [8336, 8348, 1], [8490, 8491, 1], [8498, 8526, 28], [8544, 8584, 1], [11360, 11391, 1], [42786, 42887, 1], [42891, 42957, 1], [42960, 42961, 1], [42963, 42965, 2], [42966, 42972, 1], [42994, 43007, 1], [43824, 43866, 1], [43868, 43876, 1], [43878, 43881, 1], [64256, 64262, 1], [65313, 65338, 1], [65345, 65370, 1], [67456, 67461, 1], [67463, 67504, 1], [67506, 67514, 1], [122624, 122654, 1], [122661, 122666, 1]];\n static Lepcha = [[7168, 7223, 1], [7227, 7241, 1], [7245, 7247, 1]];\n static Limbu = [[6400, 6430, 1], [6432, 6443, 1], [6448, 6459, 1], [6464, 6468, 4], [6469, 6479, 1]];\n static Linear_A = [[67072, 67382, 1], [67392, 67413, 1], [67424, 67431, 1]];\n static Linear_B = [[65536, 65547, 1], [65549, 65574, 1], [65576, 65594, 1], [65596, 65597, 1], [65599, 65613, 1], [65616, 65629, 1], [65664, 65786, 1]];\n static Lisu = [[42192, 42239, 1], [73648, 73648, 1]];\n static Lycian = [[66176, 66204, 1]];\n static Lydian = [[67872, 67897, 1], [67903, 67903, 1]];\n static Mahajani = [[69968, 70006, 1]];\n static Makasar = [[73440, 73464, 1]];\n static Malayalam = [[3328, 3340, 1], [3342, 3344, 1], [3346, 3396, 1], [3398, 3400, 1], [3402, 3407, 1], [3412, 3427, 1], [3430, 3455, 1]];\n static Mandaic = [[2112, 2139, 1], [2142, 2142, 1]];\n static Manichaean = [[68288, 68326, 1], [68331, 68342, 1]];\n static Marchen = [[72816, 72847, 1], [72850, 72871, 1], [72873, 72886, 1]];\n static Masaram_Gondi = [[72960, 72966, 1], [72968, 72969, 1], [72971, 73014, 1], [73018, 73020, 2], [73021, 73023, 2], [73024, 73031, 1], [73040, 73049, 1]];\n static Medefaidrin = [[93760, 93850, 1]];\n static Meetei_Mayek = [[43744, 43766, 1], [43968, 44013, 1], [44016, 44025, 1]];\n static Mende_Kikakui = [[124928, 125124, 1], [125127, 125142, 1]];\n static Meroitic_Cursive = [[68000, 68023, 1], [68028, 68047, 1], [68050, 68095, 1]];\n static Meroitic_Hieroglyphs = [[67968, 67999, 1]];\n static Miao = [[93952, 94026, 1], [94031, 94087, 1], [94095, 94111, 1]];\n static Modi = [[71168, 71236, 1], [71248, 71257, 1]];\n static Mongolian = [[6144, 6145, 1], [6148, 6150, 2], [6151, 6169, 1], [6176, 6264, 1], [6272, 6314, 1], [71264, 71276, 1]];\n static Mro = [[92736, 92766, 1], [92768, 92777, 1], [92782, 92783, 1]];\n static Multani = [[70272, 70278, 1], [70280, 70282, 2], [70283, 70285, 1], [70287, 70301, 1], [70303, 70313, 1]];\n static Myanmar = [[4096, 4255, 1], [43488, 43518, 1], [43616, 43647, 1], [71376, 71395, 1]];\n static Nabataean = [[67712, 67742, 1], [67751, 67759, 1]];\n static Nag_Mundari = [[124112, 124153, 1]];\n static Nandinagari = [[72096, 72103, 1], [72106, 72151, 1], [72154, 72164, 1]];\n static New_Tai_Lue = [[6528, 6571, 1], [6576, 6601, 1], [6608, 6618, 1], [6622, 6623, 1]];\n static Newa = [[70656, 70747, 1], [70749, 70753, 1]];\n static Nko = [[1984, 2042, 1], [2045, 2047, 1]];\n static Nushu = [[94177, 110960, 16783], [110961, 111355, 1]];\n static Nyiakeng_Puachue_Hmong = [[123136, 123180, 1], [123184, 123197, 1], [123200, 123209, 1], [123214, 123215, 1]];\n static Ogham = [[5760, 5788, 1]];\n static Ol_Chiki = [[7248, 7295, 1]];\n static Ol_Onal = [[124368, 124410, 1], [124415, 124415, 1]];\n static Old_Hungarian = [[68736, 68786, 1], [68800, 68850, 1], [68858, 68863, 1]];\n static Old_Italic = [[66304, 66339, 1], [66349, 66351, 1]];\n static Old_North_Arabian = [[68224, 68255, 1]];\n static Old_Permic = [[66384, 66426, 1]];\n static Old_Persian = [[66464, 66499, 1], [66504, 66517, 1]];\n static Old_Sogdian = [[69376, 69415, 1]];\n static Old_South_Arabian = [[68192, 68223, 1]];\n static Old_Turkic = [[68608, 68680, 1]];\n static Old_Uyghur = [[69488, 69513, 1]];\n static Oriya = [[2817, 2819, 1], [2821, 2828, 1], [2831, 2832, 1], [2835, 2856, 1], [2858, 2864, 1], [2866, 2867, 1], [2869, 2873, 1], [2876, 2884, 1], [2887, 2888, 1], [2891, 2893, 1], [2901, 2903, 1], [2908, 2909, 1], [2911, 2915, 1], [2918, 2935, 1]];\n static Osage = [[66736, 66771, 1], [66776, 66811, 1]];\n static Osmanya = [[66688, 66717, 1], [66720, 66729, 1]];\n static Pahawh_Hmong = [[92928, 92997, 1], [93008, 93017, 1], [93019, 93025, 1], [93027, 93047, 1], [93053, 93071, 1]];\n static Palmyrene = [[67680, 67711, 1]];\n static Pau_Cin_Hau = [[72384, 72440, 1]];\n static Phags_Pa = [[43072, 43127, 1]];\n static Phoenician = [[67840, 67867, 1], [67871, 67871, 1]];\n static Psalter_Pahlavi = [[68480, 68497, 1], [68505, 68508, 1], [68521, 68527, 1]];\n static Rejang = [[43312, 43347, 1], [43359, 43359, 1]];\n static Runic = [[5792, 5866, 1], [5870, 5880, 1]];\n static Samaritan = [[2048, 2093, 1], [2096, 2110, 1]];\n static Saurashtra = [[43136, 43205, 1], [43214, 43225, 1]];\n static Sharada = [[70016, 70111, 1]];\n static Shavian = [[66640, 66687, 1]];\n static Siddham = [[71040, 71093, 1], [71096, 71133, 1]];\n static SignWriting = [[120832, 121483, 1], [121499, 121503, 1], [121505, 121519, 1]];\n static Sinhala = [[3457, 3459, 1], [3461, 3478, 1], [3482, 3505, 1], [3507, 3515, 1], [3517, 3520, 3], [3521, 3526, 1], [3530, 3535, 5], [3536, 3540, 1], [3542, 3544, 2], [3545, 3551, 1], [3558, 3567, 1], [3570, 3572, 1], [70113, 70132, 1]];\n static Sogdian = [[69424, 69465, 1]];\n static Sora_Sompeng = [[69840, 69864, 1], [69872, 69881, 1]];\n static Soyombo = [[72272, 72354, 1]];\n static Sundanese = [[7040, 7103, 1], [7360, 7367, 1]];\n static Sunuwar = [[72640, 72673, 1], [72688, 72697, 1]];\n static Syloti_Nagri = [[43008, 43052, 1]];\n static Syriac = [[1792, 1805, 1], [1807, 1866, 1], [1869, 1871, 1], [2144, 2154, 1]];\n static Tagalog = [[5888, 5909, 1], [5919, 5919, 1]];\n static Tagbanwa = [[5984, 5996, 1], [5998, 6000, 1], [6002, 6003, 1]];\n static Tai_Le = [[6480, 6509, 1], [6512, 6516, 1]];\n static Tai_Tham = [[6688, 6750, 1], [6752, 6780, 1], [6783, 6793, 1], [6800, 6809, 1], [6816, 6829, 1]];\n static Tai_Viet = [[43648, 43714, 1], [43739, 43743, 1]];\n static Takri = [[71296, 71353, 1], [71360, 71369, 1]];\n static Tamil = [[2946, 2947, 1], [2949, 2954, 1], [2958, 2960, 1], [2962, 2965, 1], [2969, 2970, 1], [2972, 2974, 2], [2975, 2979, 4], [2980, 2984, 4], [2985, 2986, 1], [2990, 3001, 1], [3006, 3010, 1], [3014, 3016, 1], [3018, 3021, 1], [3024, 3031, 7], [3046, 3066, 1], [73664, 73713, 1], [73727, 73727, 1]];\n static Tangsa = [[92784, 92862, 1], [92864, 92873, 1]];\n static Tangut = [[94176, 94208, 32], [94209, 100343, 1], [100352, 101119, 1], [101632, 101640, 1]];\n static Telugu = [[3072, 3084, 1], [3086, 3088, 1], [3090, 3112, 1], [3114, 3129, 1], [3132, 3140, 1], [3142, 3144, 1], [3146, 3149, 1], [3157, 3158, 1], [3160, 3162, 1], [3165, 3168, 3], [3169, 3171, 1], [3174, 3183, 1], [3191, 3199, 1]];\n static Thaana = [[1920, 1969, 1]];\n static Thai = [[3585, 3642, 1], [3648, 3675, 1]];\n static Tibetan = [[3840, 3911, 1], [3913, 3948, 1], [3953, 3991, 1], [3993, 4028, 1], [4030, 4044, 1], [4046, 4052, 1], [4057, 4058, 1]];\n static Tifinagh = [[11568, 11623, 1], [11631, 11632, 1], [11647, 11647, 1]];\n static Tirhuta = [[70784, 70855, 1], [70864, 70873, 1]];\n static Todhri = [[67008, 67059, 1]];\n static Toto = [[123536, 123566, 1]];\n static Tulu_Tigalari = [[70528, 70537, 1], [70539, 70542, 3], [70544, 70581, 1], [70583, 70592, 1], [70594, 70597, 3], [70599, 70602, 1], [70604, 70613, 1], [70615, 70616, 1], [70625, 70626, 1]];\n static Ugaritic = [[66432, 66461, 1], [66463, 66463, 1]];\n static Vai = [[42240, 42539, 1]];\n static Vithkuqi = [[66928, 66938, 1], [66940, 66954, 1], [66956, 66962, 1], [66964, 66965, 1], [66967, 66977, 1], [66979, 66993, 1], [66995, 67001, 1], [67003, 67004, 1]];\n static Wancho = [[123584, 123641, 1], [123647, 123647, 1]];\n static Warang_Citi = [[71840, 71922, 1], [71935, 71935, 1]];\n static Yezidi = [[69248, 69289, 1], [69291, 69293, 1], [69296, 69297, 1]];\n static Yi = [[40960, 42124, 1], [42128, 42182, 1]];\n static Zanabazar_Square = [[72192, 72263, 1]];\n static CATEGORIES = (() => new Map([['C', UnicodeTables.C], ['Cc', UnicodeTables.Cc], ['Cf', UnicodeTables.Cf], ['Co', UnicodeTables.Co], ['Cs', UnicodeTables.Cs], ['L', UnicodeTables.L], ['Ll', UnicodeTables.Ll], ['Lm', UnicodeTables.Lm], ['Lo', UnicodeTables.Lo], ['Lt', UnicodeTables.Lt], ['Lu', UnicodeTables.Lu], ['M', UnicodeTables.M], ['Mc', UnicodeTables.Mc], ['Me', UnicodeTables.Me], ['Mn', UnicodeTables.Mn], ['N', UnicodeTables.N], ['Nd', UnicodeTables.Nd], ['Nl', UnicodeTables.Nl], ['No', UnicodeTables.No], ['P', UnicodeTables.P], ['Pc', UnicodeTables.Pc], ['Pd', UnicodeTables.Pd], ['Pe', UnicodeTables.Pe], ['Pf', UnicodeTables.Pf], ['Pi', UnicodeTables.Pi], ['Po', UnicodeTables.Po], ['Ps', UnicodeTables.Ps], ['S', UnicodeTables.S], ['Sc', UnicodeTables.Sc], ['Sk', UnicodeTables.Sk], ['Sm', UnicodeTables.Sm], ['So', UnicodeTables.So], ['Z', UnicodeTables.Z], ['Zl', UnicodeTables.Zl], ['Zp', UnicodeTables.Zp], ['Zs', UnicodeTables.Zs]]))();\n static SCRIPTS = (() => new Map([['Adlam', UnicodeTables.Adlam], ['Ahom', UnicodeTables.Ahom], ['Anatolian_Hieroglyphs', UnicodeTables.Anatolian_Hieroglyphs], ['Arabic', UnicodeTables.Arabic], ['Armenian', UnicodeTables.Armenian], ['Avestan', UnicodeTables.Avestan], ['Balinese', UnicodeTables.Balinese], ['Bamum', UnicodeTables.Bamum], ['Bassa_Vah', UnicodeTables.Bassa_Vah], ['Batak', UnicodeTables.Batak], ['Bengali', UnicodeTables.Bengali], ['Bhaiksuki', UnicodeTables.Bhaiksuki], ['Bopomofo', UnicodeTables.Bopomofo], ['Brahmi', UnicodeTables.Brahmi], ['Braille', UnicodeTables.Braille], ['Buginese', UnicodeTables.Buginese], ['Buhid', UnicodeTables.Buhid], ['Canadian_Aboriginal', UnicodeTables.Canadian_Aboriginal], ['Carian', UnicodeTables.Carian], ['Caucasian_Albanian', UnicodeTables.Caucasian_Albanian], ['Chakma', UnicodeTables.Chakma], ['Cham', UnicodeTables.Cham], ['Cherokee', UnicodeTables.Cherokee], ['Chorasmian', UnicodeTables.Chorasmian], ['Common', UnicodeTables.Common], ['Coptic', UnicodeTables.Coptic], ['Cuneiform', UnicodeTables.Cuneiform], ['Cypriot', UnicodeTables.Cypriot], ['Cypro_Minoan', UnicodeTables.Cypro_Minoan], ['Cyrillic', UnicodeTables.Cyrillic], ['Deseret', UnicodeTables.Deseret], ['Devanagari', UnicodeTables.Devanagari], ['Dives_Akuru', UnicodeTables.Dives_Akuru], ['Dogra', UnicodeTables.Dogra], ['Duployan', UnicodeTables.Duployan], ['Egyptian_Hieroglyphs', UnicodeTables.Egyptian_Hieroglyphs], ['Elbasan', UnicodeTables.Elbasan], ['Elymaic', UnicodeTables.Elymaic], ['Ethiopic', UnicodeTables.Ethiopic], ['Garay', UnicodeTables.Garay], ['Georgian', UnicodeTables.Georgian], ['Glagolitic', UnicodeTables.Glagolitic], ['Gothic', UnicodeTables.Gothic], ['Grantha', UnicodeTables.Grantha], ['Greek', UnicodeTables.Greek], ['Gujarati', UnicodeTables.Gujarati], ['Gunjala_Gondi', UnicodeTables.Gunjala_Gondi], ['Gurmukhi', UnicodeTables.Gurmukhi], ['Gurung_Khema', UnicodeTables.Gurung_Khema], ['Han', UnicodeTables.Han], ['Hangul', UnicodeTables.Hangul], ['Hanifi_Rohingya', UnicodeTables.Hanifi_Rohingya], ['Hanunoo', UnicodeTables.Hanunoo], ['Hatran', UnicodeTables.Hatran], ['Hebrew', UnicodeTables.Hebrew], ['Hiragana', UnicodeTables.Hiragana], ['Imperial_Aramaic', UnicodeTables.Imperial_Aramaic], ['Inherited', UnicodeTables.Inherited], ['Inscriptional_Pahlavi', UnicodeTables.Inscriptional_Pahlavi], ['Inscriptional_Parthian', UnicodeTables.Inscriptional_Parthian], ['Javanese', UnicodeTables.Javanese], ['Kaithi', UnicodeTables.Kaithi], ['Kannada', UnicodeTables.Kannada], ['Katakana', UnicodeTables.Katakana], ['Kawi', UnicodeTables.Kawi], ['Kayah_Li', UnicodeTables.Kayah_Li], ['Kharoshthi', UnicodeTables.Kharoshthi], ['Khitan_Small_Script', UnicodeTables.Khitan_Small_Script], ['Khmer', UnicodeTables.Khmer], ['Khojki', UnicodeTables.Khojki], ['Khudawadi', UnicodeTables.Khudawadi], ['Kirat_Rai', UnicodeTables.Kirat_Rai], ['Lao', UnicodeTables.Lao], ['Latin', UnicodeTables.Latin], ['Lepcha', UnicodeTables.Lepcha], ['Limbu', UnicodeTables.Limbu], ['Linear_A', UnicodeTables.Linear_A], ['Linear_B', UnicodeTables.Linear_B], ['Lisu', UnicodeTables.Lisu], ['Lycian', UnicodeTables.Lycian], ['Lydian', UnicodeTables.Lydian], ['Mahajani', UnicodeTables.Mahajani], ['Makasar', UnicodeTables.Makasar], ['Malayalam', UnicodeTables.Malayalam], ['Mandaic', UnicodeTables.Mandaic], ['Manichaean', UnicodeTables.Manichaean], ['Marchen', UnicodeTables.Marchen], ['Masaram_Gondi', UnicodeTables.Masaram_Gondi], ['Medefaidrin', UnicodeTables.Medefaidrin], ['Meetei_Mayek', UnicodeTables.Meetei_Mayek], ['Mende_Kikakui', UnicodeTables.Mende_Kikakui], ['Meroitic_Cursive', UnicodeTables.Meroitic_Cursive], ['Meroitic_Hieroglyphs', UnicodeTables.Meroitic_Hieroglyphs], ['Miao', UnicodeTables.Miao], ['Modi', UnicodeTables.Modi], ['Mongolian', UnicodeTables.Mongolian], ['Mro', UnicodeTables.Mro], ['Multani', UnicodeTables.Multani], ['Myanmar', UnicodeTables.Myanmar], ['Nabataean', UnicodeTables.Nabataean], ['Nag_Mundari', UnicodeTables.Nag_Mundari], ['Nandinagari', UnicodeTables.Nandinagari], ['New_Tai_Lue', UnicodeTables.New_Tai_Lue], ['Newa', UnicodeTables.Newa], ['Nko', UnicodeTables.Nko], ['Nushu', UnicodeTables.Nushu], ['Nyiakeng_Puachue_Hmong', UnicodeTables.Nyiakeng_Puachue_Hmong], ['Ogham', UnicodeTables.Ogham], ['Ol_Chiki', UnicodeTables.Ol_Chiki], ['Ol_Onal', UnicodeTables.Ol_Onal], ['Old_Hungarian', UnicodeTables.Old_Hungarian], ['Old_Italic', UnicodeTables.Old_Italic], ['Old_North_Arabian', UnicodeTables.Old_North_Arabian], ['Old_Permic', UnicodeTables.Old_Permic], ['Old_Persian', UnicodeTables.Old_Persian], ['Old_Sogdian', UnicodeTables.Old_Sogdian], ['Old_South_Arabian', UnicodeTables.Old_South_Arabian], ['Old_Turkic', UnicodeTables.Old_Turkic], ['Old_Uyghur', UnicodeTables.Old_Uyghur], ['Oriya', UnicodeTables.Oriya], ['Osage', UnicodeTables.Osage], ['Osmanya', UnicodeTables.Osmanya], ['Pahawh_Hmong', UnicodeTables.Pahawh_Hmong], ['Palmyrene', UnicodeTables.Palmyrene], ['Pau_Cin_Hau', UnicodeTables.Pau_Cin_Hau], ['Phags_Pa', UnicodeTables.Phags_Pa], ['Phoenician', UnicodeTables.Phoenician], ['Psalter_Pahlavi', UnicodeTables.Psalter_Pahlavi], ['Rejang', UnicodeTables.Rejang], ['Runic', UnicodeTables.Runic], ['Samaritan', UnicodeTables.Samaritan], ['Saurashtra', UnicodeTables.Saurashtra], ['Sharada', UnicodeTables.Sharada], ['Shavian', UnicodeTables.Shavian], ['Siddham', UnicodeTables.Siddham], ['SignWriting', UnicodeTables.SignWriting], ['Sinhala', UnicodeTables.Sinhala], ['Sogdian', UnicodeTables.Sogdian], ['Sora_Sompeng', UnicodeTables.Sora_Sompeng], ['Soyombo', UnicodeTables.Soyombo], ['Sundanese', UnicodeTables.Sundanese], ['Sunuwar', UnicodeTables.Sunuwar], ['Syloti_Nagri', UnicodeTables.Syloti_Nagri], ['Syriac', UnicodeTables.Syriac], ['Tagalog', UnicodeTables.Tagalog], ['Tagbanwa', UnicodeTables.Tagbanwa], ['Tai_Le', UnicodeTables.Tai_Le], ['Tai_Tham', UnicodeTables.Tai_Tham], ['Tai_Viet', UnicodeTables.Tai_Viet], ['Takri', UnicodeTables.Takri], ['Tamil', UnicodeTables.Tamil], ['Tangsa', UnicodeTables.Tangsa], ['Tangut', UnicodeTables.Tangut], ['Telugu', UnicodeTables.Telugu], ['Thaana', UnicodeTables.Thaana], ['Thai', UnicodeTables.Thai], ['Tibetan', UnicodeTables.Tibetan], ['Tifinagh', UnicodeTables.Tifinagh], ['Tirhuta', UnicodeTables.Tirhuta], ['Todhri', UnicodeTables.Todhri], ['Toto', UnicodeTables.Toto], ['Tulu_Tigalari', UnicodeTables.Tulu_Tigalari], ['Ugaritic', UnicodeTables.Ugaritic], ['Vai', UnicodeTables.Vai], ['Vithkuqi', UnicodeTables.Vithkuqi], ['Wancho', UnicodeTables.Wancho], ['Warang_Citi', UnicodeTables.Warang_Citi], ['Yezidi', UnicodeTables.Yezidi], ['Yi', UnicodeTables.Yi], ['Zanabazar_Square', UnicodeTables.Zanabazar_Square]]))();\n static FOLD_CATEGORIES = (() => new Map([['L', UnicodeTables.foldL], ['Ll', UnicodeTables.foldLl], ['Lt', UnicodeTables.foldLt], ['Lu', UnicodeTables.foldLu], ['M', UnicodeTables.foldM], ['Mn', UnicodeTables.foldMn]]))();\n static FOLD_SCRIPT = (() => new Map([['Common', UnicodeTables.foldCommon], ['Greek', UnicodeTables.foldGreek], ['Inherited', UnicodeTables.foldInherited]]))();\n}\n\n/**\n * Utilities for dealing with Unicode better than JS does.\n */\nclass Unicode {\n // The highest legal rune value.\n static MAX_RUNE = 0x10ffff;\n // The highest legal ASCII value.\n static MAX_ASCII = 0x7f;\n // The highest legal Latin-1 value.\n static MAX_LATIN1 = 0xff;\n // The highest legal Basic Multilingual Plane (BMP) value.\n static MAX_BMP = 0xffff;\n // Minimum and maximum runes involved in folding.\n // Checked during test.\n static MIN_FOLD = 0x0041;\n static MAX_FOLD = 0x1e943;\n\n // is32 uses binary search to test whether rune is in the specified\n // slice of 32-bit ranges.\n static is32(ranges, r) {\n // binary search over ranges\n let lo = 0;\n let hi = ranges.length;\n while (lo < hi) {\n let m = lo + Math.floor((hi - lo) / 2);\n let range = ranges[m];\n if (range[0] <= r && r <= range[1]) {\n return (r - range[0]) % range[2] === 0;\n }\n if (r < range[0]) {\n hi = m;\n } else {\n lo = m + 1;\n }\n }\n return false;\n }\n\n // is tests whether rune is in the specified table of ranges.\n static is(ranges, r) {\n // common case: rune is ASCII or Latin-1, so use linear search.\n if (r <= this.MAX_LATIN1) {\n for (let range of ranges) {\n // range = [lo, hi, stride]\n if (r > range[1]) {\n continue;\n }\n if (r < range[0]) {\n return false;\n }\n return (r - range[0]) % range[2] === 0;\n }\n return false;\n }\n return ranges.length > 0 && r >= ranges[0][0] && this.is32(ranges, r);\n }\n\n // isUpper reports whether the rune is an upper case letter.\n static isUpper(r) {\n if (r <= this.MAX_LATIN1) {\n const s = String.fromCodePoint(r);\n return s.toUpperCase() === s && s.toLowerCase() !== s;\n }\n return this.is(UnicodeTables.Upper, r);\n }\n\n // isPrint reports whether the rune is printable (Unicode L/M/N/P/S or ' ').\n static isPrint(r) {\n if (r <= this.MAX_LATIN1) {\n return r >= 0x20 && r < 0x7f || r >= 0xa1 && r !== 0xad;\n }\n return this.is(UnicodeTables.L, r) || this.is(UnicodeTables.M, r) || this.is(UnicodeTables.N, r) || this.is(UnicodeTables.P, r) || this.is(UnicodeTables.S, r);\n }\n\n // simpleFold iterates over Unicode code points equivalent under\n // the Unicode-defined simple case folding. Among the code points\n // equivalent to rune (including rune itself), SimpleFold returns the\n // smallest r >= rune if one exists, or else the smallest r >= 0.\n //\n // For example:\n // SimpleFold('A') = 'a'\n // SimpleFold('a') = 'A'\n //\n // SimpleFold('K') = 'k'\n // SimpleFold('k') = '\\u212A' (Kelvin symbol, K)\n // SimpleFold('\\u212A') = 'K'\n //\n // SimpleFold('1') = '1'\n //\n // Derived from Go's unicode.SimpleFold.\n //\n static simpleFold(r) {\n // Consult caseOrbit table for special cases.\n if (UnicodeTables.CASE_ORBIT.has(r)) {\n return UnicodeTables.CASE_ORBIT.get(r);\n }\n\n // No folding specified. This is a one- or two-element\n // equivalence class containing rune and toLower(rune)\n // and toUpper(rune) if they are different from rune.\n const l = Codepoint.toLowerCase(r);\n if (l !== r) {\n return l;\n }\n return Codepoint.toUpperCase(r);\n }\n\n // equalsIgnoreCase performs case-insensitive equality comparison\n // on the given runes |r1| and |r2|, with special consideration\n // for the likely scenario where both runes are ASCII characters.\n // If non-ASCII, Unicode case folding will be performed on |r1|\n // to compare it to |r2|.\n // -1 is interpreted as the end-of-file mark.\n static equalsIgnoreCase(r1, r2) {\n // Runes already match, or one of them is EOF\n if (r1 < 0 || r2 < 0 || r1 === r2) {\n return true;\n }\n\n // Fast path for the common case where both runes are ASCII characters.\n // Coerces both runes to lowercase if applicable.\n if (r1 <= this.MAX_ASCII && r2 <= this.MAX_ASCII) {\n if (Codepoint.CODES.get('A') <= r1 && r1 <= Codepoint.CODES.get('Z')) {\n r1 |= 0x20;\n }\n if (Codepoint.CODES.get('A') <= r2 && r2 <= Codepoint.CODES.get('Z')) {\n r2 |= 0x20;\n }\n return r1 === r2;\n }\n\n // Fall back to full Unicode case folding otherwise.\n // Invariant: r1 must be non-negative\n for (let r = this.simpleFold(r1); r !== r1; r = this.simpleFold(r)) {\n if (r === r2) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * Various constants and helper utilities.\n */\nclass Utils {\n static METACHARACTERS = '\\\\.+*?()|[]{}^$';\n\n //// EMPTY_* flags\n static EMPTY_BEGIN_LINE = 0x01;\n static EMPTY_END_LINE = 0x02;\n static EMPTY_BEGIN_TEXT = 0x04;\n static EMPTY_END_TEXT = 0x08;\n static EMPTY_WORD_BOUNDARY = 0x10;\n static EMPTY_NO_WORD_BOUNDARY = 0x20;\n static EMPTY_ALL = (() => -1)();\n static emptyInts() {\n return [];\n }\n\n // Returns true iff |c| is an ASCII letter or decimal digit.\n static isalnum(c) {\n return Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9') || Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('z') || Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('Z');\n }\n\n // If |c| is an ASCII hex digit, returns its value, otherwise -1.\n static unhex(c) {\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n return c - Codepoint.CODES.get('0');\n }\n if (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('f')) {\n return c - Codepoint.CODES.get('a') + 10;\n }\n if (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('F')) {\n return c - Codepoint.CODES.get('A') + 10;\n }\n return -1;\n }\n\n // Appends a RE2 literal to |out| for rune |rune|,\n // with regexp metacharacters escaped.\n static escapeRune(rune) {\n let out = '';\n if (Unicode.isPrint(rune)) {\n if (this.METACHARACTERS.indexOf(String.fromCodePoint(rune)) >= 0) {\n out += '\\\\';\n }\n out += String.fromCodePoint(rune);\n } else {\n switch (rune) {\n case Codepoint.CODES.get('\"'):\n // '\"'\n out += '\\\\\"';\n break;\n case Codepoint.CODES.get('\\\\'):\n // '\\\\'\n out += '\\\\\\\\';\n break;\n case Codepoint.CODES.get('\\t'):\n // '\\t'\n out += '\\\\t';\n break;\n case Codepoint.CODES.get('\\n'):\n // '\\n'\n out += '\\\\n';\n break;\n case Codepoint.CODES.get('\\r'):\n // '\\r'\n out += '\\\\r';\n break;\n case Codepoint.CODES.get('\\b'):\n // '\\b'\n out += '\\\\b';\n break;\n case Codepoint.CODES.get('\\f'):\n // '\\f'\n out += '\\\\f';\n break;\n default:\n {\n let s = rune.toString(16);\n if (rune < 0x100) {\n out += '\\\\x';\n if (s.length === 1) {\n out += '0';\n }\n out += s;\n } else {\n out += `\\\\x{${s}}`;\n }\n break;\n }\n }\n }\n return out;\n }\n\n // Returns the array of runes in the specified Java UTF-16 string.\n static stringToRunes(str) {\n return String(str).split('').map(s => s.codePointAt(0));\n }\n\n // Returns the Java UTF-16 string containing the single rune |r|.\n static runeToString(r) {\n return String.fromCodePoint(r);\n }\n\n // isWordRune reports whether r is consider a ``word character''\n // during the evaluation of the \\b and \\B zero-width assertions.\n // These assertions are ASCII-only: the word characters are [A-Za-z0-9_].\n static isWordRune(r) {\n return Codepoint.CODES.get('a') <= r && r <= Codepoint.CODES.get('z') || Codepoint.CODES.get('A') <= r && r <= Codepoint.CODES.get('Z') || Codepoint.CODES.get('0') <= r && r <= Codepoint.CODES.get('9') || r === Codepoint.CODES.get('_');\n }\n\n // emptyOpContext returns the zero-width assertions satisfied at the position\n // between the runes r1 and r2, a bitmask of EMPTY_* flags.\n // Passing r1 == -1 indicates that the position is at the beginning of the\n // text.\n // Passing r2 == -1 indicates that the position is at the end of the text.\n // eslint-disable-next-line no-warning-comments\n // TODO(adonovan): move to Machine.\n static emptyOpContext(r1, r2) {\n let op = 0;\n if (r1 < 0) {\n op |= this.EMPTY_BEGIN_TEXT | this.EMPTY_BEGIN_LINE;\n }\n if (r1 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_BEGIN_LINE;\n }\n if (r2 < 0) {\n op |= this.EMPTY_END_TEXT | this.EMPTY_END_LINE;\n }\n if (r2 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_END_LINE;\n }\n if (this.isWordRune(r1) !== this.isWordRune(r2)) {\n op |= this.EMPTY_WORD_BOUNDARY;\n } else {\n op |= this.EMPTY_NO_WORD_BOUNDARY;\n }\n return op;\n }\n\n /**\n * Returns a string that quotes all regular expression metacharacters inside the argument text;\n * the returned string is a regular expression matching the literal text. For example,\n * {@code quoteMeta(\"[foo]\").equals(\"\\\\[foo\\\\]\")}.\n * @param {string} s\n * @returns {string}\n */\n static quoteMeta(str) {\n return str.split('') // A char loop is correct because all metacharacters fit in one UTF-16 code.\n .map(s => {\n if (this.METACHARACTERS.indexOf(s) >= 0) {\n return `\\\\${s}`;\n }\n return s;\n }).join('');\n }\n static charCount(codePoint) {\n return codePoint > Unicode.MAX_BMP ? 2 : 1;\n }\n static stringToUtf8ByteArray(str) {\n if (globalThis.TextEncoder) {\n return Array.from(new TextEncoder().encode(str));\n } else {\n // fallback, if no TextEncoder\n let out = [],\n p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n } else if (c < 2048) {\n out[p++] = c >> 6 | 192;\n out[p++] = c & 63 | 128;\n } else if ((c & 0xfc00) === 0xd800 && i + 1 < str.length && (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = c >> 18 | 240;\n out[p++] = c >> 12 & 63 | 128;\n out[p++] = c >> 6 & 63 | 128;\n out[p++] = c & 63 | 128;\n } else {\n out[p++] = c >> 12 | 224;\n out[p++] = c >> 6 & 63 | 128;\n out[p++] = c & 63 | 128;\n }\n }\n return out;\n }\n }\n static utf8ByteArrayToString(bytes) {\n if (globalThis.TextDecoder) {\n return new TextDecoder('utf-8').decode(new Uint8Array(bytes));\n } else {\n // fallback, if no TextDecoder\n let out = [],\n pos = 0,\n c = 0;\n while (pos < bytes.length) {\n let c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n } else if (c1 > 191 && c1 < 224) {\n let c2 = bytes[pos++];\n out[c++] = String.fromCharCode((c1 & 31) << 6 | c2 & 63);\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n let c2 = bytes[pos++];\n let c3 = bytes[pos++];\n let c4 = bytes[pos++];\n let u = ((c1 & 7) << 18 | (c2 & 63) << 12 | (c3 & 63) << 6 | c4 & 63) - 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n } else {\n let c2 = bytes[pos++];\n let c3 = bytes[pos++];\n out[c++] = String.fromCharCode((c1 & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\n }\n }\n return out.join('');\n }\n }\n}\n\n// helper to create enums\n// example\n// Encoding[(Encoding['UTF_16'] = 0)] = 'UTF_16'\n// Encoding[(Encoding['UTF_8'] = 1)] = 'UTF_8'\nconst createEnum = (values = [], initNum = 0) => {\n const enumObject = {};\n for (let i = 0; i < values.length; i++) {\n const val = values[i];\n const keyVal = initNum + i;\n enumObject[val] = keyVal;\n enumObject[keyVal] = val;\n }\n return Object.freeze(enumObject);\n};\n\n/**\n * Abstract the representations of input text supplied to Matcher.\n */\nclass MatcherInputBase {\n static Encoding = (() => createEnum(['UTF_16', 'UTF_8']))();\n getEncoding() {\n throw Error('not implemented');\n }\n\n /**\n *\n * @returns {boolean}\n */\n isUTF8Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_8;\n }\n\n /**\n *\n * @returns {boolean}\n */\n isUTF16Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_16;\n }\n}\nclass Utf8MatcherInput extends MatcherInputBase {\n constructor(bytes = null) {\n super();\n this.bytes = bytes;\n }\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_8;\n }\n /**\n *\n * @returns {string}\n */\n asCharSequence() {\n return Utils.utf8ByteArrayToString(this.bytes);\n }\n\n /**\n *\n * @returns {number[]}\n */\n asBytes() {\n return this.bytes;\n }\n\n /**\n *\n * @returns {number}\n */\n length() {\n return this.bytes.length;\n }\n}\nclass Utf16MatcherInput extends MatcherInputBase {\n constructor(charSequence = null) {\n super();\n this.charSequence = charSequence;\n }\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_16;\n }\n\n /**\n *\n * @returns {string}\n */\n asCharSequence() {\n return this.charSequence;\n }\n\n /**\n *\n * @returns {number[]}\n */\n asBytes() {\n return this.charSequence.toString().split('').map(s => s.codePointAt(0));\n }\n\n /**\n *\n * @returns {number}\n */\n length() {\n return this.charSequence.length;\n }\n}\nclass MatcherInput {\n /**\n * Return the MatcherInput for UTF_16 encoding.\n * @returns {Utf16MatcherInput}\n */\n static utf16(charSequence) {\n return new Utf16MatcherInput(charSequence);\n }\n\n /**\n * Return the MatcherInput for UTF_8 encoding.\n * @returns {Utf8MatcherInput}\n */\n static utf8(input) {\n if (Array.isArray(input)) {\n return new Utf8MatcherInput(input);\n }\n return new Utf8MatcherInput(Utils.stringToUtf8ByteArray(input));\n }\n}\n\nclass RE2JSException extends Error {\n constructor(message) {\n super(message);\n this.name = 'RE2JSException';\n }\n}\n\n/**\n * An exception thrown by the parser if the pattern was invalid.\n */\nclass RE2JSSyntaxException extends RE2JSException {\n constructor(error, input = null) {\n let message = `error parsing regexp: ${error}`;\n if (input) {\n message += `: \\`${input}\\``;\n }\n super(message);\n this.name = 'RE2JSSyntaxException';\n this.message = message;\n this.error = error;\n this.input = input;\n }\n\n /**\n * Retrieves the description of the error.\n */\n getDescription() {\n return this.error;\n }\n\n /**\n * Retrieves the erroneous regular-expression pattern.\n */\n getPattern() {\n return this.input;\n }\n}\n\n/**\n * An exception thrown by the compiler\n */\nclass RE2JSCompileException extends RE2JSException {\n constructor(message) {\n super(message);\n this.name = 'RE2JSCompileException';\n }\n}\n\n/**\n * An exception thrown by using groups\n */\nclass RE2JSGroupException extends RE2JSException {\n constructor(message) {\n super(message);\n this.name = 'RE2JSGroupException';\n }\n}\n\n/**\n * An exception thrown by flags\n */\nclass RE2JSFlagsException extends RE2JSException {\n constructor(message) {\n super(message);\n this.name = 'RE2JSFlagsException';\n }\n}\n\n/**\n * A stateful iterator that interprets a regex {@code RE2JS} on a specific input.\n *\n * Conceptually, a Matcher consists of four parts:\n *
    \n *
  1. A compiled regular expression {@code RE2JS}, set at construction and fixed for the lifetime\n * of the matcher.
  2. \n *\n *
  3. The remainder of the input string, set at construction or {@link #reset()} and advanced by\n * each match operation such as {@link #find}, {@link #matches} or {@link #lookingAt}.
  4. \n *\n *
  5. The current match information, accessible via {@link #start}, {@link #end}, and\n * {@link #group}, and updated by each match operation.
  6. \n *\n *
  7. The append position, used and advanced by {@link #appendReplacement} and {@link #appendTail}\n * if performing a search and replace from the input to an external {@code StringBuffer}.\n *\n *
\n *\n *\n * @author rsc@google.com (Russ Cox)\n */\nclass Matcher {\n /**\n * Quotes '\\' and '$' in {@code s}, so that the returned string could be used in\n * {@link #appendReplacement} as a literal replacement of {@code s}.\n *\n * @param {string} str the string to be quoted\n * @returns {string} the quoted string\n */\n static quoteReplacement(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('$') < 0) {\n return str;\n }\n return str.split('').map(s => {\n const c = s.codePointAt(0);\n if (c === Codepoint.CODES['\\\\'] || c === Codepoint.CODES['$']) {\n return `\\\\${s}`;\n }\n return s;\n }).join('');\n }\n /**\n *\n * @param {RE2JS} pattern\n * @param {Utf8MatcherInput|Utf16MatcherInput|number[]|string} input\n */\n constructor(pattern, input) {\n if (pattern === null) {\n throw new Error('pattern is null');\n }\n // The pattern being matched.\n this.patternInput = pattern;\n const re2 = this.patternInput.re2();\n // The number of submatches (groups) in the pattern.\n this.patternGroupCount = re2.numberOfCapturingGroups();\n // The group indexes, in [start, end) pairs. Zeroth pair is overall match.\n this.groups = [];\n this.namedGroups = re2.namedGroups;\n this.numberOfInstructions = re2.numberOfInstructions();\n if (input instanceof MatcherInputBase) {\n this.resetMatcherInput(input);\n } else if (Array.isArray(input)) {\n this.resetMatcherInput(MatcherInput.utf8(input));\n } else {\n this.resetMatcherInput(MatcherInput.utf16(input));\n }\n }\n\n /**\n * Returns the {@code RE2JS} associated with this {@code Matcher}.\n * @returns {RE2JS}\n */\n pattern() {\n return this.patternInput;\n }\n\n /**\n * Resets the {@code Matcher}, rewinding input and discarding any match information.\n *\n * @returns {Matcher} the {@code Matcher} itself, for chained method calls\n */\n reset() {\n // The input length in UTF16 codes.\n this.matcherInputLength = this.matcherInput.length();\n // The append position: where the next append should start.\n this.appendPos = 0;\n // Is there a current match?\n this.hasMatch = false;\n // Have we found the submatches (groups) of the current match?\n // group[0], group[1] are set regardless.\n this.hasGroups = false;\n // The anchor flag to use when repeating the match to find subgroups.\n this.anchorFlag = 0;\n return this;\n }\n\n /**\n * Resets the {@code Matcher} and changes the input.\n * @returns {Matcher} the {@code Matcher} itself, for chained method calls\n */\n resetMatcherInput(input) {\n if (input === null) {\n throw new Error('input is null');\n }\n this.matcherInput = input;\n this.reset();\n return this;\n }\n\n /**\n * Returns the start of the named group of the most recent match, or -1 if the group was not\n * matched.\n * @param {string|number} [group=0]\n * @returns {string}\n */\n start(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group];\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`);\n }\n group = groupInt;\n }\n this.loadGroup(group);\n return this.groups[2 * group];\n }\n\n /**\n * Returns the end of the named group of the most recent match, or -1 if the group was not\n * matched.\n * @param {string|number} [group=0]\n * @returns {string}\n */\n end(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group];\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`);\n }\n group = groupInt;\n }\n this.loadGroup(group);\n return this.groups[2 * group + 1];\n }\n\n /**\n * Returns the program size of this pattern.\n *\n *

\n * Similar to the C++ implementation, the program size is a very approximate measure of a regexp's\n * \"cost\". Larger numbers are more expensive than smaller numbers.\n *

\n *\n * @returns {number} the program size of this pattern\n */\n programSize() {\n return this.numberOfInstructions;\n }\n\n /**\n * Returns the named group of the most recent match, or {@code null} if the group was not matched.\n * @param {string|number} [group=0]\n * @returns {string}\n */\n group(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group];\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`);\n }\n group = groupInt;\n }\n const start = this.start(group);\n const end = this.end(group);\n if (start < 0 && end < 0) {\n return null;\n }\n return this.substring(start, end);\n }\n /**\n * Returns the number of subgroups in this pattern.\n *\n * @returns {number} the number of subgroups; the overall match (group 0) does not count\n */\n groupCount() {\n return this.patternGroupCount;\n }\n\n /**\n * Helper: finds subgroup information if needed for group.\n * @param {number} group\n * @private\n */\n loadGroup(group) {\n if (group < 0 || group > this.patternGroupCount) {\n throw new RE2JSGroupException(`Group index out of bounds: ${group}`);\n }\n if (!this.hasMatch) {\n throw new RE2JSGroupException('perhaps no match attempted');\n }\n if (group === 0 || this.hasGroups) {\n return;\n }\n let end = this.groups[1] + 1;\n if (end > this.matcherInputLength) {\n end = this.matcherInputLength;\n }\n const res = this.patternInput.re2().matchMachineInput(this.matcherInput, this.groups[0], end, this.anchorFlag, 1 + this.patternGroupCount);\n const ok = res[0];\n if (!ok) {\n throw new RE2JSGroupException('inconsistency in matching group data');\n }\n this.groups = res[1];\n this.hasGroups = true;\n }\n\n /**\n * Matches the entire input against the pattern (anchored start and end). If there is a match,\n * {@code matches} sets the match state to describe it.\n *\n * @returns {boolean} true if the entire input matches the pattern\n */\n matches() {\n return this.genMatch(0, RE2Flags.ANCHOR_BOTH);\n }\n\n /**\n * Matches the beginning of input against the pattern (anchored start). If there is a match,\n * {@code lookingAt} sets the match state to describe it.\n *\n * @returns {boolean} true if the beginning of the input matches the pattern\n */\n lookingAt() {\n return this.genMatch(0, RE2Flags.ANCHOR_START);\n }\n\n /**\n * Matches the input against the pattern (unanchored), starting at a specified position. If there\n * is a match, {@code find} sets the match state to describe it.\n *\n * @param {string|number} [start=null] the input position where the search begins\n * @returns {boolean} if it finds a match\n * @throws IndexOutOfBoundsException if start is not a valid input position\n */\n find(start = null) {\n if (start !== null) {\n if (start < 0 || start > this.matcherInputLength) {\n throw new RE2JSGroupException(`start index out of bounds: ${start}`);\n }\n this.reset();\n return this.genMatch(start, 0);\n }\n // no start\n start = 0;\n if (this.hasMatch) {\n start = this.groups[1];\n if (this.groups[0] === this.groups[1]) {\n start++;\n }\n }\n return this.genMatch(start, RE2Flags.UNANCHORED);\n }\n\n /**\n * Helper: does match starting at start, with RE2 anchor flag.\n * @param {number} startByte\n * @param {number} anchor\n * @returns {boolean}\n * @private\n */\n genMatch(startByte, anchor) {\n const res = this.patternInput.re2().matchMachineInput(this.matcherInput, startByte, this.matcherInputLength, anchor, 1);\n const ok = res[0];\n if (!ok) {\n return false;\n }\n this.groups = res[1];\n this.hasMatch = true;\n this.hasGroups = false;\n this.anchorFlag = anchor;\n return true;\n }\n\n /**\n * Helper: return substring for [start, end).\n * @param {number} start\n * @param {number} end\n * @returns {string}\n */\n substring(start, end) {\n if (this.matcherInput.isUTF8Encoding()) {\n return Utils.utf8ByteArrayToString(this.matcherInput.asBytes().slice(start, end));\n }\n return this.matcherInput.asCharSequence().substring(start, end).toString();\n }\n\n /**\n * Helper for Pattern: return input length.\n * @returns {number}\n */\n inputLength() {\n return this.matcherInputLength;\n }\n\n /**\n * Appends to result two strings: the text from the append position up to the beginning of the\n * most recent match, and then the replacement with submatch groups substituted for references of\n * the form {@code $n}, where {@code n} is the group number in decimal. It advances the append\n * position to where the most recent match ended.\n *\n * To embed a literal {@code $}, use \\$ (actually {@code \"\\\\$\"} with string escapes). The escape\n * is only necessary when {@code $} is followed by a digit, but it is always allowed. Only\n * {@code $} and {@code \\} need escaping, but any character can be escaped.\n *\n * The group number {@code n} in {@code $n} is always at least one digit and expands to use more\n * digits as long as the resulting number is a valid group number for this pattern. To cut it off\n * earlier, escape the first digit that should not be used.\n *\n * @param {string} replacement the replacement string\n * @param {boolean} [perlMode=false] activate perl/js mode (different behaviour for capture groups and special characters)\n * @returns {string}\n * @throws IllegalStateException if there was no most recent match\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group\n * @private\n */\n appendReplacement(replacement, perlMode = false) {\n let res = '';\n const s = this.start();\n const e = this.end();\n if (this.appendPos < s) {\n res += this.substring(this.appendPos, s);\n }\n this.appendPos = e;\n res += perlMode ? this.appendReplacementInternalPerl(replacement) : this.appendReplacementInternal(replacement);\n return res;\n }\n\n /**\n * @param {string} replacement - the replacement string\n * @returns {string}\n * @private\n */\n appendReplacementInternal(replacement) {\n let res = '';\n let last = 0;\n const m = replacement.length;\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('\\\\')) {\n if (last < i) {\n res += replacement.substring(last, i);\n }\n i++;\n last = i;\n continue;\n }\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1);\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0');\n if (last < i) {\n res += replacement.substring(last, i);\n }\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i);\n if (c < Codepoint.CODES.get('0') || c > Codepoint.CODES.get('9') || n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount) {\n break;\n }\n n = n * 10 + c - Codepoint.CODES.get('0');\n }\n if (n > this.patternGroupCount) {\n throw new RE2JSGroupException(`n > number of groups: ${n}`);\n }\n const group = this.group(n);\n if (group !== null) {\n res += group;\n }\n last = i;\n i--;\n continue;\n } else if (c === Codepoint.CODES.get('{')) {\n if (last < i) {\n res += replacement.substring(last, i);\n }\n i++;\n let j = i + 1;\n while (j < replacement.length && replacement.codePointAt(j) !== Codepoint.CODES.get('}') && replacement.codePointAt(j) !== Codepoint.CODES.get(' ')) {\n j++;\n }\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('}')) {\n throw new RE2JSGroupException(\"named capture group is missing trailing '}'\");\n }\n const groupName = replacement.substring(i + 1, j);\n res += this.group(groupName);\n last = j + 1;\n }\n }\n }\n if (last < m) {\n res += replacement.substring(last, m);\n }\n return res;\n }\n\n /**\n * @param {string} replacement - the replacement string\n * @returns {string}\n * @private\n */\n appendReplacementInternalPerl(replacement) {\n let res = '';\n let last = 0;\n const m = replacement.length;\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1);\n if (Codepoint.CODES.get('$') === c) {\n if (last < i) {\n res += replacement.substring(last, i);\n }\n res += '$';\n i++;\n last = i + 1;\n continue;\n } else if (Codepoint.CODES.get('&') === c) {\n if (last < i) {\n res += replacement.substring(last, i);\n }\n const group = this.group(0);\n if (group !== null) {\n res += group;\n } else {\n res += '$&';\n }\n i++;\n last = i + 1;\n continue;\n } else if (Codepoint.CODES.get('1') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0');\n if (last < i) {\n res += replacement.substring(last, i);\n }\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i);\n if (c < Codepoint.CODES.get('0') || c > Codepoint.CODES.get('9') || n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount) {\n break;\n }\n n = n * 10 + c - Codepoint.CODES.get('0');\n }\n if (n > this.patternGroupCount) {\n res += `$${n}`;\n last = i;\n i--;\n continue;\n }\n const group = this.group(n);\n if (group !== null) {\n res += group;\n }\n last = i;\n i--;\n continue;\n } else if (c === Codepoint.CODES.get('<')) {\n if (last < i) {\n res += replacement.substring(last, i);\n }\n i++;\n let j = i + 1;\n while (j < replacement.length && replacement.codePointAt(j) !== Codepoint.CODES.get('>') && replacement.codePointAt(j) !== Codepoint.CODES.get(' ')) {\n j++;\n }\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('>')) {\n res += replacement.substring(i - 1, j + 1);\n last = j + 1;\n continue;\n }\n const groupName = replacement.substring(i + 1, j);\n if (Object.prototype.hasOwnProperty.call(this.namedGroups, groupName)) {\n res += this.group(groupName);\n } else {\n res += `$<${groupName}>`;\n }\n last = j + 1;\n }\n }\n }\n if (last < m) {\n res += replacement.substring(last, m);\n }\n return res;\n }\n\n /**\n * Return the substring of the input from the append position to the end of the\n * input.\n * @returns {string}\n */\n appendTail() {\n return this.substring(this.appendPos, this.matcherInputLength);\n }\n\n /**\n * Returns the input with all matches replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement - the replacement string\n * @param {boolean} [perlMode=false] - activate perl/js mode (different behaviour for capture groups and special characters)\n * @returns {string} the input string with the matches replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and perlMode is false\n */\n replaceAll(replacement, perlMode = false) {\n return this.replace(replacement, true, perlMode);\n }\n\n /**\n * Returns the input with the first match replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement - the replacement string\n * @param {boolean} [perlMode=false] - activate perl/js mode (different behaviour for capture groups and special characters)\n * @returns {string} the input string with the first match replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and perlMode is false\n */\n replaceFirst(replacement, perlMode = false) {\n return this.replace(replacement, false, perlMode);\n }\n\n /**\n * Helper: replaceAll/replaceFirst hybrid.\n * @param {string} replacement - the replacement string\n * @param {boolean} [all=true] - replace all matches\n * @param {boolean} [perlMode=false] - activate perl/js mode (different behaviour for capture groups and special characters)\n * @returns {string}\n * @private\n */\n replace(replacement, all = true, perlMode = false) {\n let res = '';\n this.reset();\n while (this.find()) {\n res += this.appendReplacement(replacement, perlMode);\n if (!all) {\n break;\n }\n }\n res += this.appendTail();\n return res;\n }\n}\n\n/**\n * MachineInput abstracts different representations of the input text supplied to the Machine. It\n * provides one-character lookahead.\n */\nclass MachineInputBase {\n static EOF() {\n return -1 << 3;\n }\n\n // can we look ahead without losing info?\n canCheckPrefix() {\n return true;\n }\n\n // Returns the end position in the same units as step().\n endPos() {\n return this.end;\n }\n}\n\n// An implementation of MachineInput for UTF-8 byte arrays.\n// |pos| and |width| are byte indices.\nclass MachineUTF8Input extends MachineInputBase {\n constructor(bytes, start = 0, end = bytes.length) {\n super();\n this.bytes = bytes;\n this.start = start;\n this.end = end;\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(i) {\n i += this.start;\n if (i >= this.end) {\n return MachineInputBase.EOF();\n }\n let x = this.bytes[i++] & 255;\n if ((x & 128) === 0) {\n return x << 3 | 1;\n } else if ((x & 224) === 192) {\n x = x & 31;\n if (i >= this.end) {\n return MachineInputBase.EOF();\n }\n x = x << 6 | this.bytes[i++] & 63;\n return x << 3 | 2;\n } else if ((x & 240) === 224) {\n x = x & 15;\n if (i + 1 >= this.end) {\n return MachineInputBase.EOF();\n }\n x = x << 6 | this.bytes[i++] & 63;\n x = x << 6 | this.bytes[i++] & 63;\n return x << 3 | 3;\n } else {\n x = x & 7;\n if (i + 2 >= this.end) {\n return MachineInputBase.EOF();\n }\n x = x << 6 | this.bytes[i++] & 63;\n x = x << 6 | this.bytes[i++] & 63;\n x = x << 6 | this.bytes[i++] & 63;\n return x << 3 | 4;\n }\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start;\n const i = this.indexOf(this.bytes, re2.prefixUTF8, pos);\n return i < 0 ? i : i - pos;\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start;\n let r1 = -1;\n if (pos > this.start && pos <= this.end) {\n let start = pos - 1;\n r1 = this.bytes[start--];\n if (r1 >= 128) {\n let lim = pos - 4;\n if (lim < this.start) {\n lim = this.start;\n }\n while (start >= lim && (this.bytes[start] & 192) === 128) {\n start--;\n }\n if (start < this.start) {\n start = this.start;\n }\n r1 = this.step(start) >> 3;\n }\n }\n const r2 = pos < this.end ? this.step(pos) >> 3 : -1;\n return Utils.emptyOpContext(r1, r2);\n }\n\n // Returns the index of the first occurrence of array |target| within\n // array |source| after |fromIndex|, or -1 if not found.\n indexOf(source, target, fromIndex = 0) {\n let targetLength = target.length;\n if (targetLength === 0) {\n return -1;\n }\n let sourceLength = source.length;\n for (let i = fromIndex; i <= sourceLength - targetLength; i++) {\n for (let j = 0; j < targetLength; j++) {\n if (source[i + j] !== target[j]) {\n break;\n } else if (j === targetLength - 1) {\n return i;\n }\n }\n }\n return -1;\n }\n}\n\n// |pos| and |width| are in JS \"char\" units.\nclass MachineUTF16Input extends MachineInputBase {\n constructor(charSequence, start = 0, end = charSequence.length) {\n super();\n this.charSequence = charSequence;\n this.start = start;\n this.end = end;\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(pos) {\n pos += this.start;\n if (pos < this.end) {\n const rune = this.charSequence.codePointAt(pos);\n return rune << 3 | Utils.charCount(rune);\n } else {\n return MachineInputBase.EOF();\n }\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start;\n const i = this.charSequence.indexOf(re2.prefix, pos);\n return i < 0 ? i : i - pos;\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start;\n const r1 = pos > 0 && pos <= this.charSequence.length ? this.charSequence.codePointAt(pos - 1) : -1;\n const r2 = pos < this.charSequence.length ? this.charSequence.codePointAt(pos) : -1;\n return Utils.emptyOpContext(r1, r2);\n }\n}\nclass MachineInput {\n static fromUTF8(bytes, start = 0, end = bytes.length) {\n return new MachineUTF8Input(bytes, start, end);\n }\n static fromUTF16(charSequence, start = 0, end = charSequence.length) {\n return new MachineUTF16Input(charSequence, start, end);\n }\n}\n\n/**\n * A single instruction in the regular expression virtual machine.\n *\n * @see http://swtch.com/~rsc/regexp/regexp2.html\n */\nclass Inst {\n static ALT = 1;\n static ALT_MATCH = 2;\n static CAPTURE = 3;\n static EMPTY_WIDTH = 4;\n static FAIL = 5;\n static MATCH = 6;\n static NOP = 7;\n static RUNE = 8;\n static RUNE1 = 9;\n static RUNE_ANY = 10;\n static RUNE_ANY_NOT_NL = 11;\n static isRuneOp(op) {\n return Inst.RUNE <= op && op <= Inst.RUNE_ANY_NOT_NL;\n }\n\n // Returns an RE2 expression matching exactly |runes|.\n static escapeRunes(runes) {\n let out = '\"';\n for (let rune of runes) {\n out += Utils.escapeRune(rune);\n }\n out += '\"';\n return out;\n }\n constructor(op) {\n this.op = op;\n this.out = 0; // all but MATCH, FAIL\n this.arg = 0; // ALT, ALT_MATCH, CAPTURE, EMPTY_WIDTH\n // length==1 => exact match\n // otherwise a list of [lo,hi] pairs. hi is *inclusive*.\n this.runes = [];\n }\n\n // MatchRune returns true if the instruction matches (and consumes) r.\n // It should only be called when op == InstRune.\n matchRune(r) {\n // Special case: single-rune slice is from literal string, not char\n // class.\n if (this.runes.length === 1) {\n const r0 = this.runes[0];\n // If this pattern is case-insensitive, apply Unicode case folding to compare the two runes.\n // Note that this may result in a case-folding loop when executed,\n // so attempt to reduce the chance of that occurring\n // by performing case folding on |r0| from the pattern rather than |r| from the input.\n if ((this.arg & RE2Flags.FOLD_CASE) !== 0) {\n return Unicode.equalsIgnoreCase(r0, r);\n }\n return r === r0;\n }\n // Peek at the first few pairs.\n // Should handle ASCII well.\n for (let j = 0; j < this.runes.length && j <= 8; j += 2) {\n if (r < this.runes[j]) {\n return false;\n }\n if (r <= this.runes[j + 1]) {\n return true;\n }\n }\n // Otherwise binary search.\n let lo = 0;\n let hi = this.runes.length / 2 | 0;\n while (lo < hi) {\n const m = lo + ((hi - lo) / 2 | 0);\n const c = this.runes[2 * m];\n if (c <= r) {\n if (r <= this.runes[2 * m + 1]) {\n return true;\n }\n lo = m + 1;\n } else {\n hi = m;\n }\n }\n return false;\n }\n /**\n *\n * @returns {string}\n */\n toString() {\n switch (this.op) {\n case Inst.ALT:\n return `alt -> ${this.out}, ${this.arg}`;\n case Inst.ALT_MATCH:\n return `altmatch -> ${this.out}, ${this.arg}`;\n case Inst.CAPTURE:\n return `cap ${this.arg} -> ${this.out}`;\n case Inst.EMPTY_WIDTH:\n return `empty ${this.arg} -> ${this.out}`;\n case Inst.MATCH:\n return 'match';\n case Inst.FAIL:\n return 'fail';\n case Inst.NOP:\n return `nop -> ${this.out}`;\n case Inst.RUNE:\n if (this.runes === null) {\n return 'rune ';\n }\n return ['rune ', Inst.escapeRunes(this.runes), (this.arg & RE2Flags.FOLD_CASE) !== 0 ? '/i' : '', ' -> ', this.out].join('');\n case Inst.RUNE1:\n return `rune1 ${Inst.escapeRunes(this.runes)} -> ${this.out}`;\n case Inst.RUNE_ANY:\n return `any -> ${this.out}`;\n case Inst.RUNE_ANY_NOT_NL:\n return `anynotnl -> ${this.out}`;\n default:\n throw new Error('unhandled case in Inst.toString');\n }\n }\n}\n\n// A logical thread in the NFA.\nclass Thread {\n constructor() {\n this.inst = null;\n this.cap = [];\n }\n}\n\n// A queue is a 'sparse array' holding pending threads of execution. See:\n// research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html\nclass Queue {\n constructor() {\n this.sparse = []; // may contain stale but in-bounds values.\n this.densePcs = []; // may contain stale pc in slots >= size\n this.denseThreads = []; // may contain stale Thread in slots >= size\n this.size = 0;\n }\n contains(pc) {\n const j = this.sparse[pc];\n return j < this.size && this.densePcs[j] === pc;\n }\n isEmpty() {\n return this.size === 0;\n }\n add(pc) {\n const j = this.size++;\n this.sparse[pc] = j;\n this.denseThreads[j] = null;\n this.densePcs[j] = pc;\n return j;\n }\n clear() {\n this.sparse = [];\n this.densePcs = [];\n this.denseThreads = [];\n this.size = 0;\n }\n toString() {\n let out = '{';\n for (let i = 0; i < this.size; i++) {\n if (i !== 0) {\n out += ', ';\n }\n out += this.densePcs[i];\n }\n out += '}';\n return out;\n }\n}\n// A Machine matches an input string of Unicode characters against an\n// RE2 instance using a simple NFA.\n//\n// Called by RE2.doExecute.\nclass Machine {\n static fromRE2(re2) {\n const m = new Machine();\n m.prog = re2.prog;\n m.re2 = re2;\n m.q0 = new Queue(m.prog.numInst());\n m.q1 = new Queue(m.prog.numInst());\n m.pool = [];\n m.poolSize = 0;\n m.matched = false;\n m.matchcap = Array(m.prog.numCap < 2 ? 2 : m.prog.numCap).fill(0);\n m.ncap = 0;\n return m;\n }\n static fromMachine(machine) {\n const m = new Machine();\n m.re2 = machine.re2;\n m.prog = machine.prog;\n m.q0 = machine.q0;\n m.q1 = machine.q1;\n m.pool = machine.pool;\n m.poolSize = machine.poolSize;\n m.matched = machine.matched;\n m.matchcap = machine.matchcap;\n m.ncap = machine.ncap;\n return m;\n }\n\n // init() reinitializes an existing Machine for re-use on a new input.\n init(ncap) {\n this.ncap = ncap;\n if (ncap > this.matchcap.length) {\n this.initNewCap(ncap);\n } else {\n this.resetCap(ncap);\n }\n }\n resetCap(ncap) {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i];\n t.cap = Array(ncap).fill(0);\n }\n }\n initNewCap(ncap) {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i];\n t.cap = Array(ncap).fill(0);\n }\n this.matchcap = Array(ncap).fill(0);\n }\n submatches() {\n if (this.ncap === 0) {\n return Utils.emptyInts();\n }\n return this.matchcap.slice(0, this.ncap);\n }\n\n // alloc() allocates a new thread with the given instruction.\n // It uses the free pool if possible.\n alloc(inst) {\n let t;\n if (this.poolSize > 0) {\n this.poolSize--;\n t = this.pool[this.poolSize];\n } else {\n t = new Thread();\n }\n t.inst = inst;\n return t;\n }\n\n // Frees all threads on the thread queue, returning them to the free pool.\n freeQueue(queue, from = 0) {\n const numberOfThread = queue.size - from;\n const requiredPoolLength = this.poolSize + numberOfThread;\n if (this.pool.length < requiredPoolLength) {\n this.pool = this.pool.slice(0, Math.max(this.pool.length * 2, requiredPoolLength));\n }\n for (let i = from; i < queue.size; i++) {\n const t = queue.denseThreads[i];\n if (t !== null) {\n this.pool[this.poolSize] = t;\n this.poolSize++;\n }\n }\n queue.clear();\n }\n\n // freeThread() returns t to the free pool.\n freeThread(t) {\n if (this.pool.length <= this.poolSize) {\n this.pool = this.pool.slice(0, this.pool.length * 2);\n }\n this.pool[this.poolSize] = t;\n this.poolSize++;\n }\n match(input, pos, anchor) {\n const startCond = this.re2.cond;\n if (startCond === Utils.EMPTY_ALL) {\n return false;\n }\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return false;\n }\n this.matched = false;\n this.matchcap = Array(this.prog.numCap).fill(-1);\n let runq = this.q0;\n let nextq = this.q1;\n let r = input.step(pos);\n let rune = r >> 3;\n let width = r & 7;\n let rune1 = -1;\n let width1 = 0;\n if (r !== MachineInputBase.EOF()) {\n r = input.step(pos + width);\n rune1 = r >> 3;\n width1 = r & 7;\n }\n let flag;\n if (pos === 0) {\n flag = Utils.emptyOpContext(-1, rune);\n } else {\n flag = input.context(pos);\n }\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (runq.isEmpty()) {\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) {\n break;\n }\n if (this.matched) {\n break;\n }\n if (!(this.re2.prefix.length === 0) && rune1 !== this.re2.prefixRune && input.canCheckPrefix()) {\n const advance = input.index(this.re2, pos);\n if (advance < 0) {\n break;\n }\n pos += advance;\n r = input.step(pos);\n rune = r >> 3;\n width = r & 7;\n r = input.step(pos + width);\n rune1 = r >> 3;\n width1 = r & 7;\n }\n }\n if (!this.matched && (pos === 0 || anchor === RE2Flags.UNANCHORED)) {\n if (this.ncap > 0) {\n this.matchcap[0] = pos;\n }\n this.add(runq, this.prog.start, pos, this.matchcap, flag, null);\n }\n const nextPos = pos + width;\n flag = input.context(nextPos);\n this.step(runq, nextq, pos, nextPos, rune, flag, anchor, pos === input.endPos());\n if (width === 0) {\n break;\n }\n if (this.ncap === 0 && this.matched) {\n break;\n }\n pos += width;\n rune = rune1;\n width = width1;\n if (rune !== -1) {\n r = input.step(pos + width);\n rune1 = r >> 3;\n width1 = r & 7;\n }\n const tmpq = runq;\n runq = nextq;\n nextq = tmpq;\n }\n this.freeQueue(nextq);\n return this.matched;\n }\n step(runq, nextq, pos, nextPos, c, nextCond, anchor, atEnd) {\n const longest = this.re2.longest;\n for (let j = 0; j < runq.size; j++) {\n let t = runq.denseThreads[j];\n if (t === null) {\n continue;\n }\n if (longest && this.matched && this.ncap > 0 && this.matchcap[0] < t.cap[0]) {\n this.freeThread(t);\n continue;\n }\n const i = t.inst;\n let add = false;\n switch (i.op) {\n case Inst.MATCH:\n if (anchor === RE2Flags.ANCHOR_BOTH && !atEnd) {\n break;\n }\n if (this.ncap > 0 && (!longest || !this.matched || this.matchcap[1] < pos)) {\n t.cap[1] = pos;\n this.matchcap = t.cap.slice(0, this.ncap);\n }\n if (!longest) {\n this.freeQueue(runq, j + 1);\n }\n this.matched = true;\n break;\n case Inst.RUNE:\n add = i.matchRune(c);\n break;\n case Inst.RUNE1:\n add = c === i.runes[0];\n break;\n case Inst.RUNE_ANY:\n add = true;\n break;\n case Inst.RUNE_ANY_NOT_NL:\n add = c !== Codepoint.CODES.get('\\n');\n break;\n default:\n throw new Error('bad inst');\n }\n if (add) {\n t = this.add(nextq, i.out, nextPos, t.cap, nextCond, t);\n }\n if (t !== null) {\n this.freeThread(t);\n runq.denseThreads[j] = null;\n }\n }\n runq.clear();\n }\n add(q, pc, pos, cap, cond, t) {\n if (pc === 0) {\n return t;\n }\n if (q.contains(pc)) {\n return t;\n }\n const d = q.add(pc);\n const inst = this.prog.inst[pc];\n switch (inst.op) {\n case Inst.FAIL:\n break;\n case Inst.ALT:\n case Inst.ALT_MATCH:\n t = this.add(q, inst.out, pos, cap, cond, t);\n t = this.add(q, inst.arg, pos, cap, cond, t);\n break;\n case Inst.EMPTY_WIDTH:\n if ((inst.arg & ~cond) === 0) {\n t = this.add(q, inst.out, pos, cap, cond, t);\n }\n break;\n case Inst.NOP:\n t = this.add(q, inst.out, pos, cap, cond, t);\n break;\n case Inst.CAPTURE:\n if (inst.arg < this.ncap) {\n const opos = cap[inst.arg];\n cap[inst.arg] = pos;\n this.add(q, inst.out, pos, cap, cond, null);\n cap[inst.arg] = opos;\n } else {\n t = this.add(q, inst.out, pos, cap, cond, t);\n }\n break;\n case Inst.MATCH:\n case Inst.RUNE:\n case Inst.RUNE1:\n case Inst.RUNE_ANY:\n case Inst.RUNE_ANY_NOT_NL:\n if (t === null) {\n t = this.alloc(inst);\n } else {\n t.inst = inst;\n }\n if (this.ncap > 0 && t.cap !== cap) {\n t.cap = cap.slice(0, this.ncap);\n }\n q.denseThreads[d] = t;\n t = null;\n break;\n default:\n throw new Error('unhandled');\n }\n return t;\n }\n}\n\n/**\n * Regular expression abstract syntax tree. Produced by parser, used by compiler. NB, this\n * corresponds to {@code syntax.regexp} in the Go implementation; Go's {@code regexp} is called\n * {@code RE2} in Java.\n */\nclass Regexp {\n static Op = (() => createEnum(['NO_MATCH',\n // Matches no strings.\n 'EMPTY_MATCH',\n // Matches empty string.\n 'LITERAL',\n // Matches runes[] sequence\n 'CHAR_CLASS',\n // Matches Runes interpreted as range pair list\n 'ANY_CHAR_NOT_NL',\n // Matches any character except '\\n'\n 'ANY_CHAR',\n // Matches any character\n 'BEGIN_LINE',\n // Matches empty string at end of line\n 'END_LINE',\n // Matches empty string at end of line\n 'BEGIN_TEXT',\n // Matches empty string at beginning of text\n 'END_TEXT',\n // Matches empty string at end of text\n 'WORD_BOUNDARY',\n // Matches word boundary `\\b`\n 'NO_WORD_BOUNDARY',\n // Matches word non-boundary `\\B`\n 'CAPTURE',\n // Capturing subexpr with index cap, optional name name\n 'STAR',\n // Matches subs[0] zero or more times.\n 'PLUS',\n // Matches subs[0] one or more times.\n 'QUEST',\n // Matches subs[0] zero or one times.\n 'REPEAT',\n // Matches subs[0] [min, max] times; max=-1 => no limit.\n 'CONCAT',\n // Matches concatenation of subs[]\n 'ALTERNATE',\n // Matches union of subs[]\n // Pseudo ops, used internally by Parser for parsing stack:\n 'LEFT_PAREN', 'VERTICAL_BAR']))();\n static isPseudoOp(op) {\n return op >= Regexp.Op.LEFT_PAREN;\n }\n static emptySubs() {\n return [];\n }\n static quoteIfHyphen(rune) {\n if (rune === Codepoint.CODES.get('-')) {\n return '\\\\';\n }\n return '';\n }\n static fromRegexp(re) {\n const regex = new Regexp(re.op);\n regex.flags = re.flags;\n regex.subs = re.subs;\n regex.runes = re.runes;\n regex.cap = re.cap;\n regex.min = re.min;\n regex.max = re.max;\n regex.name = re.name;\n regex.namedGroups = re.namedGroups;\n return regex;\n }\n constructor(op) {\n this.op = op; // operator\n this.flags = 0; // bitmap of parse flags\n // subexpressions, if any. Never null.\n // subs[0] is used as the freelist.\n this.subs = Regexp.emptySubs();\n this.runes = []; // matched runes, for LITERAL, CHAR_CLASS\n this.min = 0; // min for REPEAT\n this.max = 0; // max for REPEAT\n this.cap = 0; // capturing index, for CAPTURE\n this.name = null; // capturing name, for CAPTURE\n this.namedGroups = {}; // map of group name -> capturing index\n }\n reinit() {\n this.flags = 0;\n this.subs = Regexp.emptySubs();\n this.runes = [];\n this.cap = 0;\n this.min = 0;\n this.max = 0;\n this.name = null;\n this.namedGroups = {};\n }\n toString() {\n return this.appendTo();\n }\n\n // appendTo() appends the Perl syntax for |this| regular expression to out\n appendTo() {\n let out = '';\n switch (this.op) {\n case Regexp.Op.NO_MATCH:\n out += '[^\\\\x00-\\\\x{10FFFF}]';\n break;\n case Regexp.Op.EMPTY_MATCH:\n out += '(?:)';\n break;\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST:\n case Regexp.Op.REPEAT:\n {\n const sub = this.subs[0];\n if (sub.op > Regexp.Op.CAPTURE || sub.op === Regexp.Op.LITERAL && sub.runes.length > 1) {\n out += `(?:${sub.appendTo()})`;\n } else {\n out += sub.appendTo();\n }\n switch (this.op) {\n case Regexp.Op.STAR:\n out += '*';\n break;\n case Regexp.Op.PLUS:\n out += '+';\n break;\n case Regexp.Op.QUEST:\n out += '?';\n break;\n case Regexp.Op.REPEAT:\n out += `{${this.min}`;\n if (this.min !== this.max) {\n out += ',';\n if (this.max >= 0) {\n out += this.max;\n }\n }\n out += '}';\n break;\n }\n if ((this.flags & RE2Flags.NON_GREEDY) !== 0) {\n out += '?';\n }\n break;\n }\n case Regexp.Op.CONCAT:\n {\n for (let sub of this.subs) {\n if (sub.op === Regexp.Op.ALTERNATE) {\n out += `(?:${sub.appendTo()})`;\n } else {\n out += sub.appendTo();\n }\n }\n break;\n }\n case Regexp.Op.ALTERNATE:\n {\n let sep = '';\n for (let sub of this.subs) {\n out += sep;\n sep = '|';\n out += sub.appendTo();\n }\n break;\n }\n case Regexp.Op.LITERAL:\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += '(?i:';\n }\n for (let rune of this.runes) {\n out += Utils.escapeRune(rune);\n }\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += ')';\n }\n break;\n case Regexp.Op.ANY_CHAR_NOT_NL:\n out += '(?-s:.)';\n break;\n case Regexp.Op.ANY_CHAR:\n out += '(?s:.)';\n break;\n case Regexp.Op.CAPTURE:\n if (this.name === null || this.name.length === 0) {\n out += '(';\n } else {\n out += `(?P<${this.name}>`;\n }\n if (this.subs[0].op !== Regexp.Op.EMPTY_MATCH) {\n out += this.subs[0].appendTo();\n }\n out += ')';\n break;\n case Regexp.Op.BEGIN_TEXT:\n out += '\\\\A';\n break;\n case Regexp.Op.END_TEXT:\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== 0) {\n out += '(?-m:$)';\n } else {\n out += '\\\\z';\n }\n break;\n case Regexp.Op.BEGIN_LINE:\n out += '^';\n break;\n case Regexp.Op.END_LINE:\n out += '$';\n break;\n case Regexp.Op.WORD_BOUNDARY:\n out += '\\\\b';\n break;\n case Regexp.Op.NO_WORD_BOUNDARY:\n out += '\\\\B';\n break;\n case Regexp.Op.CHAR_CLASS:\n if (this.runes.length % 2 !== 0) {\n out += '[invalid char class]';\n break;\n }\n out += '[';\n if (this.runes.length === 0) {\n out += '^\\\\x00-\\\\x{10FFFF}';\n } else if (this.runes[0] === 0 && this.runes[this.runes.length - 1] === Unicode.MAX_RUNE) {\n out += '^';\n for (let i = 1; i < this.runes.length - 1; i += 2) {\n const lo = this.runes[i] + 1;\n const hi = this.runes[i + 1] - 1;\n out += Regexp.quoteIfHyphen(lo);\n out += Utils.escapeRune(lo);\n if (lo !== hi) {\n out += '-';\n out += Regexp.quoteIfHyphen(hi);\n out += Utils.escapeRune(hi);\n }\n }\n } else {\n for (let i = 0; i < this.runes.length; i += 2) {\n const lo = this.runes[i];\n const hi = this.runes[i + 1];\n out += Regexp.quoteIfHyphen(lo);\n out += Utils.escapeRune(lo);\n if (lo !== hi) {\n out += '-';\n out += Regexp.quoteIfHyphen(hi);\n out += Utils.escapeRune(hi);\n }\n }\n }\n out += ']';\n break;\n default:\n out += this.op;\n break;\n }\n return out;\n }\n\n // maxCap() walks the regexp to find the maximum capture index.\n maxCap() {\n let m = 0;\n if (this.op === Regexp.Op.CAPTURE) {\n m = this.cap;\n }\n if (this.subs !== null) {\n for (let sub of this.subs) {\n const n = sub.maxCap();\n if (m < n) {\n m = n;\n }\n }\n }\n return m;\n }\n\n // equals() returns true if this and that have identical structure.\n equals(that) {\n if (!(that !== null && that instanceof Regexp)) {\n return false;\n }\n if (this.op !== that.op) {\n return false;\n }\n switch (this.op) {\n case Regexp.Op.END_TEXT:\n {\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== (that.flags & RE2Flags.WAS_DOLLAR)) {\n return false;\n }\n break;\n }\n case Regexp.Op.LITERAL:\n case Regexp.Op.CHAR_CLASS:\n {\n if (this.runes === null && that.runes === null) {\n break;\n }\n if (this.runes === null || that.runes === null) {\n return false;\n }\n if (this.runes.length !== that.runes.length) {\n return false;\n }\n for (let i = 0; i < this.runes.length; i++) {\n if (this.runes[i] !== that.runes[i]) {\n return false;\n }\n }\n break;\n }\n case Regexp.Op.ALTERNATE:\n case Regexp.Op.CONCAT:\n {\n if (this.subs.length !== that.subs.length) {\n return false;\n }\n for (let i = 0; i < this.subs.length; ++i) {\n if (!this.subs[i].equals(that.subs[i])) {\n return false;\n }\n }\n break;\n }\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST:\n {\n if ((this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) || !this.subs[0].equals(that.subs[0])) {\n return false;\n }\n break;\n }\n case Regexp.Op.REPEAT:\n {\n if ((this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) || this.min !== that.min || this.max !== that.max || !this.subs[0].equals(that.subs[0])) {\n return false;\n }\n break;\n }\n case Regexp.Op.CAPTURE:\n {\n if (this.cap !== that.cap || (this.name === null ? that.name !== null : this.name !== that.name) || !this.subs[0].equals(that.subs[0])) {\n return false;\n }\n break;\n }\n }\n return true;\n }\n}\n\n/**\n * A Prog is a compiled regular expression program.\n */\nclass Prog {\n constructor() {\n this.inst = [];\n this.start = 0; // index of start instruction\n // number of CAPTURE insts in re\n // 2 => implicit ( and ) for whole match $0\n this.numCap = 2;\n }\n\n // Returns the instruction at the specified pc.\n // Precondition: pc > 0 && pc < numInst().\n getInst(pc) {\n return this.inst[pc];\n }\n\n // Returns the number of instructions in this program.\n numInst() {\n return this.inst.length;\n }\n\n // Adds a new instruction to this program, with operator |op| and |pc| equal\n // to |numInst()|.\n addInst(op) {\n this.inst.push(new Inst(op));\n }\n\n // skipNop() follows any no-op or capturing instructions and returns the\n // resulting instruction.\n skipNop(pc) {\n let i = this.inst[pc];\n while (i.op === Inst.NOP || i.op === Inst.CAPTURE) {\n i = this.inst[pc];\n pc = i.out;\n }\n return i;\n }\n\n // prefix() returns a pair of a literal string that all matches for the\n // regexp must start with, and a boolean which is true if the prefix is the\n // entire match. The string is returned by appending to |prefix|.\n prefix() {\n let prefix = '';\n let i = this.skipNop(this.start);\n if (!Inst.isRuneOp(i.op) || i.runes.length !== 1) {\n return [i.op === Inst.MATCH, prefix];\n }\n while (Inst.isRuneOp(i.op) && i.runes.length === 1 && (i.arg & RE2Flags.FOLD_CASE) === 0) {\n prefix += String.fromCodePoint(i.runes[0]);\n i = this.skipNop(i.out);\n }\n return [i.op === Inst.MATCH, prefix];\n }\n\n // startCond() returns the leading empty-width conditions that must be true\n // in any match. It returns -1 (all bits set) if no matches are possible.\n startCond() {\n let flag = 0;\n let pc = this.start;\n loop: for (;;) {\n const i = this.inst[pc];\n switch (i.op) {\n case Inst.EMPTY_WIDTH:\n flag |= i.arg;\n break;\n case Inst.FAIL:\n return -1;\n case Inst.CAPTURE:\n case Inst.NOP:\n break;\n default:\n break loop;\n }\n pc = i.out;\n }\n return flag;\n }\n\n // --- Patch list ---\n\n // A patchlist is a list of instruction pointers that need to be filled in\n // (patched). Because the pointers haven't been filled in yet, we can reuse\n // their storage to hold the list. It's kind of sleazy, but works well in\n // practice. See http://swtch.com/~rsc/regexp/regexp1.html for inspiration.\n\n // These aren't really pointers: they're integers, so we can reinterpret them\n // this way without using package unsafe. A value l denotes p.inst[l>>1].out\n // (l&1==0) or .arg (l&1==1). l == 0 denotes the empty list, okay because we\n // start every program with a fail instruction, so we'll never want to point\n // at its output link.\n\n next(l) {\n const i = this.inst[l >> 1];\n if ((l & 1) === 0) {\n return i.out;\n }\n return i.arg;\n }\n patch(l, val) {\n while (l !== 0) {\n const i = this.inst[l >> 1];\n if ((l & 1) === 0) {\n l = i.out;\n i.out = val;\n } else {\n l = i.arg;\n i.arg = val;\n }\n }\n }\n append(l1, l2) {\n if (l1 === 0) {\n return l2;\n }\n if (l2 === 0) {\n return l1;\n }\n let last = l1;\n for (;;) {\n const next = this.next(last);\n if (next === 0) {\n break;\n }\n last = next;\n }\n const i = this.inst[last >> 1];\n if ((last & 1) === 0) {\n i.out = l2;\n } else {\n i.arg = l2;\n }\n return l1;\n }\n /**\n *\n * @returns {string}\n */\n toString() {\n let out = '';\n for (let pc = 0; pc < this.inst.length; pc++) {\n const len = out.length;\n out += pc;\n if (pc === this.start) {\n out += '*';\n }\n out += ' '.substring(out.length - len);\n out += this.inst[pc];\n out += '\\n';\n }\n return out;\n }\n}\n\n/**\n * A fragment of a compiled regular expression program.\n *\n * @see http://swtch.com/~rsc/regexp/regexp1.html\n * @class\n */\nclass Frag {\n constructor(i = 0, out = 0, nullable = false) {\n this.i = i; // an instruction address (pc).\n this.out = out; // a patch list; see explanation in Prog.js\n this.nullable = nullable; // whether the fragment can match the empty string\n }\n}\n/**\n * Compiler from {@code Regexp} (RE2 abstract syntax) to {@code RE2} (compiled regular expression).\n *\n * The only entry point is {@link #compileRegexp}.\n */\nclass Compiler {\n static ANY_RUNE_NOT_NL() {\n return [0, Codepoint.CODES.get('\\n') - 1, Codepoint.CODES.get('\\n') + 1, Unicode.MAX_RUNE];\n }\n static ANY_RUNE() {\n return [0, Unicode.MAX_RUNE];\n }\n static compileRegexp(re) {\n const c = new Compiler();\n const f = c.compile(re);\n c.prog.patch(f.out, c.newInst(Inst.MATCH).i);\n c.prog.start = f.i;\n return c.prog;\n }\n constructor() {\n this.prog = new Prog();\n this.newInst(Inst.FAIL);\n }\n newInst(op) {\n this.prog.addInst(op);\n return new Frag(this.prog.numInst() - 1, 0, true);\n }\n\n // Returns a no-op fragment. Sometimes unavoidable.\n nop() {\n const f = this.newInst(Inst.NOP);\n f.out = f.i << 1;\n return f;\n }\n fail() {\n return new Frag();\n }\n\n // Given fragment a, returns (a) capturing as \\n.\n // Given a fragment a, returns a fragment with capturing parens around a.\n cap(arg) {\n const f = this.newInst(Inst.CAPTURE);\n f.out = f.i << 1;\n this.prog.getInst(f.i).arg = arg;\n if (this.prog.numCap < arg + 1) {\n this.prog.numCap = arg + 1;\n }\n return f;\n }\n\n // Given fragments a and b, returns ab; a|b\n cat(f1, f2) {\n // concat of failure is failure\n if (f1.i === 0 || f2.i === 0) {\n return this.fail();\n }\n // eslint-disable-next-line no-warning-comments\n // TODO(rsc): elide nop\n this.prog.patch(f1.out, f2.i);\n return new Frag(f1.i, f2.out, f1.nullable && f2.nullable);\n }\n\n // Given fragments for a and b, returns fragment for a|b.\n alt(f1, f2) {\n // alt of failure is other\n if (f1.i === 0) {\n return f2;\n }\n if (f2.i === 0) {\n return f1;\n }\n const f = this.newInst(Inst.ALT);\n const i = this.prog.getInst(f.i);\n i.out = f1.i;\n i.arg = f2.i;\n f.out = this.prog.append(f1.out, f2.out);\n f.nullable = f1.nullable || f2.nullable;\n return f;\n }\n\n // loop returns the fragment for the main loop of a plus or star.\n // For plus, it can be used directly. with f1.i as the entry.\n // For star, it can be used directly when f1 can't match an empty string.\n // (When f1 can match an empty string, f1* must be implemented as (f1+)?\n // to get the priority match order correct.)\n loop(f1, nongreedy) {\n const f = this.newInst(Inst.ALT);\n const i = this.prog.getInst(f.i);\n if (nongreedy) {\n i.arg = f1.i;\n f.out = f.i << 1;\n } else {\n i.out = f1.i;\n f.out = f.i << 1 | 1;\n }\n this.prog.patch(f1.out, f.i);\n return f;\n }\n\n // Given a fragment for a, returns a fragment for a? or a?? (if nongreedy)\n quest(f1, nongreedy) {\n const f = this.newInst(Inst.ALT);\n const i = this.prog.getInst(f.i);\n if (nongreedy) {\n i.arg = f1.i;\n f.out = f.i << 1;\n } else {\n i.out = f1.i;\n f.out = f.i << 1 | 1;\n }\n f.out = this.prog.append(f.out, f1.out);\n return f;\n }\n\n // Given a fragment a, returns a fragment for a* or a*? (if nongreedy)\n star(f1, nongreedy) {\n if (f1.nullable) {\n return this.quest(this.plus(f1, nongreedy), nongreedy);\n }\n return this.loop(f1, nongreedy);\n }\n\n // Given a fragment for a, returns a fragment for a+ or a+? (if nongreedy)\n plus(f1, nongreedy) {\n return new Frag(f1.i, this.loop(f1, nongreedy).out, f1.nullable);\n }\n\n // op is a bitmask of EMPTY_* flags.\n empty(op) {\n const f = this.newInst(Inst.EMPTY_WIDTH);\n this.prog.getInst(f.i).arg = op;\n f.out = f.i << 1;\n return f;\n }\n\n // flags : parser flags\n rune(runes, flags) {\n const f = this.newInst(Inst.RUNE);\n f.nullable = false;\n const i = this.prog.getInst(f.i);\n i.runes = runes;\n flags &= RE2Flags.FOLD_CASE;\n if (runes.length !== 1 || Unicode.simpleFold(runes[0]) === runes[0]) {\n flags &= -2;\n }\n i.arg = flags;\n f.out = f.i << 1;\n if ((flags & RE2Flags.FOLD_CASE) === 0 && runes.length === 1 || runes.length === 2 && runes[0] === runes[1]) {\n i.op = Inst.RUNE1;\n } else if (runes.length === 2 && runes[0] === 0 && runes[1] === Unicode.MAX_RUNE) {\n i.op = Inst.RUNE_ANY;\n } else if (runes.length === 4 && runes[0] === 0 && runes[1] === Codepoint.CODES.get('\\n') - 1 && runes[2] === Codepoint.CODES.get('\\n') + 1 && runes[3] === Unicode.MAX_RUNE) {\n i.op = Inst.RUNE_ANY_NOT_NL;\n }\n return f;\n }\n compile(re) {\n switch (re.op) {\n case Regexp.Op.NO_MATCH:\n return this.fail();\n case Regexp.Op.EMPTY_MATCH:\n return this.nop();\n case Regexp.Op.LITERAL:\n if (re.runes.length === 0) {\n return this.nop();\n } else {\n let f = null;\n for (let r of re.runes) {\n const f1 = this.rune([r], re.flags);\n f = f === null ? f1 : this.cat(f, f1);\n }\n return f;\n }\n case Regexp.Op.CHAR_CLASS:\n return this.rune(re.runes, re.flags);\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return this.rune(Compiler.ANY_RUNE_NOT_NL(), 0);\n case Regexp.Op.ANY_CHAR:\n return this.rune(Compiler.ANY_RUNE(), 0);\n case Regexp.Op.BEGIN_LINE:\n return this.empty(Utils.EMPTY_BEGIN_LINE);\n case Regexp.Op.END_LINE:\n return this.empty(Utils.EMPTY_END_LINE);\n case Regexp.Op.BEGIN_TEXT:\n return this.empty(Utils.EMPTY_BEGIN_TEXT);\n case Regexp.Op.END_TEXT:\n return this.empty(Utils.EMPTY_END_TEXT);\n case Regexp.Op.WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_WORD_BOUNDARY);\n case Regexp.Op.NO_WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_NO_WORD_BOUNDARY);\n case Regexp.Op.CAPTURE:\n {\n const bra = this.cap(re.cap << 1);\n const sub = this.compile(re.subs[0]);\n const ket = this.cap(re.cap << 1 | 1);\n return this.cat(this.cat(bra, sub), ket);\n }\n case Regexp.Op.STAR:\n return this.star(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0);\n case Regexp.Op.PLUS:\n return this.plus(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0);\n case Regexp.Op.QUEST:\n return this.quest(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0);\n case Regexp.Op.CONCAT:\n {\n if (re.subs.length === 0) {\n return this.nop();\n } else {\n let f = null;\n for (let sub of re.subs) {\n const f1 = this.compile(sub);\n f = f === null ? f1 : this.cat(f, f1);\n }\n return f;\n }\n }\n case Regexp.Op.ALTERNATE:\n {\n if (re.subs.length === 0) {\n return this.nop();\n } else {\n let f = null;\n for (let sub of re.subs) {\n const f1 = this.compile(sub);\n f = f === null ? f1 : this.alt(f, f1);\n }\n return f;\n }\n }\n default:\n throw new RE2JSCompileException('regexp: unhandled case in compile');\n }\n }\n}\n\nclass Simplify {\n // Simplify returns a regexp equivalent to re but without counted\n // repetitions and with various other simplifications, such as\n // rewriting /(?:a+)+/ to /a+/. The resulting regexp will execute\n // correctly but its string representation will not produce the same\n // parse tree, because capturing parentheses may have been duplicated\n // or removed. For example, the simplified form for /(x){1,2}/ is\n // /(x)(x)?/ but both parentheses capture as $1. The returned regexp\n // may share structure with or be the original.\n static simplify(re) {\n if (re === null) {\n return null;\n }\n switch (re.op) {\n case Regexp.Op.CAPTURE:\n case Regexp.Op.CONCAT:\n case Regexp.Op.ALTERNATE:\n {\n let nre = re;\n for (let i = 0; i < re.subs.length; i++) {\n const sub = re.subs[i];\n const nsub = Simplify.simplify(sub);\n if (nre === re && nsub !== sub) {\n nre = Regexp.fromRegexp(re);\n nre.runes = [];\n nre.subs = re.subs.slice(0, re.subs.length);\n }\n if (nre !== re) {\n nre.subs[i] = nsub;\n }\n }\n return nre;\n }\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST:\n {\n const sub = Simplify.simplify(re.subs[0]);\n return Simplify.simplify1(re.op, re.flags, sub, re);\n }\n case Regexp.Op.REPEAT:\n {\n // Special special case: x{0} matches the empty string\n // and doesn't even need to consider x.\n if (re.min === 0 && re.max === 0) {\n return new Regexp(Regexp.Op.EMPTY_MATCH);\n }\n // The fun begins.\n const sub = Simplify.simplify(re.subs[0]);\n\n // x{n,} means at least n matches of x.\n if (re.max === -1) {\n // Special case: x{0,} is x*.\n if (re.min === 0) {\n return Simplify.simplify1(Regexp.Op.STAR, re.flags, sub, null);\n }\n // Special case: x{1,} is x+.\n if (re.min === 1) {\n return Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null);\n }\n // General case: x{4,} is xxxx+.\n const nre = new Regexp(Regexp.Op.CONCAT);\n const subs = [];\n for (let i = 0; i < re.min - 1; i++) {\n subs.push(sub);\n }\n subs.push(Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null));\n nre.subs = subs.slice(0);\n return nre;\n }\n // Special case x{0} handled above.\n\n // Special case: x{1} is just x.\n if (re.min === 1 && re.max === 1) {\n return sub;\n }\n\n // General case: x{n,m} means n copies of x and m copies of x?\n // The machine will do less work if we nest the final m copies,\n // so that x{2,5} = xx(x(x(x)?)?)?\n\n // Build leading prefix: xx.\n let prefixSubs = null;\n if (re.min > 0) {\n prefixSubs = [];\n for (let i = 0; i < re.min; i++) {\n prefixSubs.push(sub);\n }\n }\n\n // Build and attach suffix: (x(x(x)?)?)?\n if (re.max > re.min) {\n let suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, sub, null);\n for (let i = re.min + 1; i < re.max; i++) {\n const nre2 = new Regexp(Regexp.Op.CONCAT);\n nre2.subs = [sub, suffix];\n suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, nre2, null);\n }\n if (prefixSubs === null) {\n return suffix;\n }\n prefixSubs.push(suffix);\n }\n if (prefixSubs !== null) {\n const prefix = new Regexp(Regexp.Op.CONCAT);\n prefix.subs = prefixSubs.slice(0);\n return prefix;\n }\n\n // Some degenerate case like min > max or min < max < 0.\n // Handle as impossible match.\n return new Regexp(Regexp.Op.NO_MATCH);\n }\n }\n return re;\n }\n\n // simplify1 implements Simplify for the unary OpStar,\n // OpPlus, and OpQuest operators. It returns the simple regexp\n // equivalent to\n //\n // Regexp{Op: op, Flags: flags, Sub: {sub}}\n //\n // under the assumption that sub is already simple, and\n // without first allocating that structure. If the regexp\n // to be returned turns out to be equivalent to re, simplify1\n // returns re instead.\n //\n // simplify1 is factored out of Simplify because the implementation\n // for other operators generates these unary expressions.\n // Letting them call simplify1 makes sure the expressions they\n // generate are simple.\n static simplify1(op, flags, sub, re) {\n // Special case: repeat the empty string as much as\n // you want, but it's still the empty string.\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return sub;\n }\n\n // The operators are idempotent if the flags match.\n if (op === sub.op && (flags & RE2Flags.NON_GREEDY) === (sub.flags & RE2Flags.NON_GREEDY)) {\n return sub;\n }\n if (re !== null && re.op === op && (re.flags & RE2Flags.NON_GREEDY) === (flags & RE2Flags.NON_GREEDY) && sub === re.subs[0]) {\n return re;\n }\n re = new Regexp(op);\n re.flags = flags;\n re.subs = [sub];\n return re;\n }\n}\n\n// GENERATED BY tools/scripts/make_perl_groups.pl; DO NOT EDIT.\n// ./tools/scripts/make_perl_groups.pl > src/CharGroup.js\n\nclass CharGroup {\n constructor(sign, cls) {\n this.sign = sign;\n this.cls = cls;\n }\n}\nconst code1 = [0x30, 0x39];\nconst code2 = [0x9, 0xa, 0xc, 0xd, 0x20, 0x20];\nconst code3 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a];\nconst PERL_GROUPS = new Map([['\\\\d', new CharGroup(1, code1)], ['\\\\D', new CharGroup(-1, code1)], ['\\\\s', new CharGroup(1, code2)], ['\\\\S', new CharGroup(-1, code2)], ['\\\\w', new CharGroup(1, code3)], ['\\\\W', new CharGroup(-1, code3)]]);\nconst code4 = [0x30, 0x39, 0x41, 0x5a, 0x61, 0x7a];\nconst code5 = [0x41, 0x5a, 0x61, 0x7a];\nconst code6 = [0x0, 0x7f];\nconst code7 = [0x9, 0x9, 0x20, 0x20];\nconst code8 = [0x0, 0x1f, 0x7f, 0x7f];\nconst code9 = [0x30, 0x39];\nconst code10 = [0x21, 0x7e];\nconst code11 = [0x61, 0x7a];\nconst code12 = [0x20, 0x7e];\nconst code13 = [0x21, 0x2f, 0x3a, 0x40, 0x5b, 0x60, 0x7b, 0x7e];\nconst code14 = [0x9, 0xd, 0x20, 0x20];\nconst code15 = [0x41, 0x5a];\nconst code16 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a];\nconst code17 = [0x30, 0x39, 0x41, 0x46, 0x61, 0x66];\nconst POSIX_GROUPS = new Map([['[:alnum:]', new CharGroup(1, code4)], ['[:^alnum:]', new CharGroup(-1, code4)], ['[:alpha:]', new CharGroup(1, code5)], ['[:^alpha:]', new CharGroup(-1, code5)], ['[:ascii:]', new CharGroup(1, code6)], ['[:^ascii:]', new CharGroup(-1, code6)], ['[:blank:]', new CharGroup(1, code7)], ['[:^blank:]', new CharGroup(-1, code7)], ['[:cntrl:]', new CharGroup(1, code8)], ['[:^cntrl:]', new CharGroup(-1, code8)], ['[:digit:]', new CharGroup(1, code9)], ['[:^digit:]', new CharGroup(-1, code9)], ['[:graph:]', new CharGroup(1, code10)], ['[:^graph:]', new CharGroup(-1, code10)], ['[:lower:]', new CharGroup(1, code11)], ['[:^lower:]', new CharGroup(-1, code11)], ['[:print:]', new CharGroup(1, code12)], ['[:^print:]', new CharGroup(-1, code12)], ['[:punct:]', new CharGroup(1, code13)], ['[:^punct:]', new CharGroup(-1, code13)], ['[:space:]', new CharGroup(1, code14)], ['[:^space:]', new CharGroup(-1, code14)], ['[:upper:]', new CharGroup(1, code15)], ['[:^upper:]', new CharGroup(-1, code15)], ['[:word:]', new CharGroup(1, code16)], ['[:^word:]', new CharGroup(-1, code16)], ['[:xdigit:]', new CharGroup(1, code17)], ['[:^xdigit:]', new CharGroup(-1, code17)]]);\n\n/**\n * A \"builder\"-style helper class for manipulating character classes represented as an array of\n * pairs of runes [lo, hi], each denoting an inclusive interval.\n *\n * All methods mutate the internal state and return {@code this}, allowing operations to be chained.\n */\nclass CharClass {\n // Exposed, since useful for debugging CharGroups too.\n static charClassToString(r, len) {\n let result = '[';\n for (let i = 0; i < len; i += 2) {\n if (i > 0) {\n result += ' ';\n }\n const lo = r[i];\n const hi = r[i + 1];\n if (lo === hi) {\n result += `0x${lo.toString(16)}`;\n } else {\n result += `0x${lo.toString(16)}-0x${hi.toString(16)}`;\n }\n }\n result += ']';\n return result;\n }\n\n // cmp() returns the ordering of the pair (a[i], a[i+1]) relative to\n // (pivotFrom, pivotTo), where the first component of the pair (lo) is\n // ordered naturally and the second component (hi) is in reverse order.\n static cmp(array, i, pivotFrom, pivotTo) {\n const cmp = array[i] - pivotFrom;\n return cmp !== 0 ? cmp : pivotTo - array[i + 1];\n }\n\n // qsortIntPair() quicksorts pairs of ints in |array| according to lt().\n // Precondition: |left|, |right|, |this.len| must all be even; |this.len > 1|.\n static qsortIntPair(array, left, right) {\n const pivotIndex = ((left + right) / 2 | 0) & -2;\n const pivotFrom = array[pivotIndex];\n const pivotTo = array[pivotIndex + 1];\n let i = left;\n let j = right;\n while (i <= j) {\n while (i < right && CharClass.cmp(array, i, pivotFrom, pivotTo) < 0) {\n i += 2;\n }\n while (j > left && CharClass.cmp(array, j, pivotFrom, pivotTo) > 0) {\n j -= 2;\n }\n if (i <= j) {\n if (i !== j) {\n let temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n temp = array[i + 1];\n array[i + 1] = array[j + 1];\n array[j + 1] = temp;\n }\n i += 2;\n j -= 2;\n }\n }\n if (left < j) {\n CharClass.qsortIntPair(array, left, j);\n }\n if (i < right) {\n CharClass.qsortIntPair(array, i, right);\n }\n }\n constructor(r = Utils.emptyInts()) {\n this.r = r; // inclusive ranges, pairs of [lo,hi]. r.length is even.\n this.len = r.length; // prefix of |r| that is defined. Even.\n }\n\n // Returns the character class as an int array. Subsequent CharClass\n // operations may mutate this array, so typically this is the last operation\n // performed on a given CharClass instance.\n toArray() {\n if (this.len === this.r.length) {\n return this.r;\n } else {\n return this.r.slice(0, this.len);\n }\n }\n\n // cleanClass() sorts the ranges (pairs of elements) of this CharClass,\n // merges them, and eliminates duplicates.\n cleanClass() {\n if (this.len < 4) {\n return this;\n }\n // Sort by lo increasing, hi decreasing to break ties.\n CharClass.qsortIntPair(this.r, 0, this.len - 2);\n // Merge abutting, overlapping.\n let w = 2; // write index\n for (let i = 2; i < this.len; i += 2) {\n {\n const lo = this.r[i];\n const hi = this.r[i + 1];\n if (lo <= this.r[w - 1] + 1) {\n // merge with previous range\n if (hi > this.r[w - 1]) {\n this.r[w - 1] = hi;\n }\n continue;\n }\n // new disjoint range\n this.r[w] = lo;\n this.r[w + 1] = hi;\n w += 2;\n }\n }\n this.len = w;\n return this;\n }\n\n // appendLiteral() appends the literal |x| to this CharClass.\n appendLiteral(x, flags) {\n return (flags & RE2Flags.FOLD_CASE) !== 0 ? this.appendFoldedRange(x, x) : this.appendRange(x, x);\n }\n\n // appendRange() appends the range [lo-hi] (inclusive) to this CharClass.\n appendRange(lo, hi) {\n // Expand last range or next to last range if it overlaps or abuts.\n // Checking two ranges helps when appending case-folded\n // alphabets, so that one range can be expanding A-Z and the\n // other expanding a-z.\n if (this.len > 0) {\n for (let i = 2; i <= 4; i += 2) {\n // twice, using i=2, i=4\n if (this.len >= i) {\n const rlo = this.r[this.len - i];\n const rhi = this.r[this.len - i + 1];\n if (lo <= rhi + 1 && rlo <= hi + 1) {\n if (lo < rlo) {\n this.r[this.len - i] = lo;\n }\n if (hi > rhi) {\n this.r[this.len - i + 1] = hi;\n }\n return this;\n }\n }\n }\n }\n this.r[this.len++] = lo;\n this.r[this.len++] = hi;\n return this;\n }\n\n // appendFoldedRange() appends the range [lo-hi] and its case\n // folding-equivalent runes to this CharClass.\n appendFoldedRange(lo, hi) {\n // Optimizations.\n if (lo <= Unicode.MIN_FOLD && hi >= Unicode.MAX_FOLD) {\n // Range is full: folding can't add more.\n return this.appendRange(lo, hi);\n }\n if (hi < Unicode.MIN_FOLD || lo > Unicode.MAX_FOLD) {\n // Range is outside folding possibilities.\n return this.appendRange(lo, hi);\n }\n if (lo < Unicode.MIN_FOLD) {\n // [lo, minFold-1] needs no folding.\n this.appendRange(lo, Unicode.MIN_FOLD - 1);\n lo = Unicode.MIN_FOLD;\n }\n if (hi > Unicode.MAX_FOLD) {\n // [maxFold+1, hi] needs no folding.\n this.appendRange(Unicode.MAX_FOLD + 1, hi);\n hi = Unicode.MAX_FOLD;\n }\n\n // Brute force. Depend on appendRange to coalesce ranges on the fly.\n for (let c = lo; c <= hi; c++) {\n this.appendRange(c, c);\n for (let f = Unicode.simpleFold(c); f !== c; f = Unicode.simpleFold(f)) {\n this.appendRange(f, f);\n }\n }\n return this;\n }\n\n // appendClass() appends the class |x| to this CharClass.\n // It assumes |x| is clean. Does not mutate |x|.\n appendClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendRange(x[i], x[i + 1]);\n }\n return this;\n }\n\n // appendFoldedClass() appends the case folding of the class |x| to this\n // CharClass. Does not mutate |x|.\n appendFoldedClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendFoldedRange(x[i], x[i + 1]);\n }\n return this;\n }\n\n // appendNegatedClass() append the negation of the class |x| to this\n // CharClass. It assumes |x| is clean. Does not mutate |x|.\n appendNegatedClass(x) {\n let nextLo = 0;\n for (let i = 0; i < x.length; i += 2) {\n const lo = x[i];\n const hi = x[i + 1];\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1);\n }\n nextLo = hi + 1;\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE);\n }\n return this;\n }\n\n // appendTable() appends the Unicode range table |table| to this CharClass.\n // Does not mutate |table|.\n appendTable(table) {\n for (let triple of table) {\n const lo = triple[0];\n const hi = triple[1];\n const stride = triple[2];\n if (stride === 1) {\n this.appendRange(lo, hi);\n continue;\n }\n for (let c = lo; c <= hi; c += stride) {\n this.appendRange(c, c);\n }\n }\n return this;\n }\n\n // appendNegatedTable() returns the result of appending the negation of range\n // table |table| to this CharClass. Does not mutate |table|.\n appendNegatedTable(table) {\n let nextLo = 0;\n for (let triple of table) {\n const lo = triple[0];\n const hi = triple[1];\n const stride = triple[2];\n if (stride === 1) {\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1);\n }\n nextLo = hi + 1;\n continue;\n }\n for (let c = lo; c <= hi; c += stride) {\n if (nextLo <= c - 1) {\n this.appendRange(nextLo, c - 1);\n }\n nextLo = c + 1;\n }\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE);\n }\n return this;\n }\n\n // appendTableWithSign() calls append{,Negated}Table depending on sign.\n // Does not mutate |table|.\n appendTableWithSign(table, sign) {\n return sign < 0 ? this.appendNegatedTable(table) : this.appendTable(table);\n }\n\n // negateClass() negates this CharClass, which must already be clean.\n negateClass() {\n let nextLo = 0; // lo end of next class to add\n let w = 0; // write index\n for (let i = 0; i < this.len; i += 2) {\n const lo = this.r[i];\n const hi = this.r[i + 1];\n if (nextLo <= lo - 1) {\n this.r[w] = nextLo;\n this.r[w + 1] = lo - 1;\n w += 2;\n }\n nextLo = hi + 1;\n }\n this.len = w;\n if (nextLo <= Unicode.MAX_RUNE) {\n this.r[this.len++] = nextLo;\n this.r[this.len++] = Unicode.MAX_RUNE;\n }\n return this;\n }\n\n // appendClassWithSign() calls appendClass() if sign is +1 or\n // appendNegatedClass if sign is -1. Does not mutate |x|.\n appendClassWithSign(x, sign) {\n return sign < 0 ? this.appendNegatedClass(x) : this.appendClass(x);\n }\n\n // appendGroup() appends CharGroup |g| to this CharClass, folding iff\n // |foldCase|. Does not mutate |g|.\n appendGroup(g, foldCase) {\n let cls = g.cls;\n if (foldCase) {\n cls = new CharClass().appendFoldedClass(cls).cleanClass().toArray();\n }\n return this.appendClassWithSign(cls, g.sign);\n }\n toString() {\n return CharClass.charClassToString(this.r, this.len);\n }\n}\n\nclass Pair {\n static of(first, second) {\n return new Pair(first, second);\n }\n constructor(first, second) {\n this.first = first;\n this.second = second;\n }\n}\n\n// StringIterator: a stream of runes with an opaque cursor, permitting\n// rewinding. The units of the cursor are not specified beyond the\n// fact that ASCII characters are single width. (Cursor positions\n// could be UTF-8 byte indices, UTF-16 code indices or rune indices.)\n//\n// In particular, be careful with:\n// - skip: only use this to advance over ASCII characters\n// since these always have a width of 1.\n// - skipString: only use this to advance over strings which are\n// known to be at the current position, e.g. due to prior call to\n// lookingAt().\n// Only use pop() to advance over possibly non-ASCII runes.\nclass StringIterator {\n constructor(str) {\n this.str = str;\n this.position = 0;\n }\n\n // Returns the cursor position. Do not interpret the result!\n pos() {\n return this.position;\n }\n\n // Resets the cursor position to a previous value returned by pos().\n rewindTo(pos) {\n this.position = pos;\n }\n\n // Returns true unless the stream is exhausted.\n more() {\n return this.position < this.str.length;\n }\n\n // Returns the rune at the cursor position.\n // Precondition: |more()|.\n peek() {\n return this.str.codePointAt(this.position);\n }\n\n // Advances the cursor by |n| positions, which must be ASCII runes.\n //\n // (In practise, this is only ever used to skip over regexp\n // metacharacters that are ASCII, so there is no numeric difference\n // between indices into UTF-8 bytes, UTF-16 codes and runes.)\n skip(n) {\n this.position += n;\n }\n\n // Advances the cursor by the number of cursor positions in |s|.\n skipString(s) {\n this.position += s.length;\n }\n\n // Returns the rune at the cursor position, and advances the cursor\n // past it. Precondition: |more()|.\n pop() {\n const r = this.str.codePointAt(this.position);\n this.position += Utils.charCount(r);\n return r;\n }\n lookingAt(s) {\n return this.rest().startsWith(s);\n }\n\n // Returns the rest of the pattern as a Java UTF-16 string.\n rest() {\n return this.str.substring(this.position);\n }\n\n // Returns the substring from |beforePos| to the current position.\n // |beforePos| must have been previously returned by |pos()|.\n from(beforePos) {\n return this.str.substring(beforePos, this.position);\n }\n toString() {\n return this.rest();\n }\n}\n/**\n * A parser of regular expression patterns.\n *\n * The only public entry point is {@link #parse(String pattern, int flags)}.\n */\nclass Parser {\n // Unexpected error\n static ERR_INTERNAL_ERROR = 'regexp/syntax: internal error';\n\n // Parse errors\n static ERR_INVALID_CHAR_RANGE = 'invalid character class range';\n static ERR_INVALID_ESCAPE = 'invalid escape sequence';\n static ERR_INVALID_NAMED_CAPTURE = 'invalid named capture';\n static ERR_INVALID_PERL_OP = 'invalid or unsupported Perl syntax';\n static ERR_INVALID_REPEAT_OP = 'invalid nested repetition operator';\n static ERR_INVALID_REPEAT_SIZE = 'invalid repeat count';\n static ERR_MISSING_BRACKET = 'missing closing ]';\n static ERR_MISSING_PAREN = 'missing closing )';\n static ERR_MISSING_REPEAT_ARGUMENT = 'missing argument to repetition operator';\n static ERR_TRAILING_BACKSLASH = 'trailing backslash at end of expression';\n static ERR_DUPLICATE_NAMED_CAPTURE = 'duplicate capture group name';\n static ERR_UNEXPECTED_PAREN = 'unexpected )';\n static ERR_NESTING_DEPTH = 'expression nests too deeply';\n static ERR_LARGE = 'expression too large';\n\n // maxHeight is the maximum height of a regexp parse tree.\n // It is somewhat arbitrarily chosen, but the idea is to be large enough\n // that no one will actually hit in real use but at the same time small enough\n // that recursion on the Regexp tree will not hit the 1GB Go stack limit.\n // The maximum amount of stack for a single recursive frame is probably\n // closer to 1kB, so this could potentially be raised, but it seems unlikely\n // that people have regexps nested even this deeply.\n // We ran a test on Google's C++ code base and turned up only\n // a single use case with depth > 100; it had depth 128.\n // Using depth 1000 should be plenty of margin.\n // As an optimization, we don't even bother calculating heights\n // until we've allocated at least maxHeight Regexp structures.\n static MAX_HEIGHT = 1000;\n\n // maxSize is the maximum size of a compiled regexp in Insts.\n // It too is somewhat arbitrarily chosen, but the idea is to be large enough\n // to allow significant regexps while at the same time small enough that\n // the compiled form will not take up too much memory.\n // 128 MB is enough for a 3.3 million Inst structures, which roughly\n // corresponds to a 3.3 MB regexp.\n static MAX_SIZE = 3355443; // 128 << 20 / (5 * 8) (instSize = byte, 2 uint32, slice is 5 64-bit words)\n\n // maxRunes is the maximum number of runes allowed in a regexp tree\n // counting the runes in all the nodes.\n // Ignoring character classes p.numRunes is always less than the length of the regexp.\n // Character classes can make it much larger: each \\pL adds 1292 runes.\n // 128 MB is enough for 32M runes, which is over 26k \\pL instances.\n // Note that repetitions do not make copies of the rune slices,\n // so \\pL{1000} is only one rune slice, not 1000.\n // We could keep a cache of character classes we've seen,\n // so that all the \\pL we see use the same rune list,\n // but that doesn't remove the problem entirely:\n // consider something like [\\pL01234][\\pL01235][\\pL01236]...[\\pL^&*()].\n // And because the Rune slice is exposed directly in the Regexp,\n // there is not an opportunity to change the representation to allow\n // partial sharing between different character classes.\n // So the limit is the best we can do.\n static MAX_RUNES = 33554432; // 128 << 20 / 4 (runeSize, int32 is 4 bytes)\n\n // RangeTables are represented as int[][], a list of triples (start, end,\n // stride).\n static ANY_TABLE() {\n return [[0, Unicode.MAX_RUNE, 1]];\n }\n\n // unicodeTable() returns the Unicode RangeTable identified by name\n // and the table of additional fold-equivalent code points.\n // Returns null if |name| does not identify a Unicode character range.\n static unicodeTable(name) {\n if (name === 'Any') {\n return Pair.of(Parser.ANY_TABLE(), Parser.ANY_TABLE());\n }\n if (UnicodeTables.CATEGORIES.has(name)) {\n return Pair.of(UnicodeTables.CATEGORIES.get(name), UnicodeTables.FOLD_CATEGORIES.get(name));\n }\n if (UnicodeTables.SCRIPTS.has(name)) {\n return Pair.of(UnicodeTables.SCRIPTS.get(name), UnicodeTables.FOLD_SCRIPT.get(name));\n }\n return null;\n }\n\n // minFoldRune returns the minimum rune fold-equivalent to r.\n static minFoldRune(r) {\n if (r < Unicode.MIN_FOLD || r > Unicode.MAX_FOLD) {\n return r;\n }\n let min = r;\n const r0 = r;\n for (r = Unicode.simpleFold(r); r !== r0; r = Unicode.simpleFold(r)) {\n if (min > r) {\n min = r;\n }\n }\n return min;\n }\n\n // leadingRegexp returns the leading regexp that re begins with.\n // The regexp refers to storage in re or its children.\n static leadingRegexp(re) {\n if (re.op === Regexp.Op.EMPTY_MATCH) {\n return null;\n }\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n const sub = re.subs[0];\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return null;\n }\n return sub;\n }\n return re;\n }\n static literalRegexp(s, flags) {\n const re = new Regexp(Regexp.Op.LITERAL);\n re.flags = flags;\n re.runes = Utils.stringToRunes(s);\n return re;\n }\n /**\n * Parse regular expression pattern {@code pattern} with mode flags {@code flags}.\n * @param {string} pattern\n * @param {number} flags\n */\n static parse(pattern, flags) {\n return new Parser(pattern, flags).parseInternal();\n }\n\n // parseRepeat parses {min} (max=min) or {min,} (max=-1) or {min,max}.\n // If |t| is not of that form, it returns -1.\n // If |t| has the right form but the values are negative or too big,\n // it returns -2.\n // On success, returns a nonnegative number encoding min/max in the\n // high/low signed halfwords of the result. (Note: min >= 0; max may\n // be -1.)\n //\n // On success, advances |t| beyond the repeat; otherwise |t.pos()| is\n // undefined.\n static parseRepeat(t) {\n const start = t.pos();\n if (!t.more() || !t.lookingAt('{')) {\n return -1;\n }\n t.skip(1);\n const min = Parser.parseInt(t);\n if (min === -1) {\n return -1;\n }\n if (!t.more()) {\n return -1;\n }\n let max;\n if (!t.lookingAt(',')) {\n max = min;\n } else {\n t.skip(1);\n if (!t.more()) {\n return -1;\n }\n if (t.lookingAt('}')) {\n max = -1;\n } else if ((max = Parser.parseInt(t)) === -1) {\n return -1;\n }\n }\n if (!t.more() || !t.lookingAt('}')) {\n return -1;\n }\n t.skip(1);\n if (min < 0 || min > 1000 || max === -2 || max > 1000 || max >= 0 && min > max) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_SIZE, t.from(start));\n }\n return min << 16 | max & Unicode.MAX_BMP;\n }\n\n // isValidCaptureName reports whether name\n // is a valid capture name: [A-Za-z0-9_]+.\n // PCRE limits names to 32 bytes.\n // Python rejects names starting with digits.\n // We don't enforce either of those.\n static isValidCaptureName(name) {\n if (name.length === 0) {\n return false;\n }\n for (let i = 0; i < name.length; i++) {\n const c = name.codePointAt(i);\n if (c !== Codepoint.CODES.get('_') && !Utils.isalnum(c)) {\n return false;\n }\n }\n return true;\n }\n\n // parseInt parses a nonnegative decimal integer.\n // -1 => bad format. -2 => format ok, but integer overflow.\n static parseInt(t) {\n const start = t.pos();\n while (t.more() && t.peek() >= Codepoint.CODES.get('0') && t.peek() <= Codepoint.CODES.get('9')) {\n t.skip(1);\n }\n const n = t.from(start);\n if (n.length === 0 || n.length > 1 && n.codePointAt(0) === Codepoint.CODES.get('0')) {\n return -1;\n }\n if (n.length > 8) {\n return -2;\n }\n return parseFloat(n, 10);\n }\n\n // can this be represented as a character class?\n // single-rune literal string, char class, ., and .|\\n.\n static isCharClass(re) {\n return re.op === Regexp.Op.LITERAL && re.runes.length === 1 || re.op === Regexp.Op.CHAR_CLASS || re.op === Regexp.Op.ANY_CHAR_NOT_NL || re.op === Regexp.Op.ANY_CHAR;\n }\n\n // does re match r?\n static matchRune(re, r) {\n switch (re.op) {\n case Regexp.Op.LITERAL:\n return re.runes.length === 1 && re.runes[0] === r;\n case Regexp.Op.CHAR_CLASS:\n for (let i = 0; i < re.runes.length; i += 2) {\n if (re.runes[i] <= r && r <= re.runes[i + 1]) {\n return true;\n }\n }\n return false;\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return r !== Codepoint.CODES.get('\\n');\n case Regexp.Op.ANY_CHAR:\n return true;\n }\n return false;\n }\n\n // mergeCharClass makes dst = dst|src.\n // The caller must ensure that dst.Op >= src.Op,\n // to reduce the amount of copying.\n static mergeCharClass(dst, src) {\n switch (dst.op) {\n case Regexp.Op.ANY_CHAR:\n break;\n case Regexp.Op.ANY_CHAR_NOT_NL:\n if (Parser.matchRune(src, Codepoint.CODES.get('\\n'))) {\n dst.op = Regexp.Op.ANY_CHAR;\n }\n break;\n case Regexp.Op.CHAR_CLASS:\n if (src.op === Regexp.Op.LITERAL) {\n dst.runes = new CharClass(dst.runes).appendLiteral(src.runes[0], src.flags).toArray();\n } else {\n dst.runes = new CharClass(dst.runes).appendClass(src.runes).toArray();\n }\n break;\n case Regexp.Op.LITERAL:\n if (src.runes[0] === dst.runes[0] && src.flags === dst.flags) {\n break;\n }\n dst.op = Regexp.Op.CHAR_CLASS;\n dst.runes = new CharClass().appendLiteral(dst.runes[0], dst.flags).appendLiteral(src.runes[0], src.flags).toArray();\n break;\n }\n }\n\n // parseEscape parses an escape sequence at the beginning of s\n // and returns the rune.\n // Pre: t at '\\\\'. Post: after escape.\n static parseEscape(t) {\n const startPos = t.pos();\n t.skip(1); // '\\\\'\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_TRAILING_BACKSLASH);\n }\n let c = t.pop();\n bigswitch: switch (c) {\n case Codepoint.CODES.get('1'):\n case Codepoint.CODES.get('2'):\n case Codepoint.CODES.get('3'):\n case Codepoint.CODES.get('4'):\n case Codepoint.CODES.get('5'):\n case Codepoint.CODES.get('6'):\n case Codepoint.CODES.get('7'):\n {\n if (!t.more() || t.peek() < Codepoint.CODES.get('0') || t.peek() > Codepoint.CODES.get('7')) {\n break;\n }\n }\n // eslint-disable-next-line no-fallthrough\n case Codepoint.CODES.get('0'):\n {\n let r = c - Codepoint.CODES.get('0');\n for (let i = 1; i < 3; i++) {\n if (!t.more() || t.peek() < Codepoint.CODES.get('0') || t.peek() > Codepoint.CODES.get('7')) {\n break;\n }\n r = r * 8 + t.peek() - Codepoint.CODES.get('0');\n t.skip(1);\n }\n return r;\n }\n case Codepoint.CODES.get('x'):\n {\n if (!t.more()) {\n break;\n }\n c = t.pop();\n if (c === Codepoint.CODES.get('{')) {\n let nhex = 0;\n let r = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!t.more()) {\n break bigswitch;\n }\n c = t.pop();\n if (c === Codepoint.CODES.get('}')) {\n break;\n }\n const v = Utils.unhex(c);\n if (v < 0) {\n break bigswitch;\n }\n r = r * 16 + v;\n if (r > Unicode.MAX_RUNE) {\n break bigswitch;\n }\n nhex++;\n }\n if (nhex === 0) {\n break bigswitch;\n }\n return r;\n }\n const x = Utils.unhex(c);\n if (!t.more()) {\n break;\n }\n c = t.pop();\n const y = Utils.unhex(c);\n if (x < 0 || y < 0) {\n break;\n }\n return x * 16 + y;\n }\n case Codepoint.CODES.get('a'):\n return Codepoint.CODES.get('\\x07');\n case Codepoint.CODES.get('f'):\n return Codepoint.CODES.get('\\f');\n case Codepoint.CODES.get('n'):\n return Codepoint.CODES.get('\\n');\n case Codepoint.CODES.get('r'):\n return Codepoint.CODES.get('\\r');\n case Codepoint.CODES.get('t'):\n return Codepoint.CODES.get('\\t');\n case Codepoint.CODES.get('v'):\n return Codepoint.CODES.get('\\v');\n default:\n if (c <= Unicode.MAX_ASCII && !Utils.isalnum(c)) {\n return c;\n }\n break;\n }\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, t.from(startPos));\n }\n\n // parseClassChar parses a character class character and returns it.\n // wholeClassPos is the position of the start of the entire class \"[...\".\n // Pre: t at class char; Post: t after it.\n static parseClassChar(t, wholeClassPos) {\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_BRACKET, t.from(wholeClassPos));\n }\n if (t.lookingAt('\\\\')) {\n return Parser.parseEscape(t);\n }\n return t.pop();\n }\n static concatRunes(x, y) {\n return [...x, ...y];\n }\n constructor(wholeRegexp, flags = 0) {\n this.wholeRegexp = wholeRegexp;\n // Flags control the behavior of the parser and record information about\n // regexp context.\n this.flags = flags;\n // number of capturing groups seen\n this.numCap = 0;\n this.namedGroups = {};\n // Stack of parsed expressions.\n this.stack = [];\n this.free = null;\n // checks\n this.numRegexp = 0; // number of regexps allocated\n this.numRunes = 0; // number of runes in char classes\n this.repeats = 0; // product of all repetitions seen\n this.height = null; // regexp height, for height limit check\n this.size = null; // regexp compiled size, for size limit check\n }\n\n // Allocate a Regexp, from the free list if possible.\n newRegexp(op) {\n let re = this.free;\n if (re !== null && re.subs !== null && re.subs.length > 0) {\n this.free = re.subs[0];\n re.reinit();\n re.op = op;\n } else {\n re = new Regexp(op);\n this.numRegexp += 1;\n }\n return re;\n }\n reuse(re) {\n if (this.height !== null && Object.prototype.hasOwnProperty.call(this.height, re)) {\n delete this.height[re];\n }\n if (re.subs !== null && re.subs.length > 0) {\n re.subs[0] = this.free;\n }\n this.free = re;\n }\n checkLimits(re) {\n if (this.numRunes > Parser.MAX_RUNES) {\n throw new RE2JSSyntaxException(Parser.ERR_LARGE);\n }\n this.checkSize(re);\n this.checkHeight(re);\n }\n checkSize(re) {\n if (this.size === null) {\n // We haven't started tracking size yet.\n // Do a relatively cheap check to see if we need to start.\n // Maintain the product of all the repeats we've seen\n // and don't track if the total number of regexp nodes\n // we've seen times the repeat product is in budget.\n if (this.repeats === 0) {\n this.repeats = 1;\n }\n if (re.op === Regexp.Op.REPEAT) {\n let n = re.max;\n if (n === -1) {\n n = re.min;\n }\n if (n <= 0) {\n n = 1;\n }\n if (n > Parser.MAX_SIZE / this.repeats) {\n this.repeats = Parser.MAX_SIZE;\n } else {\n this.repeats *= n;\n }\n }\n if (this.numRegexp < Parser.MAX_SIZE / this.repeats) {\n return;\n }\n\n // We need to start tracking size.\n // Make the map and belatedly populate it\n // with info about everything we've constructed so far.\n this.size = {};\n for (let reEx of this.stack) {\n this.checkSize(reEx);\n }\n }\n if (this.calcSize(re, true) > Parser.MAX_SIZE) {\n throw new RE2JSSyntaxException(Parser.ERR_LARGE);\n }\n }\n calcSize(re, force = false) {\n if (!force) {\n if (Object.prototype.hasOwnProperty.call(this.size, re)) {\n return this.size[re];\n }\n }\n let size = 0;\n switch (re.op) {\n case Regexp.Op.LITERAL:\n {\n size = re.runes.length;\n break;\n }\n case Regexp.Op.CAPTURE:\n case Regexp.Op.STAR:\n {\n // star can be 1+ or 2+; assume 2 pessimistically\n size = 2 + this.calcSize(re.subs[0]);\n break;\n }\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST:\n {\n size = 1 + this.calcSize(re.subs[0]);\n break;\n }\n case Regexp.Op.CONCAT:\n {\n for (let sub of re.subs) {\n size = size + this.calcSize(sub);\n }\n break;\n }\n case Regexp.Op.ALTERNATE:\n {\n for (let sub of re.subs) {\n size = size + this.calcSize(sub);\n }\n if (re.subs.length > 1) {\n size = size + re.subs.length - 1;\n }\n break;\n }\n case Regexp.Op.REPEAT:\n {\n let sub = this.calcSize(re.subs[0]);\n if (re.max === -1) {\n if (re.min === 0) {\n size = 2 + sub; // x*\n } else {\n size = 1 + re.min * sub; // xxx+\n }\n break;\n }\n // x{2,5} = xx(x(x(x)?)?)?\n size = re.max * sub + (re.max - re.min);\n break;\n }\n }\n size = Math.max(1, size);\n this.size[re] = size;\n return size;\n }\n checkHeight(re) {\n if (this.numRegexp < Parser.MAX_HEIGHT) {\n return;\n }\n if (this.height === null) {\n this.height = {};\n for (let reEx of this.stack) {\n this.checkHeight(reEx);\n }\n }\n if (this.calcHeight(re, true) > Parser.MAX_HEIGHT) {\n throw new RE2JSSyntaxException(Parser.ERR_NESTING_DEPTH);\n }\n }\n calcHeight(re, force = false) {\n if (!force) {\n if (Object.prototype.hasOwnProperty.call(this.height, re)) {\n return this.height[re];\n }\n }\n let h = 1;\n for (let sub of re.subs) {\n const hsub = this.calcHeight(sub);\n if (h < 1 + hsub) {\n h = 1 + hsub;\n }\n }\n this.height[re] = h;\n return h;\n }\n\n // Parse stack manipulation.\n\n pop() {\n return this.stack.pop();\n }\n popToPseudo() {\n const n = this.stack.length;\n let i = n;\n while (i > 0 && !Regexp.isPseudoOp(this.stack[i - 1].op)) {\n i--;\n }\n const r = this.stack.slice(i, n);\n this.stack = this.stack.slice(0, i);\n return r;\n }\n\n // push pushes the regexp re onto the parse stack and returns the regexp.\n // Returns null for a CHAR_CLASS that can be merged with the top-of-stack.\n push(re) {\n this.numRunes += re.runes.length;\n if (re.op === Regexp.Op.CHAR_CLASS && re.runes.length === 2 && re.runes[0] === re.runes[1]) {\n if (this.maybeConcat(re.runes[0], this.flags & -2)) {\n return null;\n }\n re.op = Regexp.Op.LITERAL;\n re.runes = [re.runes[0]];\n re.flags = this.flags & -2;\n } else if (re.op === Regexp.Op.CHAR_CLASS && re.runes.length === 4 && re.runes[0] === re.runes[1] && re.runes[2] === re.runes[3] && Unicode.simpleFold(re.runes[0]) === re.runes[2] && Unicode.simpleFold(re.runes[2]) === re.runes[0] || re.op === Regexp.Op.CHAR_CLASS && re.runes.length === 2 && re.runes[0] + 1 === re.runes[1] && Unicode.simpleFold(re.runes[0]) === re.runes[1] && Unicode.simpleFold(re.runes[1]) === re.runes[0]) {\n // Case-insensitive rune like [Aa] or [Δδ].\n if (this.maybeConcat(re.runes[0], this.flags | RE2Flags.FOLD_CASE)) {\n return null;\n }\n // Rewrite as (case-insensitive) literal.\n re.op = Regexp.Op.LITERAL;\n re.runes = [re.runes[0]];\n re.flags = this.flags | RE2Flags.FOLD_CASE;\n } else {\n // Incremental concatenation.\n this.maybeConcat(-1, 0);\n }\n this.stack.push(re);\n this.checkLimits(re);\n return re;\n }\n\n // maybeConcat implements incremental concatenation\n // of literal runes into string nodes. The parser calls this\n // before each push, so only the top fragment of the stack\n // might need processing. Since this is called before a push,\n // the topmost literal is no longer subject to operators like *\n // (Otherwise ab* would turn into (ab)*.)\n // If (r >= 0 and there's a node left over, maybeConcat uses it\n // to push r with the given flags.\n // maybeConcat reports whether r was pushed.\n maybeConcat(r, flags) {\n const n = this.stack.length;\n if (n < 2) {\n return false;\n }\n const re1 = this.stack[n - 1];\n const re2 = this.stack[n - 2];\n if (re1.op !== Regexp.Op.LITERAL || re2.op !== Regexp.Op.LITERAL || (re1.flags & RE2Flags.FOLD_CASE) !== (re2.flags & RE2Flags.FOLD_CASE)) {\n return false;\n }\n // Push re1 into re2.\n re2.runes = Parser.concatRunes(re2.runes, re1.runes);\n // Reuse re1 if possible.\n if (r >= 0) {\n re1.runes = [r];\n re1.flags = flags;\n return true;\n }\n this.pop();\n this.reuse(re1);\n return false; // did not push r\n }\n\n // newLiteral returns a new LITERAL Regexp with the given flags\n newLiteral(r, flags) {\n const re = this.newRegexp(Regexp.Op.LITERAL);\n re.flags = flags;\n if ((flags & RE2Flags.FOLD_CASE) !== 0) {\n r = Parser.minFoldRune(r);\n }\n re.runes = [r];\n return re;\n }\n\n // literal pushes a literal regexp for the rune r on the stack\n // and returns that regexp.\n literal(r) {\n this.push(this.newLiteral(r, this.flags));\n }\n\n // op pushes a regexp with the given op onto the stack\n // and returns that regexp.\n op(op) {\n const re = this.newRegexp(op);\n re.flags = this.flags;\n return this.push(re);\n }\n\n // repeat replaces the top stack element with itself repeated according to\n // op, min, max. beforePos is the start position of the repetition operator.\n // Pre: t is positioned after the initial repetition operator.\n // Post: t advances past an optional perl-mode '?', or stays put.\n // Or, it fails with RE2JSSyntaxException.\n repeat(op, min, max, beforePos, t, lastRepeatPos) {\n let flags = this.flags;\n if ((flags & RE2Flags.PERL_X) !== 0) {\n if (t.more() && t.lookingAt('?')) {\n t.skip(1);\n flags ^= RE2Flags.NON_GREEDY;\n }\n if (lastRepeatPos !== -1) {\n // In Perl it is not allowed to stack repetition operators:\n // a** is a syntax error, not a doubled star, and a++ means\n // something else entirely, which we don't support!\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_OP, t.from(lastRepeatPos));\n }\n }\n const n = this.stack.length;\n if (n === 0) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos));\n }\n const sub = this.stack[n - 1];\n if (Regexp.isPseudoOp(sub.op)) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos));\n }\n const re = this.newRegexp(op);\n re.min = min;\n re.max = max;\n re.flags = flags;\n re.subs = [sub];\n this.stack[n - 1] = re;\n this.checkLimits(re);\n if (op === Regexp.Op.REPEAT && (min >= 2 || max >= 2) && !this.repeatIsValid(re, 1000)) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_SIZE, t.from(beforePos));\n }\n }\n\n // repeatIsValid reports whether the repetition re is valid.\n // Valid means that the combination of the top-level repetition\n // and any inner repetitions does not exceed n copies of the\n // innermost thing.\n // This function rewalks the regexp tree and is called for every repetition,\n // so we have to worry about inducing quadratic behavior in the parser.\n // We avoid this by only calling repeatIsValid when min or max >= 2.\n // In that case the depth of any >= 2 nesting can only get to 9 without\n // triggering a parse error, so each subtree can only be rewalked 9 times.\n repeatIsValid(re, n) {\n if (re.op === Regexp.Op.REPEAT) {\n let m = re.max;\n if (m === 0) {\n return true;\n }\n if (m < 0) {\n m = re.min;\n }\n if (m > n) {\n return false;\n }\n if (m > 0) {\n n = Math.trunc(n / m);\n }\n }\n for (let sub of re.subs) {\n if (!this.repeatIsValid(sub, n)) {\n return false;\n }\n }\n return true;\n }\n\n // concat replaces the top of the stack (above the topmost '|' or '(') with\n // its concatenation.\n concat() {\n this.maybeConcat(-1, 0);\n const subs = this.popToPseudo();\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.EMPTY_MATCH));\n }\n return this.push(this.collapse(subs, Regexp.Op.CONCAT));\n }\n\n // alternate replaces the top of the stack (above the topmost '(') with its\n // alternation.\n alternate() {\n // Scan down to find pseudo-operator (.\n // There are no | above (.\n const subs = this.popToPseudo();\n // Make sure top class is clean.\n // All the others already are (see swapVerticalBar).\n if (subs.length > 0) {\n this.cleanAlt(subs[subs.length - 1]);\n }\n // Empty alternate is special case\n // (shouldn't happen but easy to handle).\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.NO_MATCH));\n }\n return this.push(this.collapse(subs, Regexp.Op.ALTERNATE));\n }\n\n // cleanAlt cleans re for eventual inclusion in an alternation.\n cleanAlt(re) {\n if (re.op === Regexp.Op.CHAR_CLASS) {\n re.runes = new CharClass(re.runes).cleanClass().toArray();\n if (re.runes.length === 2 && re.runes[0] === 0 && re.runes[1] === Unicode.MAX_RUNE) {\n re.runes = [];\n re.op = Regexp.Op.ANY_CHAR;\n } else if (re.runes.length === 4 && re.runes[0] === 0 && re.runes[1] === Codepoint.CODES.get('\\n') - 1 && re.runes[2] === Codepoint.CODES.get('\\n') + 1 && re.runes[3] === Unicode.MAX_RUNE) {\n re.runes = [];\n re.op = Regexp.Op.ANY_CHAR_NOT_NL;\n }\n }\n }\n\n // collapse returns the result of applying op to subs[start:end].\n // If (sub contains op nodes, they all get hoisted up\n // so that there is never a concat of a concat or an\n // alternate of an alternate.\n collapse(subs, op) {\n if (subs.length === 1) {\n return subs[0];\n }\n // Concatenate subs iff op is same.\n // Compute length in first pass.\n let len = 0;\n for (let sub of subs) {\n len += sub.op === op ? sub.subs.length : 1;\n }\n let newsubs = new Array(len).fill(null);\n let i = 0;\n for (let sub of subs) {\n if (sub.op === op) {\n newsubs.splice(i, sub.subs.length, ...sub.subs);\n i += sub.subs.length;\n this.reuse(sub);\n } else {\n newsubs[i++] = sub;\n }\n }\n let re = this.newRegexp(op);\n re.subs = newsubs;\n if (op === Regexp.Op.ALTERNATE) {\n // re.subs = this.factor(re.subs, re.flags)\n re.subs = this.factor(re.subs);\n if (re.subs.length === 1) {\n const old = re;\n re = re.subs[0];\n this.reuse(old);\n }\n }\n return re;\n }\n\n // factor factors common prefixes from the alternation list sub. It\n // returns a replacement list that reuses the same storage and frees\n // (passes to p.reuse) any removed *Regexps.\n //\n // For example,\n // ABC|ABD|AEF|BCX|BCY\n // simplifies by literal prefix extraction to\n // A(B(C|D)|EF)|BC(X|Y)\n // which simplifies by character class introduction to\n // A(B[CD]|EF)|BC[XY]\n //\n factor(array) {\n if (array.length < 2) {\n return array;\n }\n // The following code is subtle, because it's a literal JS\n // translation of code that makes clever use of Go \"slices\".\n // A slice is a triple (array, offset, length), and the Go\n // implementation uses two slices, |sub| and |out| backed by the\n // same array. In JS, we have to be explicit about all of these\n // variables, so:\n //\n // Go JS\n // sub (array, s, lensub)\n // out (array, 0, lenout) // (always a prefix of |array|)\n //\n // In the comments we'll use the logical notation of go slices, e.g. sub[i]\n // even though the JS code will read array[s + i].\n\n let s = 0; // offset of first |sub| within array.\n let lensub = array.length; // = len(sub)\n let lenout = 0; // = len(out)\n // Round 1: Factor out common literal prefixes.\n // Note: (str, strlen) and (istr, istrlen) are like Go slices\n // onto a prefix of some Regexp's runes array (hence offset=0).\n let str = null;\n let strlen = 0;\n let strflags = 0;\n let start = 0;\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (len <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin\n // with str as modified by strflags.\n let istr = null;\n let istrlen = 0;\n let iflags = 0;\n if (i < lensub) {\n // NB, we inlined Go's leadingString() since Java has no pair return.\n let re = array[s + i];\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n re = re.subs[0];\n }\n if (re.op === Regexp.Op.LITERAL) {\n istr = re.runes;\n istrlen = re.runes.length;\n iflags = re.flags & RE2Flags.FOLD_CASE;\n }\n // istr is the leading literal string that re begins with.\n // The string refers to storage in re or its children.\n if (iflags === strflags) {\n let same = 0;\n while (same < strlen && same < istrlen && str[same] === istr[same]) {\n same++;\n }\n if (same > 0) {\n // Matches at least one rune in current range.\n // Keep going around.\n strlen = same;\n continue;\n }\n }\n }\n // Found end of a run with common leading literal string:\n // sub[start:i] all begin with str[0:strlen], but sub[i]\n // does not even begin with str[0].\n //\n // Factor out common string and append factored expression to out.\n if (i === start) ; else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start];\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = this.newRegexp(Regexp.Op.LITERAL);\n prefix.flags = strflags;\n prefix.runes = str.slice(0, strlen);\n for (let j = start; j < i; j++) {\n array[s + j] = this.removeLeadingString(array[s + j], strlen);\n this.checkLimits(array[s + j]);\n }\n // Recurse.\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE);\n const re = this.newRegexp(Regexp.Op.CONCAT);\n re.subs = [prefix, suffix];\n array[lenout++] = re;\n }\n // Prepare for next iteration.\n start = i;\n str = istr;\n strlen = istrlen;\n strflags = iflags;\n }\n // In Go: sub = out\n lensub = lenout;\n s = 0;\n // Round 2: Factor out common complex prefixes,\n // just the first piece of each concatenation,\n // whatever it is. This is good enough a lot of the time.\n start = 0;\n lenout = 0;\n let first = null;\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin with\n // ifirst.\n let ifirst = null;\n if (i < lensub) {\n ifirst = Parser.leadingRegexp(array[s + i]);\n if (first !== null && first.equals(ifirst) && (Parser.isCharClass(first) || first.op === Regexp.Op.REPEAT && first.min === first.max && Parser.isCharClass(first.subs[0]))) {\n continue;\n }\n }\n // Found end of a run with common leading regexp:\n // sub[start:i] all begin with first but sub[i] does not.\n //\n // Factor out common regexp and append factored expression to out.\n if (i === start) ; else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start];\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = first;\n for (let j = start; j < i; j++) {\n const reuse = j !== start; // prefix came from sub[start]\n array[s + j] = this.removeLeadingRegexp(array[s + j], reuse);\n this.checkLimits(array[s + j]);\n }\n // recurse\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE);\n const re = this.newRegexp(Regexp.Op.CONCAT);\n re.subs = [prefix, suffix];\n array[lenout++] = re;\n }\n // Prepare for next iteration.\n start = i;\n first = ifirst;\n }\n // In Go: sub = out\n lensub = lenout;\n s = 0;\n // Round 3: Collapse runs of single literals into character classes.\n start = 0;\n lenout = 0;\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that are either\n // literal runes or character classes.\n if (i < lensub && Parser.isCharClass(array[s + i])) {\n continue;\n }\n // sub[i] is not a char or char class;\n // emit char class for sub[start:i]...\n if (i === start) ; else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start];\n } else {\n // Make new char class.\n // Start with most complex regexp in sub[start].\n let max = start;\n for (let j = start + 1; j < i; j++) {\n const subMax = array[s + max];\n const subJ = array[s + j];\n if (subMax.op < subJ.op || subMax.op === subJ.op && (subMax.runes !== null ? subMax.runes.length : 0) < (subJ.runes !== null ? subJ.runes.length : 0)) {\n max = j;\n }\n }\n // swap sub[start], sub[max].\n const tmp = array[s + start];\n array[s + start] = array[s + max];\n array[s + max] = tmp;\n for (let j = start + 1; j < i; j++) {\n Parser.mergeCharClass(array[s + start], array[s + j]);\n this.reuse(array[s + j]);\n }\n this.cleanAlt(array[s + start]);\n array[lenout++] = array[s + start];\n }\n // ... and then emit sub[i].\n if (i < lensub) {\n array[lenout++] = array[s + i];\n }\n start = i + 1;\n }\n // In Go: sub = out\n lensub = lenout;\n s = 0;\n // Round 4: Collapse runs of empty matches into a single empty match.\n start = 0;\n lenout = 0;\n for (let i = 0; i < lensub; ++i) {\n if (i + 1 < lensub && array[s + i].op === Regexp.Op.EMPTY_MATCH && array[s + i + 1].op === Regexp.Op.EMPTY_MATCH) {\n continue;\n }\n array[lenout++] = array[s + i];\n }\n // In Go: sub = out\n lensub = lenout;\n s = 0;\n return array.slice(s, lensub);\n }\n\n // removeLeadingString removes the first n leading runes\n // from the beginning of re. It returns the replacement for re.\n removeLeadingString(re, n) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n // Removing a leading string in a concatenation\n // might simplify the concatenation.\n const sub = this.removeLeadingString(re.subs[0], n);\n re.subs[0] = sub;\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n this.reuse(sub);\n switch (re.subs.length) {\n case 0:\n case 1:\n // Impossible but handle.\n re.op = Regexp.Op.EMPTY_MATCH;\n re.subs = null;\n break;\n case 2:\n {\n const old = re;\n re = re.subs[1];\n this.reuse(old);\n break;\n }\n default:\n re.subs = re.subs.slice(1, re.subs.length);\n break;\n }\n }\n return re;\n }\n if (re.op === Regexp.Op.LITERAL) {\n re.runes = re.runes.slice(n, re.runes.length);\n if (re.runes.length === 0) {\n re.op = Regexp.Op.EMPTY_MATCH;\n }\n }\n return re;\n }\n\n // removeLeadingRegexp removes the leading regexp in re.\n // It returns the replacement for re.\n // If reuse is true, it passes the removed regexp (if no longer needed) to\n // reuse.\n removeLeadingRegexp(re, reuse) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n if (reuse) {\n this.reuse(re.subs[0]);\n }\n re.subs = re.subs.slice(1, re.subs.length);\n switch (re.subs.length) {\n case 0:\n {\n re.op = Regexp.Op.EMPTY_MATCH;\n re.subs = Regexp.emptySubs();\n break;\n }\n case 1:\n {\n const old = re;\n re = re.subs[0];\n this.reuse(old);\n break;\n }\n }\n return re;\n }\n if (reuse) {\n this.reuse(re);\n }\n return this.newRegexp(Regexp.Op.EMPTY_MATCH);\n }\n parseInternal() {\n if ((this.flags & RE2Flags.LITERAL) !== 0) {\n // Trivial parser for literal string.\n return Parser.literalRegexp(this.wholeRegexp, this.flags);\n }\n // Otherwise, must do real work.\n let lastRepeatPos = -1;\n let min = -1;\n let max = -1;\n const t = new StringIterator(this.wholeRegexp);\n while (t.more()) {\n {\n let repeatPos = -1;\n bigswitch: switch (t.peek()) {\n case Codepoint.CODES.get('('):\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.lookingAt('(?')) {\n // Flag changes and non-capturing groups.\n this.parsePerlFlags(t);\n break;\n }\n this.op(Regexp.Op.LEFT_PAREN).cap = ++this.numCap;\n t.skip(1); // '('\n break;\n case Codepoint.CODES.get('|'):\n this.parseVerticalBar(); // '|'\n t.skip(1); // '|'\n break;\n case Codepoint.CODES.get(')'):\n this.parseRightParen();\n t.skip(1); // ')'\n break;\n case Codepoint.CODES.get('^'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.BEGIN_TEXT);\n } else {\n this.op(Regexp.Op.BEGIN_LINE);\n }\n t.skip(1); // '^'\n break;\n case Codepoint.CODES.get('$'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.END_TEXT).flags |= RE2Flags.WAS_DOLLAR;\n } else {\n this.op(Regexp.Op.END_LINE);\n }\n t.skip(1); // '$'\n break;\n case Codepoint.CODES.get('.'):\n if ((this.flags & RE2Flags.DOT_NL) !== 0) {\n this.op(Regexp.Op.ANY_CHAR);\n } else {\n this.op(Regexp.Op.ANY_CHAR_NOT_NL);\n }\n t.skip(1); // '.'\n break;\n case Codepoint.CODES.get('['):\n this.parseClass(t);\n break;\n case Codepoint.CODES.get('*'):\n case Codepoint.CODES.get('+'):\n case Codepoint.CODES.get('?'):\n {\n repeatPos = t.pos();\n let op = null;\n switch (t.pop()) {\n case Codepoint.CODES.get('*'):\n op = Regexp.Op.STAR;\n break;\n case Codepoint.CODES.get('+'):\n op = Regexp.Op.PLUS;\n break;\n case Codepoint.CODES.get('?'):\n op = Regexp.Op.QUEST;\n break;\n }\n this.repeat(op, min, max, repeatPos, t, lastRepeatPos);\n // (min and max are now dead.)\n break;\n }\n case Codepoint.CODES.get('{'):\n {\n repeatPos = t.pos();\n const minMax = Parser.parseRepeat(t);\n if (minMax < 0) {\n // If the repeat cannot be parsed, { is a literal.\n t.rewindTo(repeatPos);\n this.literal(t.pop()); // '{'\n break;\n }\n min = minMax >> 16;\n max = (minMax & Unicode.MAX_BMP) << 16 >> 16;\n this.repeat(Regexp.Op.REPEAT, min, max, repeatPos, t, lastRepeatPos);\n break;\n }\n case Codepoint.CODES.get('\\\\'):\n {\n const savedPos = t.pos();\n t.skip(1); // '\\\\'\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.more()) {\n const c = t.pop();\n switch (c) {\n case Codepoint.CODES.get('A'):\n this.op(Regexp.Op.BEGIN_TEXT);\n break bigswitch;\n case Codepoint.CODES.get('b'):\n this.op(Regexp.Op.WORD_BOUNDARY);\n break bigswitch;\n case Codepoint.CODES.get('B'):\n this.op(Regexp.Op.NO_WORD_BOUNDARY);\n break bigswitch;\n case Codepoint.CODES.get('C'):\n // any byte; not supported\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, '\\\\C');\n case Codepoint.CODES.get('Q'):\n {\n // \\Q ... \\E: the ... is always literals\n let lit = t.rest();\n const i = lit.indexOf('\\\\E');\n if (i >= 0) {\n lit = lit.substring(0, i);\n }\n t.skipString(lit);\n t.skipString('\\\\E');\n let j = 0;\n while (j < lit.length) {\n const codepoint = lit.codePointAt(j);\n this.literal(codepoint);\n j += Utils.charCount(codepoint);\n }\n break bigswitch;\n }\n case Codepoint.CODES.get('z'):\n this.op(Regexp.Op.END_TEXT);\n break bigswitch;\n default:\n t.rewindTo(savedPos);\n break;\n }\n }\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS);\n re.flags = this.flags;\n // Look for Unicode character group like \\p{Han}\n if (t.lookingAt('\\\\p') || t.lookingAt('\\\\P')) {\n const cc = new CharClass();\n if (this.parseUnicodeClass(t, cc)) {\n re.runes = cc.toArray();\n this.push(re);\n break bigswitch;\n }\n }\n // Perl character class escape.\n const cc = new CharClass();\n if (this.parsePerlClassEscape(t, cc)) {\n re.runes = cc.toArray();\n this.push(re);\n break bigswitch;\n }\n t.rewindTo(savedPos);\n this.reuse(re);\n // Ordinary single-character escape.\n this.literal(Parser.parseEscape(t));\n break;\n }\n default:\n this.literal(t.pop());\n break;\n }\n lastRepeatPos = repeatPos;\n }\n }\n this.concat();\n if (this.swapVerticalBar()) {\n this.pop(); // pop vertical bar\n }\n this.alternate();\n const n = this.stack.length;\n if (n !== 1) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_PAREN, this.wholeRegexp);\n }\n this.stack[0].namedGroups = this.namedGroups;\n return this.stack[0];\n }\n\n // parsePerlFlags parses a Perl flag setting or non-capturing group or both,\n // like (?i) or (?: or (?i:.\n // Pre: t at \"(?\". Post: t after \")\".\n // Sets numCap.\n parsePerlFlags(t) {\n const startPos = t.pos();\n // Check for named captures, first introduced in Python's regexp library.\n // As usual, there are three slightly different syntaxes:\n //\n // (?Pexpr) the original, introduced by Python\n // (?expr) the .NET alteration, adopted by Perl 5.10\n // (?'name'expr) another .NET alteration, adopted by Perl 5.10\n //\n // Perl 5.10 gave in and implemented the Python version too,\n // but they claim that the last two are the preferred forms.\n // PCRE and languages based on it (specifically, PHP and Ruby)\n // support all three as well. EcmaScript 4 uses only the Python form.\n //\n // In both the open source world (via Code Search) and the\n // Google source tree, (?Pexpr) and (?expr) are the\n // dominant forms of named captures and both are supported.\n const s = t.rest();\n if (s.startsWith('(?P<') || s.startsWith('(?<')) {\n // Pull out name.\n const begin = s.charAt(2) === 'P' ? 4 : 3;\n const end = s.indexOf('>');\n if (end < 0) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s);\n }\n const name = s.substring(begin, end); // \"name\"\n t.skipString(name);\n t.skip(begin + 1); // \"(?P<>\" or \"(?<>\"\n if (!Parser.isValidCaptureName(name)) {\n // \"(?P\"\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s.substring(0, end + 1)); // \"(?P\" or \"(?\"\n }\n // Like ordinary capture, but named.\n const re = this.op(Regexp.Op.LEFT_PAREN);\n re.cap = ++this.numCap;\n if (this.namedGroups[name]) {\n throw new RE2JSSyntaxException(Parser.ERR_DUPLICATE_NAMED_CAPTURE, name);\n }\n this.namedGroups[name] = this.numCap;\n re.name = name;\n return;\n }\n // Non-capturing group. Might also twiddle Perl flags.\n t.skip(2); // \"(?\"\n\n let flags = this.flags;\n let sign = 1;\n let sawFlag = false;\n loop: while (t.more()) {\n {\n const c = t.pop();\n switch (c) {\n case Codepoint.CODES.get('i'):\n flags |= RE2Flags.FOLD_CASE;\n sawFlag = true;\n break;\n case Codepoint.CODES.get('m'):\n flags &= -17;\n sawFlag = true;\n break;\n case Codepoint.CODES.get('s'):\n flags |= RE2Flags.DOT_NL;\n sawFlag = true;\n break;\n case Codepoint.CODES.get('U'):\n flags |= RE2Flags.NON_GREEDY;\n sawFlag = true;\n break;\n // Switch to negation.\n case Codepoint.CODES.get('-'):\n if (sign < 0) {\n break loop;\n }\n sign = -1;\n // Invert flags so that | above turn into &~ and vice versa.\n // We'll invert flags again before using it below.\n flags = ~flags;\n sawFlag = false;\n break;\n // End of flags, starting group or not.\n case Codepoint.CODES.get(':'):\n case Codepoint.CODES.get(')'):\n if (sign < 0) {\n if (!sawFlag) {\n break loop;\n }\n flags = ~flags;\n }\n if (c === Codepoint.CODES.get(':')) {\n // Open new group\n this.op(Regexp.Op.LEFT_PAREN);\n }\n this.flags = flags;\n return;\n default:\n // Flags.\n break loop;\n }\n }\n }\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_PERL_OP, t.from(startPos));\n }\n\n // parseVerticalBar handles a | in the input.\n parseVerticalBar() {\n this.concat();\n // The concatenation we just parsed is on top of the stack.\n // If it sits above an opVerticalBar, swap it below\n // (things below an opVerticalBar become an alternation).\n // Otherwise, push a new vertical bar.\n if (!this.swapVerticalBar()) {\n this.op(Regexp.Op.VERTICAL_BAR);\n }\n }\n\n // If the top of the stack is an element followed by an opVerticalBar\n // swapVerticalBar swaps the two and returns true.\n // Otherwise it returns false.\n swapVerticalBar() {\n const n = this.stack.length;\n // If above and below vertical bar are literal or char class,\n // can merge into a single char class.\n if (n >= 3 && this.stack[n - 2].op === Regexp.Op.VERTICAL_BAR && Parser.isCharClass(this.stack[n - 1]) && Parser.isCharClass(this.stack[n - 3])) {\n let re1 = this.stack[n - 1];\n let re3 = this.stack[n - 3];\n // Make re3 the more complex of the two.\n if (re1.op > re3.op) {\n const tmp = re3;\n re3 = re1;\n re1 = tmp;\n this.stack[n - 3] = re3;\n }\n Parser.mergeCharClass(re3, re1);\n this.reuse(re1);\n this.pop();\n return true;\n }\n if (n >= 2) {\n const re1 = this.stack[n - 1];\n const re2 = this.stack[n - 2];\n if (re2.op === Regexp.Op.VERTICAL_BAR) {\n if (n >= 3) {\n // Now out of reach.\n // Clean opportunistically.\n this.cleanAlt(this.stack[n - 3]);\n }\n this.stack[n - 2] = re1;\n this.stack[n - 1] = re2;\n return true;\n }\n }\n return false;\n }\n\n // parseRightParen handles a ')' in the input.\n parseRightParen() {\n this.concat();\n if (this.swapVerticalBar()) {\n this.pop(); // pop vertical bar\n }\n this.alternate();\n const n = this.stack.length;\n if (n < 2) {\n throw new RE2JSSyntaxException(Parser.ERR_UNEXPECTED_PAREN, this.wholeRegexp);\n }\n const re1 = this.pop();\n const re2 = this.pop();\n if (re2.op !== Regexp.Op.LEFT_PAREN) {\n throw new RE2JSSyntaxException(Parser.ERR_UNEXPECTED_PAREN, this.wholeRegexp);\n }\n // Restore flags at time of paren.\n this.flags = re2.flags;\n if (re2.cap === 0) {\n // Just for grouping.\n this.push(re1);\n } else {\n re2.op = Regexp.Op.CAPTURE;\n re2.subs = [re1];\n this.push(re2);\n }\n }\n\n // parsePerlClassEscape parses a leading Perl character class escape like \\d\n // from the beginning of |t|. If one is present, it appends the characters\n // to cc and returns true. The iterator is advanced past the escape\n // on success, undefined on failure, in which case false is returned.\n parsePerlClassEscape(t, cc) {\n const beforePos = t.pos();\n if ((this.flags & RE2Flags.PERL_X) === 0 || !t.more() || t.pop() !== Codepoint.CODES.get('\\\\') || !t.more()) {\n return false;\n }\n t.pop(); // e.g. advance past 'd' in \"\\\\d\"\n const p = t.from(beforePos);\n const g = PERL_GROUPS.has(p) ? PERL_GROUPS.get(p) : null;\n if (g === null) {\n return false;\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0);\n return true;\n }\n\n // parseNamedClass parses a leading POSIX named character class like\n // [:alnum:] from the beginning of t. If one is present, it appends the\n // characters to cc, advances the iterator, and returns true.\n // Pre: t at \"[:\". Post: t after \":]\".\n // On failure (no class of than name), throws RE2JSSyntaxException.\n // On misparse, returns false; t.pos() is undefined.\n parseNamedClass(t, cc) {\n // (Go precondition check deleted.)\n const cls = t.rest();\n const i = cls.indexOf(':]');\n if (i < 0) {\n return false;\n }\n const name = cls.substring(0, i + 2); // \"[:alnum:]\"\n t.skipString(name);\n const g = POSIX_GROUPS.has(name) ? POSIX_GROUPS.get(name) : null;\n if (g === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, name);\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0);\n return true;\n }\n\n // parseUnicodeClass() parses a leading Unicode character class like \\p{Han}\n // from the beginning of t. If one is present, it appends the characters to\n // to |cc|, advances |t| and returns true.\n //\n // Returns false if such a pattern is not present or UNICODE_GROUPS\n // flag is not enabled; |t.pos()| is not advanced in this case.\n // Indicates error by throwing RE2JSSyntaxException.\n parseUnicodeClass(t, cc) {\n const startPos = t.pos();\n if ((this.flags & RE2Flags.UNICODE_GROUPS) === 0 || !t.lookingAt('\\\\p') && !t.lookingAt('\\\\P')) {\n return false;\n }\n t.skip(1); // '\\\\'\n // Committed to parse or throw exception.\n let sign = 1;\n let c = t.pop(); // 'p' or 'P'\n if (c === Codepoint.CODES.get('P')) {\n sign = -1;\n }\n if (!t.more()) {\n t.rewindTo(startPos);\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest());\n }\n c = t.pop();\n let name;\n if (c !== Codepoint.CODES.get('{')) {\n // Single-letter name.\n name = Utils.runeToString(c);\n } else {\n // Name is in braces.\n const rest = t.rest();\n const end = rest.indexOf('}');\n if (end < 0) {\n t.rewindTo(startPos);\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest());\n }\n name = rest.substring(0, end); // e.g. \"Han\"\n t.skipString(name);\n t.skip(1);\n // Don't use skip(end) because it assumes UTF-16 coding, and\n // StringIterator doesn't guarantee that.\n }\n // Group can have leading negation too.\n // \\p{^Han} == \\P{Han}, \\P{^Han} == \\p{Han}.\n if (!(name.length === 0) && name.codePointAt(0) === Codepoint.CODES.get('^')) {\n sign = 0 - sign; // -sign\n name = name.substring(1);\n }\n const pair = Parser.unicodeTable(name);\n if (pair === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(startPos));\n }\n const tab = pair.first;\n const fold = pair.second; // fold-equivalent table\n // Variation of CharClass.appendGroup() for tables.\n if ((this.flags & RE2Flags.FOLD_CASE) === 0 || fold === null) {\n cc.appendTableWithSign(tab, sign);\n } else {\n // Merge and clean tab and fold in a temporary buffer.\n // This is necessary for the negative case and just tidy\n // for the positive case.\n const tmp = new CharClass().appendTable(tab).appendTable(fold).cleanClass().toArray();\n cc.appendClassWithSign(tmp, sign);\n }\n return true;\n }\n\n // parseClass parses a character class and pushes it onto the parse stack.\n //\n // NOTES:\n // Pre: at '['; Post: after ']'.\n // Mutates stack. Advances iterator. May throw.\n parseClass(t) {\n const startPos = t.pos();\n t.skip(1); // '['\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS);\n re.flags = this.flags;\n const cc = new CharClass();\n let sign = 1;\n if (t.more() && t.lookingAt('^')) {\n sign = -1;\n t.skip(1); // '^'\n // If character class does not match \\n, add it here,\n // so that negation later will do the right thing.\n if ((this.flags & RE2Flags.CLASS_NL) === 0) {\n cc.appendRange(Codepoint.CODES.get('\\n'), Codepoint.CODES.get('\\n'));\n }\n }\n let first = true; // ']' and '-' are okay as first char in class\n while (!t.more() || t.peek() !== Codepoint.CODES.get(']') || first) {\n // POSIX: - is only okay unescaped as first or last in class.\n // Perl: - is okay anywhere.\n if (t.more() && t.lookingAt('-') && (this.flags & RE2Flags.PERL_X) === 0 && !first) {\n const s = t.rest();\n if (s === '-' || !s.startsWith('-]')) {\n t.rewindTo(startPos);\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest());\n }\n }\n first = false;\n const beforePos = t.pos();\n // Look for POSIX [:alnum:] etc.\n if (t.lookingAt('[:')) {\n if (this.parseNamedClass(t, cc)) {\n continue;\n }\n t.rewindTo(beforePos);\n }\n\n // Look for Unicode character group like \\p{Han}.\n if (this.parseUnicodeClass(t, cc)) {\n continue;\n }\n\n // Look for Perl character class symbols (extension).\n if (this.parsePerlClassEscape(t, cc)) {\n continue;\n }\n t.rewindTo(beforePos);\n\n // Single character or simple range.\n const lo = Parser.parseClassChar(t, startPos);\n let hi = lo;\n if (t.more() && t.lookingAt('-')) {\n t.skip(1);\n if (t.more() && t.lookingAt(']')) {\n // [a-] means (a|-) so check for final ].\n t.skip(-1);\n } else {\n hi = Parser.parseClassChar(t, startPos);\n if (hi < lo) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(beforePos));\n }\n }\n }\n if ((this.flags & RE2Flags.FOLD_CASE) === 0) {\n cc.appendRange(lo, hi);\n } else {\n cc.appendFoldedRange(lo, hi);\n }\n }\n t.skip(1); // ']'\n\n cc.cleanClass();\n if (sign < 0) {\n cc.negateClass();\n }\n re.runes = cc.toArray();\n this.push(re);\n }\n}\n\nclass AtomicReference {\n constructor(initialValue) {\n this.value = initialValue;\n }\n\n // Returns the current value\n get() {\n return this.value;\n }\n\n // Sets to the given value\n set(newValue) {\n this.value = newValue;\n }\n\n // Atomically sets to the given value and returns true if the current value == the expected value\n compareAndSet(expect, update) {\n if (this.value === expect) {\n this.value = update;\n return true;\n }\n return false;\n }\n}\n\n/**\n * An RE2 class instance is a compiled representation of an RE2 regular expression, independent of\n * the public Java-like Pattern/Matcher API.\n *\n * This class also contains various implementation helpers for RE2 regular expressions.\n *\n * Use the {@link #quoteMeta(String)} utility function to quote all regular expression\n * metacharacters in an arbitrary string.\n *\n */\nclass RE2 {\n // This is visible for testing.\n static initTest(expr) {\n const re2 = RE2.compile(expr);\n const res = new RE2(re2.expr, re2.prog, re2.numSubexp, re2.longest);\n res.cond = re2.cond;\n res.prefix = re2.prefix;\n res.prefixUTF8 = re2.prefixUTF8;\n res.prefixComplete = re2.prefixComplete;\n res.prefixRune = re2.prefixRune;\n return res;\n }\n\n /**\n * Parses a regular expression and returns, if successful, an {@code RE2} instance that can be\n * used to match against text.\n *\n * When matching against text, the regexp returns a match that begins as early as possible in the\n * input (leftmost), and among those it chooses the one that a backtracking search would have\n * found first. This so-called leftmost-first matching is the same semantics that Perl, Python,\n * and other implementations use, although this package implements it without the expense of\n * backtracking. For POSIX leftmost-longest matching, see {@link #compilePOSIX}.\n */\n static compile(expr) {\n return RE2.compileImpl(expr, RE2Flags.PERL, false);\n }\n\n /**\n * {@code compilePOSIX} is like {@link #compile} but restricts the regular expression to POSIX ERE\n * (egrep) syntax and changes the match semantics to leftmost-longest.\n *\n * That is, when matching against text, the regexp returns a match that begins as early as\n * possible in the input (leftmost), and among those it chooses a match that is as long as\n * possible. This so-called leftmost-longest matching is the same semantics that early regular\n * expression implementations used and that POSIX specifies.\n *\n * However, there can be multiple leftmost-longest matches, with different submatch choices, and\n * here this package diverges from POSIX. Among the possible leftmost-longest matches, this\n * package chooses the one that a backtracking search would have found first, while POSIX\n * specifies that the match be chosen to maximize the length of the first subexpression, then the\n * second, and so on from left to right. The POSIX rule is computationally prohibitive and not\n * even well-defined. See http://swtch.com/~rsc/regexp/regexp2.html#posix\n */\n static compilePOSIX(expr) {\n return RE2.compileImpl(expr, RE2Flags.POSIX, true);\n }\n\n // Exposed to ExecTests.\n static compileImpl(expr, mode, longest) {\n let re = Parser.parse(expr, mode);\n const maxCap = re.maxCap();\n re = Simplify.simplify(re);\n const prog = Compiler.compileRegexp(re);\n const re2 = new RE2(expr, prog, maxCap, longest);\n const [prefixCompl, prefixStr] = prog.prefix();\n re2.prefixComplete = prefixCompl;\n re2.prefix = prefixStr;\n re2.prefixUTF8 = Utils.stringToUtf8ByteArray(re2.prefix);\n if (re2.prefix.length > 0) {\n re2.prefixRune = re2.prefix.codePointAt(0);\n }\n re2.namedGroups = re.namedGroups;\n return re2;\n }\n\n /**\n * Returns true iff textual regular expression {@code pattern} matches string {@code s}.\n *\n * More complicated queries need to use {@link #compile} and the full {@code RE2} interface.\n */\n // This is visible for testing.\n static match(pattern, s) {\n return RE2.compile(pattern).match(s);\n }\n constructor(expr, prog, numSubexp = 0, longest = 0) {\n this.expr = expr; // as passed to Compile\n this.prog = prog; // compiled program\n this.numSubexp = numSubexp;\n this.longest = longest;\n this.cond = prog.startCond(); // EMPTY_* bitmask: empty-width conditions\n this.prefix = null; // required UTF-16 prefix in unanchored matches\n this.prefixUTF8 = null; // required UTF-8 prefix in unanchored matches\n this.prefixComplete = false; // true if prefix is the entire regexp\n this.prefixRune = 0; // first rune in prefix\n this.pooled = new AtomicReference(); // Cache of machines for running regexp. Forms a Treiber stack.\n }\n\n /**\n * Returns the number of parenthesized subexpressions in this regular expression.\n */\n numberOfCapturingGroups() {\n return this.numSubexp;\n }\n\n /**\n * Returns the number of instructions in this compiled regular expression program.\n */\n numberOfInstructions() {\n return this.prog.numInst();\n }\n\n // get() returns a machine to use for matching |this|. It uses |this|'s\n // machine cache if possible, to avoid unnecessary allocation.\n get() {\n // Pop a machine off the stack if available.\n let head;\n do {\n head = this.pooled.get();\n } while (head && !this.pooled.compareAndSet(head, head.next));\n return head;\n }\n\n // Clears the memory associated with this machine.\n reset() {\n this.pooled.set(null);\n }\n\n // put() returns a machine to |this|'s machine cache. There is no attempt to\n // limit the size of the cache, so it will grow to the maximum number of\n // simultaneous matches run using |this|. (The cache empties when |this|\n // gets garbage collected or reset is called.)\n put(m, isNew) {\n // To avoid allocation in the single-thread or uncontended case, reuse a node only if\n // it was the only element in the stack when it was popped, and it's the only element\n // in the stack when it's pushed back after use.\n let head = this.pooled.get();\n do {\n head = this.pooled.get();\n if (!isNew && head) {\n // If an element had a null next pointer and it was previously in the stack, another thread\n // might be trying to pop it out right now, and if it sees the same node now in the\n // stack the pop will succeed, but the new top of the stack will be the stale (null) value\n // of next. Allocate a new Machine so that the CAS will not succeed if this node has been\n // popped and re-pushed.\n m = Machine.fromMachine(m);\n isNew = true;\n }\n\n // Without this comparison, TSAN will complain about a race condition:\n // Thread A, B, and C all attempt to do a match on the same pattern.\n //\n // A: Allocates Machine 1; executes match; put machine 1. State is now:\n //\n // pooled -> machine 1 -> null\n //\n // B reads pooled, sees machine 1\n //\n // C reads pooled, sees machine 1\n //\n // B successfully CASes pooled to null\n //\n // B executes match; put machine 1, which involves setting machine1.next to\n // null (even though it's already null); preempted before CAS\n //\n // C resumes, and reads machine1.next in order to execute cas(head, head.next)\n //\n // There is no happens-before relationship between B's redundant null write\n // and C's read, thus triggering TSAN.\n //\n // Not needed for JS code\n if (m.next !== head) {\n m.next = head;\n }\n } while (!this.pooled.compareAndSet(head, m));\n }\n toString() {\n return this.expr;\n }\n\n // doExecute() finds the leftmost match in the input and returns\n // the position of its subexpressions.\n // Derived from exec.go.\n doExecute(input, pos, anchor, ncap) {\n let m = this.get();\n // The Treiber stack cannot reuse nodes, unless the node to be reused has only ever been at\n // the bottom of the stack (i.e., next == null).\n let isNew = false;\n if (!m) {\n m = Machine.fromRE2(this);\n isNew = true;\n } else if (m.next !== null) {\n m = Machine.fromMachine(m);\n isNew = true;\n }\n m.init(ncap);\n const cap = m.match(input, pos, anchor) ? m.submatches() : null;\n this.put(m, isNew);\n return cap;\n }\n match(s) {\n return this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 0) !== null;\n }\n\n /**\n * Matches the regular expression against input starting at position start and ending at position\n * end, with the given anchoring. Records the submatch boundaries in group, which is [start, end)\n * pairs of byte offsets. The number of boundaries needed is inferred from the size of the group\n * array. It is most efficient not to ask for submatch boundaries.\n *\n * @param input the input byte array\n * @param start the beginning position in the input\n * @param end the end position in the input\n * @param anchor the anchoring flag (UNANCHORED, ANCHOR_START, ANCHOR_BOTH)\n * @param group the array to fill with submatch positions\n * @param ngroup the number of array pairs to fill in\n * @returns true if a match was found\n */\n matchWithGroup(input, start, end, anchor, ngroup) {\n if (!(input instanceof MatcherInputBase)) {\n input = MatcherInput.utf16(input);\n }\n return this.matchMachineInput(input, start, end, anchor, ngroup);\n }\n matchMachineInput(input, start, end, anchor, ngroup) {\n if (start > end) {\n return [false, null];\n }\n const machineInput = input.isUTF16Encoding() ? MachineInput.fromUTF16(input.asCharSequence(), 0, end) : MachineInput.fromUTF8(input.asBytes(), 0, end);\n const groupMatch = this.doExecute(machineInput, start, anchor, 2 * ngroup);\n if (groupMatch === null) {\n return [false, null];\n }\n return [true, groupMatch];\n }\n\n /**\n * Returns true iff this regexp matches the UTF-8 byte array {@code b}.\n */\n // This is visible for testing.\n matchUTF8(b) {\n return this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 0) !== null;\n }\n\n /**\n * Returns a copy of {@code src} in which all matches for this regexp have been replaced by\n * {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAll(src, repl) {\n return this.replaceAllFunc(src, () => repl, 2 * src.length + 1);\n }\n\n /**\n * Returns a copy of {@code src} in which only the first match for this regexp has been replaced\n * by {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceFirst(src, repl) {\n return this.replaceAllFunc(src, () => repl, 1);\n }\n\n /**\n * Returns a copy of {@code src} in which at most {@code maxReplaces} matches for this regexp have\n * been replaced by the return value of of function {@code repl} (whose first argument is the\n * matched string). No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAllFunc(src, replFunc, maxReplaces) {\n let lastMatchEnd = 0;\n let searchPos = 0;\n let out = '';\n const input = MachineInput.fromUTF16(src);\n let numReplaces = 0;\n while (searchPos <= src.length) {\n const a = this.doExecute(input, searchPos, RE2Flags.UNANCHORED, 2);\n if (a === null || a.length === 0) {\n break;\n }\n out += src.substring(lastMatchEnd, a[0]);\n if (a[1] > lastMatchEnd || a[0] === 0) {\n out += replFunc(src.substring(a[0], a[1]));\n numReplaces++;\n }\n lastMatchEnd = a[1];\n const width = input.step(searchPos) & 7;\n if (searchPos + width > a[1]) {\n searchPos += width;\n } else if (searchPos + 1 > a[1]) {\n searchPos++;\n } else {\n searchPos = a[1];\n }\n if (numReplaces >= maxReplaces) {\n break;\n }\n }\n out += src.substring(lastMatchEnd);\n return out;\n }\n\n // The number of capture values in the program may correspond\n // to fewer capturing expressions than are in the regexp.\n // For example, \"(a){0}\" turns into an empty program, so the\n // maximum capture in the program is 0 but we need to return\n // an expression for \\1. Pad returns a with -1s appended as needed;\n // the result may alias a.\n pad(a) {\n if (a === null) {\n return null;\n }\n let n = (1 + this.numSubexp) * 2;\n if (a.length < n) {\n let a2 = new Array(n).fill(-1);\n for (let i = 0; i < a.length; i++) {\n a2[i] = a[i];\n }\n a = a2;\n }\n return a;\n }\n\n // Find matches in input.\n allMatches(input, n, deliverFun = v => v) {\n let result = [];\n const end = input.endPos();\n if (n < 0) {\n n = end + 1;\n }\n let pos = 0;\n let i = 0;\n let prevMatchEnd = -1;\n while (i < n && pos <= end) {\n const matches = this.doExecute(input, pos, RE2Flags.UNANCHORED, this.prog.numCap);\n if (matches === null || matches.length === 0) {\n break;\n }\n let accept = true;\n if (matches[1] === pos) {\n if (matches[0] === prevMatchEnd) {\n accept = false;\n }\n const r = input.step(pos);\n if (r < 0) {\n pos = end + 1;\n } else {\n pos += r & 7;\n }\n } else {\n pos = matches[1];\n }\n prevMatchEnd = matches[1];\n if (accept) {\n result.push(deliverFun(this.pad(matches)));\n i++;\n }\n }\n return result;\n }\n\n // Legacy Go-style interface; preserved (package-private) for better\n // test coverage.\n //\n // There are 16 methods of RE2 that match a regular expression and\n // identify the matched text. Their names are matched by this regular\n // expression:\n //\n // find(All)?(UTF8)?(Submatch)?(Index)?\n //\n // If 'All' is present, the routine matches successive non-overlapping\n // matches of the entire expression. Empty matches abutting a\n // preceding match are ignored. The return value is an array\n // containing the successive return values of the corresponding\n // non-All routine. These routines take an extra integer argument, n;\n // if n >= 0, the function returns at most n matches/submatches.\n //\n // If 'UTF8' is present, the argument is a UTF-8 encoded byte[] array;\n // otherwise it is a UTF-16 encoded js string; return values\n // are adjusted as appropriate.\n //\n // If 'Submatch' is present, the return value is an list identifying\n // the successive submatches of the expression. Submatches are\n // matches of parenthesized subexpressions within the regular\n // expression, numbered from left to right in order of opening\n // parenthesis. Submatch 0 is the match of the entire expression,\n // submatch 1 the match of the first parenthesized subexpression, and\n // so on.\n //\n // If 'Index' is present, matches and submatches are identified by\n // byte index pairs within the input string: result[2*n:2*n+1]\n // identifies the indexes of the nth submatch. The pair for n==0\n // identifies the match of the entire expression. If 'Index' is not\n // present, the match is identified by the text of the match/submatch.\n // If an index is negative, it means that subexpression did not match\n // any string in the input.\n\n /**\n * Returns an array holding the text of the leftmost match in {@code b} of this regular\n * expression.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2);\n if (a === null) {\n return null;\n }\n return b.slice(a[0], a[1]);\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code b} of this regular expression. The match itself is at {@code b[loc[0]...loc[1]]}.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Index(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2);\n if (a === null) {\n return null;\n }\n return a.slice(0, 2);\n }\n\n /**\n * Returns a string holding the text of the leftmost match in {@code s} of this regular\n * expression.\n *\n * If there is no match, the return value is an empty string, but it will also be empty if the\n * regular expression successfully matches an empty string. Use {@link #findIndex} or\n * {@link #findSubmatch} if it is necessary to distinguish these cases.\n */\n // This is visible for testing.\n find(s) {\n const a = this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2);\n if (a === null) {\n return '';\n }\n return s.substring(a[0], a[1]);\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code s} of this regular expression. The match itself is at\n * {@code s.substring(loc[0], loc[1])}.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findIndex(s) {\n return this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2);\n }\n\n /**\n * Returns an array of arrays the text of the leftmost match of the regular expression in\n * {@code b} and the matches, if any, of its subexpressions, as defined by the Submatch description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Submatch(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap);\n if (a === null) {\n return null;\n }\n const ret = new Array(1 + this.numSubexp).fill(null);\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = b.slice(a[2 * i], a[2 * i + 1]);\n }\n }\n return ret;\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code b} and the matches, if any, of its subexpressions, as defined by the the\n * Submatch and Index descriptions above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8SubmatchIndex(b) {\n return this.pad(this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap));\n }\n\n /**\n * Returns an array of strings holding the text of the leftmost match of the regular expression in\n * {@code s} and the matches, if any, of its subexpressions, as defined by the Submatch description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatch(s) {\n const a = this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, this.prog.numCap);\n if (a === null) {\n return null;\n }\n const ret = new Array(1 + this.numSubexp).fill(null);\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = s.substring(a[2 * i], a[2 * i + 1]);\n }\n }\n return ret;\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code s} and the matches, if any, of its subexpressions, as defined by the Submatch description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatchIndex(s) {\n return this.pad(this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, this.prog.numCap));\n }\n\n /**\n * {@code findAllUTF8()} is the All version of {@link #findUTF8}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the All description above.\n *\n * A return value of null indicates no match.\n *\n * TODO(adonovan): think about defining a byte slice view class, like a read-only Go slice backed\n * by |b|.\n */\n // This is visible for testing.\n findAllUTF8(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, match => b.slice(match[0], match[1]));\n if (result.length === 0) {\n return null;\n }\n return result;\n }\n\n /**\n * {@code findAllUTF8Index} is the All version of {@link #findUTF8Index}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the All description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Index(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, match => match.slice(0, 2));\n if (result.length === 0) {\n return null;\n }\n return result;\n }\n\n /**\n * {@code findAll} is the All version of {@link #find}; it returns a list of up\n * to {@code n} successive matches of the expression, as defined by the All\n * description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAll(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, match => s.substring(match[0], match[1]));\n if (result.length === 0) {\n return null;\n }\n return result;\n }\n\n /**\n * {@code findAllIndex} is the All version of {@link #findIndex}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the All description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, match => match.slice(0, 2));\n if (result.length === 0) {\n return null;\n }\n return result;\n }\n\n /**\n * {@code findAllUTF8Submatch} is the All version of {@link #findUTF8Submatch};\n * it returns a list of up to {@code n} successive matches of the expression, as defined by the All description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Submatch(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, match => {\n let slice = new Array(match.length / 2 | 0).fill(null);\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = b.slice(match[2 * j], match[2 * j + 1]);\n }\n }\n return slice;\n });\n if (result.length === 0) {\n return null;\n }\n return result;\n }\n\n /**\n * {@code findAllUTF8SubmatchIndex} is the All version of\n * {@link #findUTF8SubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the All description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8SubmatchIndex(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n);\n if (result.length === 0) {\n return null;\n }\n return result;\n }\n\n /**\n * {@code findAllSubmatch} is the All version of {@link #findSubmatch}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the All description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatch(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, match => {\n let slice = new Array(match.length / 2 | 0).fill(null);\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = s.substring(match[2 * j], match[2 * j + 1]);\n }\n }\n return slice;\n });\n if (result.length === 0) {\n return null;\n }\n return result;\n }\n\n /**\n * {@code findAllSubmatchIndex} is the All version of\n * {@link #findSubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the All description above.\n *\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatchIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n);\n if (result.length === 0) {\n return null;\n }\n return result;\n }\n}\n\n/**\n * Transform JS regex string to RE2 regex string\n */\nclass TranslateRegExpString {\n static isUpperCaseAlpha(ch) {\n return 'A' <= ch && ch <= 'Z';\n }\n static isHexadecimal(ch) {\n return '0' <= ch && ch <= '9' || 'A' <= ch && ch <= 'F' || 'a' <= ch && ch <= 'f';\n }\n static getUtf8CharSize(ch) {\n const code = ch.charCodeAt(0);\n if (code < 0x80) return 1; // 1-byte (ASCII)\n if (code < 0x800) return 2; // 2-byte\n if (code < 0x10000) return 3; // 3-byte\n return 4; // 4-byte (surrogate pairs, rare characters)\n }\n static translate(data) {\n if (typeof data !== 'string') {\n return data;\n }\n let result = '';\n let changed = false;\n let size = data.length;\n if (size === 0) {\n result = '(?:)';\n changed = true;\n }\n let i = 0;\n while (i < size) {\n let ch = data[i];\n if (ch === '\\\\') {\n if (i + 1 < size) {\n ch = data[i + 1];\n switch (ch) {\n case '\\\\':\n {\n result += '\\\\\\\\';\n i += 2;\n continue;\n }\n case 'c':\n {\n if (i + 2 < size) {\n let nextCh = data[i + 2];\n if (TranslateRegExpString.isUpperCaseAlpha(nextCh)) {\n result += '\\\\x';\n result += (nextCh.charCodeAt(0) - 64 >> 4).toString(16).toUpperCase();\n result += (nextCh.charCodeAt(0) - 64 & 15).toString(16).toUpperCase();\n i += 3;\n changed = true;\n continue;\n }\n }\n result += '\\\\c';\n i += 2;\n continue;\n }\n case 'u':\n {\n if (i + 2 < size) {\n let nextCh = data[i + 2];\n if (TranslateRegExpString.isHexadecimal(nextCh)) {\n result += '\\\\x{' + nextCh;\n i += 3;\n for (let j = 0; j < 3 && i < size; ++i, ++j) {\n nextCh = data[i];\n if (!TranslateRegExpString.isHexadecimal(nextCh)) {\n break;\n }\n result += nextCh;\n }\n result += '}';\n changed = true;\n continue;\n } else if (nextCh === '{') {\n result += '\\\\x';\n i += 2;\n changed = true;\n continue;\n }\n }\n result += '\\\\u';\n i += 2;\n continue;\n }\n default:\n {\n result += '\\\\';\n let symSize = TranslateRegExpString.getUtf8CharSize(ch);\n result += data.substring(i + 1, i + 1 + symSize);\n i += symSize + 1;\n continue;\n }\n }\n }\n } else if (ch === '/') {\n result += '\\\\/';\n i += 1;\n changed = true;\n continue;\n } else if (ch === '(' && i + 2 < size && data[i + 1] === '?' && data[i + 2] === '<') {\n if (i + 3 >= size || data[i + 3] !== '=' && data[i + 3] !== '!') {\n result += '(?P<';\n i += 3;\n changed = true;\n continue;\n }\n }\n let symSize = TranslateRegExpString.getUtf8CharSize(ch);\n result += data.substring(i, i + symSize);\n i += symSize;\n }\n return changed ? result : data;\n }\n}\n\n/**\n * A compiled representation of an RE2 regular expression\n *\n * The matching functions take {@code String} arguments instead of the more general Java\n * {@code CharSequence} since the latter doesn't provide UTF-16 decoding.\n *\n *\n * @author rsc@google.com (Russ Cox)\n * @class\n */\nclass RE2JS {\n /**\n * Flag: case insensitive matching.\n */\n static CASE_INSENSITIVE = 1;\n /**\n * Flag: dot ({@code .}) matches all characters, including newline.\n */\n static DOTALL = 2;\n /**\n * Flag: multiline matching: {@code ^} and {@code $} match at beginning and end of line, not just\n * beginning and end of input.\n */\n static MULTILINE = 4;\n /**\n * Flag: Unicode groups (e.g. {@code \\p\\ Greek\\} ) will be syntax errors.\n */\n static DISABLE_UNICODE_GROUPS = 8;\n /**\n * Flag: matches longest possible string.\n */\n static LONGEST_MATCH = 16;\n\n /**\n * Returns a literal pattern string for the specified string.\n *\n * This method produces a string that can be used to create a RE2JS that would\n * match the string s as if it were a literal pattern.\n *\n * Metacharacters or escape sequences in the input sequence will be given no special meaning.\n *\n * @param {string} str The string to be literalized\n * @returns {string} A literal string replacement\n */\n static quote(str) {\n return Utils.quoteMeta(str);\n }\n\n /**\n * Translates a given regular expression string to ensure compatibility with RE2JS.\n *\n * This function preprocesses the input regex string by applying necessary transformations,\n * such as escaping special characters (e.g., `/`), converting named capture groups to\n * RE2JS-compatible syntax, and handling Unicode sequences properly. It ensures that the\n * resulting regex is safe and properly formatted before compilation.\n *\n * @param {string} expr - The regular expression string to be translated.\n * @returns {string} - The transformed regular expression string, ready for compilation.\n */\n static translateRegExp(expr) {\n return TranslateRegExpString.translate(expr);\n }\n\n /**\n * Helper: create new RE2JS with given regex and flags. Flregex is the regex with flags applied.\n * @param {string} regex\n * @param {number} [flags=0]\n * @returns {RE2JS}\n */\n static compile(regex, flags = 0) {\n let fregex = regex;\n if ((flags & RE2JS.CASE_INSENSITIVE) !== 0) {\n fregex = `(?i)${fregex}`;\n }\n if ((flags & RE2JS.DOTALL) !== 0) {\n fregex = `(?s)${fregex}`;\n }\n if ((flags & RE2JS.MULTILINE) !== 0) {\n fregex = `(?m)${fregex}`;\n }\n if ((flags & ~(RE2JS.MULTILINE | RE2JS.DOTALL | RE2JS.CASE_INSENSITIVE | RE2JS.DISABLE_UNICODE_GROUPS | RE2JS.LONGEST_MATCH)) !== 0) {\n throw new RE2JSFlagsException('Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH');\n }\n let re2Flags = RE2Flags.PERL;\n if ((flags & RE2JS.DISABLE_UNICODE_GROUPS) !== 0) {\n re2Flags &= -129;\n }\n const p = new RE2JS(regex, flags);\n // The compiled RE2 regexp.\n p.re2Input = RE2.compileImpl(fregex, re2Flags, (flags & RE2JS.LONGEST_MATCH) !== 0);\n return p;\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {string} regex the regular expression\n * @param {string|number[]} input the input\n * @returns {boolean} true if the regular expression matches the entire input\n * @throws RE2JSSyntaxException if the regular expression is malformed\n */\n static matches(regex, input) {\n return RE2JS.compile(regex).matcher(input).matches();\n }\n\n /**\n * This is visible for testing.\n * @private\n */\n static initTest(pattern, flags, re2) {\n if (pattern == null) {\n throw new Error('pattern is null');\n }\n if (re2 == null) {\n throw new Error('re2 is null');\n }\n const p = new RE2JS(pattern, flags);\n // The compiled RE2 regexp.\n p.re2Input = re2;\n return p;\n }\n\n /**\n *\n * @param {string} pattern\n * @param {number} flags\n */\n constructor(pattern, flags) {\n // The pattern string at construction time.\n this.patternInput = pattern;\n // The flags at construction time.\n this.flagsInput = flags;\n }\n\n /**\n * Releases memory used by internal caches associated with this pattern. Does not change the\n * observable behaviour. Useful for tests that detect memory leaks via allocation tracking.\n */\n reset() {\n this.re2Input.reset();\n }\n\n /**\n * Returns the flags used in the constructor.\n * @returns {number}\n */\n flags() {\n return this.flagsInput;\n }\n\n /**\n * Returns the pattern used in the constructor.\n * @returns {string}\n */\n pattern() {\n return this.patternInput;\n }\n re2() {\n return this.re2Input;\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {string|number[]} input the input\n * @returns {boolean} true if the regular expression matches the entire input\n */\n matches(input) {\n return this.matcher(input).matches();\n }\n\n /**\n * Creates a new {@code Matcher} matching the pattern against the input.\n *\n * @param {string|number[]} input the input string\n * @returns {Matcher}\n */\n matcher(input) {\n if (Array.isArray(input)) {\n input = MatcherInput.utf8(input);\n }\n return new Matcher(this, input);\n }\n\n /**\n * Splits input around instances of the regular expression. It returns an array giving the strings\n * that occur before, between, and after instances of the regular expression.\n *\n * If {@code limit <= 0}, there is no limit on the size of the returned array. If\n * {@code limit == 0}, empty strings that would occur at the end of the array are omitted. If\n * {@code limit > 0}, at most limit strings are returned. The final string contains the remainder\n * of the input, possibly including additional matches of the pattern.\n *\n * @param {string} input the input string to be split\n * @param {number} [limit=0] the limit\n * @returns {string[]} the split strings\n */\n split(input, limit = 0) {\n const m = this.matcher(input);\n const result = [];\n let emptiesSkipped = 0;\n let last = 0;\n while (m.find()) {\n if (last === 0 && m.end() === 0) {\n // Zero-width match at the beginning, skip\n last = m.end();\n continue;\n }\n if (limit > 0 && result.length === limit - 1) {\n // no more room for matches\n break;\n }\n if (last === m.start()) {\n // Empty match, may or may not be trailing.\n if (limit === 0) {\n emptiesSkipped += 1;\n last = m.end();\n continue;\n }\n } else {\n // If emptiesSkipped > 0 then limit == 0 and we have non-trailing empty matches to add before\n // this non-empty match.\n while (emptiesSkipped > 0) {\n result.push('');\n emptiesSkipped -= 1;\n }\n }\n result.push(m.substring(last, m.start()));\n last = m.end();\n }\n if (limit === 0 && last !== m.inputLength()) {\n // Unlimited match, no more delimiters but we have a non-empty input at the end. Catch up any skipped empty\n // matches, then emit the final match.\n while (emptiesSkipped > 0) {\n result.push('');\n emptiesSkipped -= 1;\n }\n result.push(m.substring(last, m.inputLength()));\n }\n if (limit !== 0 || result.length === 0) {\n result.push(m.substring(last, m.inputLength()));\n }\n return result;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n return this.patternInput;\n }\n\n /**\n * Returns the program size of this pattern.\n *\n *

\n * Similar to the C++ implementation, the program size is a very approximate measure of a regexp's\n * \"cost\". Larger numbers are more expensive than smaller numbers.\n *

\n *\n * @returns {number} the program size of this pattern\n */\n programSize() {\n return this.re2Input.numberOfInstructions();\n }\n\n /**\n * Returns the number of capturing groups in this matcher's pattern. Group zero denotes the entire\n * pattern and is excluded from this count.\n *\n * @returns {number} the number of capturing groups in this pattern\n */\n groupCount() {\n return this.re2Input.numberOfCapturingGroups();\n }\n\n /**\n * Return a map of the capturing groups in this matcher's pattern, where key is the name and value\n * is the index of the group in the pattern.\n * @returns {*}\n */\n namedGroups() {\n return this.re2Input.namedGroups;\n }\n\n /**\n *\n * @param {*} other\n * @returns {boolean}\n */\n equals(other) {\n if (this === other) {\n return true;\n }\n if (other === null || this.constructor !== other.constructor) {\n return false;\n }\n return this.flagsInput === other.flagsInput && this.patternInput === other.patternInput;\n }\n}\n\nexport { RE2JS, RE2JSCompileException, RE2JSException, RE2JSFlagsException, RE2JSGroupException, RE2JSSyntaxException };\n//# sourceMappingURL=index.esm.js.map\n"],"names":["RE2Flags","static","CLASS_NL","DOT_NL","ONE_LINE","PERL_X","UNICODE_GROUPS","Codepoint","Map","toUpperCase","codepoint","s","String","fromCodePoint","length","sOrigin","codePointAt","toLowerCase","UnicodeTables","this","Lu","C","Cc","Cf","Co","Cs","L","Ll","Lm","Lo","Lt","M","Mc","Me","Mn","N","Nd","Nl","No","P","Pc","Pd","Pe","Pf","Pi","Po","Ps","S","Sc","Sk","Sm","So","Z","Zl","Zp","Zs","Adlam","Ahom","Anatolian_Hieroglyphs","Arabic","Armenian","Avestan","Balinese","Bamum","Bassa_Vah","Batak","Bengali","Bhaiksuki","Bopomofo","Brahmi","Braille","Buginese","Buhid","Canadian_Aboriginal","Carian","Caucasian_Albanian","Chakma","Cham","Cherokee","Chorasmian","Common","Coptic","Cuneiform","Cypriot","Cypro_Minoan","Cyrillic","Deseret","Devanagari","Dives_Akuru","Dogra","Duployan","Egyptian_Hieroglyphs","Elbasan","Elymaic","Ethiopic","Garay","Georgian","Glagolitic","Gothic","Grantha","Greek","Gujarati","Gunjala_Gondi","Gurmukhi","Gurung_Khema","Han","Hangul","Hanifi_Rohingya","Hanunoo","Hatran","Hebrew","Hiragana","Imperial_Aramaic","Inherited","Inscriptional_Pahlavi","Inscriptional_Parthian","Javanese","Kaithi","Kannada","Katakana","Kawi","Kayah_Li","Kharoshthi","Khitan_Small_Script","Khmer","Khojki","Khudawadi","Kirat_Rai","Lao","Latin","Lepcha","Limbu","Linear_A","Linear_B","Lisu","Lycian","Lydian","Mahajani","Makasar","Malayalam","Mandaic","Manichaean","Marchen","Masaram_Gondi","Medefaidrin","Meetei_Mayek","Mende_Kikakui","Meroitic_Cursive","Meroitic_Hieroglyphs","Miao","Modi","Mongolian","Mro","Multani","Myanmar","Nabataean","Nag_Mundari","Nandinagari","New_Tai_Lue","Newa","Nko","Nushu","Nyiakeng_Puachue_Hmong","Ogham","Ol_Chiki","Ol_Onal","Old_Hungarian","Old_Italic","Old_North_Arabian","Old_Permic","Old_Persian","Old_Sogdian","Old_South_Arabian","Old_Turkic","Old_Uyghur","Oriya","Osage","Osmanya","Pahawh_Hmong","Palmyrene","Pau_Cin_Hau","Phags_Pa","Phoenician","Psalter_Pahlavi","Rejang","Runic","Samaritan","Saurashtra","Sharada","Shavian","Siddham","SignWriting","Sinhala","Sogdian","Sora_Sompeng","Soyombo","Sundanese","Sunuwar","Syloti_Nagri","Syriac","Tagalog","Tagbanwa","Tai_Le","Tai_Tham","Tai_Viet","Takri","Tamil","Tangsa","Tangut","Telugu","Thaana","Thai","Tibetan","Tifinagh","Tirhuta","Todhri","Toto","Tulu_Tigalari","Ugaritic","Vai","Vithkuqi","Wancho","Warang_Citi","Yezidi","Yi","Zanabazar_Square","foldL","foldLl","foldLt","foldLu","foldM","foldMn","foldCommon","foldGreek","foldInherited","Unicode","is32","ranges","r","lo","hi","m","Math","floor","range","is","MAX_LATIN1","isUpper","Upper","isPrint","simpleFold","CASE_ORBIT","has","get","l","equalsIgnoreCase","r1","r2","MAX_ASCII","CODES","Utils","emptyInts","isalnum","c","unhex","escapeRune","rune","out","METACHARACTERS","indexOf","toString","stringToRunes","str","split","map","runeToString","isWordRune","emptyOpContext","op","EMPTY_BEGIN_TEXT","EMPTY_BEGIN_LINE","EMPTY_END_TEXT","EMPTY_END_LINE","EMPTY_WORD_BOUNDARY","EMPTY_NO_WORD_BOUNDARY","quoteMeta","join","charCount","codePoint","MAX_BMP","stringToUtf8ByteArray","globalThis","TextEncoder","Array","from","encode","p","i","charCodeAt","utf8ByteArrayToString","bytes","TextDecoder","decode","Uint8Array","pos","c1","fromCharCode","c2","u","c3","createEnum","values","initNum","enumObject","val","keyVal","Object","freeze","MatcherInputBase","getEncoding","Error","isUTF8Encoding","Encoding","UTF_8","isUTF16Encoding","UTF_16","Utf8MatcherInput","constructor","super","asCharSequence","asBytes","Utf16MatcherInput","charSequence","MatcherInput","utf16","utf8","input","isArray","RE2JSException","message","name","RE2JSSyntaxException","error","getDescription","getPattern","RE2JSCompileException","RE2JSGroupException","RE2JSFlagsException","Matcher","quoteReplacement","pattern","patternInput","re2","patternGroupCount","numberOfCapturingGroups","groups","namedGroups","numberOfInstructions","resetMatcherInput","reset","matcherInputLength","matcherInput","appendPos","hasMatch","hasGroups","anchorFlag","start","group","groupInt","Number","isFinite","loadGroup","end","programSize","substring","groupCount","res","matchMachineInput","matches","genMatch","ANCHOR_BOTH","lookingAt","ANCHOR_START","find","UNANCHORED","startByte","anchor","slice","inputLength","appendReplacement","replacement","perlMode","e","appendReplacementInternalPerl","appendReplacementInternal","last","n","j","groupName","prototype","hasOwnProperty","call","appendTail","replaceAll","replace","replaceFirst","all","MachineInputBase","EOF","canCheckPrefix","endPos","MachineUTF8Input","step","x","index","prefixUTF8","context","lim","source","target","fromIndex","targetLength","sourceLength","MachineUTF16Input","prefix","MachineInput","fromUTF8","fromUTF16","Inst","isRuneOp","RUNE","RUNE_ANY_NOT_NL","escapeRunes","runes","arg","matchRune","r0","FOLD_CASE","ALT","ALT_MATCH","CAPTURE","EMPTY_WIDTH","MATCH","FAIL","NOP","RUNE1","RUNE_ANY","Thread","inst","cap","Queue","sparse","densePcs","denseThreads","size","contains","pc","isEmpty","add","clear","Machine","fromRE2","prog","q0","numInst","q1","pool","poolSize","matched","matchcap","numCap","fill","ncap","fromMachine","machine","init","initNewCap","resetCap","submatches","alloc","t","freeQueue","queue","numberOfThread","requiredPoolLength","max","freeThread","match","startCond","cond","EMPTY_ALL","flag","runq","nextq","width","rune1","width1","prefixRune","advance","nextPos","tmpq","nextCond","atEnd","longest","q","d","opos","Regexp","isPseudoOp","Op","LEFT_PAREN","emptySubs","quoteIfHyphen","fromRegexp","re","regex","flags","subs","min","reinit","appendTo","NO_MATCH","EMPTY_MATCH","STAR","PLUS","QUEST","REPEAT","sub","LITERAL","NON_GREEDY","CONCAT","ALTERNATE","sep","ANY_CHAR_NOT_NL","ANY_CHAR","BEGIN_TEXT","END_TEXT","WAS_DOLLAR","BEGIN_LINE","END_LINE","WORD_BOUNDARY","NO_WORD_BOUNDARY","CHAR_CLASS","MAX_RUNE","maxCap","equals","that","Prog","getInst","addInst","push","skipNop","loop","next","patch","append","l1","l2","len","Frag","nullable","Compiler","ANY_RUNE_NOT_NL","ANY_RUNE","compileRegexp","f","compile","newInst","nop","fail","cat","f1","f2","alt","nongreedy","quest","star","plus","empty","bra","ket","Simplify","simplify","nre","nsub","simplify1","prefixSubs","suffix","nre2","CharGroup","sign","cls","code1","code2","code3","PERL_GROUPS","code4","code5","code6","code7","code8","code9","code10","code11","code12","code13","code14","code15","code16","code17","POSIX_GROUPS","CharClass","charClassToString","result","cmp","array","pivotFrom","pivotTo","qsortIntPair","left","right","pivotIndex","temp","toArray","cleanClass","w","appendLiteral","appendFoldedRange","appendRange","rlo","rhi","MIN_FOLD","MAX_FOLD","appendClass","appendFoldedClass","appendNegatedClass","nextLo","appendTable","table","triple","stride","appendNegatedTable","appendTableWithSign","negateClass","appendClassWithSign","appendGroup","g","foldCase","Pair","of","first","second","StringIterator","position","rewindTo","more","peek","skip","skipString","pop","rest","startsWith","beforePos","Parser","ANY_TABLE","unicodeTable","CATEGORIES","FOLD_CATEGORIES","SCRIPTS","FOLD_SCRIPT","minFoldRune","leadingRegexp","literalRegexp","parse","parseInternal","parseRepeat","parseInt","ERR_INVALID_REPEAT_SIZE","isValidCaptureName","parseFloat","isCharClass","mergeCharClass","dst","src","parseEscape","startPos","ERR_TRAILING_BACKSLASH","bigswitch","nhex","v","y","ERR_INVALID_ESCAPE","parseClassChar","wholeClassPos","ERR_MISSING_BRACKET","concatRunes","wholeRegexp","stack","free","numRegexp","numRunes","repeats","height","newRegexp","reuse","checkLimits","MAX_RUNES","ERR_LARGE","checkSize","checkHeight","MAX_SIZE","reEx","calcSize","force","MAX_HEIGHT","calcHeight","ERR_NESTING_DEPTH","h","hsub","popToPseudo","maybeConcat","re1","newLiteral","literal","repeat","lastRepeatPos","ERR_INVALID_REPEAT_OP","ERR_MISSING_REPEAT_ARGUMENT","repeatIsValid","trunc","concat","collapse","alternate","cleanAlt","newsubs","splice","factor","old","lensub","lenout","strlen","strflags","istr","istrlen","iflags","same","removeLeadingString","ifirst","removeLeadingRegexp","subMax","subJ","tmp","repeatPos","parsePerlFlags","parseVerticalBar","parseRightParen","parseClass","minMax","savedPos","lit","cc","parseUnicodeClass","parsePerlClassEscape","swapVerticalBar","ERR_MISSING_PAREN","begin","charAt","ERR_INVALID_NAMED_CAPTURE","ERR_DUPLICATE_NAMED_CAPTURE","sawFlag","ERR_INVALID_PERL_OP","VERTICAL_BAR","re3","ERR_UNEXPECTED_PAREN","parseNamedClass","ERR_INVALID_CHAR_RANGE","pair","tab","fold","AtomicReference","initialValue","value","set","newValue","compareAndSet","expect","update","RE2","initTest","expr","numSubexp","prefixComplete","compileImpl","PERL","compilePOSIX","POSIX","mode","prefixCompl","prefixStr","pooled","head","put","isNew","doExecute","matchWithGroup","ngroup","machineInput","groupMatch","matchUTF8","b","repl","replaceAllFunc","replFunc","maxReplaces","lastMatchEnd","searchPos","numReplaces","a","pad","a2","allMatches","deliverFun","prevMatchEnd","accept","findUTF8","findUTF8Index","findIndex","findUTF8Submatch","ret","findUTF8SubmatchIndex","findSubmatch","findSubmatchIndex","findAllUTF8","findAllUTF8Index","findAll","findAllIndex","findAllUTF8Submatch","findAllUTF8SubmatchIndex","findAllSubmatch","findAllSubmatchIndex","TranslateRegExpString","isUpperCaseAlpha","ch","isHexadecimal","getUtf8CharSize","code","translate","data","changed","nextCh","symSize","RE2JS","quote","translateRegExp","fregex","CASE_INSENSITIVE","DOTALL","MULTILINE","DISABLE_UNICODE_GROUPS","LONGEST_MATCH","re2Flags","re2Input","matcher","flagsInput","limit","emptiesSkipped","other"],"sourceRoot":""} \ No newline at end of file diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/546.js b/compose/grafana/plugins/grafana-lokiexplore-app/546.js new file mode 100644 index 0000000..444f860 --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/546.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkgrafana_lokiexplore_app=self.webpackChunkgrafana_lokiexplore_app||[]).push([[546],{8546:(e,a,r)=>{r.r(a),r.d(a,{default:()=>i});var t=r(8531),o=r(2007),l=r(5959),u=r.n(l),n=r(7389),s=r(7781),c=r(6854);const p={[s.AbstractLabelOperator.Equal]:c.KQ.Equal,[s.AbstractLabelOperator.NotEqual]:c.KQ.NotEqual,[s.AbstractLabelOperator.EqualRegEx]:c.KQ.RegexEqual,[s.AbstractLabelOperator.NotEqualRegEx]:c.KQ.RegexNotEqual};function i({datasourceUid:e,streamSelectors:a,from:r,to:c,returnToPreviousSource:i,renderButton:b}){const E=(0,t.useReturnToPrevious)(),f=(0,l.useMemo)((()=>{const t=a[0];if(!t||(null==t?void 0:t.operator)!==s.AbstractLabelOperator.Equal)return null;const o=(0,n.uu)(t.value);let l=new URLSearchParams;return e&&(l=(0,n.xh)(n.I8.DatasourceId,e,l)),r&&(l=(0,n.xh)(n.I8.TimeRangeFrom,r,l)),c&&(l=(0,n.xh)(n.I8.TimeRangeTo,c,l)),a.forEach((e=>{l=(0,n.zH)(n.I8.Labels,`${e.name}|${p[e.operator]}|${(0,n.XH)((0,n.vh)(e.value))},${(0,n.XH)((0,n.rx)(e.value))}`,l)})),(0,n.Rk)(`/explore/${t.name}/${o}/logs`,l)}),[e,r,c,a]);return f?b?b({href:f}):u().createElement(o.LinkButton,{variant:"secondary",href:f,onClick:()=>E(i||"previous")},"Open in Logs Drilldown"):null}}}]); +//# sourceMappingURL=546.js.map?_cache=e0a6d6e5588df727bcf9 \ No newline at end of file diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/546.js.map b/compose/grafana/plugins/grafana-lokiexplore-app/546.js.map new file mode 100644 index 0000000..aec5ddf --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/546.js.map @@ -0,0 +1 @@ +{"version":3,"file":"546.js?_cache=e0a6d6e5588df727bcf9","mappings":"wOAiBA,MAAMA,EAAc,CAClB,CAACC,EAAAA,sBAAsBC,OAAQC,EAAAA,GAAcD,MAC7C,CAACD,EAAAA,sBAAsBG,UAAWD,EAAAA,GAAcC,SAChD,CAACH,EAAAA,sBAAsBI,YAAaF,EAAAA,GAAcG,WAClD,CAACL,EAAAA,sBAAsBM,eAAgBJ,EAAAA,GAAcK,eAGxC,SAASC,GAA0B,cAChDC,EAAa,gBACbC,EAAe,KACfC,EAAI,GACJC,EAAE,uBACFC,EAAsB,aACtBC,IAEA,MAAMC,GAAsBC,EAAAA,EAAAA,uBAEtBC,GAAOC,EAAAA,EAAAA,UAAQ,KACnB,MAAMC,EAAYT,EAAgB,GAElC,IACGS,IAEDA,aAAAA,EAAAA,EAAWC,YAAapB,EAAAA,sBAAsBC,MAE9C,OAAO,KAGT,MAAMoB,GAAaC,EAAAA,EAAAA,IAAaH,EAAUI,OAE1C,IAAIC,EAAS,IAAIC,gBAwBjB,OAtBIhB,IACFe,GAASE,EAAAA,EAAAA,IAAgBC,EAAAA,GAAcC,aAAcnB,EAAee,IAGlEb,IACFa,GAASE,EAAAA,EAAAA,IAAgBC,EAAAA,GAAcE,cAAelB,EAAMa,IAG1DZ,IACFY,GAASE,EAAAA,EAAAA,IAAgBC,EAAAA,GAAcG,YAAalB,EAAIY,IAG1Dd,EAAgBqB,SAASC,IACvBR,GAASS,EAAAA,EAAAA,IACPN,EAAAA,GAAcO,OACd,GAAGF,EAAeG,QAAQpC,EAAYiC,EAAeZ,cAAagB,EAAAA,EAAAA,KAChEC,EAAAA,EAAAA,IAAqBL,EAAeT,YACjCa,EAAAA,EAAAA,KAAoBE,EAAAA,EAAAA,IAAmBN,EAAeT,UAC3DC,EAAAA,KAIGe,EAAAA,EAAAA,IAAa,YAAYpB,EAAUgB,QAAQd,SAAmBG,EAAO,GAC3E,CAACf,EAAeE,EAAMC,EAAIF,IAE7B,OAAKO,EAIDH,EACKA,EAAa,CAAEG,SAItB,kBAACuB,EAAAA,WAAUA,CACTC,QAAQ,YACRxB,KAAMA,EACNyB,QAAS,IAAM3B,EAAoBF,GAA0B,aAC9D,0BAZM,IAgBX,C","sources":["webpack://grafana-lokiexplore-app/./Components/OpenInLogsDrilldownButton/OpenInLogsDrilldownButton.tsx"],"sourcesContent":["import { useReturnToPrevious } from '@grafana/runtime';\nimport { LinkButton } from '@grafana/ui';\nimport React, { useMemo } from 'react';\nimport {\n appendUrlParameter,\n createAppUrl,\n escapeURLDelimiters,\n replaceEscapeChars,\n replaceSlash,\n setUrlParameter,\n stringifyAdHocValues,\n UrlParameters,\n} from 'services/extensions/links';\nimport { OpenInLogsDrilldownButtonProps } from './types';\nimport { AbstractLabelOperator } from '@grafana/data';\nimport { LabelFilterOp } from 'services/filterTypes';\n\nconst operatorMap = {\n [AbstractLabelOperator.Equal]: LabelFilterOp.Equal,\n [AbstractLabelOperator.NotEqual]: LabelFilterOp.NotEqual,\n [AbstractLabelOperator.EqualRegEx]: LabelFilterOp.RegexEqual,\n [AbstractLabelOperator.NotEqualRegEx]: LabelFilterOp.RegexNotEqual,\n};\n\nexport default function OpenInLogsDrilldownButton({\n datasourceUid,\n streamSelectors,\n from,\n to,\n returnToPreviousSource,\n renderButton,\n}: OpenInLogsDrilldownButtonProps) {\n const setReturnToPrevious = useReturnToPrevious();\n\n const href = useMemo(() => {\n const mainLabel = streamSelectors[0];\n\n if (\n !mainLabel ||\n // we can't open in explore logs if main label matcher is something different from equal\n mainLabel?.operator !== AbstractLabelOperator.Equal\n ) {\n return null;\n }\n\n const labelValue = replaceSlash(mainLabel.value);\n\n let params = new URLSearchParams();\n\n if (datasourceUid) {\n params = setUrlParameter(UrlParameters.DatasourceId, datasourceUid, params);\n }\n\n if (from) {\n params = setUrlParameter(UrlParameters.TimeRangeFrom, from, params);\n }\n\n if (to) {\n params = setUrlParameter(UrlParameters.TimeRangeTo, to, params);\n }\n\n streamSelectors.forEach((streamSelector) => {\n params = appendUrlParameter(\n UrlParameters.Labels,\n `${streamSelector.name}|${operatorMap[streamSelector.operator]}|${escapeURLDelimiters(\n stringifyAdHocValues(streamSelector.value)\n )},${escapeURLDelimiters(replaceEscapeChars(streamSelector.value))}`,\n params\n );\n });\n\n return createAppUrl(`/explore/${mainLabel.name}/${labelValue}/logs`, params);\n }, [datasourceUid, from, to, streamSelectors]);\n\n if (!href) {\n return null;\n }\n\n if (renderButton) {\n return renderButton({ href });\n }\n\n return (\n setReturnToPrevious(returnToPreviousSource || 'previous')}\n >\n Open in Logs Drilldown\n \n );\n}\n"],"names":["operatorMap","AbstractLabelOperator","Equal","LabelFilterOp","NotEqual","EqualRegEx","RegexEqual","NotEqualRegEx","RegexNotEqual","OpenInLogsDrilldownButton","datasourceUid","streamSelectors","from","to","returnToPreviousSource","renderButton","setReturnToPrevious","useReturnToPrevious","href","useMemo","mainLabel","operator","labelValue","replaceSlash","value","params","URLSearchParams","setUrlParameter","UrlParameters","DatasourceId","TimeRangeFrom","TimeRangeTo","forEach","streamSelector","appendUrlParameter","Labels","name","escapeURLDelimiters","stringifyAdHocValues","replaceEscapeChars","createAppUrl","LinkButton","variant","onClick"],"sourceRoot":""} \ No newline at end of file diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/649058283f564041551d.wasm b/compose/grafana/plugins/grafana-lokiexplore-app/649058283f564041551d.wasm new file mode 100644 index 0000000..55e0ea9 Binary files /dev/null and b/compose/grafana/plugins/grafana-lokiexplore-app/649058283f564041551d.wasm differ diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/677.js b/compose/grafana/plugins/grafana-lokiexplore-app/677.js new file mode 100644 index 0000000..0301dc9 --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/677.js @@ -0,0 +1,3 @@ +/*! For license information please see 677.js.LICENSE.txt */ +(self.webpackChunkgrafana_lokiexplore_app=self.webpackChunkgrafana_lokiexplore_app||[]).push([[677],{9736:(e,t,n)=>{"use strict";n.d(t,{H9:()=>Zo,Zx:()=>Lt,yP:()=>zl,mI:()=>Ul,P1:()=>sc,OS:()=>nd,No:()=>id,WY:()=>St,n8:()=>Re,d0:()=>od,UU:()=>N,Oh:()=>au,jD:()=>bu,xK:()=>Kc,gF:()=>Xc,Zv:()=>z,Es:()=>Ll,vA:()=>Qc,G1:()=>qc,Bs:()=>I,So:()=>W,dt:()=>si,dM:()=>lu,WM:()=>Vc,KE:()=>kc,JZ:()=>X,Pj:()=>jl,oh:()=>te,Sh:()=>Di,Lp:()=>Nl,Eb:()=>_s,Lw:()=>cc,Gg:()=>r,jh:()=>Xi,Go:()=>sd,TG:()=>su});var r={};n.r(r),n.d(r,{K2:()=>as});var a=n(1159),o=n(7781),i=n(8531);function s(e,t,n){const r={...t};if(n)for(const e of Object.keys(r))n.includes(e)||delete r[e];return o.urlUtil.renderUrl(o.locationUtil.assureBaseUrl(e),r)}function l(e){const t=(0,a.useParams)(),n=(0,a.useLocation)();return{params:t,isExact:null!==(0,a.matchPath)({path:e,caseSensitive:!1,end:!0},n.pathname),path:n.pathname,url:n.pathname}}const c=new Map;var u=n(5959),d=n.t(u,2),p=n.n(u),f=n(1269);const h={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let g;const m=new Uint8Array(16);function v(){if(!g&&(g="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!g))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return g(m)}const b=[];for(let e=0;e<256;++e)b.push((e+256).toString(16).slice(1));function y(e,t=0){return b[e[t+0]]+b[e[t+1]]+b[e[t+2]]+b[e[t+3]]+"-"+b[e[t+4]]+b[e[t+5]]+"-"+b[e[t+6]]+b[e[t+7]]+"-"+b[e[t+8]]+b[e[t+9]]+"-"+b[e[t+10]]+b[e[t+11]]+b[e[t+12]]+b[e[t+13]]+b[e[t+14]]+b[e[t+15]]}const w=function(e,t,n){if(h.randomUUID&&!t&&!e)return h.randomUUID();const r=(e=e||{}).random||(e.rng||v)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return y(r)};const S=p().memo((function({model:e,...t}){var n;const r=null!=(n=e.constructor.Component)?n:x,[a,o]=(0,u.useState)(0);return(0,u.useEffect)((()=>{const t=e.activate();return o((e=>e+1)),t}),[e]),e.isActive||e.renderBeforeActivation?p().createElement(r,{...t,model:e}):null}));function x(e){return null}class E extends o.BusEventWithPayload{}E.type="scene-object-state-change";class C extends o.BusEventWithPayload{}C.type="scene-object-user-action";var R,D=e=>{throw TypeError(e)},_=(e,t,n)=>t.has(e)||D("Cannot "+n);class O{constructor(e){var t,n,r;t=this,(n=R).has(t)?D("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(t):n.set(t,r),((e,t,n)=>{_(e,t,"write to private field"),t.set(e,n)})(this,R,e)}resolve(){return _(e=this,t=R,"read from private field"),n?n.call(e):t.get(e);var e,t,n}}R=new WeakMap;class I{constructor(e){this._isActive=!1,this._activationHandlers=[],this._deactivationHandlers=new Map,this._subs=new f.Subscription,this._refCount=0,this._renderBeforeActivation=!1,e.key||(e.key=w()),this._events=new o.EventBusSrv,this._state=Object.freeze(e),this._setParent(this._state)}get state(){return this._state}get isActive(){return this._isActive}get renderBeforeActivation(){return this._renderBeforeActivation}get parent(){return this._parent}get variableDependency(){return this._variableDependency}get urlSync(){return this._urlSync}get Component(){return S}_setParent(e){A(e,(e=>{e._parent&&e._parent!==this&&console.warn("SceneObject already has a parent set that is different from the new parent. You cannot share the same SceneObject instance in multiple scenes or in multiple different places of the same scene graph. Use SceneObject.clone() to duplicate a SceneObject or store a state key reference and use sceneGraph.findObject to locate it.",e,this),e._parent=this}))}clearParent(){this._parent=void 0}subscribeToState(e){return this._events.subscribe(E,(t=>{t.payload.changedObject===this&&e(t.payload.newState,t.payload.prevState)}))}subscribeToEvent(e,t){return this._events.subscribe(e,t)}setState(e){const t=this._state,n={...this._state,...e};this._state=Object.freeze(n),this._setParent(e),this._handleActivationOfChangedStateProps(t,n),this.publishEvent(new E({prevState:t,newState:n,partialUpdate:e,changedObject:this}),!0)}_handleActivationOfChangedStateProps(e,t){this.isActive&&(e.$behaviors!==t.$behaviors&&this._handleChangedBehaviors(e.$behaviors,t.$behaviors),e.$data!==t.$data&&this._handleChangedStateActivation(e.$data,t.$data),e.$variables!==t.$variables&&this._handleChangedStateActivation(e.$variables,t.$variables),e.$timeRange!==t.$timeRange&&this._handleChangedStateActivation(e.$timeRange,t.$timeRange))}_handleChangedStateActivation(e,t){if(e){const t=this._deactivationHandlers.get(e);t&&(t(),this._deactivationHandlers.delete(e))}t&&this._deactivationHandlers.set(t,t.activate())}_handleChangedBehaviors(e,t){if(e)for(const n of e)if(!t||!t.includes(n)){const e=this._deactivationHandlers.get(n);e&&(e(),this._deactivationHandlers.delete(n))}if(t)for(const n of t)e&&e.includes(n)||this._activateBehavior(n)}publishEvent(e,t){this._events.publish(e),t&&this.parent&&this.parent.publishEvent(e,t)}getRoot(){return this._parent?this._parent.getRoot():this}_internalActivate(){this._isActive=!0;const{$data:e,$variables:t,$timeRange:n,$behaviors:r}=this.state;if(this._activationHandlers.forEach((e=>{const t=e();t&&this._deactivationHandlers.set(t,t)})),n&&!n.isActive&&this._deactivationHandlers.set(n,n.activate()),t&&!t.isActive&&this._deactivationHandlers.set(t,t.activate()),e&&!e.isActive&&this._deactivationHandlers.set(e,e.activate()),r)for(const e of r)this._activateBehavior(e)}_activateBehavior(e){if(e instanceof I)this._deactivationHandlers.set(e,e.activate());else if("function"==typeof e){const t=e(this);t&&this._deactivationHandlers.set(e,t)}}activate(){this.isActive||this._internalActivate(),this._refCount++;let e=!1;return()=>{if(this._refCount--,e){throw new Error("SceneObject cancelation handler returned by activate() called a second time")}e=!0,0===this._refCount&&this._internalDeactivate()}}_internalDeactivate(){this._isActive=!1;for(let e of this._deactivationHandlers.values())e();this._deactivationHandlers.clear(),this._events.removeAllListeners(),this._subs.unsubscribe(),this._subs=new f.Subscription}useState(){return T(this)}forceRender(){this.setState({})}clone(e){return function(e,t){const n=P(e.state,t);return new e.constructor(n)}(this,e)}addActivationHandler(e){this._activationHandlers.push(e)}forEachChild(e){A(this.state,e)}getRef(){return this._ref||(this._ref=new O(this)),this._ref}toJSON(){return{type:Object.getPrototypeOf(this).constructor.name,isActive:this.isActive,state:this.state}}}function T(e,t){var n;const[r,a]=(0,u.useState)(e.state),o=e.state,i=null!=(n=null==t?void 0:t.shouldActivateOrKeepAlive)&&n;return(0,u.useEffect)((()=>{let t;i&&(t=e.activate());const n=e.subscribeToState((e=>{a(e)}));return e.state!==o&&a(e.state),()=>{n.unsubscribe(),t&&t()}}),[e,i]),e.state}function A(e,t){for(const n of Object.values(e))if(n instanceof I&&t(n),Array.isArray(n))for(const e of n)e instanceof I&&t(e)}var k=n(3241);function P(e,t){const n={...e};Object.assign(n,t);for(const e in n){if(t&&void 0!==t[e])continue;const r=n[e];if(r instanceof O)console.warn("Cloning object with SceneObjectRef");else if(r instanceof I)n[e]=r.clone();else if(Array.isArray(r)){const t=[];for(const e of r)e instanceof I?t.push(e.clone()):"object"==typeof e?t.push((0,k.cloneDeep)(e)):t.push(e);n[e]=t}else n[e]="object"==typeof r?(0,k.cloneDeep)(r):r}return n}function L(e,t){let n,r=e;for(;r&&!n;)n=t(r),r=r.parent;return n}class N extends o.DataSourceApi{constructor(e,t){super({name:"RuntimeDataSource-"+e,uid:t,type:e,id:1,readOnly:!0,jsonData:{},access:"direct",meta:{id:e,name:"RuntimeDataSource-"+e,type:o.PluginType.datasource,info:{author:{name:""},description:"",links:[],logos:{large:"",small:""},screenshots:[],updated:"",version:""},module:"",baseUrl:""}})}testDatasource(){return Promise.resolve({})}}const M=new Map;function B(e,t){const n=t.state.$variables;if(!n)return t.parent?B(e,t.parent):null;const r=n.getByName(e);return r||(t.parent?B(e,t.parent):null)}function V(e,t,...n){let r=!1;"undefined"!=typeof window&&(r="true"===localStorage.getItem("grafana.debug.scenes"))}new WeakMap,new WeakMap,new WeakMap,new WeakMap;function j(e){let t=e;for(;t;){if(t.state.$behaviors)for(const e of t.state.$behaviors)if("isQueryController"in e)return e;t=t.parent}}new WeakMap,new WeakMap;var F=n(1625);F.ob.Auto;var $=(e=>(e.NotStarted="NotStarted",e.Loading="Loading",e.Streaming="Streaming",e.Done="Done",e.Error="Error",e))($||{});class z extends I{constructor(e){super({data:U,...e})}getResultsStream(){const e={origin:this,data:this.state.data};return(0,f.of)(e)}}const U={state:$.Done,series:[],timeRange:(0,o.getDefaultTimeRange)()};class W{constructor(e,t){this._sceneObject=e,this._nextChangeShouldAddHistoryStep=!1,this._keys=t.keys}getKeys(){return"function"==typeof this._keys?this._keys():this._keys}getUrlState(){return this._sceneObject.getUrlState()}updateFromUrl(e){this._sceneObject.updateFromUrl(e)}shouldCreateHistoryStep(e){return this._nextChangeShouldAddHistoryStep}performBrowserHistoryAction(e){this._nextChangeShouldAddHistoryStep=!0,e(),this._nextChangeShouldAddHistoryStep=!1}}const H=/^\d+[yYmMsSwWhHdD]$/;function G(e){if("string"!=typeof e)return null;if(-1!==e.indexOf("now"))return e;if(H.test(e))return e;if(8===e.length){const t=(0,o.toUtc)(e,"YYYYMMDD");if(t.isValid())return t.toISOString()}else if(15===e.length){const t=(0,o.toUtc)(e,"YYYYMMDDTHHmmss");if(t.isValid())return t.toISOString()}else if(19===e.length){const t=(0,o.toUtc)(e,"YYYY-MM-DD HH:mm:ss");if(t.isValid())return t.toISOString()}else if(24===e.length){return(0,o.toUtc)(e).toISOString()}const t=parseInt(e,10);return isNaN(t)?null:(0,o.toUtc)(t).toISOString()}function q(e,t,n,r,a,i){const s=a&&"now"===t,l=Date.now();i&&function(e){e!==Q&&(Q=e,(0,o.setWeekStart)(e))}(i);const c=(e,t)=>o.dateMath.toDateTime?o.dateMath.toDateTime(e,t):o.dateMath.parse(e,t.roundUp,t.timezone,t.fiscalYearStartMonth);return{to:c(s?"now-"+a:t,{roundUp:!0,timezone:n,fiscalYearStartMonth:r,now:l}),from:c(e,{roundUp:!1,timezone:n,fiscalYearStartMonth:r,now:l}),raw:{from:e,to:t}}}let Q;function Y(e,t,n){if((0,o.isDateTime)(e))return e.isValid();if(o.dateMath.isMathString(e))return o.dateMath.isValid(e);return(0,o.dateTimeParse)(e,{roundUp:t,timeZone:n}).isValid()}class X extends I{constructor(e={}){var t;const n=e.from&&Y(e.from)?e.from:"now-6h",r=e.to&&Y(e.to)?e.to:"now",a=e.timeZone;super({from:n,to:r,timeZone:a,value:q(n,r,a||(0,o.getTimeZone)(),e.fiscalYearStartMonth,e.UNSAFE_nowDelay,e.weekStart),refreshOnActivate:null!=(t=e.refreshOnActivate)?t:{percent:10},...e}),this._urlSync=new W(this,{keys:["from","to","timezone","time","time.window"]}),this.onTimeRangeChange=e=>{const t={};if("string"==typeof e.raw.from?t.from=e.raw.from:t.from=e.raw.from.toISOString(),"string"==typeof e.raw.to?t.to=e.raw.to:t.to=e.raw.to.toISOString(),t.value=q(t.from,t.to,this.getTimeZone(),this.state.fiscalYearStartMonth,this.state.UNSAFE_nowDelay,this.state.weekStart),t.from!==this.state.from||t.to!==this.state.to){const e=j(this);null==e||e.startProfile("SceneTimeRange"),this._urlSync.performBrowserHistoryAction((()=>{this.setState(t)}))}},this.onTimeZoneChange=e=>{this._urlSync.performBrowserHistoryAction((()=>{this.setState({timeZone:e})}))},this.onRefresh=()=>{this.refreshRange(0),this.publishEvent(new i.RefreshEvent,!0)},this.addActivationHandler(this._onActivate.bind(this))}_onActivate(){if(!this.state.timeZone){const e=this.getTimeZoneSource();e!==this&&this._subs.add(e.subscribeToState(((e,t)=>{void 0!==e.timeZone&&e.timeZone!==t.timeZone&&this.refreshRange(0)})))}return o.rangeUtil.isRelativeTimeRange(this.state.value.raw)&&this.refreshIfStale(),()=>{this.state.weekStart&&(0,o.setWeekStart)(i.config.bootData.user.weekStart)}}refreshIfStale(){var e,t,n,r;let a;void 0!==(null==(t=null==(e=this.state)?void 0:e.refreshOnActivate)?void 0:t.percent)&&(a=this.calculatePercentOfInterval(this.state.refreshOnActivate.percent)),void 0!==(null==(r=null==(n=this.state)?void 0:n.refreshOnActivate)?void 0:r.afterMs)&&(a=Math.min(this.state.refreshOnActivate.afterMs,null!=a?a:1/0)),void 0!==a&&this.refreshRange(a)}getTimeZoneSource(){if(!this.parent||!this.parent.parent)return this;const e=L(this.parent.parent,(e=>{if(e.state.$timeRange&&e.state.$timeRange.state.timeZone)return e.state.$timeRange}));return e||this}refreshRange(e){var t;const n=q(this.state.from,this.state.to,null!=(t=this.state.timeZone)?t:(0,o.getTimeZone)(),this.state.fiscalYearStartMonth,this.state.UNSAFE_nowDelay,this.state.weekStart);n.to.diff(this.state.value.to,"milliseconds")>=e&&this.setState({value:n})}calculatePercentOfInterval(e){const t=this.state.value.to.diff(this.state.value.from,"milliseconds");return Math.ceil(t/e)}getTimeZone(){if(this.state.timeZone)return this.state.timeZone;const e=this.getTimeZoneSource();return e!==this?e.state.timeZone:(0,o.getTimeZone)()}getUrlState(){const e=i.locationService.getSearchObject(),t={from:this.state.from,to:this.state.to,timezone:this.getTimeZone()};return e.time&&e["time.window"]&&(t.time=null,t["time.window"]=null),t}updateFromUrl(e){var t,n,r;const a={};let i=G(e.from),s=G(e.to);if(e.time&&e["time.window"]){const t=function(e,t){const n=isNaN(Date.parse(e))?parseInt(e,10):Date.parse(e);let r;r=t.match(/^\d+$/)&&parseInt(t,10)?parseInt(t,10):o.rangeUtil.intervalToMs(t);return{from:(0,o.toUtc)(n-r/2).toISOString(),to:(0,o.toUtc)(n+r/2).toISOString()}}(Array.isArray(e.time)?e.time[0]:e.time,Array.isArray(e["time.window"])?e["time.window"][0]:e["time.window"]);t.from&&Y(t.from)&&(i=t.from),t.to&&Y(t.to)&&(s=t.to)}if(i&&Y(i)&&(a.from=i),s&&Y(s)&&(a.to=s),"string"==typeof e.timezone&&(a.timeZone=""!==e.timezone?e.timezone:void 0),0!==Object.keys(a).length)return a.value=q(null!=(t=a.from)?t:this.state.from,null!=(n=a.to)?n:this.state.to,null!=(r=a.timeZone)?r:this.getTimeZone(),this.state.fiscalYearStartMonth,this.state.UNSAFE_nowDelay,this.state.weekStart),this.setState(a)}}const K=new z,Z=new X;const J=new class extends I{constructor(){super({variables:[]})}getByName(e){}isVariableLoadingOrWaitingToUpdate(e){return!1}};function ee(e){var t;return null!=(t=L(e,(e=>e.state.$timeRange)))?t:Z}class te extends o.BusEventWithPayload{}function ne(e){return"object"==typeof e&&"formatter"in e}te.type="scene-variable-changed-value";let re,ae={};function oe(e){const t=ae[e];return t||(ae[e]=(0,k.property)(e))}class ie{constructor(e,t){this.state={name:e,value:t,type:"scopedvar"}}getValue(e){let{value:t}=this.state,n=t.value;return n=e?oe(e)(t.value):t.value,"string"===n||"number"===n||"boolean"===n?n:String(n)}getValueText(){const{value:e}=this.state;return null!=e.text?String(e.text):String(e)}}const se=new o.Registry((()=>{const e=[{id:F.$m.Lucene,name:"Lucene",description:"Values are lucene escaped and multi-valued variables generate an OR expression",formatter:e=>{if("string"==typeof e)return le(e);if(Array.isArray(e)){if(0===e.length)return"__empty__";return"("+(0,k.map)(e,(e=>'"'+le(e)+'"')).join(" OR ")+")"}return le(`${e}`)}},{id:F.$m.Raw,name:"raw",description:"Keep value as is",formatter:e=>String(e)},{id:F.$m.Regex,name:"Regex",description:"Values are regex escaped and multi-valued variables generate a (|) expression",formatter:e=>{if("string"==typeof e)return(0,o.escapeRegex)(e);if(Array.isArray(e)){const t=e.map((e=>"string"==typeof e?(0,o.escapeRegex)(e):(0,o.escapeRegex)(String(e))));return 1===t.length?t[0]:"("+t.join("|")+")"}return(0,o.escapeRegex)(`${e}`)}},{id:F.$m.Pipe,name:"Pipe",description:"Values are separated by | character",formatter:e=>"string"==typeof e?e:Array.isArray(e)?e.join("|"):`${e}`},{id:F.$m.Distributed,name:"Distributed",description:"Multiple values are formatted like variable=value",formatter:(e,t,n)=>"string"==typeof e?e:Array.isArray(e)?(e=(0,k.map)(e,((e,t)=>0!==t?n.state.name+"="+e:e)),e.join(",")):`${e}`},{id:F.$m.CSV,name:"Csv",description:"Comma-separated values",formatter:e=>"string"==typeof e?e:(0,k.isArray)(e)?e.join(","):String(e)},{id:F.$m.HTML,name:"HTML",description:"HTML escaping of values",formatter:e=>"string"==typeof e?o.textUtil.escapeHtml(e):(0,k.isArray)(e)?o.textUtil.escapeHtml(e.join(", ")):o.textUtil.escapeHtml(String(e))},{id:F.$m.JSON,name:"JSON",description:"JSON stringify value",formatter:e=>"string"==typeof e?e:JSON.stringify(e)},{id:F.$m.PercentEncode,name:"Percent encode",description:"Useful for URL escaping values",formatter:e=>(0,k.isArray)(e)?ce("{"+e.join(",")+"}"):ce(e)},{id:F.$m.SingleQuote,name:"Single quote",description:"Single quoted values",formatter:e=>{const t=new RegExp("'","g");if((0,k.isArray)(e))return(0,k.map)(e,(e=>`'${(0,k.replace)(e,t,"\\'")}'`)).join(",");let n="string"==typeof e?e:String(e);return`'${(0,k.replace)(n,t,"\\'")}'`}},{id:F.$m.DoubleQuote,name:"Double quote",description:"Double quoted values",formatter:e=>{const t=new RegExp('"',"g");if((0,k.isArray)(e))return(0,k.map)(e,(e=>`"${(0,k.replace)(e,t,'\\"')}"`)).join(",");let n="string"==typeof e?e:String(e);return`"${(0,k.replace)(n,t,'\\"')}"`}},{id:F.$m.SQLString,name:"SQL string",description:"SQL string quoting and commas for use in IN statements and other scenarios",formatter:he},{id:F.$m.Date,name:"Date",description:"Format date in different ways",formatter:(e,t)=>{var n;let r=NaN;if("number"==typeof e?r=e:"string"==typeof e&&(r=parseInt(e,10)),isNaN(r))return"NaN";const a=null!=(n=t[0])?n:"iso";switch(a){case"ms":return String(e);case"seconds":return`${Math.round(r/1e3)}`;case"iso":return(0,o.dateTime)(r).toISOString();default:return(t||[]).length>1?(0,o.dateTime)(r).format(t.join(":")):(0,o.dateTime)(r).format(a)}}},{id:F.$m.Glob,name:"Glob",description:"Format multi-valued variables using glob syntax, example {value1,value2}",formatter:e=>(0,k.isArray)(e)&&e.length>1?"{"+e.join(",")+"}":String(e)},{id:F.$m.Text,name:"Text",description:"Format variables in their text representation. Example in multi-variable scenario A + B + C.",formatter:(e,t,n)=>n.getValueText?n.getValueText():String(e)},{id:F.$m.QueryParam,name:"Query parameter",description:"Format variables as URL parameters. Example in multi-variable scenario A + B + C => var-foo=A&var-foo=B&var-foo=C.",formatter:(e,t,n)=>{if(n.urlSync){const e=n.urlSync.getUrlState();return o.urlUtil.toUrlParams(e)}return Array.isArray(e)?e.map((e=>pe(n.state.name,e))).join("&"):pe(n.state.name,e)}},{id:F.$m.UriEncode,name:"Percent encode as URI",description:"Useful for URL escaping values, taking into URI syntax characters",formatter:e=>(0,k.isArray)(e)?ue("{"+e.join(",")+"}"):ue(e)}];return e}));function le(e){return!1===isNaN(+e)?e:e.replace(/([\!\*\+\-\=<>\s\&\|\(\)\[\]\{\}\^\~\?\:\\/"])/g,"\\$1")}function ce(e){return"object"==typeof e&&(e=String(e)),de(encodeURIComponent(e))}const ue=e=>de(encodeURI(String(e))),de=e=>e.replace(/[!'()*]/g,(e=>"%"+e.charCodeAt(0).toString(16).toUpperCase()));function pe(e,t){return`var-${e}=${ce(t)}`}const fe={"'":"''",'"':'\\"'};function he(e){const t=new RegExp("'|\"","g");if((0,k.isArray)(e))return(0,k.map)(e,(e=>`'${(0,k.replace)(e,t,(e=>{var t;return null!=(t=fe[e])?t:""}))}'`)).join(",");let n="string"==typeof e?e:String(e);return`'${(0,k.replace)(n,t,(e=>{var t;return null!=(t=fe[e])?t:""}))}'`}const ge="All",me="$__all",ve="$__auto",be=/\$(\w+)|\[\[(\w+?)(?::(\w+))?\]\]|\${(\w+)(?:\.([^:^\}]+))?(?::([^\}]+))?}/g,ye="__searchFilter";class we{constructor(e){this._value=e}formatter(){return this._value}}class Se{constructor(e,t){this.state={name:e,type:"time_macro"},this._sceneObject=t}getValue(){const e=ee(this._sceneObject);return"__from"===this.state.name?e.state.value.from.valueOf():e.state.value.to.valueOf()}getValueText(){const e=ee(this._sceneObject);return"__from"===this.state.name?(0,o.dateTimeFormat)(e.state.value.from,{timeZone:e.getTimeZone()}):(0,o.dateTimeFormat)(e.state.value.to,{timeZone:e.getTimeZone()})}}class xe{constructor(e,t,n){this.state={name:e,type:"time_macro",match:n},this._sceneObject=t}getValue(){var e;const t=Hi(this._sceneObject);if(t){const n=null==(e=t.state.data)?void 0:e.request;return n?"__interval_ms"===this.state.name?n.intervalMs:n.interval:this.state.match}return this.state.match}}function Ee(e,t){e.setState(t)}function Ce(){return i.useLocationService?(0,i.useLocationService)():i.locationService}class Re extends I{constructor(){super(...arguments),this._urlSync=new De(this)}validateAndUpdate(){return this.getValueOptions({}).pipe((0,f.map)((e=>(this.updateValueGivenNewOptions(e),{}))))}onCancel(){this.setStateHelper({loading:!1});const e=this.parent;null==e||e.cancel(this)}updateValueGivenNewOptions(e){const{value:t,text:n,options:r}=this.state,a=this.getStateUpdateGivenNewOptions(e,t,n);this.interceptStateUpdateAfterValidation(a),this.setStateHelper(a),(a.value!==t||a.text!==n||this.hasAllValue()&&!(0,k.isEqual)(e,r))&&this.publishEvent(new te(this),!0)}getStateUpdateGivenNewOptions(e,t,n){const r={options:e,loading:!1,value:t,text:n};if(0===e.length)return this.state.defaultToAll||this.state.includeAll?(r.value=me,r.text=ge):this.state.isMulti?(r.value=[],r.text=[]):(r.value="",r.text=""),r;if(this.hasAllValue())return this.state.includeAll?r.text=ge:(r.value=e[0].value,r.text=e[0].label,this.state.isMulti&&(r.value=[r.value],r.text=[r.text])),r;if(this.state.isMulti){const a=(Array.isArray(t)?t:[t]).filter((t=>e.find((e=>e.value===t)))),o=a.map((t=>e.find((e=>e.value===t)).label));if(0===a.length){const t=this.getDefaultMultiState(e);r.value=t.value,r.text=t.text}else(0,k.isEqual)(a,t)||(r.value=a),(0,k.isEqual)(o,n)||(r.text=o);return r}let a=function(e,t,n){let r;for(const a of n){if(a.value===e)return a;a.label===t&&(r=a)}return r}(t,n,e);if(a)r.text=a.label,r.value=a.value;else{const t=this.getDefaultSingleState(e);r.value=t.value,r.text=t.text}return r}interceptStateUpdateAfterValidation(e){const t=e.value===me&&this.state.text===ge;this.skipNextValidation&&e.value!==this.state.value&&e.text!==this.state.text&&!t&&(e.value=this.state.value,e.text=this.state.text),this.skipNextValidation=!1}getValue(){return this.hasAllValue()?this.state.allValue?new _e(this.state.allValue,this):this.state.options.map((e=>e.value)):this.state.value}getValueText(){return this.hasAllValue()?ge:Array.isArray(this.state.text)?this.state.text.join(" + "):String(this.state.text)}hasAllValue(){const e=this.state.value;return e===me||Array.isArray(e)&&e[0]===me}getDefaultMultiState(e){return this.state.defaultToAll?{value:[me],text:[ge]}:e.length>0?{value:[e[0].value],text:[e[0].label]}:{value:[],text:[]}}getDefaultSingleState(e){return this.state.defaultToAll?{value:me,text:ge}:e.length>0?{value:e[0].value,text:e[0].label}:{value:"",text:""}}changeValueTo(e,t,n=!1){var r,a;if(e===this.state.value&&t===this.state.text)return;if(t||(t=Array.isArray(e)?e.map((e=>this.findLabelTextForValue(e))):this.findLabelTextForValue(e)),Array.isArray(e)){if(0===e.length){const n=this.getDefaultMultiState(this.state.options);e=n.value,t=n.text}e[e.length-1]===me?(e=[me],t=[ge]):e[0]===me&&e.length>1&&(e.shift(),Array.isArray(t)&&t.shift())}if((0,k.isEqual)(e,this.state.value)&&(0,k.isEqual)(t,this.state.text))return;const o=()=>this.setStateHelper({value:e,text:t,loading:!1});n?null==(a=(r=this._urlSync).performBrowserHistoryAction)||a.call(r,o):o(),this.publishEvent(new te(this),!0)}findLabelTextForValue(e){if(e===me)return ge;const t=this.state.options.find((t=>t.value===e));if(t)return t.label;const n=this.state.options.find((t=>t.label===e));return n?n.label:e}setStateHelper(e){Ee(this,e)}getOptionsForSelect(e=!0){let t=this.state.options;if(this.state.includeAll&&(t=[{value:me,label:ge},...t]),e&&!Array.isArray(this.state.value)){t.find((e=>e.value===this.state.value))||(t=[{value:this.state.value,label:String(this.state.text)},...t])}return t}refreshOptions(){this.getValueOptions({}).subscribe((e=>{this.updateValueGivenNewOptions(e)}))}}class De{constructor(e){this._sceneObject=e,this._nextChangeShouldAddHistoryStep=!1}getKey(){return`var-${this._sceneObject.state.name}`}getKeys(){return this._sceneObject.state.skipUrlSync?[]:[this.getKey()]}getUrlState(){if(this._sceneObject.state.skipUrlSync)return{};let e=null,t=this._sceneObject.state.value;return e=Array.isArray(t)?t.map(String):this._sceneObject.state.isMulti?[String(t)]:String(t),{[this.getKey()]:e}}updateFromUrl(e){let t=e[this.getKey()];null!=t&&(this._sceneObject.state.includeAll&&(t=function(e){if((0,k.isArray)(e)&&e[0]===ge)return[me];if(e===ge)return me;return e}(t)),this._sceneObject.state.allValue&&this._sceneObject.state.allValue===t&&(t=me),this._sceneObject.isActive||(this._sceneObject.skipNextValidation=!0),this._sceneObject.changeValueTo(t))}performBrowserHistoryAction(e){this._nextChangeShouldAddHistoryStep=!0,e(),this._nextChangeShouldAddHistoryStep=!1}shouldCreateHistoryStep(e){return this._nextChangeShouldAddHistoryStep}}class _e{constructor(e,t){this._value=e,this._variable=t}formatter(e){return e===F.$m.Text?ge:e===F.$m.PercentEncode?se.get(F.$m.PercentEncode).formatter(this._value,[],this._variable):e===F.$m.QueryParam?se.get(F.$m.QueryParam).formatter(ge,[],this._variable):this._value}}function Oe(e,t={}){if(e.state.$variables)for(const n of e.state.$variables.state.variables)n.state.skipUrlSync||t[n.state.name]||(t[n.state.name]=n);return e.parent&&Oe(e.parent,t),t}const Ie=(0,o.getDisplayProcessor)();class Te{constructor(e){this._urlQueryParams=e}formatter(e){if(!e)return this._urlQueryParams;const t=e.split(":");if("exclude"===t[0]&&t.length>1){const e=new URLSearchParams(this._urlQueryParams);for(const n of t[1].split(","))e.delete(n);return`?${e}`}if("include"===t[0]&&t.length>1){const e=new URLSearchParams(this._urlQueryParams),n=t[1].split(",");for(const t of e.keys())n.includes(t)||e.delete(t);return`?${e}`}return this._urlQueryParams}}const Ae=new Map([[o.DataLinkBuiltInVars.includeVars,class{constructor(e,t){this.state={name:e,type:"url_variable"},this._sceneObject=t}getValue(){const e=Oe(this._sceneObject),t=se.get(F.$m.QueryParam),n=[];for(const r of Object.keys(e)){const a=e[r];if(a instanceof Re&&a.hasAllValue()&&!a.state.allValue){n.push(t.formatter(me,[],a));continue}const o=a.getValue();o&&(ne(o)?n.push(o.formatter(F.$m.QueryParam)):n.push(t.formatter(o,[],a)))}return new we(n.join("&"))}getValueText(){return""}}],[o.DataLinkBuiltInVars.keepTime,class{constructor(e,t){this.state={name:e,type:"url_variable"},this._sceneObject=t}getValue(){var e;const t=null==(e=ee(this._sceneObject).urlSync)?void 0:e.getUrlState();return"browser"===(null==t?void 0:t.timezone)&&(t.timezone=Intl.DateTimeFormat().resolvedOptions().timeZone),new we(o.urlUtil.toUrlParams(t))}getValueText(){return""}}],["__value",class{constructor(e,t,n,r){this._match=n,this._scopedVars=r,this.state={name:e,type:"__value"}}getValue(e){var t,n;const r=null==(t=this._scopedVars)?void 0:t.__dataContext;if(!r)return this._match;const{frame:a,rowIndex:i,field:s,calculatedValue:l}=r.value;if(l)switch(e){case"numeric":case"raw":return l.numeric;case"time":return"";default:return(0,o.formattedValueToString)(l)}if(null==i)return this._match;if("time"===e){const e=a.fields.find((e=>e.type===o.FieldType.time));return e?e.values.get(i):void 0}if(!s)return this._match;const c=s.values.get(i);if("raw"===e)return c;const u=(null!=(n=s.display)?n:Ie)(c);return"numeric"===e?u.numeric:(0,o.formattedValueToString)(u)}getValueText(){return""}}],["__data",class{constructor(e,t,n,r){this._match=n,this._scopedVars=r,this.state={name:e,type:"__data"}}getValue(e){var t,n;const r=null==(t=this._scopedVars)?void 0:t.__dataContext;if(!r||!e)return this._match;const{frame:a,rowIndex:i}=r.value;if(void 0===i||void 0===e)return this._match;const s={name:a.name,refId:a.refId,fields:(0,o.getFieldDisplayValuesProxy)({frame:a,rowIndex:i})};return null!=(n=oe(e)(s))?n:""}getValueText(){return""}}],["__series",class{constructor(e,t,n,r){this._match=n,this._scopedVars=r,this.state={name:e,type:"__series"}}getValue(e){var t;const n=null==(t=this._scopedVars)?void 0:t.__dataContext;if(!n||!e)return this._match;if("name"!==e)return this._match;const{frame:r,frameIndex:a}=n.value;return(0,o.getFrameDisplayName)(r,a)}getValueText(){return""}}],["__field",class{constructor(e,t,n,r){this._match=n,this._scopedVars=r,this.state={name:e,type:"__field"}}getValue(e){var t,n;const r=null==(t=this._scopedVars)?void 0:t.__dataContext;if(!r||!e)return this._match;if(void 0===e||""===e)return this._match;const{frame:a,field:i,data:s}=r.value,l=function(e,t,n){return new Proxy({},{get:(r,a)=>"name"===a?e.name:"displayName"===a?(0,o.getFieldDisplayName)(e,t,n):"labels"===a||"formattedLabels"===a?e.labels?{...e.labels,__values:Object.values(e.labels).sort().join(", "),toString:()=>(0,o.formatLabels)(e.labels,"",!0)}:"":void 0})}(i,a,s);return null!=(n=oe(e)(l))?n:""}getValueText(){return""}}],["__url",class{constructor(e,t){this.state={name:e,type:"url_macro"}}getValue(e){var t;const n=i.locationService.getLocation(),r=null!=(t=i.config.appSubUrl)?t:"";switch(null!=e?e:""){case"params":return new Te(n.search);case"path":return r+n.pathname;default:return r+n.pathname+n.search}}getValueText(){return""}}],["__from",Se],["__to",Se],["__timezone",class{constructor(e,t){this.state={name:e,type:"time_macro"},this._sceneObject=t}getValue(){const e=ee(this._sceneObject).getTimeZone();return"browser"===e?Intl.DateTimeFormat().resolvedOptions().timeZone:e}getValueText(){return this.getValue()}}],["__user",class{constructor(e,t){this.state={name:e,type:"user_macro"}}getValue(e){const t=i.config.bootData.user;switch(e){case"login":return t.login;case"email":return t.email;default:return String(t.id)}}getValueText(){return""}}],["__org",class{constructor(e,t){this.state={name:e,type:"org_macro"}}getValue(e){const t=i.config.bootData.user;return"name"===e?t.orgName:String(t.orgId)}getValueText(){return""}}],["__interval",xe],["__interval_ms",xe]]);function ke(e,t,n,r,a){return t&&"string"==typeof t?(be.lastIndex=0,t.replace(be,((t,o,i,s,l,c,u)=>{const d=o||i||l,p=s||u||r,f=function(e,t,n,r){if(n&&n.hasOwnProperty(e)){const t=n[e];if(t)return function(e,t){return re?(re.state.name=e,re.state.value=t):re=new ie(e,t),re}(e,t)}const a=B(e,r);if(a)return a;const o=Ae.get(e);if(o)return new o(e,r,t,n);return null}(d,t,n,e);if(!f)return a&&a.push({match:t,variableName:d,fieldPath:c,format:p,value:t,found:!1}),t;const h=function(e,t,n,r){if(null==n)return"";if(ne(n))return ke(e,n.formatter(r));Array.isArray(n)||"object"!=typeof n||(n=`${n}`);if("function"==typeof r)return r(n,{name:t.state.name,type:t.state.type,multi:t.state.isMulti,includeAll:t.state.includeAll});let a=[];r?(a=r.split(":"),a.length>1?(r=a[0],a=a.slice(1)):a=[]):r=F.$m.Glob;let o=se.getIfExists(r);o||(console.error(`Variable format ${r} not found. Using glob format as fallback.`),o=se.get(F.$m.Glob));return o.formatter(n,a,t)}(e,f,f.getValue(c),p);return a&&a.push({match:t,variableName:d,fieldPath:c,format:p,value:h,found:h!==t}),h}))):null!=t?t:""}function Pe(e){return void 0!==e.useState}function Le(e){return"enrichDataRequest"in e}function Ne(e){return"isDataLayer"in e}function Me(e){return t=>{const n=Xi.getQueryController(e.origin);return n?new f.Observable((r=>{e.cancel||(e.cancel=()=>r.complete()),n.queryStarted(e);let a=!1;const o=t.subscribe({next:t=>{a||t.state===$.Loading||(a=!0,n.queryCompleted(e)),r.next(t)},error:e=>r.error(e),complete:()=>{r.complete()}});return()=>{o.unsubscribe(),a||n.queryCompleted(e)}})):t}}function Be(e){return new f.Observable((t=>{t.next({state:$.Loading});(0,f.from)(e).pipe((0,f.map)((()=>({state:$.Done}))),(0,f.catchError)((()=>(t.next({state:$.Error}),[])))).subscribe({next:e=>t.next(e),complete:()=>t.complete()})}))}async function Ve(e,t){if(null==e?void 0:e.uid){const t=M.get(e.uid);if(t)return t}if(e&&e.query)return e;const n=(0,i.getDataSourceSrv)().get(e,t);if(t.__sceneObject&&t.__sceneObject.value.valueOf()){const e=Xi.getQueryController(t.__sceneObject.value.valueOf());e&&e.state.enableProfiling&&Be(n).pipe(Me({type:"plugin",origin:t.__sceneObject.value.valueOf()})).subscribe((()=>{}))}return await n}class je{constructor(){this._values=new Map}recordCurrentDependencyValuesForSceneObject(e){if(this.clearValues(),e.variableDependency)for(const t of e.variableDependency.getNames()){const n=Xi.lookupVariable(t,e);n&&this._values.set(n.state.name,n.getValue())}}cloneAndRecordCurrentValuesForSceneObject(e){const t=new je;return t.recordCurrentDependencyValuesForSceneObject(e),t}clearValues(){this._values.clear()}hasValues(){return!!this._values}recordCurrentValue(e){this._values.set(e.state.name,e.getValue())}hasRecordedValue(e){return this._values.has(e.state.name)}hasValueChanged(e){if(this._values.has(e.state.name)){if(!ui(this._values.get(e.state.name),e.getValue()))return!0}return!1}hasDependenciesChanged(e){if(!this._values)return!1;if(!e.variableDependency)return!1;for(const t of e.variableDependency.getNames()){const n=Xi.lookupVariable(t,e);if(!n)continue;const r=n.state.name;if(n&&this._values.has(r)){if(!ui(this._values.get(r),n.getValue()))return!0}}return!1}}function Fe(e){return"object"==typeof e&&"getExtraQueries"in e}const $e=(e,t)=>(0,f.of)(t),ze=0;function Ue(e){const t=e.getRoot();return Le(t)?t.enrichDataRequest(e):null}let We,He=new Set;const Ge=new Set;var qe=n(2007),Qe=n(8449);function Ye(e,t="latest"){return Xe(e,t.replace(/\-.*/,""))}function Xe(e,t){const n={};for(const[r,a]of Object.entries(e))Ke(a)?n[r]=Xe(a,t):(Je(a,r),n[r]=Ze(a,t));return n}function Ke(e){if("object"==typeof e){const[t]=Object.keys(e);return!(0,Qe.valid)(t)}return!1}function Ze(e,t){let n,r=Object.keys(e).sort(Qe.compare);if("latest"===t)return e[r[r.length-1]];for(const e of r)(0,Qe.gte)(t,e)&&(n=e);return n||(n=r[r.length-1]),e[n]}function Je(e,t){if(!Object.keys(e).every((e=>(0,Qe.valid)(e))))throw new Error(`Invalid semver version: '${t}'`)}const et="8.5.0",tt={RadioButton:{container:{"10.2.3":"data-testid radio-button"}},Breadcrumbs:{breadcrumb:{"9.4.0":e=>`data-testid ${e} breadcrumb`}},TimePicker:{openButton:{[et]:"data-testid TimePicker Open Button"},overlayContent:{"10.2.3":"data-testid TimePicker Overlay Content"},fromField:{"10.2.3":"data-testid Time Range from field",[et]:"Time Range from field"},toField:{"10.2.3":"data-testid Time Range to field",[et]:"Time Range to field"},applyTimeRange:{[et]:"data-testid TimePicker submit button"},copyTimeRange:{"10.4.0":"data-testid TimePicker copy button"},pasteTimeRange:{"10.4.0":"data-testid TimePicker paste button"},calendar:{label:{"10.2.3":"data-testid Time Range calendar",[et]:"Time Range calendar"},openButton:{"10.2.3":"data-testid Open time range calendar",[et]:"Open time range calendar"},closeButton:{"10.2.3":"data-testid Close time range Calendar",[et]:"Close time range Calendar"}},absoluteTimeRangeTitle:{[et]:"data-testid-absolute-time-range-narrow"}},DataSourcePermissions:{form:{"9.5.0":()=>'form[name="addPermission"]'},roleType:{"9.5.0":"Role to add new permission to"},rolePicker:{"9.5.0":"Built-in role picker"},permissionLevel:{"9.5.0":"Permission Level"}},DateTimePicker:{input:{"10.2.3":"data-testid date-time-input"}},DataSource:{TestData:{QueryTab:{scenarioSelectContainer:{[et]:"Test Data Query scenario select container"},scenarioSelect:{[et]:"Test Data Query scenario select"},max:{[et]:"TestData max"},min:{[et]:"TestData min"},noise:{[et]:"TestData noise"},seriesCount:{[et]:"TestData series count"},spread:{[et]:"TestData spread"},startValue:{[et]:"TestData start value"},drop:{[et]:"TestData drop values"}}},DataSourceHttpSettings:{urlInput:{"10.4.0":"data-testid Datasource HTTP settings url",[et]:"Datasource HTTP settings url"}},Jaeger:{traceIDInput:{[et]:"Trace ID"}},Prometheus:{configPage:{connectionSettings:{[et]:"Data source connection URL"},manageAlerts:{"10.4.0":"prometheus-alerts-manager"},scrapeInterval:{"10.4.0":"data-testid scrape interval"},queryTimeout:{"10.4.0":"data-testid query timeout"},defaultEditor:{"10.4.0":"data-testid default editor"},disableMetricLookup:{"10.4.0":"disable-metric-lookup"},prometheusType:{"10.4.0":"data-testid prometheus type"},prometheusVersion:{"10.4.0":"data-testid prometheus version"},cacheLevel:{"10.4.0":"data-testid cache level"},incrementalQuerying:{"10.4.0":"prometheus-incremental-querying"},queryOverlapWindow:{"10.4.0":"data-testid query overlap window"},disableRecordingRules:{"10.4.0":"disable-recording-rules"},customQueryParameters:{"10.4.0":"data-testid custom query parameters"},httpMethod:{"10.4.0":"data-testid http method"},exemplarsAddButton:{"10.3.0":"data-testid Add exemplar config button",[et]:"Add exemplar config button"},internalLinkSwitch:{"10.3.0":"data-testid Internal link switch",[et]:"Internal link switch"},codeModeMetricNamesSuggestionLimit:{"11.1.0":"data-testid code mode metric names suggestion limit"}},queryEditor:{explain:{"10.4.0":"data-testid prometheus explain switch wrapper"},editorToggle:{"10.4.0":"data-testid QueryEditorModeToggle"},options:{"10.4.0":"data-testid prometheus options"},legend:{"10.4.0":"data-testid prometheus legend wrapper"},format:{"10.4.0":"data-testid prometheus format"},step:{"10.4.0":"prometheus-step"},type:{"10.4.0":"data-testid prometheus type"},exemplars:{"10.4.0":"prometheus-exemplars"},builder:{metricSelect:{"10.4.0":"data-testid metric select"},hints:{"10.4.0":"data-testid prometheus hints"},metricsExplorer:{"10.4.0":"data-testid metrics explorer"},queryAdvisor:{"10.4.0":"data-testid query advisor"}},code:{queryField:{"10.4.0":"data-testid prometheus query field"},metricsCountInfo:{"11.1.0":"data-testid metrics count disclaimer"},metricsBrowser:{openButton:{"10.4.0":"data-testid open metrics browser"},selectMetric:{"10.4.0":"data-testid select a metric"},seriesLimit:{"10.3.1":"data-testid series limit"},metricList:{"10.4.0":"data-testid metric list"},labelNamesFilter:{"10.4.0":"data-testid label names filter"},labelValuesFilter:{"10.4.0":"data-testid label values filter"},useQuery:{"10.4.0":"data-testid use query"},useAsRateQuery:{"10.4.0":"data-testid use as rate query"},validateSelector:{"10.4.0":"data-testid validate selector"},clear:{"10.4.0":"data-testid clear"}}}},exemplarMarker:{"10.3.0":"data-testid Exemplar marker",[et]:"Exemplar marker"},variableQueryEditor:{queryType:{"10.4.0":"data-testid query type"},labelnames:{metricRegex:{"10.4.0":"data-testid label names metric regex"}},labelValues:{labelSelect:{"10.4.0":"data-testid label values label select"}},metricNames:{metricRegex:{"10.4.0":"data-testid metric names metric regex"}},varQueryResult:{"10.4.0":"data-testid variable query result"},seriesQuery:{"10.4.0":"data-testid prometheus series query"},classicQuery:{"10.4.0":"data-testid prometheus classic query"}},annotations:{minStep:{"10.4.0":"prometheus-annotation-min-step"},title:{"10.4.0":"data-testid prometheus annotation title"},tags:{"10.4.0":"data-testid prometheus annotation tags"},text:{"10.4.0":"data-testid prometheus annotation text"},seriesValueAsTimestamp:{"10.4.0":"data-testid prometheus annotation series value as timestamp"}}}},Menu:{MenuComponent:{[et]:e=>`${e} menu`},MenuGroup:{[et]:e=>`${e} menu group`},MenuItem:{[et]:e=>`${e} menu item`},SubMenu:{container:{"10.3.0":"data-testid SubMenu container",[et]:"SubMenu container"},icon:{"10.3.0":"data-testid SubMenu icon",[et]:"SubMenu icon"}}},Panels:{Panel:{title:{[et]:e=>`data-testid Panel header ${e}`},content:{"11.1.0":"data-testid panel content"},headerItems:{"10.2.0":e=>`data-testid Panel header item ${e}`},menuItems:{"9.5.0":e=>`data-testid Panel menu item ${e}`},menu:{"9.5.0":e=>`data-testid Panel menu ${e}`},containerByTitle:{[et]:e=>`${e} panel`},headerCornerInfo:{[et]:e=>`Panel header ${e}`},status:{"10.2.0":e=>`data-testid Panel status ${e}`,[et]:e=>"Panel status"},loadingBar:{"10.0.0":()=>"Panel loading bar"},HoverWidget:{container:{"10.1.0":"data-testid hover-header-container",[et]:"hover-header-container"},dragIcon:{"10.0.0":"data-testid drag-icon"}},PanelDataErrorMessage:{"10.4.0":"data-testid Panel data error message"}},Visualization:{Graph:{container:{"9.5.0":"Graph container"},VisualizationTab:{legendSection:{[et]:"Legend section"}},Legend:{legendItemAlias:{[et]:e=>`gpl alias ${e}`},showLegendSwitch:{[et]:"gpl show legend"}},xAxis:{labels:{[et]:()=>"div.flot-x-axis > div.flot-tick-label"}}},BarGauge:{valueV2:{[et]:"data-testid Bar gauge value"}},PieChart:{svgSlice:{"10.3.0":"data testid Pie Chart Slice"}},Text:{container:{[et]:()=>".markdown-html"}},Table:{header:{[et]:"table header"},footer:{[et]:"table-footer"},body:{"10.2.0":"data-testid table body"}}}},VizLegend:{seriesName:{"10.3.0":e=>`data-testid VizLegend series ${e}`}},Drawer:{General:{title:{[et]:e=>`Drawer title ${e}`},expand:{[et]:"Drawer expand"},contract:{[et]:"Drawer contract"},close:{"10.3.0":"data-testid Drawer close",[et]:"Drawer close"},rcContentWrapper:{"9.4.0":()=>".rc-drawer-content-wrapper"},subtitle:{"10.4.0":"data-testid drawer subtitle"}},DashboardSaveDrawer:{saveButton:{"11.1.0":"data-testid Save dashboard drawer button"},saveAsButton:{"11.1.0":"data-testid Save as dashboard drawer button"},saveAsTitleInput:{"11.1.0":"Save dashboard title field"}}},PanelEditor:{General:{content:{"11.1.0":"data-testid Panel editor content","8.0.0":"Panel editor content"}},OptionsPane:{content:{"11.1.0":"data-testid Panel editor option pane content",[et]:"Panel editor option pane content"},select:{[et]:"Panel editor option pane select"},fieldLabel:{[et]:e=>`${e} field property editor`},fieldInput:{"11.0.0":e=>`data-testid Panel editor option pane field input ${e}`}},DataPane:{content:{"11.1.0":"data-testid Panel editor data pane content",[et]:"Panel editor data pane content"}},applyButton:{"9.2.0":"data-testid Apply changes and go back to dashboard","9.1.0":"Apply changes and go back to dashboard","8.0.0":"panel editor apply"},toggleVizPicker:{"10.0.0":"data-testid toggle-viz-picker","8.0.0":"toggle-viz-picker"},toggleVizOptions:{"10.1.0":"data-testid toggle-viz-options",[et]:"toggle-viz-options"},toggleTableView:{"11.1.0":"data-testid toggle-table-view",[et]:"toggle-table-view"},showZoomField:{"10.2.0":"Map controls Show zoom control field property editor"},showAttributionField:{"10.2.0":"Map controls Show attribution field property editor"},showScaleField:{"10.2.0":"Map controls Show scale field property editor"},showMeasureField:{"10.2.0":"Map controls Show measure tools field property editor"},showDebugField:{"10.2.0":"Map controls Show debug field property editor"},measureButton:{"9.2.0":"show measure tools"}},PanelInspector:{Data:{content:{[et]:"Panel inspector Data content"}},Stats:{content:{[et]:"Panel inspector Stats content"}},Json:{content:{"11.1.0":"data-testid Panel inspector Json content",[et]:"Panel inspector Json content"}},Query:{content:{[et]:"Panel inspector Query content"},refreshButton:{[et]:"Panel inspector Query refresh button"},jsonObjectKeys:{[et]:()=>".json-formatter-key"}}},Tab:{title:{"11.2.0":e=>`data-testid Tab ${e}`},active:{[et]:()=>'[class*="-activeTabStyle"]'}},RefreshPicker:{runButtonV2:{[et]:"data-testid RefreshPicker run button"},intervalButtonV2:{[et]:"data-testid RefreshPicker interval button"}},QueryTab:{content:{[et]:"Query editor tab content"},queryInspectorButton:{[et]:"Query inspector button"},queryHistoryButton:{"10.2.0":"data-testid query-history-button",[et]:"query-history-button"},addQuery:{"10.2.0":"data-testid query-tab-add-query",[et]:"Query editor add query button"},queryGroupTopSection:{"11.2.0":"data-testid query group top section"},addExpression:{"11.2.0":"data-testid query-tab-add-expression"}},QueryHistory:{queryText:{"9.0.0":"Query text"}},QueryEditorRows:{rows:{[et]:"Query editor row"}},QueryEditorRow:{actionButton:{"10.4.0":e=>`data-testid ${e}`},title:{[et]:e=>`Query editor row title ${e}`},container:{[et]:e=>`Query editor row ${e}`}},AlertTab:{content:{"10.2.3":"data-testid Alert editor tab content",[et]:"Alert editor tab content"}},AlertRules:{groupToggle:{"11.0.0":"data-testid group-collapse-toggle"},toggle:{"11.0.0":"data-testid collapse-toggle"},expandedContent:{"11.0.0":"data-testid expanded-content"},previewButton:{"11.1.0":"data-testid alert-rule preview-button"},ruleNameField:{"11.1.0":"data-testid alert-rule name-field"},newFolderButton:{"11.1.0":"data-testid alert-rule new-folder-button"},newFolderNameField:{"11.1.0":"data-testid alert-rule name-folder-name-field"},newFolderNameCreateButton:{"11.1.0":"data-testid alert-rule name-folder-name-create-button"},newEvaluationGroupButton:{"11.1.0":"data-testid alert-rule new-evaluation-group-button"},newEvaluationGroupName:{"11.1.0":"data-testid alert-rule new-evaluation-group-name"},newEvaluationGroupInterval:{"11.1.0":"data-testid alert-rule new-evaluation-group-interval"},newEvaluationGroupCreate:{"11.1.0":"data-testid alert-rule new-evaluation-group-create-button"},step:{"11.5.0":e=>`data-testid alert-rule step-${e}`},stepAdvancedModeSwitch:{"11.5.0":e=>`data-testid advanced-mode-switch step-${e}`}},Alert:{alertV2:{[et]:e=>`data-testid Alert ${e}`}},TransformTab:{content:{"10.1.0":"data-testid Transform editor tab content",[et]:"Transform editor tab content"},newTransform:{"10.1.0":e=>`data-testid New transform ${e}`},transformationEditor:{"10.1.0":e=>`data-testid Transformation editor ${e}`},transformationEditorDebugger:{"10.1.0":e=>`data-testid Transformation editor debugger ${e}`}},Transforms:{card:{"10.1.0":e=>`data-testid New transform ${e}`},disableTransformationButton:{"10.4.0":"data-testid Disable transformation button"},Reduce:{modeLabel:{"10.2.3":"data-testid Transform mode label",[et]:"Transform mode label"},calculationsLabel:{"10.2.3":"data-testid Transform calculations label",[et]:"Transform calculations label"}},SpatialOperations:{actionLabel:{"9.1.2":"root Action field property editor"},locationLabel:{"10.2.0":"root Location Mode field property editor"},location:{autoOption:{"9.1.2":"Auto location option"},coords:{option:{"9.1.2":"Coords location option"},latitudeFieldLabel:{"9.1.2":"root Latitude field field property editor"},longitudeFieldLabel:{"9.1.2":"root Longitude field field property editor"}},geohash:{option:{"9.1.2":"Geohash location option"},geohashFieldLabel:{"9.1.2":"root Geohash field field property editor"}},lookup:{option:{"9.1.2":"Lookup location option"},lookupFieldLabel:{"9.1.2":"root Lookup field field property editor"},gazetteerFieldLabel:{"9.1.2":"root Gazetteer field property editor"}}}},searchInput:{"10.2.3":"data-testid search transformations",[et]:"search transformations"},noTransformationsMessage:{"10.2.3":"data-testid no transformations message"},addTransformationButton:{"10.1.0":"data-testid add transformation button",[et]:"add transformation button"},removeAllTransformationsButton:{"10.4.0":"data-testid remove all transformations button"}},NavBar:{Configuration:{button:{"9.5.0":"Configuration"}},Toggle:{button:{"10.2.3":"data-testid Toggle menu",[et]:"Toggle menu"}},Reporting:{button:{"9.5.0":"Reporting"}}},NavMenu:{Menu:{"10.2.3":"data-testid navigation mega-menu"},item:{"9.5.0":"data-testid Nav menu item"}},NavToolbar:{container:{"9.4.0":"data-testid Nav toolbar"},commandPaletteTrigger:{"11.5.0":"data-testid Command palette trigger"},shareDashboard:{"11.1.0":"data-testid Share dashboard"},markAsFavorite:{"11.1.0":"data-testid Mark as favorite"},editDashboard:{editButton:{"11.1.0":"data-testid Edit dashboard button"},saveButton:{"11.1.0":"data-testid Save dashboard button"},exitButton:{"11.1.0":"data-testid Exit edit mode button"},settingsButton:{"11.1.0":"data-testid Dashboard settings"},addRowButton:{"11.1.0":"data-testid Add row button"},addLibraryPanelButton:{"11.1.0":"data-testid Add a panel from the panel library button"},addVisualizationButton:{"11.1.0":"data-testid Add new visualization menu item"},pastePanelButton:{"11.1.0":"data-testid Paste panel button"},discardChangesButton:{"11.1.0":"data-testid Discard changes button"},discardLibraryPanelButton:{"11.1.0":"data-testid Discard library panel button"},unlinkLibraryPanelButton:{"11.1.0":"data-testid Unlink library panel button"},saveLibraryPanelButton:{"11.1.0":"data-testid Save library panel button"},backToDashboardButton:{"11.1.0":"data-testid Back to dashboard button"}}},PageToolbar:{container:{[et]:()=>".page-toolbar"},item:{[et]:e=>`${e}`},itemButton:{"9.5.0":e=>`data-testid ${e}`}},QueryEditorToolbarItem:{button:{[et]:e=>`QueryEditor toolbar item button ${e}`}},BackButton:{backArrow:{"10.3.0":"data-testid Go Back",[et]:"Go Back"}},OptionsGroup:{group:{"11.1.0":e=>e?`data-testid Options group ${e}`:"data-testid Options group",[et]:e=>e?`Options group ${e}`:"Options group"},toggle:{"11.1.0":e=>e?`data-testid Options group ${e} toggle`:"data-testid Options group toggle",[et]:e=>e?`Options group ${e} toggle`:"Options group toggle"}},PluginVisualization:{item:{[et]:e=>`Plugin visualization item ${e}`},current:{[et]:()=>'[class*="-currentVisualizationItem"]'}},Select:{menu:{"11.5.0":"data-testid Select menu",[et]:"Select options menu"},option:{"11.1.0":"data-testid Select option",[et]:"Select option"},toggleAllOptions:{"11.3.0":"data-testid toggle all options"},input:{[et]:()=>'input[id*="time-options-input"]'},singleValue:{[et]:()=>'div[class*="-singleValue"]'}},FieldConfigEditor:{content:{[et]:"Field config editor content"}},OverridesConfigEditor:{content:{[et]:"Field overrides editor content"}},FolderPicker:{containerV2:{[et]:"data-testid Folder picker select container"},input:{"10.4.0":"data-testid folder-picker-input"}},ReadonlyFolderPicker:{container:{[et]:"data-testid Readonly folder picker select container"}},DataSourcePicker:{container:{"10.0.0":"data-testid Data source picker select container","8.0.0":"Data source picker select container"},inputV2:{"10.1.0":"data-testid Select a data source",[et]:"Select a data source"},dataSourceList:{"10.4.0":"data-testid Data source list dropdown"},advancedModal:{dataSourceList:{"10.4.0":"data-testid Data source list"},builtInDataSourceList:{"10.4.0":"data-testid Built in data source list"}}},TimeZonePicker:{containerV2:{[et]:"data-testid Time zone picker select container"},changeTimeSettingsButton:{"11.0.0":"data-testid Time zone picker Change time settings button"}},WeekStartPicker:{containerV2:{[et]:"data-testid Choose starting day of the week"},placeholder:{[et]:"Choose starting day of the week"}},TraceViewer:{spanBar:{"9.0.0":"data-testid SpanBar--wrapper"}},QueryField:{container:{"10.3.0":"data-testid Query field",[et]:"Query field"}},QueryBuilder:{queryPatterns:{"10.3.0":"data-testid Query patterns",[et]:"Query patterns"},labelSelect:{"10.3.0":"data-testid Select label",[et]:"Select label"},inputSelect:{"11.1.0":"data-testid Select label-input"},valueSelect:{"10.3.0":"data-testid Select value",[et]:"Select value"},matchOperatorSelect:{"10.3.0":"data-testid Select match operator",[et]:"Select match operator"}},ValuePicker:{button:{"10.3.0":e=>`data-testid Value picker button ${e}`},select:{"10.3.0":e=>`data-testid Value picker select ${e}`}},Search:{sectionV2:{[et]:"data-testid Search section"},itemsV2:{[et]:"data-testid Search items"},cards:{[et]:"data-testid Search cards"},collapseFolder:{[et]:e=>`data-testid Collapse folder ${e}`},expandFolder:{[et]:e=>`data-testid Expand folder ${e}`},dashboardItem:{[et]:e=>`data-testid Dashboard search item ${e}`},dashboardCard:{[et]:e=>`data-testid Search card ${e}`},folderHeader:{"9.3.0":e=>`data-testid Folder header ${e}`},folderContent:{"9.3.0":e=>`data-testid Folder content ${e}`},dashboardItems:{[et]:"data-testid Dashboard search item"}},DashboardLinks:{container:{[et]:"data-testid Dashboard link container"},dropDown:{[et]:"data-testid Dashboard link dropdown"},link:{[et]:"data-testid Dashboard link"}},LoadingIndicator:{icon:{"10.4.0":"data-testid Loading indicator",[et]:"Loading indicator"}},CallToActionCard:{buttonV2:{[et]:e=>`data-testid Call to action button ${e}`}},DataLinksContextMenu:{singleLink:{"10.3.0":"data-testid Data link",[et]:"Data link"}},CodeEditor:{container:{"10.2.3":"data-testid Code editor container",[et]:"Code editor container"}},ReactMonacoEditor:{editorLazy:{"11.1.0":"data-testid ReactMonacoEditor editorLazy"}},DashboardImportPage:{textarea:{[et]:"data-testid-import-dashboard-textarea"},submit:{[et]:"data-testid-load-dashboard"}},ImportDashboardForm:{name:{[et]:"data-testid-import-dashboard-title"},submit:{[et]:"data-testid-import-dashboard-submit"}},PanelAlertTabContent:{content:{"10.2.3":"data-testid Unified alert editor tab content",[et]:"Unified alert editor tab content"}},VisualizationPreview:{card:{[et]:e=>`data-testid suggestion-${e}`}},ColorSwatch:{name:{[et]:"data-testid-colorswatch"}},DashboardRow:{title:{[et]:e=>`data-testid dashboard-row-title-${e}`}},UserProfile:{profileSaveButton:{[et]:"data-testid-user-profile-save"},preferencesSaveButton:{[et]:"data-testid-shared-prefs-save"},orgsTable:{[et]:"data-testid-user-orgs-table"},sessionsTable:{[et]:"data-testid-user-sessions-table"},extensionPointTabs:{"10.2.3":"data-testid-extension-point-tabs"},extensionPointTab:{"10.2.3":e=>`data-testid-extension-point-tab-${e}`}},FileUpload:{inputField:{"9.0.0":"data-testid-file-upload-input-field"},fileNameSpan:{"9.0.0":"data-testid-file-upload-file-name"}},DebugOverlay:{wrapper:{"9.2.0":"debug-overlay"}},OrgRolePicker:{input:{"9.5.0":"Role"}},AnalyticsToolbarButton:{button:{"9.5.0":"Dashboard insights"}},Variables:{variableOption:{"9.5.0":"data-testid variable-option"},variableLinkWrapper:{"11.1.1":"data-testid variable-link-wrapper"}},Annotations:{annotationsTypeInput:{"11.1.0":"data-testid annotations-type-input",[et]:"annotations-type-input"},annotationsChoosePanelInput:{"11.1.0":"data-testid choose-panels-input",[et]:"choose-panels-input"},editor:{testButton:{"11.0.0":"data-testid annotations-test-button"},resultContainer:{"11.0.0":"data-testid annotations-query-result-container"}}},Tooltip:{container:{"10.2.0":"data-testid tooltip"}},ReturnToPrevious:{buttonGroup:{"11.0.0":"data-testid dismissable button group"},backButton:{"11.0.0":"data-testid back"},dismissButton:{"11.0.0":"data-testid dismiss"}},SQLQueryEditor:{selectColumn:{"11.0.0":"data-testid select-column"},selectColumnInput:{"11.0.0":"data-testid select-column-input"},selectFunctionParameter:{"11.0.0":e=>`data-testid select-function-parameter-${e}`},selectAggregation:{"11.0.0":"data-testid select-aggregation"},selectAggregationInput:{"11.0.0":"data-testid select-aggregation-input"},selectAlias:{"11.0.0":"data-testid select-alias"},selectAliasInput:{"11.0.0":"data-testid select-alias-input"},selectInputParameter:{"11.0.0":"data-testid select-input-parameter"},filterConjunction:{"11.0.0":"data-testid filter-conjunction"},filterField:{"11.0.0":"data-testid filter-field"},filterOperator:{"11.0.0":"data-testid filter-operator"},headerTableSelector:{"11.0.0":"data-testid header-table-selector"},headerFilterSwitch:{"11.0.0":"data-testid header-filter-switch"},headerGroupSwitch:{"11.0.0":"data-testid header-group-switch"},headerOrderSwitch:{"11.0.0":"data-testid header-order-switch"},headerPreviewSwitch:{"11.0.0":"data-testid header-preview-switch"}},EntityNotFound:{container:{"11.2.0":"data-testid entity-not-found"}},Portal:{container:{"11.5.0":"data-testid portal-container"}}},nt={pages:Ye({Alerting:{AddAlertRule:{url:{"10.1.0":"/alerting/new/alerting",[et]:"/alerting/new"}},EditAlertRule:{url:{[et]:e=>`alerting/${e}/edit`}}},Login:{url:{[et]:"/login"},username:{"10.2.3":"data-testid Username input field",[et]:"Username input field"},password:{"10.2.3":"data-testid Password input field",[et]:"Password input field"},submit:{"10.2.3":"data-testid Login button",[et]:"Login button"},skip:{"10.2.3":"data-testid Skip change password button"}},PasswordlessLogin:{url:{[et]:"/login/passwordless/authenticate"},email:{"10.2.3":"data-testid Email input field",[et]:"Email input field"},submit:{"10.2.3":"data-testid PasswordlessLogin button",[et]:"PasswordlessLogin button"}},Home:{url:{[et]:"/"}},DataSource:{name:{"10.3.0":"data-testid Data source settings page name input field",[et]:"Data source settings page name input field"},delete:{[et]:"Data source settings page Delete button"},readOnly:{"10.3.0":"data-testid Data source settings page read only message",[et]:"Data source settings page read only message"},saveAndTest:{"10.0.0":"data-testid Data source settings page Save and Test button",[et]:"Data source settings page Save and Test button"},alert:{"10.3.0":"data-testid Data source settings page Alert",[et]:"Data source settings page Alert"}},DataSources:{url:{[et]:"/datasources"},dataSources:{[et]:e=>`Data source list item ${e}`}},EditDataSource:{url:{"9.5.0":e=>`/datasources/edit/${e}`},settings:{"9.5.0":"Datasource settings page basic settings"}},AddDataSource:{url:{[et]:"/datasources/new"},dataSourcePluginsV2:{"9.3.1":e=>`Add new data source ${e}`,[et]:e=>`Data source plugin item ${e}`}},ConfirmModal:{delete:{"10.0.0":"data-testid Confirm Modal Danger Button",[et]:"Confirm Modal Danger Button"}},AddDashboard:{url:{[et]:"/dashboard/new"},itemButton:{"9.5.0":e=>`data-testid ${e}`},addNewPanel:{"11.1.0":"data-testid Add new panel","8.0.0":"Add new panel",[et]:"Add new panel"},itemButtonAddViz:{[et]:"Add new visualization menu item"},addNewRow:{"11.1.0":"data-testid Add new row",[et]:"Add new row"},addNewPanelLibrary:{"11.1.0":"data-testid Add new panel from panel library",[et]:"Add new panel from panel library"},Settings:{Annotations:{List:{url:{[et]:"/dashboard/new?orgId=1&editview=annotations"}},Edit:{url:{[et]:e=>`/dashboard/new?editview=annotations&editIndex=${e}`}}},Variables:{List:{url:{"11.3.0":"/dashboard/new?orgId=1&editview=variables",[et]:"/dashboard/new?orgId=1&editview=templating"}},Edit:{url:{"11.3.0":e=>`/dashboard/new?orgId=1&editview=variables&editIndex=${e}`,[et]:e=>`/dashboard/new?orgId=1&editview=templating&editIndex=${e}`}}}}},Dashboard:{url:{[et]:e=>`/d/${e}`},DashNav:{nav:{[et]:"Dashboard navigation"},navV2:{[et]:"data-testid Dashboard navigation"},publicDashboardTag:{"9.1.0":"data-testid public dashboard tag"},shareButton:{"10.4.0":"data-testid share-button"},scrollContainer:{"11.1.0":"data-testid Dashboard canvas scroll container"},newShareButton:{container:{"11.1.0":"data-testid new share button"},shareLink:{"11.1.0":"data-testid new share link-button"},arrowMenu:{"11.1.0":"data-testid new share button arrow menu"},menu:{container:{"11.1.0":"data-testid new share button menu"},shareInternally:{"11.1.0":"data-testid new share button share internally"},shareExternally:{"11.1.1":"data-testid new share button share externally"},shareSnapshot:{"11.2.0":"data-testid new share button share snapshot"}}},NewExportButton:{container:{"11.2.0":"data-testid new export button"},arrowMenu:{"11.2.0":"data-testid new export button arrow menu"},Menu:{container:{"11.2.0":"data-testid new export button menu"},exportAsJson:{"11.2.0":"data-testid new export button export as json"}}},playlistControls:{prev:{"11.0.0":"data-testid playlist previous dashboard button"},stop:{"11.0.0":"data-testid playlist stop dashboard button"},next:{"11.0.0":"data-testid playlist next dashboard button"}}},Controls:{"11.1.0":"data-testid dashboard controls"},SubMenu:{submenu:{[et]:"Dashboard submenu"},submenuItem:{[et]:"data-testid template variable"},submenuItemLabels:{[et]:e=>`data-testid Dashboard template variables submenu Label ${e}`},submenuItemValueDropDownValueLinkTexts:{[et]:e=>`data-testid Dashboard template variables Variable Value DropDown value link text ${e}`},submenuItemValueDropDownDropDown:{[et]:"Variable options"},submenuItemValueDropDownOptionTexts:{[et]:e=>`data-testid Dashboard template variables Variable Value DropDown option text ${e}`},Annotations:{annotationsWrapper:{"10.0.0":"data-testid annotation-wrapper"},annotationLabel:{"10.0.0":e=>`data-testid Dashboard annotations submenu Label ${e}`},annotationToggle:{"10.0.0":e=>`data-testid Dashboard annotations submenu Toggle ${e}`}}},Settings:{Actions:{close:{"9.5.0":"data-testid dashboard-settings-close"}},General:{deleteDashBoard:{"11.1.0":"data-testid Dashboard settings page delete dashboard button"},sectionItems:{[et]:e=>`Dashboard settings section item ${e}`},saveDashBoard:{[et]:"Dashboard settings aside actions Save button"},saveAsDashBoard:{[et]:"Dashboard settings aside actions Save As button"},title:{"11.2.0":"General"}},Annotations:{Edit:{urlParams:{[et]:e=>`editview=annotations&editIndex=${e}`}},List:{url:{[et]:e=>`/d/${e}?editview=annotations`},addAnnotationCTAV2:{[et]:"data-testid Call to action button Add annotation query"},annotations:{"10.4.0":"data-testid list-annotations"}},Settings:{name:{"11.1.0":"data-testid Annotations settings name input",[et]:"Annotations settings name input"}},NewAnnotation:{panelFilterSelect:{"10.0.0":"data-testid annotations-panel-filter"},showInLabel:{"11.1.0":"data-testid show-in-label"},previewInDashboard:{"10.0.0":"data-testid annotations-preview"},delete:{"10.4.0":"data-testid annotations-delete"},apply:{"10.4.0":"data-testid annotations-apply"},enable:{"10.4.0":"data-testid annotation-enable"},hide:{"10.4.0":"data-testid annotation-hide"}}},Variables:{List:{url:{"11.3.0":e=>`/d/${e}?editview=variables`,[et]:e=>`/d/${e}?editview=templating`},addVariableCTAV2:{[et]:"data-testid Call to action button Add variable"},newButton:{[et]:"Variable editor New variable button"},table:{[et]:"Variable editor Table"},tableRowNameFields:{[et]:e=>`Variable editor Table Name field ${e}`},tableRowDefinitionFields:{"10.1.0":e=>`Variable editor Table Definition field ${e}`},tableRowArrowUpButtons:{[et]:e=>`Variable editor Table ArrowUp button ${e}`},tableRowArrowDownButtons:{[et]:e=>`Variable editor Table ArrowDown button ${e}`},tableRowDuplicateButtons:{[et]:e=>`Variable editor Table Duplicate button ${e}`},tableRowRemoveButtons:{[et]:e=>`Variable editor Table Remove button ${e}`}},Edit:{urlParams:{"11.3.0":e=>`editview=variables&editIndex=${e}`,[et]:e=>`editview=templating&editIndex=${e}`},General:{headerLink:{[et]:"Variable editor Header link"},modeLabelNew:{[et]:"Variable editor Header mode New"},modeLabelEdit:{[et]:"Variable editor Header mode Edit"},generalNameInput:{[et]:"Variable editor Form Name field"},generalNameInputV2:{[et]:"data-testid Variable editor Form Name field"},generalTypeSelect:{[et]:"Variable editor Form Type select"},generalTypeSelectV2:{[et]:"data-testid Variable editor Form Type select"},generalLabelInput:{[et]:"Variable editor Form Label field"},generalLabelInputV2:{[et]:"data-testid Variable editor Form Label field"},generalHideSelect:{[et]:"Variable editor Form Hide select"},generalHideSelectV2:{[et]:"data-testid Variable editor Form Hide select"},selectionOptionsAllowCustomValueSwitch:{[et]:"data-testid Variable editor Form Allow Custom Value switch"},selectionOptionsMultiSwitch:{"10.4.0":"data-testid Variable editor Form Multi switch",[et]:"Variable editor Form Multi switch"},selectionOptionsIncludeAllSwitch:{"10.4.0":"data-testid Variable editor Form IncludeAll switch",[et]:"Variable editor Form IncludeAll switch"},selectionOptionsCustomAllInput:{"10.4.0":"data-testid Variable editor Form IncludeAll field",[et]:"Variable editor Form IncludeAll field"},previewOfValuesOption:{"10.4.0":"data-testid Variable editor Preview of Values option",[et]:"Variable editor Preview of Values option"},submitButton:{"10.4.0":"data-testid Variable editor Run Query button",[et]:"Variable editor Submit button"},applyButton:{"9.3.0":"data-testid Variable editor Apply button"}},QueryVariable:{queryOptionsDataSourceSelect:{"10.4.0":"data-testid Select a data source","10.0.0":"data-testid Data source picker select container",[et]:"Data source picker select container"},queryOptionsRefreshSelect:{[et]:"Variable editor Form Query Refresh select"},queryOptionsRefreshSelectV2:{[et]:"data-testid Variable editor Form Query Refresh select"},queryOptionsRegExInput:{[et]:"Variable editor Form Query RegEx field"},queryOptionsRegExInputV2:{[et]:"data-testid Variable editor Form Query RegEx field"},queryOptionsSortSelect:{[et]:"Variable editor Form Query Sort select"},queryOptionsSortSelectV2:{[et]:"data-testid Variable editor Form Query Sort select"},queryOptionsQueryInput:{"10.4.0":"data-testid Variable editor Form Default Variable Query Editor textarea"},valueGroupsTagsEnabledSwitch:{[et]:"Variable editor Form Query UseTags switch"},valueGroupsTagsTagsQueryInput:{[et]:"Variable editor Form Query TagsQuery field"},valueGroupsTagsTagsValuesQueryInput:{[et]:"Variable editor Form Query TagsValuesQuery field"}},ConstantVariable:{constantOptionsQueryInput:{[et]:"Variable editor Form Constant Query field"},constantOptionsQueryInputV2:{[et]:"data-testid Variable editor Form Constant Query field"}},DatasourceVariable:{datasourceSelect:{[et]:"data-testid datasource variable datasource type"}},TextBoxVariable:{textBoxOptionsQueryInput:{[et]:"Variable editor Form TextBox Query field"},textBoxOptionsQueryInputV2:{[et]:"data-testid Variable editor Form TextBox Query field"}},CustomVariable:{customValueInput:{[et]:"data-testid custom-variable-input"}},IntervalVariable:{intervalsValueInput:{[et]:"data-testid interval variable intervals input"},autoEnabledCheckbox:{"10.4.0":"data-testid interval variable auto value checkbox"},stepCountIntervalSelect:{"10.4.0":"data-testid interval variable step count input"},minIntervalInput:{"10.4.0":"data-testid interval variable mininum interval input"}},GroupByVariable:{dataSourceSelect:{"10.4.0":"data-testid Select a data source"},infoText:{"10.4.0":"data-testid group by variable info text"},modeToggle:{"10.4.0":"data-testid group by variable mode toggle"}},AdHocFiltersVariable:{datasourceSelect:{"10.4.0":"data-testid Select a data source"},infoText:{"10.4.0":"data-testid ad-hoc filters variable info text"},modeToggle:{"11.0.0":"data-testid ad-hoc filters variable mode toggle"}}}}},Annotations:{marker:{"10.0.0":"data-testid annotation-marker"}},Rows:{Repeated:{ConfigSection:{warningMessage:{"10.2.0":"data-testid Repeated rows warning message"}}}}},Dashboards:{url:{[et]:"/dashboards"},dashboards:{"10.2.0":e=>`Dashboard search item ${e}`}},SaveDashboardAsModal:{newName:{"10.2.0":"Save dashboard title field"},save:{"10.2.0":"Save dashboard button"}},SaveDashboardModal:{save:{"10.2.0":"Dashboard settings Save Dashboard Modal Save button"},saveVariables:{"10.2.0":"Dashboard settings Save Dashboard Modal Save variables checkbox"},saveTimerange:{"10.2.0":"Dashboard settings Save Dashboard Modal Save timerange checkbox"},saveRefresh:{"11.1.0":"Dashboard settings Save Dashboard Modal Save refresh checkbox"}},SharePanelModal:{linkToRenderedImage:{[et]:"Link to rendered image"}},ShareDashboardModal:{PublicDashboard:{WillBePublicCheckbox:{"9.1.0":"data-testid public dashboard will be public checkbox"},LimitedDSCheckbox:{"9.1.0":"data-testid public dashboard limited datasources checkbox"},CostIncreaseCheckbox:{"9.1.0":"data-testid public dashboard cost may increase checkbox"},PauseSwitch:{"9.5.0":"data-testid public dashboard pause switch"},EnableAnnotationsSwitch:{"9.3.0":"data-testid public dashboard on off switch for annotations"},CreateButton:{"9.5.0":"data-testid public dashboard create button"},DeleteButton:{"9.3.0":"data-testid public dashboard delete button"},CopyUrlInput:{"9.1.0":"data-testid public dashboard copy url input"},CopyUrlButton:{"9.1.0":"data-testid public dashboard copy url button"},SettingsDropdown:{"10.1.0":"data-testid public dashboard settings dropdown"},TemplateVariablesWarningAlert:{"9.1.0":"data-testid public dashboard disabled template variables alert"},UnsupportedDataSourcesWarningAlert:{"9.5.0":"data-testid public dashboard unsupported data sources alert"},NoUpsertPermissionsWarningAlert:{"9.5.0":"data-testid public dashboard no upsert permissions alert"},EnableTimeRangeSwitch:{"9.4.0":"data-testid public dashboard on off switch for time range"},EmailSharingConfiguration:{Container:{"9.5.0":"data-testid email sharing config container"},ShareType:{"9.5.0":"data-testid public dashboard share type"},EmailSharingInput:{"9.5.0":"data-testid public dashboard email sharing input"},EmailSharingInviteButton:{"9.5.0":"data-testid public dashboard email sharing invite button"},EmailSharingList:{"9.5.0":"data-testid public dashboard email sharing list"},DeleteEmail:{"9.5.0":"data-testid public dashboard delete email button"},ReshareLink:{"9.5.0":"data-testid public dashboard reshare link button"}}},SnapshotScene:{url:{"11.1.0":e=>`/dashboard/snapshot/${e}`},PublishSnapshot:{"11.1.0":"data-testid publish snapshot button"},CopyUrlButton:{"11.1.0":"data-testid snapshot copy url button"},CopyUrlInput:{"11.1.0":"data-testid snapshot copy url input"}}},ShareDashboardDrawer:{ShareInternally:{container:{"11.3.0":"data-testid share internally drawer container"},lockTimeRangeSwitch:{"11.3.0":"data-testid share internally lock time range switch"},shortenUrlSwitch:{"11.3.0":"data-testid share internally shorten url switch"},copyUrlButton:{"11.3.0":"data-testid share internally copy url button"},SharePanel:{preview:{"11.5.0":"data-testid share panel internally image generation preview"},widthInput:{"11.5.0":"data-testid share panel internally width input"},heightInput:{"11.5.0":"data-testid share panel internally height input"},scaleFactorInput:{"11.5.0":"data-testid share panel internally scale factor input"},generateImageButton:{"11.5.0":"data-testid share panel internally generate image button"},downloadImageButton:{"11.5.0":"data-testid share panel internally download image button"}}},ShareExternally:{container:{"11.3.0":"data-testid share externally drawer container"},publicAlert:{"11.3.0":"data-testid public share alert"},emailSharingAlert:{"11.3.0":"data-testid email share alert"},shareTypeSelect:{"11.3.0":"data-testid share externally share type select"},Creation:{PublicShare:{createButton:{"11.3.0":"data-testid public share dashboard create button"},cancelButton:{"11.3.0":"data-testid public share dashboard cancel button"}},EmailShare:{createButton:{"11.3.0":"data-testid email share dashboard create button"},cancelButton:{"11.3.0":"data-testid email share dashboard cancel button"}},willBePublicCheckbox:{"11.3.0":"data-testid share dashboard will be public checkbox"}},Configuration:{enableTimeRangeSwitch:{"11.3.0":"data-testid share externally enable time range switch"},enableAnnotationsSwitch:{"11.3.0":"data-testid share externally enable annotations switch"},copyUrlButton:{"11.3.0":"data-testid share externally copy url button"},revokeAccessButton:{"11.3.0":"data-testid share externally revoke access button"},toggleAccessButton:{"11.3.0":"data-testid share externally pause or resume access button"}}},ShareSnapshot:{url:{"11.3.0":e=>`/dashboard/snapshot/${e}`},container:{"11.3.0":"data-testid share snapshot drawer container"},publishSnapshot:{"11.3.0":"data-testid share snapshot publish button"},copyUrlButton:{"11.3.0":"data-testid share snapshot copy url button"}}},ExportDashboardDrawer:{ExportAsJson:{container:{"11.3.0":"data-testid export as json drawer container"},codeEditor:{"11.3.0":"data-testid export as json code editor"},exportExternallyToggle:{"11.3.0":"data-testid export as json externally switch"},saveToFileButton:{"11.3.0":"data-testid export as json save to file button"},copyToClipboardButton:{"11.3.0":"data-testid export as json copy to clipboard button"},cancelButton:{"11.3.0":"data-testid export as json cancel button"}}},PublicDashboard:{page:{"9.5.0":"public-dashboard-page"},NotAvailable:{container:{"9.5.0":"public-dashboard-not-available"},title:{"9.5.0":"public-dashboard-title"},pausedDescription:{"9.5.0":"public-dashboard-paused-description"}},footer:{"11.0.0":"public-dashboard-footer"}},PublicDashboardScene:{loadingPage:{"11.0.0":"public-dashboard-scene-loading-page"},page:{"11.0.0":"public-dashboard-scene-page"},controls:{"11.0.0":"public-dashboard-controls"}},RequestViewAccess:{form:{"9.5.0":"request-view-access-form"},recipientInput:{"9.5.0":"request-view-access-recipient-input"},submitButton:{"9.5.0":"request-view-access-submit-button"}},PublicDashboardConfirmAccess:{submitButton:{"10.2.0":"data-testid confirm-access-submit-button"}},Explore:{url:{[et]:"/explore"},General:{container:{[et]:"data-testid Explore"},graph:{[et]:"Explore Graph"},table:{[et]:"Explore Table"},scrollView:{"9.0.0":"data-testid explorer scroll view"}},QueryHistory:{container:{"11.1.0":"data-testid QueryHistory"}}},SoloPanel:{url:{[et]:e=>`/d-solo/${e}`}},PluginsList:{page:{[et]:"Plugins list page"},list:{[et]:"Plugins list"},listItem:{[et]:"Plugins list item"},signatureErrorNotice:{"10.3.0":"data-testid Unsigned plugins notice",[et]:"Unsigned plugins notice"}},PluginPage:{page:{[et]:"Plugin page"},signatureInfo:{"10.3.0":"data-testid Plugin signature info",[et]:"Plugin signature info"},disabledInfo:{"10.3.0":"data-testid Plugin disabled info",[et]:"Plugin disabled info"}},PlaylistForm:{name:{[et]:"Playlist name"},interval:{[et]:"Playlist interval"},itemDelete:{"10.2.0":"data-testid playlist-form-delete-item"}},BrowseDashboards:{table:{body:{"10.2.0":"data-testid browse-dashboards-table"},row:{"10.2.0":e=>`data-testid browse dashboards row ${e}`},checkbox:{"10.0.0":e=>`data-testid ${e} checkbox`}},NewFolderForm:{form:{"10.2.0":"data-testid new folder form"},nameInput:{"10.2.0":"data-testid new-folder-name-input"},createButton:{"10.2.0":"data-testid new-folder-create-button"}}},Search:{url:{"9.3.0":"/?search=openn"},FolderView:{url:{"9.3.0":"/?search=open&layout=folders"}}},PublicDashboards:{ListItem:{linkButton:{"9.3.0":"public-dashboard-link-button"},configButton:{"9.3.0":"public-dashboard-configuration-button"},trashcanButton:{"9.3.0":"public-dashboard-remove-button"},pauseSwitch:{"10.1.0":"data-testid public dashboard pause switch"}}},UserListPage:{tabs:{allUsers:{"10.0.0":"data-testid all-users-tab"},orgUsers:{"10.0.0":"data-testid org-users-tab"},anonUserDevices:{"10.2.3":"data-testid anon-user-devices-tab"},publicDashboardsUsers:{"10.0.0":"data-testid public-dashboards-users-tab"},users:{"10.0.0":"data-testid users-tab"}},org:{url:{"10.2.0":"/admin/users","9.5.0":"/org/users"}},admin:{url:{"9.5.0":"/admin/users"}},publicDashboards:{container:{"11.1.0":"data-testid public-dashboards-users-list"}},UserListAdminPage:{container:{"10.0.0":"data-testid user-list-admin-page"}},UsersListPage:{container:{"10.0.0":"data-testid users-list-page"}},UserAnonListPage:{container:{"10.4.0":"data-testid user-anon-list-page"}},UsersListPublicDashboardsPage:{container:{"10.0.0":"data-testid users-list-public-dashboards-page"},DashboardsListModal:{listItem:{"10.0.0":e=>`data-testid dashboards-list-item-${e}`}}}},ProfilePage:{url:{"10.2.0":"/profile"}},Plugin:{url:{[et]:e=>`/plugins/${e}`}}}),components:Ye(tt)};var rt=n(6089),at=n(7993);const ot=/[^ -~]/m,it=/^[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+$/m,st=5,lt=25,ct=5,ut=1e4,dt=new at.A({intraMode:1});function pt(e,t,n){let r=[];if(""===n)r=e;else if(ot.test(n)||it.test(n)||n.length>lt||dt.split(n).length>ct)for(let a=0;ae[o.idx[t]])):a.map((t=>e[t])))}return r}function ft(e,t=!1){let n=e;t&&(n=[{value:me,label:ge},...n]);const r=n.map((e=>e.label));return e=>pt(n,r,e)}const ht=()=>!0,gt=e=>"$__all"!==e.value,mt=(e,t)=>e.length===t.filter(gt).length?qe.ToggleAllState.allSelected:0===e.length||1===e.length&&e[0]&&"$__all"===e[0].value?qe.ToggleAllState.noneSelected:qe.ToggleAllState.indeterminate;function vt({model:e,state:t}){const{value:n,text:r,key:a,options:o,includeAll:i,isReadOnly:s,allowCustomValue:l=!0}=t,[c,d]=(0,u.useState)(""),[f,h]=(0,u.useState)(!1),g=function(e,t){return{value:e,label:null!=t?t:String(e)}}(n,String(r)),m=Xi.getQueryController(e),v=(0,u.useMemo)((()=>ft(o,i)),[o,i])(c);return p().createElement(qe.Select,{id:a,isValidNewOption:e=>e.trim().length>0,placeholder:"Select value",width:"auto",disabled:s,value:g,inputValue:c,allowCustomValue:l,virtualized:!0,filterOption:ht,tabSelectsValue:!1,onInputChange:(t,{action:n})=>"input-change"===n?(d(t),e.onSearchChange&&e.onSearchChange(t),t):t,onOpenMenu:()=>{f&&d(String(r))},onCloseMenu:()=>{d("")},options:v,"data-testid":nt.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${n}`),onChange:t=>{e.changeValueTo(t.value,t.label,!0),null==m||m.startProfile("VariableValueSelect"),f!==t.__isNew__&&h(t.__isNew__)}})}function bt({model:e,state:t}){const{value:n,options:r,key:a,maxVisibleValues:o,noValueOnClear:i,includeAll:s,isReadOnly:l,allowCustomValue:c=!0}=t,d=(0,u.useMemo)((()=>(0,k.isArray)(n)?n:[n]),[n]),[f,h]=(0,u.useState)(d),[g,m]=(0,u.useState)(""),v=Xi.getQueryController(e),b=(0,u.useMemo)((()=>ft(r,s)),[r,s]);(0,u.useEffect)((()=>{h(d)}),[d]);const y=r.length>0?"Select value":"",w=b(g);return p().createElement(qe.MultiSelect,{id:a,placeholder:y,width:"auto",inputValue:g,disabled:l,value:f,noMultiValueWrap:!0,maxVisibleValues:null!=o?o:5,tabSelectsValue:!1,virtualized:!0,allowCustomValue:c,toggleAllOptions:{enabled:!0,optionsFilter:gt,determineToggleAllState:mt},options:w,closeMenuOnSelect:!1,components:{Option:yt},isClearable:!0,hideSelectedOptions:!1,onInputChange:(t,{action:n})=>"input-change"===n?(m(t),e.onSearchChange&&e.onSearchChange(t),t):"input-blur"===n?(m(""),""):g,onBlur:()=>{e.changeValueTo(f,void 0,!0),null==v||v.startProfile("VariableValueSelectMulti")},filterOption:ht,"data-testid":nt.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${f}`),onChange:(t,n)=>{"clear"===n.action&&i&&e.changeValueTo([],void 0,!0),h(t.map((e=>e.value)))}})}const yt=({children:e,data:t,innerProps:n,innerRef:r,isFocused:a,isSelected:o,indeterminate:i,renderOptionLabel:s})=>{var l;const{onMouseMove:c,onMouseOver:u,...d}=n,f=(0,qe.useTheme2)(),h=(0,qe.getSelectStyles)(f),g=(0,qe.useStyles2)(wt);return p().createElement("div",{ref:r,className:(0,rt.cx)(h.option,a&&h.optionFocused),...d,"data-testid":"data-testid Select option",title:t.title},p().createElement("div",{className:g.checkbox},p().createElement(qe.Checkbox,{indeterminate:i,value:o})),p().createElement("div",{className:h.optionBody,"data-testid":nt.pages.Dashboard.SubMenu.submenuItemValueDropDownOptionTexts(null!=(l=t.label)?l:String(t.value))},p().createElement("span",null,e)))};yt.displayName="SelectMenuOptions";const wt=e=>({checkbox:(0,rt.css)({marginRight:e.spacing(2)})});function St({model:e}){const t=e.useState();return t.isMulti?p().createElement(bt,{model:e,state:t}):p().createElement(vt,{model:e,state:t})}class xt{constructor(e){this._sceneObject=e,this._nextChangeShouldAddHistoryStep=!1}getKey(){return`var-${this._sceneObject.state.name}`}getKeys(){return this._sceneObject.state.skipUrlSync?[]:[this.getKey()]}getUrlState(){return this._sceneObject.state.skipUrlSync?{}:{[this.getKey()]:Et(this._sceneObject.state.value,this._sceneObject.state.text)}}updateFromUrl(e){let t=e[this.getKey()];if(null!=t){this._sceneObject.isActive||(this._sceneObject.skipNextValidation=!0);const{values:e,texts:r}=(n=t,(n=Array.isArray(n)?n:[n]).reduce(((e,t)=>{const[n,r]=(null!=t?t:"").split(",");return e.values.push(wi(n)),e.texts.push(wi(null!=r?r:n)),e}),{values:[],texts:[]}));this._sceneObject.changeValueTo(e,r)}var n}performBrowserHistoryAction(e){this._nextChangeShouldAddHistoryStep=!0,e(),this._nextChangeShouldAddHistoryStep=!1}shouldCreateHistoryStep(e){return this._nextChangeShouldAddHistoryStep}}function Et(e,t){return e=Array.isArray(e)?e:[e],t=Array.isArray(t)?t:[t],e.map(((e,n)=>{if(null==e)return"";e=String(e);let r=t[n];return r=null==r?e:String(r),Si(e,r)}))}function Ct(e){const t=e.getRoot();return"enrichFiltersRequest"in t?t.enrichFiltersRequest(e):null}var Rt,Dt=e=>{throw TypeError(e)},_t=(e,t,n)=>t.has(e)||Dt("Cannot "+n);class Ot{constructor(e){((e,t,n)=>{t.has(e)?Dt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n)})(this,Rt),this.text="__sceneObject",this.valueOf=()=>{return _t(e=this,t=Rt,"read from private field"),n?n.call(e):t.get(e);var e,t,n},((e,t,n)=>{_t(e,t,"write to private field"),t.set(e,n)})(this,Rt,e)}toString(){}get value(){return this}}function It(e){return function(e){const t=e.match(/^(\d+)\.(\d+)\.(\d+)/);if(!t)return!1;const n=parseInt(t[1],10),r=parseInt(t[2],10),a=parseInt(t[3],10);return 11===n?0===r&&a>=4||1===r&&a>=2||r>1:10===n?4===r&&a>=8||r>=5:n>11}(i.config.buildInfo.version)?new Ot(e):{value:e,text:"__sceneObject"}}Rt=new WeakMap;class Tt extends Re{constructor(e){super({isMulti:!0,name:"",value:[],text:[],options:[],datasource:null,baseFilters:[],applyMode:"auto",layout:"horizontal",type:"groupby",...e,noValueOnClear:!0}),this.isLazy=!0,this._urlSync=new xt(this),this._getKeys=async e=>{var t,n,r,a;const o=await(null==(n=(t=this.state).getTagKeysProvider)?void 0:n.call(t,this,null));if(o&&o.replace)return o.values;if(this.state.defaultOptions)return this.state.defaultOptions.concat(xi(null!=(r=null==o?void 0:o.values)?r:[]));if(!e.getTagKeys)return[];const i=mi(this),s=this.state.baseFilters||[],l=Xi.getTimeRange(this).state.value,c=await e.getTagKeys({filters:s,queries:i,timeRange:l,scopes:null==(a=this._scopesBridge)?void 0:a.getValue(),...Ct(this)});Ei(c)&&this.setState({error:c.error.message});let u=xi(c);o&&(u=u.concat(xi(o.values)));const d=this.state.tagKeyRegexFilter;return d&&(u=u.filter((e=>e.text.match(d)))),u},"auto"===this.state.applyMode&&this.addActivationHandler((()=>(Ge.add(this),()=>Ge.delete(this))))}validateAndUpdate(){return this.getValueOptions({}).pipe((0,f.map)((e=>(this._updateValueGivenNewOptions(e),{}))))}_updateValueGivenNewOptions(e){const{value:t,text:n}=this.state,r={options:e,loading:!1,value:null!=t?t:[],text:null!=n?n:[]};this.setState(r)}getValueOptions(e){return this.state.defaultOptions?(0,f.of)(this.state.defaultOptions.map((e=>({label:e.text,value:String(e.value),group:e.group})))):(this.setState({loading:!0,error:null}),(0,f.from)(Ve(this.state.datasource,{__sceneObject:It(this)})).pipe((0,f.mergeMap)((e=>(0,f.from)(this._getKeys(e)).pipe((0,f.tap)((e=>{Ei(e)&&this.setState({error:e.error.message})})),(0,f.map)((e=>xi(e))),(0,f.take)(1),(0,f.mergeMap)((e=>{const t=e.map((e=>({label:e.text,value:e.value?String(e.value):e.text,group:e.group})));return(0,f.of)(t)})))))))}getDefaultMultiState(e){return{value:[],text:[]}}}Tt.Component=function({model:e}){const{value:t,text:n,key:r,isMulti:a=!0,maxVisibleValues:o,noValueOnClear:i,options:s,includeAll:l,allowCustomValue:c=!0}=e.useState(),d=(0,u.useMemo)((()=>{const e=(0,k.isArray)(t)?t:[t],r=(0,k.isArray)(n)?n:[n];return e.map(((e,t)=>{var n;return{value:e,label:String(null!=(n=r[t])?n:e)}}))}),[t,n]),[h,g]=(0,u.useState)(!1),[m,v]=(0,u.useState)(!1),[b,y]=(0,u.useState)(""),[w,S]=(0,u.useState)(d),x=(0,u.useMemo)((()=>ft(s,l)),[s,l]);(0,u.useEffect)((()=>{S(d)}),[d]);const E=(t,{action:n})=>"input-change"===n?(y(t),e.onSearchChange&&e.onSearchChange(t),t):"input-blur"===n?(y(""),""):b,C=(0,u.useMemo)((()=>Ci(x(b).map(kt))),[x,b]);return a?p().createElement(qe.MultiSelect,{"aria-label":"Group by selector","data-testid":`GroupBySelect-${r}`,id:r,placeholder:"Select value",width:"auto",allowCustomValue:c,inputValue:b,value:w,noMultiValueWrap:!0,maxVisibleValues:null!=o?o:5,tabSelectsValue:!1,virtualized:!0,options:C,filterOption:At,closeMenuOnSelect:!1,isOpen:m,isClearable:!0,hideSelectedOptions:!1,isLoading:h,components:{Option:yt},onInputChange:E,onBlur:()=>{e.changeValueTo(w.map((e=>e.value)),w.map((e=>e.label)),!0)},onChange:(t,n)=>{"clear"===n.action&&i&&e.changeValueTo([],void 0,!0),S(t)},onOpenMenu:async()=>{g(!0),await(0,f.lastValueFrom)(e.validateAndUpdate()),g(!1),v(!0)},onCloseMenu:()=>{v(!1)}}):p().createElement(qe.Select,{"aria-label":"Group by selector","data-testid":`GroupBySelect-${r}`,id:r,placeholder:"Select value",width:"auto",inputValue:b,value:w,allowCustomValue:c,noMultiValueWrap:!0,maxVisibleValues:null!=o?o:5,tabSelectsValue:!1,virtualized:!0,options:C,filterOption:At,closeMenuOnSelect:!0,isOpen:m,isClearable:!0,hideSelectedOptions:!1,noValueOnClear:!0,isLoading:h,onInputChange:E,onChange:(t,n)=>{if("clear"===n.action)return S([]),void(i&&e.changeValueTo([]));(null==t?void 0:t.value)&&(S([t]),e.changeValueTo([t.value],t.label?[t.label]:void 0))},onOpenMenu:async()=>{g(!0),await(0,f.lastValueFrom)(e.validateAndUpdate()),g(!1),v(!0)},onCloseMenu:()=>{v(!1)}})};const At=()=>!0;function kt(e){const{label:t,value:n,group:r}=e,a={label:t,value:n};return r&&(a.group=r),a}function Pt(e){return p().createElement(qe.Tooltip,{content:"Cancel query"},p().createElement(qe.Icon,{className:"spin-clockwise",name:"sync",size:"xs",role:"button",onMouseDown:t=>{e.onCancel(t)}}))}function Lt(e){const t=(0,qe.useStyles2)(Nt),n=(0,qe.useTheme2)(),r="vertical"===e.layout,a=Boolean(e.isLoading)?p().createElement("div",{style:{marginLeft:n.spacing(1),marginTop:"-1px"},"aria-label":nt.components.LoadingIndicator.icon},p().createElement(Pt,{onCancel:t=>{var n;t.preventDefault(),t.stopPropagation(),null==(n=e.onCancel)||n.call(e)}})):null;let o=null;e.error&&(o=p().createElement(qe.Tooltip,{content:e.error,placement:"bottom"},p().createElement(qe.Icon,{className:t.errorIcon,name:"exclamation-triangle"})));let i=null;e.description&&(i=p().createElement(qe.Tooltip,{content:e.description,placement:r?"top":"bottom"},p().createElement(qe.Icon,{className:t.normalIcon,name:"info-circle"})));const s="string"==typeof e.label?nt.pages.Dashboard.SubMenu.submenuItemLabels(e.label):"";let l;return l=r?p().createElement("label",{className:(0,rt.cx)(t.verticalLabel,e.className),"data-testid":s,htmlFor:e.htmlFor},e.prefix,e.label,i,o,e.icon&&p().createElement(qe.Icon,{name:e.icon,className:t.normalIcon}),a,e.onRemove&&p().createElement(qe.IconButton,{variant:"secondary",size:"xs",name:"times",onClick:e.onRemove,tooltip:"Remove"}),e.suffix):p().createElement("label",{className:(0,rt.cx)(t.horizontalLabel,e.className),"data-testid":s,htmlFor:e.htmlFor},e.prefix,o,e.icon&&p().createElement(qe.Icon,{name:e.icon,className:t.normalIcon}),e.label,i,a,e.suffix),l}const Nt=e=>({horizontalLabel:(0,rt.css)({background:e.isDark?e.colors.background.primary:e.colors.background.secondary,display:"flex",alignItems:"center",padding:e.spacing(0,1),fontWeight:e.typography.fontWeightMedium,fontSize:e.typography.bodySmall.fontSize,height:e.spacing(e.components.height.md),lineHeight:e.spacing(e.components.height.md),borderRadius:`${e.shape.radius.default} 0 0 ${e.shape.radius.default}`,border:`1px solid ${e.components.input.borderColor}`,position:"relative",right:-1,whiteSpace:"nowrap",gap:e.spacing(.5)}),verticalLabel:(0,rt.css)({display:"flex",alignItems:"center",fontWeight:e.typography.fontWeightMedium,fontSize:e.typography.bodySmall.fontSize,lineHeight:e.typography.bodySmall.lineHeight,whiteSpace:"nowrap",marginBottom:e.spacing(.5),gap:e.spacing(1)}),errorIcon:(0,rt.css)({color:e.colors.error.text}),normalIcon:(0,rt.css)({color:e.colors.text.secondary})});function Mt(e){const t=e.map((e=>{var t;return null!=(t=e.label)?t:String(e.value)}));return n=>pt(e,t,n)}function Bt(e,t){return""!==e?{value:e,label:t||e}:null}const Vt=()=>!0;function jt({filter:e,model:t}){var n,r,a,o,i;const s=(0,qe.useStyles2)(Ft),[l,c]=(0,u.useState)([]),[d,f]=(0,u.useState)([]),[h,g]=(0,u.useState)(!1),[m,v]=(0,u.useState)(!1),[b,y]=(0,u.useState)(!1),[w,S]=(0,u.useState)(!1),[x,E]=(0,u.useState)(!1),[C,R]=(0,u.useState)(""),[D,_]=(0,u.useState)(!1),[O,I]=(0,u.useState)(e.values?e.values.map(((t,n)=>{var r;return Bt(t,null==(r=e.valueLabels)?void 0:r[n])})):[]),T=ri(e.operator),A=Bt(e.key,e.keyLabel),k=Bt(e.value,null==(n=e.valueLabels)?void 0:n[0]),P=(0,u.useMemo)((()=>Mt(d)),[d]),L=t.state.onAddCustomValue,N=(0,u.useMemo)((()=>Ci(P(C))),[P,C]),M={isMulti:!0,value:O,components:{Option:yt},hideSelectedOptions:!1,closeMenuOnSelect:!1,openMenuOnFocus:!1,onChange:e=>{I(e),e.some((e=>e.__isNew__))&&R("")},onBlur:()=>{var n,r;t._updateFilter(e,{value:null!=(r=null==(n=O[0])?void 0:n.value)?r:"",values:O.map((e=>e.value)),valueLabels:O.map((e=>e.label))})}},B=p().createElement(qe.Select,{virtualized:!0,allowCustomValue:null==(r=t.state.allowCustomValue)||r,isValidNewOption:e=>e.trim().length>0,allowCreateWhileLoading:!0,formatCreateLabel:e=>`Use custom value: ${e}`,disabled:t.state.readOnly,className:(0,rt.cx)(s.value,w?s.widthWhenOpen:void 0),width:"auto",value:k,filterOption:Vt,placeholder:"Select value",options:N,inputValue:C,onInputChange:(e,{action:t})=>("input-change"===t&&R(e),e),onChange:n=>{L&&n.__isNew__?t._updateFilter(e,L(n,e)):t._updateFilter(e,{value:n.value,valueLabels:n.label?[n.label]:[n.value]}),D!==n.__isNew__&&_(n.__isNew__)},isOpen:w&&!m,isLoading:m,openMenuOnFocus:!0,onOpenMenu:async()=>{var n;v(!0),S(!0);const r=await t._getValuesFor(e);v(!1),f(r),D&&R(null!=(n=null==k?void 0:k.label)?n:"")},onCloseMenu:()=>{S(!1),R("")},...T&&M}),V=p().createElement(qe.Select,{key:""+(m?"loading":"loaded"),disabled:t.state.readOnly,className:(0,rt.cx)(s.key,b?s.widthWhenOpen:void 0),width:"auto",allowCustomValue:null==(a=t.state.allowCustomValue)||a,value:A,placeholder:"Select label",options:Ci(l),onChange:n=>{t._updateFilter(e,{key:n.value,keyLabel:n.label,value:"",valueLabels:[""],values:void 0}),I([])},autoFocus:""===e.key,isOpen:b&&!h,isLoading:h,onOpenMenu:async()=>{y(!0),g(!0);const n=await t._getKeys(e.key);g(!1),c(n)},onCloseMenu:()=>{y(!1)},onBlur:()=>{""===e.key&&t._removeFilter(e)},openMenuOnFocus:!0}),j=p().createElement(qe.Select,{className:(0,rt.cx)(s.operator,{[s.widthWhenOpen]:x}),value:e.operator,disabled:t.state.readOnly,options:t._getOperators(),onChange:n=>{var r,a;const o=e.operator,i=n.value,s={operator:i};ri(o)&&!ri(i)?(s.value="",s.valueLabels=[""],s.values=void 0,I([])):!ri(o)&&ri(i)&&e.value&&(s.values=[e.value],I([{value:e.value,label:null!=(a=null==(r=e.valueLabels)?void 0:r[0])?a:e.value}])),t._updateFilter(e,s)},onOpenMenu:()=>{E(!0)},onCloseMenu:()=>{E(!1)}});if("vertical"===t.state.layout){if(e.key){const n=p().createElement(Lt,{layout:"vertical",label:null!=(o=e.key)?o:"",onRemove:()=>t._removeFilter(e)});return p().createElement(qe.Field,{label:n,"data-testid":`AdHocFilter-${e.key}`,className:s.field},p().createElement("div",{className:s.wrapper},j,B))}return p().createElement(qe.Field,{label:"Select label","data-testid":`AdHocFilter-${e.key}`,className:s.field},V)}return p().createElement("div",{className:s.wrapper,"data-testid":`AdHocFilter-${e.key}`},V,j,B,p().createElement(qe.Button,{variant:"secondary","aria-label":"Remove filter",title:"Remove filter",className:s.removeButton,icon:"times","data-testid":`AdHocFilter-remove-${null!=(i=e.key)?i:""}`,onClick:()=>t._removeFilter(e)}))}const Ft=e=>({field:(0,rt.css)({marginBottom:0}),wrapper:(0,rt.css)({display:"flex","> *":{"&:not(:first-child)":{marginLeft:-1},"&:first-child":{borderTopRightRadius:0,borderBottomRightRadius:0},"&:last-child":{borderTopLeftRadius:0,borderBottomLeftRadius:0},"&:not(:first-child):not(:last-child)":{borderRadius:0},position:"relative",zIndex:0,"&:hover":{zIndex:1},"&:focus-within":{zIndex:2}}}),widthWhenOpen:(0,rt.css)({minWidth:e.spacing(16)}),value:(0,rt.css)({flexBasis:"content",flexShrink:1,minWidth:"90px"}),key:(0,rt.css)({flexBasis:"content",minWidth:"90px",flexShrink:1}),operator:(0,rt.css)({flexShrink:0,flexBasis:"content"}),removeButton:(0,rt.css)({paddingLeft:e.spacing(1.5),paddingRight:e.spacing(1.5),borderLeft:"none",width:e.spacing(3),marginRight:e.spacing(1),boxSizing:"border-box",position:"relative",left:"1px"})});function $t({model:e,addFilterButtonText:t}){const{_wip:n}=e.useState();return n?p().createElement(jt,{filter:n,model:e}):p().createElement(qe.Button,{variant:"secondary",icon:"plus",title:"Add filter","aria-label":"Add filter","data-testid":"AdHocFilter-add",onClick:()=>e._addWip()},t)}class zt{constructor(e){this._variable=e}getKey(){return`var-${this._variable.state.name}`}getKeys(){return[this.getKey()]}getUrlState(){const e=this._variable.state.filters,t=this._variable.state.baseFilters;let n=[];return 0===e.length&&0===(null==t?void 0:t.length)?{[this.getKey()]:[""]}:(e.length&&n.push(...e.filter(ni).filter((e=>!e.hidden)).map((e=>Ut(e).map(vi).join("|")))),(null==t?void 0:t.length)&&n.push(...null==t?void 0:t.filter(ni).filter((e=>!e.hidden&&e.origin&&e.originalValue)).map((e=>{var t,n;return Ut(e).map(yi).join("|").concat(`#${null!=(n=null==(t=e.originalValue)?void 0:t.map(yi).join("|"))?n:""}#${e.origin}`)}))),{[this.getKey()]:n.length?n:[""]})}updateFromUrl(e){const t=e[this.getKey()];if(null!=t&&t){const e=function(e){if(Array.isArray(e)){return e.map(Wt).filter(Ht)}const t=Wt(e);return null===t?[]:[t]}(t);this._variable.setState({filters:e.filter((e=>!e.origin)),baseFilters:e.filter((e=>e.origin))})}}}function Ut(e){var t;const n=[Si(e.key,e.keyLabel),e.operator];return ri(e.operator)?e.values.forEach(((t,r)=>{var a;n.push(Si(t,null==(a=e.valueLabels)?void 0:a[r]))})):n.push(Si(e.value,null==(t=e.valueLabels)?void 0:t[0])),n}function Wt(e){var t;if("string"!=typeof e||0===e.length)return null;const[n,r,a]=e.split("#"),[o,i,s,l,...c]=n.split("|").reduce(((e,t)=>{const[n,r]=t.split(",");return e.push(n,null!=r?r:n),e}),[]).map(wi);return{key:o,keyLabel:i,operator:s,value:c[0],values:ri(s)?c.filter(((e,t)=>t%2==0)):void 0,valueLabels:c.filter(((e,t)=>t%2==1)),condition:"",origin:(u=a,u===Xo.Scopes||u===Xo.Dashboards?a:void 0),originalValue:r&&r.length?null!=(t=r.split("|"))?t:[r]:void 0};var u}function Ht(e){return null!==e&&"string"==typeof e.key&&"string"==typeof e.value}function Gt(){return"undefined"!=typeof window}function qt(e){return Xt(e)?(e.nodeName||"").toLowerCase():"#document"}function Qt(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function Yt(e){var t;return null==(t=(Xt(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function Xt(e){return!!Gt()&&(e instanceof Node||e instanceof Qt(e).Node)}function Kt(e){return!!Gt()&&(e instanceof Element||e instanceof Qt(e).Element)}function Zt(e){return!!Gt()&&(e instanceof HTMLElement||e instanceof Qt(e).HTMLElement)}function Jt(e){return!(!Gt()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof Qt(e).ShadowRoot)}function en(e){const{overflow:t,overflowX:n,overflowY:r,display:a}=sn(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(a)}function tn(e){return["table","td","th"].includes(qt(e))}function nn(e){return[":popover-open",":modal"].some((t=>{try{return e.matches(t)}catch(e){return!1}}))}function rn(e){const t=an(),n=Kt(e)?sn(e):e;return["transform","translate","scale","rotate","perspective"].some((e=>!!n[e]&&"none"!==n[e]))||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","translate","scale","rotate","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function an(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function on(e){return["html","body","#document"].includes(qt(e))}function sn(e){return Qt(e).getComputedStyle(e)}function ln(e){return Kt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function cn(e){if("html"===qt(e))return e;const t=e.assignedSlot||e.parentNode||Jt(e)&&e.host||Yt(e);return Jt(t)?t.host:t}function un(e){const t=cn(e);return on(t)?e.ownerDocument?e.ownerDocument.body:e.body:Zt(t)&&en(t)?t:un(t)}function dn(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);const a=un(e),o=a===(null==(r=e.ownerDocument)?void 0:r.body),i=Qt(a);if(o){const e=pn(i);return t.concat(i,i.visualViewport||[],en(a)?a:[],e&&n?dn(e):[])}return t.concat(a,dn(a,[],n))}function pn(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function fn(e){let t=e.activeElement;for(;null!=(null==(n=t)||null==(n=n.shadowRoot)?void 0:n.activeElement);){var n;t=t.shadowRoot.activeElement}return t}function hn(e,t){if(!e||!t)return!1;const n=null==t.getRootNode?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&Jt(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function gn(){const e=navigator.userAgentData;return null!=e&&e.platform?e.platform:navigator.platform}function mn(){const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map((e=>{let{brand:t,version:n}=e;return t+"/"+n})).join(" "):navigator.userAgent}function vn(e){return!(0!==e.mozInputSource||!e.isTrusted)||(wn()&&e.pointerType?"click"===e.type&&1===e.buttons:0===e.detail&&!e.pointerType)}function bn(e){return!mn().includes("jsdom/")&&(!wn()&&0===e.width&&0===e.height||wn()&&1===e.width&&1===e.height&&0===e.pressure&&0===e.detail&&"mouse"===e.pointerType||e.width<1&&e.height<1&&0===e.pressure&&0===e.detail&&"touch"===e.pointerType)}function yn(){return/apple/i.test(navigator.vendor)}function wn(){const e=/android/i;return e.test(gn())||e.test(mn())}function Sn(e){return(null==e?void 0:e.ownerDocument)||document}function xn(e,t){if(null==t)return!1;if("composedPath"in e)return e.composedPath().includes(t);const n=e;return null!=n.target&&t.contains(n.target)}function En(e){return"composedPath"in e?e.composedPath()[0]:e.target}function Cn(e){e.preventDefault(),e.stopPropagation()}function Rn(e){return!!e&&("combobox"===e.getAttribute("role")&&function(e){return Zt(e)&&e.matches("input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])")}(e))}const Dn=Math.min,_n=Math.max,On=Math.round,In=Math.floor,Tn=e=>({x:e,y:e}),An={left:"right",right:"left",bottom:"top",top:"bottom"},kn={start:"end",end:"start"};function Pn(e,t){return"function"==typeof e?e(t):e}function Ln(e){return e.split("-")[0]}function Nn(e){return e.split("-")[1]}function Mn(e){return"y"===e?"height":"width"}function Bn(e){return["top","bottom"].includes(Ln(e))?"y":"x"}function Vn(e){return"x"===Bn(e)?"y":"x"}function jn(e){return e.replace(/start|end/g,(e=>kn[e]))}function Fn(e){return e.replace(/left|right|bottom|top/g,(e=>An[e]))}function $n(e){const{x:t,y:n,width:r,height:a}=e;return{width:r,height:a,top:n,left:t,right:t+r,bottom:n+a,x:t,y:n}}var zn=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Un=zn.join(","),Wn="undefined"==typeof Element,Hn=Wn?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Gn=!Wn&&Element.prototype.getRootNode?function(e){var t;return null==e||null===(t=e.getRootNode)||void 0===t?void 0:t.call(e)}:function(e){return null==e?void 0:e.ownerDocument},qn=function e(t,n){var r;void 0===n&&(n=!0);var a=null==t||null===(r=t.getAttribute)||void 0===r?void 0:r.call(t,"inert");return""===a||"true"===a||n&&t&&e(t.parentNode)},Qn=function(e,t,n){if(qn(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(Un));return t&&Hn.call(e,Un)&&r.unshift(e),r=r.filter(n)},Yn=function e(t,n,r){for(var a=[],o=Array.from(t);o.length;){var i=o.shift();if(!qn(i,!1))if("SLOT"===i.tagName){var s=i.assignedElements(),l=e(s.length?s:i.children,!0,r);r.flatten?a.push.apply(a,l):a.push({scopeParent:i,candidates:l})}else{Hn.call(i,Un)&&r.filter(i)&&(n||!t.includes(i))&&a.push(i);var c=i.shadowRoot||"function"==typeof r.getShadowRoot&&r.getShadowRoot(i),u=!qn(c,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(c&&u){var d=e(!0===c?i.children:c.children,!0,r);r.flatten?a.push.apply(a,d):a.push({scopeParent:i,candidates:d})}else o.unshift.apply(o,i.children)}}return a},Xn=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},Kn=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||function(e){var t,n=null==e||null===(t=e.getAttribute)||void 0===t?void 0:t.call(e,"contenteditable");return""===n||"true"===n}(e))&&!Xn(e)?0:e.tabIndex},Zn=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Jn=function(e){return"INPUT"===e.tagName},er=function(e){return function(e){return Jn(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||Gn(e),r=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=r(window.CSS.escape(e.name));else try{t=r(e.name)}catch(e){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",e.message),!1}var a=function(e,t){for(var n=0;nsummary:first-of-type")?e.parentElement:e;if(Hn.call(a,"details:not([open]) *"))return!0;if(n&&"full"!==n&&"legacy-full"!==n){if("non-zero-area"===n)return tr(e)}else{if("function"==typeof r){for(var o=e;e;){var i=e.parentElement,s=Gn(e);if(i&&!i.shadowRoot&&!0===r(i))return tr(e);e=e.assignedSlot?e.assignedSlot:i||s===e.ownerDocument?i:s.host}e=o}if(function(e){var t,n,r,a,o=e&&Gn(e),i=null===(t=o)||void 0===t?void 0:t.host,s=!1;if(o&&o!==e)for(s=!!(null!==(n=i)&&void 0!==n&&null!==(r=n.ownerDocument)&&void 0!==r&&r.contains(i)||null!=e&&null!==(a=e.ownerDocument)&&void 0!==a&&a.contains(e));!s&&i;){var l,c,u;s=!(null===(c=i=null===(l=o=Gn(i))||void 0===l?void 0:l.host)||void 0===c||null===(u=c.ownerDocument)||void 0===u||!u.contains(i))}return s}(e))return!e.getClientRects().length;if("legacy-full"!==n)return!0}return!1},rr=function(e,t){return!(t.disabled||qn(t)||function(e){return Jn(e)&&"hidden"===e.type}(t)||nr(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n=0)},ir=function e(t){var n=[],r=[];return t.forEach((function(t,a){var o=!!t.scopeParent,i=o?t.scopeParent:t,s=function(e,t){var n=Kn(e);return n<0&&t&&!Xn(e)?0:n}(i,o),l=o?e(t.candidates):i;0===s?o?n.push.apply(n,l):n.push(i):r.push({documentOrder:a,tabIndex:s,item:t,isScope:o,content:l})})),r.sort(Zn).reduce((function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e}),[]).concat(n)},sr=function(e,t){var n;return n=(t=t||{}).getShadowRoot?Yn([e],t.includeContainer,{filter:ar.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:or}):Qn(e,t.includeContainer,ar.bind(null,t)),ir(n)},lr=n(8398);function cr(e,t,n){let{reference:r,floating:a}=e;const o=Bn(t),i=Vn(t),s=Mn(i),l=Ln(t),c="y"===o,u=r.x+r.width/2-a.width/2,d=r.y+r.height/2-a.height/2,p=r[s]/2-a[s]/2;let f;switch(l){case"top":f={x:u,y:r.y-a.height};break;case"bottom":f={x:u,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:d};break;case"left":f={x:r.x-a.width,y:d};break;default:f={x:r.x,y:r.y}}switch(Nn(t)){case"start":f[i]-=p*(n&&c?-1:1);break;case"end":f[i]+=p*(n&&c?-1:1)}return f}async function ur(e,t){var n;void 0===t&&(t={});const{x:r,y:a,platform:o,rects:i,elements:s,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:f=0}=Pn(t,e),h=function(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}(f),g=s[p?"floating"===d?"reference":"floating":d],m=$n(await o.getClippingRect({element:null==(n=await(null==o.isElement?void 0:o.isElement(g)))||n?g:g.contextElement||await(null==o.getDocumentElement?void 0:o.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:l})),v="floating"===d?{x:r,y:a,width:i.floating.width,height:i.floating.height}:i.reference,b=await(null==o.getOffsetParent?void 0:o.getOffsetParent(s.floating)),y=await(null==o.isElement?void 0:o.isElement(b))&&await(null==o.getScale?void 0:o.getScale(b))||{x:1,y:1},w=$n(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:v,offsetParent:b,strategy:l}):v);return{top:(m.top-w.top+h.top)/y.y,bottom:(w.bottom-m.bottom+h.bottom)/y.y,left:(m.left-w.left+h.left)/y.x,right:(w.right-m.right+h.right)/y.x}}function dr(e){const t=sn(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const a=Zt(e),o=a?e.offsetWidth:n,i=a?e.offsetHeight:r,s=On(n)!==o||On(r)!==i;return s&&(n=o,r=i),{width:n,height:r,$:s}}function pr(e){return Kt(e)?e:e.contextElement}function fr(e){const t=pr(e);if(!Zt(t))return Tn(1);const n=t.getBoundingClientRect(),{width:r,height:a,$:o}=dr(t);let i=(o?On(n.width):n.width)/r,s=(o?On(n.height):n.height)/a;return i&&Number.isFinite(i)||(i=1),s&&Number.isFinite(s)||(s=1),{x:i,y:s}}const hr=Tn(0);function gr(e){const t=Qt(e);return an()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:hr}function mr(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const a=e.getBoundingClientRect(),o=pr(e);let i=Tn(1);t&&(r?Kt(r)&&(i=fr(r)):i=fr(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==Qt(e))&&t}(o,n,r)?gr(o):Tn(0);let l=(a.left+s.x)/i.x,c=(a.top+s.y)/i.y,u=a.width/i.x,d=a.height/i.y;if(o){const e=Qt(o),t=r&&Kt(r)?Qt(r):r;let n=e,a=pn(n);for(;a&&r&&t!==n;){const e=fr(a),t=a.getBoundingClientRect(),r=sn(a),o=t.left+(a.clientLeft+parseFloat(r.paddingLeft))*e.x,i=t.top+(a.clientTop+parseFloat(r.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,d*=e.y,l+=o,c+=i,n=Qt(a),a=pn(n)}}return $n({width:u,height:d,x:l,y:c})}function vr(e,t){const n=ln(e).scrollLeft;return t?t.left+n:mr(Yt(e)).left+n}function br(e,t,n){void 0===n&&(n=!1);const r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-(n?0:vr(e,r)),y:r.top+t.scrollTop}}function yr(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=Qt(e),r=Yt(e),a=n.visualViewport;let o=r.clientWidth,i=r.clientHeight,s=0,l=0;if(a){o=a.width,i=a.height;const e=an();(!e||e&&"fixed"===t)&&(s=a.offsetLeft,l=a.offsetTop)}return{width:o,height:i,x:s,y:l}}(e,n);else if("document"===t)r=function(e){const t=Yt(e),n=ln(e),r=e.ownerDocument.body,a=_n(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=_n(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+vr(e);const s=-n.scrollTop;return"rtl"===sn(r).direction&&(i+=_n(t.clientWidth,r.clientWidth)-a),{width:a,height:o,x:i,y:s}}(Yt(e));else if(Kt(t))r=function(e,t){const n=mr(e,!0,"fixed"===t),r=n.top+e.clientTop,a=n.left+e.clientLeft,o=Zt(e)?fr(e):Tn(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:a*o.x,y:r*o.y}}(t,n);else{const n=gr(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return $n(r)}function wr(e,t){const n=cn(e);return!(n===t||!Kt(n)||on(n))&&("fixed"===sn(n).position||wr(n,t))}function Sr(e,t,n){const r=Zt(t),a=Yt(t),o="fixed"===n,i=mr(e,!0,o,t);let s={scrollLeft:0,scrollTop:0};const l=Tn(0);if(r||!r&&!o)if(("body"!==qt(t)||en(a))&&(s=ln(t)),r){const e=mr(t,!0,o,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else a&&(l.x=vr(a));const c=!a||r||o?Tn(0):br(a,s);return{x:i.left+s.scrollLeft-l.x-c.x,y:i.top+s.scrollTop-l.y-c.y,width:i.width,height:i.height}}function xr(e){return"static"===sn(e).position}function Er(e,t){if(!Zt(e)||"fixed"===sn(e).position)return null;if(t)return t(e);let n=e.offsetParent;return Yt(e)===n&&(n=n.ownerDocument.body),n}function Cr(e,t){const n=Qt(e);if(nn(e))return n;if(!Zt(e)){let t=cn(e);for(;t&&!on(t);){if(Kt(t)&&!xr(t))return t;t=cn(t)}return n}let r=Er(e,t);for(;r&&tn(r)&&xr(r);)r=Er(r,t);return r&&on(r)&&xr(r)&&!rn(r)?n:r||function(e){let t=cn(e);for(;Zt(t)&&!on(t);){if(rn(t))return t;if(nn(t))return null;t=cn(t)}return null}(e)||n}const Rr={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:a}=e;const o="fixed"===a,i=Yt(r),s=!!t&&nn(t.floating);if(r===i||s&&o)return n;let l={scrollLeft:0,scrollTop:0},c=Tn(1);const u=Tn(0),d=Zt(r);if((d||!d&&!o)&&(("body"!==qt(r)||en(i))&&(l=ln(r)),Zt(r))){const e=mr(r);c=fr(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}const p=!i||d||o?Tn(0):br(i,l,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x+p.x,y:n.y*c.y-l.scrollTop*c.y+u.y+p.y}},getDocumentElement:Yt,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:a}=e;const o=[..."clippingAncestors"===n?nn(t)?[]:function(e,t){const n=t.get(e);if(n)return n;let r=dn(e,[],!1).filter((e=>Kt(e)&&"body"!==qt(e))),a=null;const o="fixed"===sn(e).position;let i=o?cn(e):e;for(;Kt(i)&&!on(i);){const t=sn(i),n=rn(i);n||"fixed"!==t.position||(a=null),(o?!n&&!a:!n&&"static"===t.position&&a&&["absolute","fixed"].includes(a.position)||en(i)&&!n&&wr(e,i))?r=r.filter((e=>e!==i)):a=t,i=cn(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=o[0],s=o.reduce(((e,n)=>{const r=yr(t,n,a);return e.top=_n(r.top,e.top),e.right=Dn(r.right,e.right),e.bottom=Dn(r.bottom,e.bottom),e.left=_n(r.left,e.left),e}),yr(t,i,a));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:Cr,getElementRects:async function(e){const t=this.getOffsetParent||Cr,n=this.getDimensions,r=await n(e.floating);return{reference:Sr(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=dr(e);return{width:t,height:n}},getScale:fr,isElement:Kt,isRTL:function(e){return"rtl"===sn(e).direction}};function Dr(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function _r(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:a=!0,ancestorResize:o=!0,elementResize:i="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=r,c=pr(e),u=a||o?[...c?dn(c):[],...dn(t)]:[];u.forEach((e=>{a&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)}));const d=c&&s?function(e,t){let n,r=null;const a=Yt(e);function o(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return function i(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),o();const c=e.getBoundingClientRect(),{left:u,top:d,width:p,height:f}=c;if(s||t(),!p||!f)return;const h={rootMargin:-In(d)+"px "+-In(a.clientWidth-(u+p))+"px "+-In(a.clientHeight-(d+f))+"px "+-In(u)+"px",threshold:_n(0,Dn(1,l))||1};let g=!0;function m(t){const r=t[0].intersectionRatio;if(r!==l){if(!g)return i();r?i(!1,r):n=setTimeout((()=>{i(!1,1e-7)}),1e3)}1!==r||Dr(c,e.getBoundingClientRect())||i(),g=!1}try{r=new IntersectionObserver(m,{...h,root:a.ownerDocument})}catch(e){r=new IntersectionObserver(m,h)}r.observe(e)}(!0),o}(c,n):null;let p,f=-1,h=null;i&&(h=new ResizeObserver((e=>{let[r]=e;r&&r.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame((()=>{var e;null==(e=h)||e.observe(t)}))),n()})),c&&!l&&h.observe(c),h.observe(t));let g=l?mr(e):null;return l&&function t(){const r=mr(e);g&&!Dr(g,r)&&n();g=r,p=requestAnimationFrame(t)}(),n(),()=>{var e;u.forEach((e=>{a&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=h)||e.disconnect(),h=null,l&&cancelAnimationFrame(p)}}const Or=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:a,y:o,placement:i,middlewareData:s}=t,l=await async function(e,t){const{placement:n,platform:r,elements:a}=e,o=await(null==r.isRTL?void 0:r.isRTL(a.floating)),i=Ln(n),s=Nn(n),l="y"===Bn(n),c=["left","top"].includes(i)?-1:1,u=o&&l?-1:1,d=Pn(t,e);let{mainAxis:p,crossAxis:f,alignmentAxis:h}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&"number"==typeof h&&(f="end"===s?-1*h:h),l?{x:f*u,y:p*c}:{x:p*c,y:f*u}}(t,e);return i===(null==(n=s.offset)?void 0:n.placement)&&null!=(r=s.arrow)&&r.alignmentOffset?{}:{x:a+l.x,y:o+l.y,data:{...l,placement:i}}}}},Ir=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r;const{placement:a,middlewareData:o,rects:i,initialPlacement:s,platform:l,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:g=!0,...m}=Pn(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const v=Ln(a),b=Bn(s),y=Ln(s)===s,w=await(null==l.isRTL?void 0:l.isRTL(c.floating)),S=p||(y||!g?[Fn(s)]:function(e){const t=Fn(e);return[jn(e),t,jn(t)]}(s)),x="none"!==h;!p&&x&&S.push(...function(e,t,n,r){const a=Nn(e);let o=function(e,t,n){const r=["left","right"],a=["right","left"],o=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return n?t?a:r:t?r:a;case"left":case"right":return t?o:i;default:return[]}}(Ln(e),"start"===n,r);return a&&(o=o.map((e=>e+"-"+a)),t&&(o=o.concat(o.map(jn)))),o}(s,g,h,w));const E=[s,...S],C=await ur(t,m),R=[];let D=(null==(r=o.flip)?void 0:r.overflows)||[];if(u&&R.push(C[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const r=Nn(e),a=Vn(e),o=Mn(a);let i="x"===a?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[o]>t.floating[o]&&(i=Fn(i)),[i,Fn(i)]}(a,i,w);R.push(C[e[0]],C[e[1]])}if(D=[...D,{placement:a,overflows:R}],!R.every((e=>e<=0))){var _,O;const e=((null==(_=o.flip)?void 0:_.index)||0)+1,t=E[e];if(t)return{data:{index:e,overflows:D},reset:{placement:t}};let n=null==(O=D.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(f){case"bestFit":{var I;const e=null==(I=D.filter((e=>{if(x){const t=Bn(e.placement);return t===b||"y"===t}return!0})).map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:I[0];e&&(n=e);break}case"initialPlacement":n=s}if(a!==n)return{reset:{placement:n}}}return{}}}},Tr=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n,r;const{placement:a,rects:o,platform:i,elements:s}=t,{apply:l=()=>{},...c}=Pn(e,t),u=await ur(t,c),d=Ln(a),p=Nn(a),f="y"===Bn(a),{width:h,height:g}=o.floating;let m,v;"top"===d||"bottom"===d?(m=d,v=p===(await(null==i.isRTL?void 0:i.isRTL(s.floating))?"start":"end")?"left":"right"):(v=d,m="end"===p?"top":"bottom");const b=g-u.top-u.bottom,y=h-u.left-u.right,w=Dn(g-u[m],b),S=Dn(h-u[v],y),x=!t.middlewareData.shift;let E=w,C=S;if(null!=(n=t.middlewareData.shift)&&n.enabled.x&&(C=y),null!=(r=t.middlewareData.shift)&&r.enabled.y&&(E=b),x&&!p){const e=_n(u.left,0),t=_n(u.right,0),n=_n(u.top,0),r=_n(u.bottom,0);f?C=h-2*(0!==e||0!==t?e+t:_n(u.left,u.right)):E=g-2*(0!==n||0!==r?n+r:_n(u.top,u.bottom))}await l({...t,availableWidth:C,availableHeight:E});const R=await i.getDimensions(s.floating);return h!==R.width||g!==R.height?{reset:{rects:!0}}:{}}}},Ar=(e,t,n)=>{const r=new Map,a={platform:Rr,...n},o={...a.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:a="absolute",middleware:o=[],platform:i}=n,s=o.filter(Boolean),l=await(null==i.isRTL?void 0:i.isRTL(t));let c=await i.getElementRects({reference:e,floating:t,strategy:a}),{x:u,y:d}=cr(c,r,l),p=r,f={},h=0;for(let n=0;n{t.current=e})),t}const Br=(e,t)=>({...Ir(e),options:[e,t]}),Vr=(e,t)=>({...Tr(e),options:[e,t]});const jr={...d},Fr=jr.useInsertionEffect||(e=>e());function $r(e){const t=u.useRef((()=>{0}));return Fr((()=>{t.current=e})),u.useCallback((function(){for(var e=arguments.length,n=new Array(e),r=0;r=e.current.length}function Qr(e,t){return Xr(e,{disabledIndices:t})}function Yr(e,t){return Xr(e,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}function Xr(e,t){let{startingIndex:n=-1,decrement:r=!1,disabledIndices:a,amount:o=1}=void 0===t?{}:t;const i=e.current;let s=n;do{s+=r?-o:o}while(s>=0&&s<=i.length-1&&ta(i,s,a));return s}function Kr(e,t){let{event:n,orientation:r,loop:a,rtl:o,cols:i,disabledIndices:s,minIndex:l,maxIndex:c,prevIndex:u,stopEvent:d=!1}=t,p=u;if(n.key===zr){if(d&&Cn(n),-1===u)p=c;else if(p=Xr(e,{startingIndex:p,amount:i,decrement:!0,disabledIndices:s}),a&&(u-ie?n:n-i}qr(e,p)&&(p=u)}if(n.key===Ur&&(d&&Cn(n),-1===u?p=l:(p=Xr(e,{startingIndex:u,amount:i,disabledIndices:s}),a&&u+i>c&&(p=Xr(e,{startingIndex:u%i-i,amount:i,disabledIndices:s}))),qr(e,p)&&(p=u)),"both"===r){const t=In(u/i);n.key===(o?Wr:Hr)&&(d&&Cn(n),u%i!=i-1?(p=Xr(e,{startingIndex:u,disabledIndices:s}),a&&Gr(p,i,t)&&(p=Xr(e,{startingIndex:u-u%i-1,disabledIndices:s}))):a&&(p=Xr(e,{startingIndex:u-u%i-1,disabledIndices:s})),Gr(p,i,t)&&(p=u)),n.key===(o?Hr:Wr)&&(d&&Cn(n),u%i!=0?(p=Xr(e,{startingIndex:u,decrement:!0,disabledIndices:s}),a&&Gr(p,i,t)&&(p=Xr(e,{startingIndex:u+(i-u%i),decrement:!0,disabledIndices:s}))):a&&(p=Xr(e,{startingIndex:u+(i-u%i),decrement:!0,disabledIndices:s})),Gr(p,i,t)&&(p=u));const r=In(c/i)===t;qr(e,p)&&(p=a&&r?n.key===(o?Hr:Wr)?c:Xr(e,{startingIndex:u-u%i-1,disabledIndices:s}):u)}return p}function Zr(e,t,n){const r=[];let a=0;return e.forEach(((e,o)=>{let{width:i,height:s}=e,l=!1;for(n&&(a=0);!l;){const e=[];for(let n=0;nnull==r[e]))?(e.forEach((e=>{r[e]=o})),l=!0):a++}})),[...r]}function Jr(e,t,n,r,a){if(-1===e)return-1;const o=n.indexOf(e),i=t[e];switch(a){case"tl":return o;case"tr":return i?o+i.width-1:o;case"bl":return i?o+(i.height-1)*r:o;case"br":return n.lastIndexOf(e)}}function ea(e,t){return t.flatMap(((t,n)=>e.includes(t)?[n]:[]))}function ta(e,t,n){if(n)return n.includes(t);const r=e[t];return null==r||r.hasAttribute("disabled")||"true"===r.getAttribute("aria-disabled")}var na="undefined"!=typeof document?u.useLayoutEffect:u.useEffect;const ra=[Wr,Hr],aa=[zr,Ur];function oa(){return oa=Object.assign?Object.assign.bind():function(e){for(var t=1;t"floating-ui-"+Math.random().toString(36).slice(2,6)+sa++;const ca=jr.useId||function(){const[e,t]=u.useState((()=>ia?la():void 0));return na((()=>{null==e&&t(la())}),[]),u.useEffect((()=>{ia=!0}),[]),e};function ua(){const e=new Map;return{emit(t,n){var r;null==(r=e.get(t))||r.forEach((e=>e(n)))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){var r;e.set(t,(null==(r=e.get(t))?void 0:r.filter((e=>e!==n)))||[])}}}const da=u.createContext(null),pa=u.createContext(null),fa=()=>{var e;return(null==(e=u.useContext(da))?void 0:e.id)||null},ha=()=>u.useContext(pa);function ga(e){return"data-floating-ui-"+e}function ma(e){const t=(0,u.useRef)(e);return na((()=>{t.current=e})),t}let va=0;function ba(e,t){void 0===t&&(t={});const{preventScroll:n=!1,cancelPrevious:r=!0,sync:a=!1}=t;r&&cancelAnimationFrame(va);const o=()=>null==e?void 0:e.focus({preventScroll:n});a?o():va=requestAnimationFrame(o)}function ya(e,t){let n=e.filter((e=>{var n;return e.parentId===t&&(null==(n=e.context)?void 0:n.open)})),r=n;for(;r.length;)r=e.filter((e=>{var t;return null==(t=r)?void 0:t.some((t=>{var n;return e.parentId===t.id&&(null==(n=e.context)?void 0:n.open)}))})),n=n.concat(r);return n}let wa=new WeakMap,Sa=new WeakSet,xa={},Ea=0;const Ca=e=>e&&(e.host||Ca(e.parentNode));function Ra(e,t,n,r){const a="data-floating-ui-inert",o=r?"inert":n?"aria-hidden":null,i=(s=t,e.map((e=>{if(s.contains(e))return e;const t=Ca(e);return s.contains(t)?t:null})).filter((e=>null!=e)));var s;const l=new Set,c=new Set(i),u=[];xa[a]||(xa[a]=new WeakMap);const d=xa[a];return i.forEach((function e(t){if(!t||l.has(t))return;l.add(t),t.parentNode&&e(t.parentNode)})),function e(t){if(!t||c.has(t))return;[].forEach.call(t.children,(t=>{if("script"!==qt(t))if(l.has(t))e(t);else{const e=o?t.getAttribute(o):null,n=null!==e&&"false"!==e,r=(wa.get(t)||0)+1,i=(d.get(t)||0)+1;wa.set(t,r),d.set(t,i),u.push(t),1===r&&n&&Sa.add(t),1===i&&t.setAttribute(a,""),!n&&o&&t.setAttribute(o,"true")}}))}(t),l.clear(),Ea++,()=>{u.forEach((e=>{const t=(wa.get(e)||0)-1,n=(d.get(e)||0)-1;wa.set(e,t),d.set(e,n),t||(!Sa.has(e)&&o&&e.removeAttribute(o),Sa.delete(e)),n||e.removeAttribute(a)})),Ea--,Ea||(wa=new WeakMap,wa=new WeakMap,Sa=new WeakSet,xa={})}}function Da(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=Sn(e[0]).body;return Ra(e.concat(Array.from(r.querySelectorAll("[aria-live]"))),r,t,n)}const _a=()=>({getShadowRoot:!0,displayCheck:"function"==typeof ResizeObserver&&ResizeObserver.toString().includes("[native code]")?"full":"none"});function Oa(e,t){const n=sr(e,_a());"prev"===t&&n.reverse();const r=n.indexOf(fn(Sn(e)));return n.slice(r+1)[0]}function Ia(){return Oa(document.body,"next")}function Ta(){return Oa(document.body,"prev")}function Aa(e,t){const n=t||e.currentTarget,r=e.relatedTarget;return!r||!hn(n,r)}function ka(e){sr(e,_a()).forEach((e=>{e.dataset.tabindex=e.getAttribute("tabindex")||"",e.setAttribute("tabindex","-1")}))}function Pa(e){e.querySelectorAll("[data-tabindex]").forEach((e=>{const t=e.dataset.tabindex;delete e.dataset.tabindex,t?e.setAttribute("tabindex",t):e.removeAttribute("tabindex")}))}const La={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"fixed",whiteSpace:"nowrap",width:"1px",top:0,left:0};function Na(e){"Tab"===e.key&&(e.target,clearTimeout(undefined))}const Ma=u.forwardRef((function(e,t){const[n,r]=u.useState();na((()=>(yn()&&r("button"),document.addEventListener("keydown",Na),()=>{document.removeEventListener("keydown",Na)})),[]);const a={ref:t,tabIndex:0,role:n,"aria-hidden":!n||void 0,[ga("focus-guard")]:"",style:La};return u.createElement("span",oa({},e,a))})),Ba=u.createContext(null),Va=ga("portal");function ja(e){const{children:t,id:n,root:r,preserveTabOrder:a=!0}=e,o=function(e){void 0===e&&(e={});const{id:t,root:n}=e,r=ca(),a=Fa(),[o,i]=u.useState(null),s=u.useRef(null);return na((()=>()=>{null==o||o.remove(),queueMicrotask((()=>{s.current=null}))}),[o]),na((()=>{if(!r)return;if(s.current)return;const e=t?document.getElementById(t):null;if(!e)return;const n=document.createElement("div");n.id=r,n.setAttribute(Va,""),e.appendChild(n),s.current=n,i(n)}),[t,r]),na((()=>{if(null===n)return;if(!r)return;if(s.current)return;let e=n||(null==a?void 0:a.portalNode);e&&!Kt(e)&&(e=e.current),e=e||document.body;let o=null;t&&(o=document.createElement("div"),o.id=t,e.appendChild(o));const l=document.createElement("div");l.id=r,l.setAttribute(Va,""),e=o||e,e.appendChild(l),s.current=l,i(l)}),[t,n,r,a]),o}({id:n,root:r}),[i,s]=u.useState(null),l=u.useRef(null),c=u.useRef(null),d=u.useRef(null),p=u.useRef(null),f=null==i?void 0:i.modal,h=null==i?void 0:i.open,g=!!i&&!i.modal&&i.open&&a&&!(!r&&!o);return u.useEffect((()=>{if(o&&a&&!f)return o.addEventListener("focusin",e,!0),o.addEventListener("focusout",e,!0),()=>{o.removeEventListener("focusin",e,!0),o.removeEventListener("focusout",e,!0)};function e(e){if(o&&Aa(e)){("focusin"===e.type?Pa:ka)(o)}}}),[o,a,f]),u.useEffect((()=>{o&&(h||Pa(o))}),[h,o]),u.createElement(Ba.Provider,{value:u.useMemo((()=>({preserveTabOrder:a,beforeOutsideRef:l,afterOutsideRef:c,beforeInsideRef:d,afterInsideRef:p,portalNode:o,setFocusManagerState:s})),[a,o])},g&&o&&u.createElement(Ma,{"data-type":"outside",ref:l,onFocus:e=>{if(Aa(e,o)){var t;null==(t=d.current)||t.focus()}else{const e=Ta()||(null==i?void 0:i.refs.domReference.current);null==e||e.focus()}}}),g&&o&&u.createElement("span",{"aria-owns":o.id,style:La}),o&&lr.createPortal(t,o),g&&o&&u.createElement(Ma,{"data-type":"outside",ref:c,onFocus:e=>{if(Aa(e,o)){var t;null==(t=p.current)||t.focus()}else{const t=Ia()||(null==i?void 0:i.refs.domReference.current);null==t||t.focus(),(null==i?void 0:i.closeOnFocusOut)&&(null==i||i.onOpenChange(!1,e.nativeEvent,"focus-out"))}}}))}const Fa=()=>u.useContext(Ba),$a="data-floating-ui-focusable";function za(e){return e?e.hasAttribute($a)?e:e.querySelector("["+$a+"]")||e:null}let Ua=[];function Wa(e){Ua=Ua.filter((e=>e.isConnected));let t=e;if(t&&"body"!==qt(t)){if(!function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==Hn.call(e,Un)&&ar(t,e)}(t,_a())){const e=sr(t,_a())[0];e&&(t=e)}Ua.push(t),Ua.length>20&&(Ua=Ua.slice(-20))}}function Ha(){return Ua.slice().reverse().find((e=>e.isConnected))}const Ga=u.forwardRef((function(e,t){return u.createElement("button",oa({},e,{type:"button",ref:t,tabIndex:-1,style:La}))}));function qa(e){const{context:t,children:n,disabled:r=!1,order:a=["content"],guards:o=!0,initialFocus:i=0,returnFocus:s=!0,restoreFocus:l=!1,modal:c=!0,visuallyHiddenDismiss:d=!1,closeOnFocusOut:p=!0}=e,{open:f,refs:h,nodeId:g,onOpenChange:m,events:v,dataRef:b,floatingId:y,elements:{domReference:w,floating:S}}=t,x="number"==typeof i&&i<0,E=Rn(w)&&x,C="undefined"==typeof HTMLElement||!("inert"in HTMLElement.prototype)||o,R=ma(a),D=ma(i),_=ma(s),O=ha(),I=Fa(),T=u.useRef(null),A=u.useRef(null),k=u.useRef(!1),P=u.useRef(!1),L=u.useRef(-1),N=null!=I,M=za(S),B=$r((function(e){return void 0===e&&(e=M),e?sr(e,_a()):[]})),V=$r((e=>{const t=B(e);return R.current.map((e=>w&&"reference"===e?w:M&&"floating"===e?M:t)).filter(Boolean).flat()}));function j(e){return!r&&d&&c?u.createElement(Ga,{ref:"start"===e?T:A,onClick:e=>m(!1,e.nativeEvent)},"string"==typeof d?d:"Dismiss"):null}u.useEffect((()=>{if(r)return;if(!c)return;function e(e){if("Tab"===e.key){hn(M,fn(Sn(M)))&&0===B().length&&!E&&Cn(e);const t=V(),n=En(e);"reference"===R.current[0]&&n===w&&(Cn(e),e.shiftKey?ba(t[t.length-1]):ba(t[1])),"floating"===R.current[1]&&n===M&&e.shiftKey&&(Cn(e),ba(t[0]))}}const t=Sn(M);return t.addEventListener("keydown",e),()=>{t.removeEventListener("keydown",e)}}),[r,w,M,c,R,E,B,V]),u.useEffect((()=>{if(!r&&S)return S.addEventListener("focusin",e),()=>{S.removeEventListener("focusin",e)};function e(e){const t=En(e),n=B().indexOf(t);-1!==n&&(L.current=n)}}),[r,S,B]),u.useEffect((()=>{if(!r&&p)return S&&Zt(w)?(w.addEventListener("focusout",t),w.addEventListener("pointerdown",e),S.addEventListener("focusout",t),()=>{w.removeEventListener("focusout",t),w.removeEventListener("pointerdown",e),S.removeEventListener("focusout",t)}):void 0;function e(){P.current=!0,setTimeout((()=>{P.current=!1}))}function t(e){const t=e.relatedTarget;queueMicrotask((()=>{const n=!(hn(w,t)||hn(S,t)||hn(t,S)||hn(null==I?void 0:I.portalNode,t)||null!=t&&t.hasAttribute(ga("focus-guard"))||O&&(ya(O.nodesRef.current,g).find((e=>{var n,r;return hn(null==(n=e.context)?void 0:n.elements.floating,t)||hn(null==(r=e.context)?void 0:r.elements.domReference,t)}))||function(e,t){var n;let r=[],a=null==(n=e.find((e=>e.id===t)))?void 0:n.parentId;for(;a;){const t=e.find((e=>e.id===a));a=null==t?void 0:t.parentId,t&&(r=r.concat(t))}return r}(O.nodesRef.current,g).find((e=>{var n,r;return(null==(n=e.context)?void 0:n.elements.floating)===t||(null==(r=e.context)?void 0:r.elements.domReference)===t}))));if(l&&n&&fn(Sn(M))===Sn(M).body){Zt(M)&&M.focus();const e=L.current,t=B(),n=t[e]||t[t.length-1]||M;Zt(n)&&n.focus()}!E&&c||!t||!n||P.current||t===Ha()||(k.current=!0,m(!1,e,"focus-out"))}))}}),[r,w,S,M,c,g,O,I,m,p,l,B,E]),u.useEffect((()=>{var e;if(r)return;const t=Array.from((null==I||null==(e=I.portalNode)?void 0:e.querySelectorAll("["+ga("portal")+"]"))||[]);if(S){const e=[S,...t,T.current,A.current,R.current.includes("reference")||E?w:null].filter((e=>null!=e)),n=c||E?Da(e,C,!C):Da(e);return()=>{n()}}}),[r,w,S,c,R,I,E,C]),na((()=>{if(r||!Zt(M))return;const e=fn(Sn(M));queueMicrotask((()=>{const t=V(M),n=D.current,r=("number"==typeof n?t[n]:n.current)||M,a=hn(M,e);x||a||!f||ba(r,{preventScroll:r===M})}))}),[r,f,M,x,V,D]),na((()=>{if(r||!M)return;let e=!1;const t=Sn(M),n=fn(t);let a=b.current.openEvent;function o(t){let{open:n,reason:r,event:o,nested:i}=t;n&&(a=o),"escape-key"===r&&h.domReference.current&&Wa(h.domReference.current),"hover"===r&&"mouseleave"===o.type&&(k.current=!0),"outside-press"===r&&(i?(k.current=!1,e=!0):k.current=!(vn(o)||bn(o)))}Wa(n),v.on("openchange",o);const i=t.createElement("span");return i.setAttribute("tabindex","-1"),i.setAttribute("aria-hidden","true"),Object.assign(i.style,La),N&&w&&w.insertAdjacentElement("afterend",i),()=>{v.off("openchange",o);const n=fn(t),r=hn(S,n)||O&&ya(O.nodesRef.current,g).some((e=>{var t;return hn(null==(t=e.context)?void 0:t.elements.floating,n)}));(r||a&&["click","mousedown"].includes(a.type))&&h.domReference.current&&Wa(h.domReference.current);const s="boolean"==typeof _.current?Ha()||i:_.current.current||i;queueMicrotask((()=>{_.current&&!k.current&&Zt(s)&&(s===n||n===t.body||r)&&s.focus({preventScroll:e}),i.remove()}))}}),[r,S,M,_,b,h,v,O,g,N,w]),u.useEffect((()=>{queueMicrotask((()=>{k.current=!1}))}),[r]),na((()=>{if(!r&&I)return I.setFocusManagerState({modal:c,closeOnFocusOut:p,open:f,onOpenChange:m,refs:h}),()=>{I.setFocusManagerState(null)}}),[r,I,c,f,m,h,p]),na((()=>{if(r)return;if(!M)return;if("function"!=typeof MutationObserver)return;if(x)return;const e=()=>{const e=M.getAttribute("tabindex"),t=B(),n=fn(Sn(S)),r=t.indexOf(n);-1!==r&&(L.current=r),R.current.includes("floating")||n!==h.domReference.current&&0===t.length?"0"!==e&&M.setAttribute("tabindex","0"):"-1"!==e&&M.setAttribute("tabindex","-1")};e();const t=new MutationObserver(e);return t.observe(M,{childList:!0,subtree:!0,attributes:!0}),()=>{t.disconnect()}}),[r,S,M,h,R,B,x]);const F=!r&&C&&(!c||!E)&&(N||c);return u.createElement(u.Fragment,null,F&&u.createElement(Ma,{"data-type":"inside",ref:null==I?void 0:I.beforeInsideRef,onFocus:e=>{if(c){const e=V();ba("reference"===a[0]?e[0]:e[e.length-1])}else if(null!=I&&I.preserveTabOrder&&I.portalNode)if(k.current=!1,Aa(e,I.portalNode)){const e=Ia()||w;null==e||e.focus()}else{var t;null==(t=I.beforeOutsideRef.current)||t.focus()}}}),!E&&j("start"),n,j("end"),F&&u.createElement(Ma,{"data-type":"inside",ref:null==I?void 0:I.afterInsideRef,onFocus:e=>{if(c)ba(V()[0]);else if(null!=I&&I.preserveTabOrder&&I.portalNode)if(p&&(k.current=!0),Aa(e,I.portalNode)){const e=Ta()||w;null==e||e.focus()}else{var t;null==(t=I.afterOutsideRef.current)||t.focus()}}}))}const Qa={pointerdown:"onPointerDown",mousedown:"onMouseDown",click:"onClick"},Ya={pointerdown:"onPointerDownCapture",mousedown:"onMouseDownCapture",click:"onClickCapture"},Xa=e=>{var t,n;return{escapeKey:"boolean"==typeof e?e:null!=(t=null==e?void 0:e.escapeKey)&&t,outsidePress:"boolean"==typeof e?e:null==(n=null==e?void 0:e.outsidePress)||n}};function Ka(e){void 0===e&&(e={});const{nodeId:t}=e,n=function(e){const{open:t=!1,onOpenChange:n,elements:r}=e,a=ca(),o=u.useRef({}),[i]=u.useState((()=>ua())),s=null!=fa(),[l,c]=u.useState(r.reference),d=$r(((e,t,r)=>{o.current.openEvent=e?t:void 0,i.emit("openchange",{open:e,event:t,reason:r,nested:s}),null==n||n(e,t,r)})),p=u.useMemo((()=>({setPositionReference:c})),[]),f=u.useMemo((()=>({reference:l||r.reference||null,floating:r.floating||null,domReference:r.reference})),[l,r.reference,r.floating]);return u.useMemo((()=>({dataRef:o,open:t,onOpenChange:d,elements:f,events:i,floatingId:a,refs:p})),[t,d,f,i,a,p])}({...e,elements:{reference:null,floating:null,...e.elements}}),r=e.rootContext||n,a=r.elements,[o,i]=u.useState(null),[s,l]=u.useState(null),c=(null==a?void 0:a.domReference)||o,d=u.useRef(null),p=ha();na((()=>{c&&(d.current=c)}),[c]);const f=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:a,elements:{reference:o,floating:i}={},transform:s=!0,whileElementsMounted:l,open:c}=e,[d,p]=u.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,h]=u.useState(r);Pr(f,r)||h(r);const[g,m]=u.useState(null),[v,b]=u.useState(null),y=u.useCallback((e=>{e!==E.current&&(E.current=e,m(e))}),[]),w=u.useCallback((e=>{e!==C.current&&(C.current=e,b(e))}),[]),S=o||g,x=i||v,E=u.useRef(null),C=u.useRef(null),R=u.useRef(d),D=null!=l,_=Mr(l),O=Mr(a),I=Mr(c),T=u.useCallback((()=>{if(!E.current||!C.current)return;const e={placement:t,strategy:n,middleware:f};O.current&&(e.platform=O.current),Ar(E.current,C.current,e).then((e=>{const t={...e,isPositioned:!1!==I.current};A.current&&!Pr(R.current,t)&&(R.current=t,lr.flushSync((()=>{p(t)})))}))}),[f,t,n,O,I]);kr((()=>{!1===c&&R.current.isPositioned&&(R.current.isPositioned=!1,p((e=>({...e,isPositioned:!1}))))}),[c]);const A=u.useRef(!1);kr((()=>(A.current=!0,()=>{A.current=!1})),[]),kr((()=>{if(S&&(E.current=S),x&&(C.current=x),S&&x){if(_.current)return _.current(S,x,T);T()}}),[S,x,T,_,D]);const k=u.useMemo((()=>({reference:E,floating:C,setReference:y,setFloating:w})),[y,w]),P=u.useMemo((()=>({reference:S,floating:x})),[S,x]),L=u.useMemo((()=>{const e={position:n,left:0,top:0};if(!P.floating)return e;const t=Nr(P.floating,d.x),r=Nr(P.floating,d.y);return s?{...e,transform:"translate("+t+"px, "+r+"px)",...Lr(P.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,s,P.floating,d.x,d.y]);return u.useMemo((()=>({...d,update:T,refs:k,elements:P,floatingStyles:L})),[d,T,k,P,L])}({...e,elements:{...a,...s&&{reference:s}}}),h=u.useCallback((e=>{const t=Kt(e)?{getBoundingClientRect:()=>e.getBoundingClientRect(),contextElement:e}:e;l(t),f.refs.setReference(t)}),[f.refs]),g=u.useCallback((e=>{(Kt(e)||null===e)&&(d.current=e,i(e)),(Kt(f.refs.reference.current)||null===f.refs.reference.current||null!==e&&!Kt(e))&&f.refs.setReference(e)}),[f.refs]),m=u.useMemo((()=>({...f.refs,setReference:g,setPositionReference:h,domReference:d})),[f.refs,g,h]),v=u.useMemo((()=>({...f.elements,domReference:c})),[f.elements,c]),b=u.useMemo((()=>({...f,...r,refs:m,elements:v,nodeId:t})),[f,m,v,t,r]);return na((()=>{r.dataRef.current.floatingContext=b;const e=null==p?void 0:p.nodesRef.current.find((e=>e.id===t));e&&(e.context=b)})),u.useMemo((()=>({...f,context:b,refs:m,elements:v})),[f,m,v,b])}const Za="active",Ja="selected";function eo(e,t,n){const r=new Map,a="item"===n;let o=e;if(a&&e){const{[Za]:t,[Ja]:n,...r}=e;o=r}return{..."floating"===n&&{tabIndex:-1,[$a]:""},...o,...t.map((t=>{const r=t?t[n]:null;return"function"==typeof r?e?r(e):null:r})).concat(e).reduce(((e,t)=>t?(Object.entries(t).forEach((t=>{let[n,o]=t;var i;a&&[Za,Ja].includes(n)||(0===n.indexOf("on")?(r.has(n)||r.set(n,[]),"function"==typeof o&&(null==(i=r.get(n))||i.push(o),e[n]=function(){for(var e,t=arguments.length,a=new Array(t),o=0;oe(...a))).find((e=>void 0!==e))})):e[n]=o)})),e):e),{})}}let to=!1;function no(e,t,n){switch(e){case"vertical":return t;case"horizontal":return n;default:return t||n}}function ro(e,t){return no(t,e===zr||e===Ur,e===Wr||e===Hr)}function ao(e,t,n){return no(t,e===Ur,n?e===Wr:e===Hr)||"Enter"===e||" "===e||""===e}function oo(e,t,n){return no(t,n?e===Hr:e===Wr,e===zr)}function io(e,t){const{open:n,onOpenChange:r,elements:a}=e,{listRef:o,activeIndex:i,onNavigate:s=()=>{},enabled:l=!0,selectedIndex:c=null,allowEscape:d=!1,loop:p=!1,nested:f=!1,rtl:h=!1,virtual:g=!1,focusItemOnOpen:m="auto",focusItemOnHover:v=!0,openOnArrowKeyDown:b=!0,disabledIndices:y,orientation:w="vertical",cols:S=1,scrollItemIntoView:x=!0,virtualItemRef:E,itemSizes:C,dense:R=!1}=t;const D=ma(za(a.floating)),_=fa(),O=ha(),I=$r(s),T=Rn(a.domReference),A=u.useRef(m),k=u.useRef(null!=c?c:-1),P=u.useRef(null),L=u.useRef(!0),N=u.useRef(I),M=u.useRef(!!a.floating),B=u.useRef(n),V=u.useRef(!1),j=u.useRef(!1),F=ma(y),$=ma(n),z=ma(x),U=ma(c),[W,H]=u.useState(),[G,q]=u.useState(),Q=$r((function(e,t,n){function r(e){g?(H(e.id),null==O||O.events.emit("virtualfocus",e),E&&(E.current=e)):ba(e,{preventScroll:!0,sync:!(!gn().toLowerCase().startsWith("mac")||navigator.maxTouchPoints||!yn())&&(to||V.current)})}void 0===n&&(n=!1);const a=e.current[t.current];a&&r(a),requestAnimationFrame((()=>{const o=e.current[t.current]||a;if(!o)return;a||r(o);const i=z.current;i&&X&&(n||!L.current)&&(null==o.scrollIntoView||o.scrollIntoView("boolean"==typeof i?{block:"nearest",inline:"nearest"}:i))}))}));na((()=>{document.createElement("div").focus({get preventScroll(){return to=!0,!1}})}),[]),na((()=>{l&&(n&&a.floating?A.current&&null!=c&&(j.current=!0,k.current=c,I(c)):M.current&&(k.current=-1,N.current(null)))}),[l,n,a.floating,c,I]),na((()=>{if(l&&n&&a.floating)if(null==i){if(V.current=!1,null!=U.current)return;if(M.current&&(k.current=-1,Q(o,k)),(!B.current||!M.current)&&A.current&&(null!=P.current||!0===A.current&&null==P.current)){let e=0;const t=()=>{if(null==o.current[0]){if(e<2){(e?requestAnimationFrame:queueMicrotask)(t)}e++}else k.current=null==P.current||ao(P.current,w,h)||f?Qr(o,F.current):Yr(o,F.current),P.current=null,I(k.current)};t()}}else qr(o,i)||(k.current=i,Q(o,k,j.current),j.current=!1)}),[l,n,a.floating,i,U,f,o,w,h,I,Q,F]),na((()=>{var e;if(!l||a.floating||!O||g||!M.current)return;const t=O.nodesRef.current,n=null==(e=t.find((e=>e.id===_)))||null==(e=e.context)?void 0:e.elements.floating,r=fn(Sn(a.floating)),o=t.some((e=>e.context&&hn(e.context.elements.floating,r)));n&&!o&&L.current&&n.focus({preventScroll:!0})}),[l,a.floating,O,_,g]),na((()=>{if(l&&O&&g&&!_)return O.events.on("virtualfocus",e),()=>{O.events.off("virtualfocus",e)};function e(e){q(e.id),E&&(E.current=e)}}),[l,O,g,_,E]),na((()=>{N.current=I,M.current=!!a.floating})),na((()=>{n||(P.current=null)}),[n]),na((()=>{B.current=n}),[n]);const Y=null!=i,X=u.useMemo((()=>{function e(e){if(!n)return;const t=o.current.indexOf(e);-1!==t&&I(t)}const t={onFocus(t){let{currentTarget:n}=t;e(n)},onClick:e=>{let{currentTarget:t}=e;return t.focus({preventScroll:!0})},...v&&{onMouseMove(t){let{currentTarget:n}=t;e(n)},onPointerLeave(e){let{pointerType:t}=e;L.current&&"touch"!==t&&(k.current=-1,Q(o,k),I(null),g||ba(D.current,{preventScroll:!0}))}}};return t}),[n,D,Q,v,o,I,g]),K=$r((e=>{if(L.current=!1,V.current=!0,229===e.which)return;if(!$.current&&e.currentTarget===D.current)return;if(f&&oo(e.key,w,h))return Cn(e),r(!1,e.nativeEvent,"list-navigation"),void(Zt(a.domReference)&&(g?null==O||O.events.emit("virtualfocus",a.domReference):a.domReference.focus()));const t=k.current,i=Qr(o,y),s=Yr(o,y);if(T||("Home"===e.key&&(Cn(e),k.current=i,I(k.current)),"End"===e.key&&(Cn(e),k.current=s,I(k.current))),S>1){const t=C||Array.from({length:o.current.length},(()=>({width:1,height:1}))),n=Zr(t,S,R),r=n.findIndex((e=>null!=e&&!ta(o.current,e,y))),a=n.reduce(((e,t,n)=>null==t||ta(o.current,t,y)?e:n),-1),l=n[Kr({current:n.map((e=>null!=e?o.current[e]:null))},{event:e,orientation:w,loop:p,rtl:h,cols:S,disabledIndices:ea([...y||o.current.map(((e,t)=>ta(o.current,t)?t:void 0)),void 0],n),minIndex:r,maxIndex:a,prevIndex:Jr(k.current>s?i:k.current,t,n,S,e.key===Ur?"bl":e.key===(h?Wr:Hr)?"tr":"tl"),stopEvent:!0})];if(null!=l&&(k.current=l,I(k.current)),"both"===w)return}if(ro(e.key,w)){if(Cn(e),n&&!g&&fn(e.currentTarget.ownerDocument)===e.currentTarget)return k.current=ao(e.key,w,h)?i:s,void I(k.current);ao(e.key,w,h)?k.current=p?t>=s?d&&t!==o.current.length?-1:i:Xr(o,{startingIndex:t,disabledIndices:y}):Math.min(s,Xr(o,{startingIndex:t,disabledIndices:y})):k.current=p?t<=i?d&&-1!==t?o.current.length:s:Xr(o,{startingIndex:t,decrement:!0,disabledIndices:y}):Math.max(i,Xr(o,{startingIndex:t,decrement:!0,disabledIndices:y})),qr(o,k.current)?I(null):I(k.current)}})),Z=u.useMemo((()=>g&&n&&Y&&{"aria-activedescendant":G||W}),[g,n,Y,G,W]),J=u.useMemo((()=>({"aria-orientation":"both"===w?void 0:w,...!Rn(a.domReference)&&Z,onKeyDown:K,onPointerMove(){L.current=!0}})),[Z,K,a.domReference,w]),ee=u.useMemo((()=>{function e(e){"auto"===m&&vn(e.nativeEvent)&&(A.current=!0)}return{...Z,onKeyDown(e){L.current=!1;const t=e.key.startsWith("Arrow"),a=["Home","End"].includes(e.key),i=t||a,s=function(e,t,n){return no(t,n?e===Wr:e===Hr,e===Ur)}(e.key,w,h),l=oo(e.key,w,h),u=ro(e.key,w),d=(f?s:u)||"Enter"===e.key||""===e.key.trim();if(g&&n){const t=null==O?void 0:O.nodesRef.current.find((e=>null==e.parentId)),n=O&&t?function(e,t){let n,r=-1;return function t(a,o){o>r&&(n=a,r=o),ya(e,a).forEach((e=>{t(e.id,o+1)}))}(t,0),e.find((e=>e.id===n))}(O.nodesRef.current,t.id):null;if(i&&n&&E){const t=new KeyboardEvent("keydown",{key:e.key,bubbles:!0});if(s||l){var p,m;const r=(null==(p=n.context)?void 0:p.elements.domReference)===e.currentTarget,a=l&&!r?null==(m=n.context)?void 0:m.elements.domReference:s?o.current.find((e=>(null==e?void 0:e.id)===W)):null;a&&(Cn(e),a.dispatchEvent(t),q(void 0))}var v;if((u||a)&&n.context)if(n.context.open&&n.parentId&&e.currentTarget!==n.context.elements.domReference)return Cn(e),void(null==(v=n.context.elements.domReference)||v.dispatchEvent(t))}return K(e)}(n||b||!t)&&(d&&(P.current=f&&u?null:e.key),f?s&&(Cn(e),n?(k.current=Qr(o,F.current),I(k.current)):r(!0,e.nativeEvent,"list-navigation")):u&&(null!=c&&(k.current=c),Cn(e),!n&&b?r(!0,e.nativeEvent,"list-navigation"):K(e),n&&I(k.current)))},onFocus(){n&&!g&&I(null)},onPointerDown:function(e){A.current=m,"auto"===m&&bn(e.nativeEvent)&&(A.current=!0)},onMouseDown:e,onClick:e}}),[W,Z,K,F,m,o,f,I,r,n,b,w,h,c,O,g,E]);return u.useMemo((()=>l?{reference:ee,floating:J,item:X}:{}),[l,ee,J,X])}const so=new Map([["select","listbox"],["combobox","listbox"],["label",!1]]);function lo(e,t,n){let r,a=n.initialDeps??[];function o(){var o,i,s,l;let c;n.key&&(null==(o=n.debug)?void 0:o.call(n))&&(c=Date.now());const u=e(),d=u.length!==a.length||u.some(((e,t)=>a[t]!==e));if(!d)return r;let p;if(a=u,n.key&&(null==(i=n.debug)?void 0:i.call(n))&&(p=Date.now()),r=t(...u),n.key&&(null==(s=n.debug)?void 0:s.call(n))){Math.round(100*(Date.now()-c)),Math.round(100*(Date.now()-p))}return null==(l=null==n?void 0:n.onChange)||l.call(n,r),r}return o.updateDeps=e=>{a=e},o}function co(e,t){if(void 0===e)throw new Error("Unexpected undefined"+(t?`: ${t}`:""));return e}const uo=(e,t,n)=>{let r;return function(...a){e.clearTimeout(r),r=e.setTimeout((()=>t.apply(this,a)),n)}},po=e=>e,fo=e=>{const t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=n;e++)r.push(e);return r},ho=(e,t)=>{const n=e.scrollElement;if(!n)return;const r=e.targetWindow;if(!r)return;const a=e=>{const{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(a(n.getBoundingClientRect()),!r.ResizeObserver)return()=>{};const o=new r.ResizeObserver((t=>{const r=()=>{const e=t[0];if(null==e?void 0:e.borderBoxSize){const t=e.borderBoxSize[0];if(t)return void a({width:t.inlineSize,height:t.blockSize})}a(n.getBoundingClientRect())};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()}));return o.observe(n,{box:"border-box"}),()=>{o.unobserve(n)}},go={passive:!0},mo="undefined"==typeof window||"onscrollend"in window,vo=(e,t)=>{const n=e.scrollElement;if(!n)return;const r=e.targetWindow;if(!r)return;let a=0;const o=e.options.useScrollendEvent&&mo?()=>{}:uo(r,(()=>{t(a,!1)}),e.options.isScrollingResetDelay),i=r=>()=>{const{horizontal:i,isRtl:s}=e.options;a=i?n.scrollLeft*(s?-1:1):n.scrollTop,o(),t(a,r)},s=i(!0),l=i(!1);l(),n.addEventListener("scroll",s,go);const c=e.options.useScrollendEvent&&mo;return c&&n.addEventListener("scrollend",l,go),()=>{n.removeEventListener("scroll",s),c&&n.removeEventListener("scrollend",l)}},bo=(e,t,n)=>{if(null==t?void 0:t.borderBoxSize){const e=t.borderBoxSize[0];if(e){return Math.round(e[n.options.horizontal?"inlineSize":"blockSize"])}}return Math.round(e.getBoundingClientRect()[n.options.horizontal?"width":"height"])},yo=(e,{adjustments:t=0,behavior:n},r)=>{var a,o;const i=e+t;null==(o=null==(a=r.scrollElement)?void 0:a.scrollTo)||o.call(a,{[r.options.horizontal?"left":"top"]:i,behavior:n})};class wo{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollToIndexTimeoutId=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let e=null;const t=()=>e||(this.targetWindow&&this.targetWindow.ResizeObserver?e=new this.targetWindow.ResizeObserver((e=>{e.forEach((e=>{const t=()=>{this._measureElement(e.target,e)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()}))})):null);return{disconnect:()=>{var n;null==(n=t())||n.disconnect(),e=null},observe:e=>{var n;return null==(n=t())?void 0:n.observe(e,{box:"border-box"})},unobserve:e=>{var n;return null==(n=t())?void 0:n.unobserve(e)}}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach((([t,n])=>{void 0===n&&delete e[t]})),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:po,rangeExtractor:fo,onChange:()=>{},measureElement:bo,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...e}},this.notify=e=>{var t,n;null==(n=(t=this.options).onChange)||n.call(t,this,e)},this.maybeNotify=lo((()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null])),(e=>{this.notify(e)}),{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach((e=>e())),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;const t=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==t){if(this.cleanup(),!t)return void this.maybeNotify();this.scrollElement=t,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=(null==(e=this.scrollElement)?void 0:e.window)??null,this.elementsCache.forEach((e=>{this.observer.observe(e)})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,(e=>{this.scrollRect=e,this.maybeNotify()}))),this.unsubs.push(this.options.observeElementOffset(this,((e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??("function"==typeof this.options.initialOffset?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{const n=new Map,r=new Map;for(let a=t-1;a>=0;a--){const t=e[a];if(n.has(t.lane))continue;const o=r.get(t.lane);if(null==o||t.end>o.end?r.set(t.lane,t):t.ende.end===t.end?e.index-t.index:e.end-t.end))[0]:void 0},this.getMeasurementOptions=lo((()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled]),((e,t,n,r,a)=>(this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:a})),{key:!1}),this.getMeasurements=lo((()=>[this.getMeasurementOptions(),this.itemSizeCache]),(({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:a},o)=>{if(!a)return this.measurementsCache=[],this.itemSizeCache.clear(),[];0===this.measurementsCache.length&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach((e=>{this.itemSizeCache.set(e.key,e.size)})));const i=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const s=this.measurementsCache.slice(0,i);for(let a=i;athis.options.debug}),this.calculateRange=lo((()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes]),((e,t,n,r)=>this.range=e.length>0&&t>0?function({measurements:e,outerSize:t,scrollOffset:n,lanes:r}){const a=e.length-1,o=t=>e[t].start;if(e.length<=r)return{startIndex:0,endIndex:a};let i=So(0,a,o,n),s=i;if(1===r)for(;s1){const o=Array(r).fill(0);for(;se=0&&l.some((e=>e>=n));){const t=e[i];l[t.lane]=t.start,i--}i=Math.max(0,i-i%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:i,endIndex:s}}({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=lo((()=>{let e=null,t=null;const n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]}),((e,t,n,r,a)=>null===r||null===a?[]:e({startIndex:r,endIndex:a,overscan:t,count:n})),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{const t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this._measureElement=(e,t)=>{const n=this.indexFromElement(e),r=this.measurementsCache[n];if(!r)return;const a=r.key,o=this.elementsCache.get(a);o!==e&&(o&&this.observer.unobserve(o),this.observer.observe(e),this.elementsCache.set(a,e)),e.isConnected&&this.resizeItem(n,this.options.measureElement(e,t,this))},this.resizeItem=(e,t)=>{const n=this.measurementsCache[e];if(!n)return;const r=t-(this.itemSizeCache.get(n.key)??n.size);0!==r&&((void 0!==this.shouldAdjustScrollPositionOnItemSizeChange?this.shouldAdjustScrollPositionOnItemSizeChange(n,r,this):n.start{e?this._measureElement(e,void 0):this.elementsCache.forEach(((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))}))},this.getVirtualItems=lo((()=>[this.getVirtualIndexes(),this.getMeasurements()]),((e,t)=>{const n=[];for(let r=0,a=e.length;rthis.options.debug}),this.getVirtualItemForOffset=e=>{const t=this.getMeasurements();if(0!==t.length)return co(t[So(0,t.length-1,(e=>co(t[e]).start),e)])},this.getOffsetForAlignment=(e,t,n=0)=>{const r=this.getSize(),a=this.getScrollOffset();"auto"===t&&(t=e>=a+r?"end":"start"),"center"===t?e+=(n-r)/2:"end"===t&&(e-=r);const o=this.options.horizontal?"scrollWidth":"scrollHeight",i=(this.scrollElement?"document"in this.scrollElement?this.scrollElement.document.documentElement[o]:this.scrollElement[o]:0)-r;return Math.max(Math.min(i,e),0)},this.getOffsetForIndex=(e,t="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));const n=this.measurementsCache[e];if(!n)return;const r=this.getSize(),a=this.getScrollOffset();if("auto"===t)if(n.end>=a+r-this.options.scrollPaddingEnd)t="end";else{if(!(n.start<=a+this.options.scrollPaddingStart))return[a,t];t="start"}const o="end"===t?n.end+this.options.scrollPaddingEnd:n.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,t,n.size),t]},this.isDynamicMode=()=>this.elementsCache.size>0,this.cancelScrollToIndex=()=>{null!==this.scrollToIndexTimeoutId&&this.targetWindow&&(this.targetWindow.clearTimeout(this.scrollToIndexTimeoutId),this.scrollToIndexTimeoutId=null)},this.scrollToOffset=(e,{align:t="start",behavior:n}={})=>{this.cancelScrollToIndex(),"smooth"===n&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(e,t),{adjustments:void 0,behavior:n})},this.scrollToIndex=(e,{align:t="auto",behavior:n}={})=>{e=Math.max(0,Math.min(e,this.options.count-1)),this.cancelScrollToIndex(),"smooth"===n&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size.");const r=this.getOffsetForIndex(e,t);if(!r)return;const[a,o]=r;this._scrollToOffset(a,{adjustments:void 0,behavior:n}),"smooth"!==n&&this.isDynamicMode()&&this.targetWindow&&(this.scrollToIndexTimeoutId=this.targetWindow.setTimeout((()=>{this.scrollToIndexTimeoutId=null;if(this.elementsCache.has(this.options.getItemKey(e))){const[a]=co(this.getOffsetForIndex(e,o));t=a,r=this.getScrollOffset(),Math.abs(t-r)<1||this.scrollToIndex(e,{align:o,behavior:n})}else this.scrollToIndex(e,{align:o,behavior:n});var t,r})))},this.scrollBy=(e,{behavior:t}={})=>{this.cancelScrollToIndex(),"smooth"===t&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+e,{adjustments:void 0,behavior:t})},this.getTotalSize=()=>{var e;const t=this.getMeasurements();let n;if(0===t.length)n=this.options.paddingStart;else if(1===this.options.lanes)n=(null==(e=t[t.length-1])?void 0:e.end)??0;else{const e=Array(this.options.lanes).fill(null);let r=t.length-1;for(;r>=0&&e.some((e=>null===e));){const n=t[r];null===e[n.lane]&&(e[n.lane]=n.end),r--}n=Math.max(...e.filter((e=>null!==e)))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(e)}}const So=(e,t,n,r)=>{for(;e<=t;){const a=(e+t)/2|0,o=n(a);if(or))return a;t=a-1}}return e>0?e-1:0};const xo="undefined"!=typeof document?u.useLayoutEffect:u.useEffect;function Eo(e){const t=u.useReducer((()=>({})),{})[1],n={...e,onChange:(n,r)=>{var a;r?(0,lr.flushSync)(t):t(),null==(a=e.onChange)||a.call(e,n,r)}},[r]=u.useState((()=>new wo(n)));return r.setOptions(n),xo((()=>r._didMount()),[]),xo((()=>r._willUpdate())),r}const Co=(0,u.forwardRef)((function({children:e,active:t,addGroupBottomBorder:n,isMultiValueEdit:r,checked:a,...o},i){const s=(0,qe.useStyles2)(Ro),l=(0,u.useId)();return p().createElement("div",{ref:i,role:"option",id:l,"aria-selected":t,className:(0,rt.cx)(s.option,t&&s.optionFocused,n&&s.groupBottomBorder),...o},p().createElement("div",{className:s.optionBody,"data-testid":`data-testid ad hoc filter option value ${e}`},p().createElement("span",null,r?p().createElement(qe.Checkbox,{tabIndex:-1,checked:a,className:s.checkbox}):null,e)))})),Ro=e=>({option:(0,rt.css)({label:"grafana-select-option",top:0,left:0,width:"100%",position:"absolute",padding:e.spacing(1),display:"flex",alignItems:"center",flexDirection:"row",flexShrink:0,whiteSpace:"nowrap",cursor:"pointer","&:hover":{background:e.colors.action.hover,"@media (forced-colors: active), (prefers-contrast: more)":{border:`1px solid ${e.colors.primary.border}`}}}),optionFocused:(0,rt.css)({label:"grafana-select-option-focused",background:e.colors.action.focus,"@media (forced-colors: active), (prefers-contrast: more)":{border:`1px solid ${e.colors.primary.border}`}}),optionBody:(0,rt.css)({label:"grafana-select-option-body",display:"flex",fontWeight:e.typography.fontWeightMedium,flexDirection:"column",flexGrow:1}),groupBottomBorder:(0,rt.css)({borderBottom:`1px solid ${e.colors.border.weak}`}),checkbox:(0,rt.css)({paddingRight:e.spacing(.5)}),multiValueApplyWrapper:(0,rt.css)({position:"fixed",top:0,left:0,display:"flex",backgroundColor:e.colors.background.primary,color:e.colors.text.primary,boxShadow:e.shadows.z2,overflowY:"auto",zIndex:e.zIndex.dropdown,gap:e.spacing(1.5),padding:`${e.spacing(1.5)} ${e.spacing(1)}`})}),Do=()=>p().createElement(Co,{onClick:e=>e.stopPropagation()},"Loading options..."),_o=()=>p().createElement(Co,{onClick:e=>e.stopPropagation()},"No options found"),Oo=({handleFetchOptions:e})=>p().createElement(Co,{onClick:e},"An error has occurred fetching labels. Click to retry"),Io=({onApply:e,floatingElement:t,maxOptionWidth:n,menuHeight:r})=>{const a=(0,qe.useStyles2)(Ro),o=null==t?void 0:t.getBoundingClientRect();return p().createElement("div",{className:a.multiValueApplyWrapper,style:{width:`${n}px`,transform:`translate(${null==o?void 0:o.left}px,${o?o.top+r:0}px)`}},p().createElement(qe.Button,{onClick:e,size:"sm",tabIndex:-1},"Apply"))},To={key:"operator",operator:"value",value:"key"},Ao=(e,t,n,r,a)=>ko(To[e],t,"value"===e?n:void 0,r,a),ko=(e,t,n,r,a)=>{t(e),null==n||n(void 0,a),setTimeout((()=>null==r?void 0:r.focus()))},Po=({filterInputType:e,item:t,filter:n,setFilterMultiValues:r,onAddCustomValue:a})=>{var o,i,s,l,c;if("key"===e)return{key:t.value,keyLabel:t.label?t.label:t.value,meta:null==t?void 0:t.meta};if("value"===e)return t.isCustom&&a?a(t,n):{value:t.value,valueLabels:[t.label?t.label:t.value]};if("operator"===e){if(ri(n.operator)&&!ri(t.value))return r([]),{operator:t.value,valueLabels:[(null==(o=n.valueLabels)?void 0:o[0])||(null==(i=n.values)?void 0:i[0])||n.value],values:void 0};if(ri(t.value)&&!ri(n.operator)){const e=[(null==(s=n.valueLabels)?void 0:s[0])||(null==(l=n.values)?void 0:l[0])||n.value],a=[n.value];return a[0]&&r([{value:a[0],label:null!=(c=null==e?void 0:e[0])?c:a[0]}]),{operator:t.value,valueLabels:e,values:a}}}return{[e]:t.value}},Lo="Filter by label values",No=(e,t,n,r)=>{var a;return"key"===t?Lo:"value"===t?n?"Edit values":(null==(a=e.valueLabels)?void 0:a[0])||"":e[t]&&!r?`${e[t]}`:Lo},Mo=({populateInputOnEdit:e,item:t,filterInputType:n,setInputValue:r,filter:a})=>{var o,i,s;e&&!ri(t.value||"")&&"value"===To[n]?r(null!=(s=null!=(i=null==(o=null==a?void 0:a.valueLabels)?void 0:o[0])?i:null==a?void 0:a.value)?s:""):r("")},Bo=({open:e,onOpenChange:t,activeIndex:n,setActiveIndex:r,outsidePressIdsToIgnore:a,listRef:o,disabledIndicesRef:i})=>{const{refs:s,floatingStyles:l,context:c}=Ka({whileElementsMounted:_r,open:e,onOpenChange:t,placement:"bottom-start",middleware:[(d=10,{...Or(d),options:[d,p]}),Br({padding:10}),Vr({apply({availableHeight:e,availableWidth:t,elements:n}){n.floating.style.maxHeight=`${Math.min(300,e)}px`,n.floating.style.maxWidth=`${t}px`},padding:10})],strategy:"fixed"});var d,p;const f=function(e,t){var n;void 0===t&&(t={});const{open:r,floatingId:a}=e,{enabled:o=!0,role:i="dialog"}=t,s=null!=(n=so.get(i))?n:i,l=ca(),c=null!=fa(),d=u.useMemo((()=>"tooltip"===s||"label"===i?{["aria-"+("label"===i?"labelledby":"describedby")]:r?a:void 0}:{"aria-expanded":r?"true":"false","aria-haspopup":"alertdialog"===s?"dialog":s,"aria-controls":r?a:void 0,..."listbox"===s&&{role:"combobox"},..."menu"===s&&{id:l},..."menu"===s&&c&&{role:"menuitem"},..."select"===i&&{"aria-autocomplete":"none"},..."combobox"===i&&{"aria-autocomplete":"list"}}),[s,a,c,r,l,i]),p=u.useMemo((()=>{const e={id:a,...s&&{role:s}};return"tooltip"===s||"label"===i?e:{...e,..."menu"===s&&{"aria-labelledby":l}}}),[s,a,l,i]),f=u.useCallback((e=>{let{active:t,selected:n}=e;const r={role:"option",...t&&{id:a+"-option"}};switch(i){case"select":return{...r,"aria-selected":t&&n};case"combobox":return{...r,...t&&{"aria-selected":!0}}}return{}}),[a,i]);return u.useMemo((()=>o?{reference:d,floating:p,item:f}:{}),[o,d,p,f])}(c,{role:"listbox"}),h=function(e,t){void 0===t&&(t={});const{open:n,onOpenChange:r,elements:a,dataRef:o}=e,{enabled:i=!0,escapeKey:s=!0,outsidePress:l=!0,outsidePressEvent:c="pointerdown",referencePress:d=!1,referencePressEvent:p="pointerdown",ancestorScroll:f=!1,bubbles:h,capture:g}=t,m=ha(),v=$r("function"==typeof l?l:()=>!1),b="function"==typeof l?v:l,y=u.useRef(!1),w=u.useRef(!1),{escapeKey:S,outsidePress:x}=Xa(h),{escapeKey:E,outsidePress:C}=Xa(g),R=u.useRef(!1),D=$r((e=>{var t;if(!n||!i||!s||"Escape"!==e.key)return;if(R.current)return;const a=null==(t=o.current.floatingContext)?void 0:t.nodeId,l=m?ya(m.nodesRef.current,a):[];if(!S&&(e.stopPropagation(),l.length>0)){let e=!0;if(l.forEach((t=>{var n;null==(n=t.context)||!n.open||t.context.dataRef.current.__escapeKeyBubbles||(e=!1)})),!e)return}r(!1,function(e){return"nativeEvent"in e}(e)?e.nativeEvent:e,"escape-key")})),_=$r((e=>{var t;const n=()=>{var t;D(e),null==(t=En(e))||t.removeEventListener("keydown",n)};null==(t=En(e))||t.addEventListener("keydown",n)})),O=$r((e=>{var t;const n=y.current;y.current=!1;const i=w.current;if(w.current=!1,"click"===c&&i)return;if(n)return;if("function"==typeof b&&!b(e))return;const s=En(e),l="["+ga("inert")+"]",u=Sn(a.floating).querySelectorAll(l);let d=Kt(s)?s:null;for(;d&&!on(d);){const e=cn(d);if(on(e)||!Kt(e))break;d=e}if(u.length&&Kt(s)&&!s.matches("html,body")&&!hn(s,a.floating)&&Array.from(u).every((e=>!hn(d,e))))return;if(Zt(s)&&A){const t=s.clientWidth>0&&s.scrollWidth>s.clientWidth,n=s.clientHeight>0&&s.scrollHeight>s.clientHeight;let r=n&&e.offsetX>s.clientWidth;if(n&&"rtl"===sn(s).direction&&(r=e.offsetX<=s.offsetWidth-s.clientWidth),r||t&&e.offsetY>s.clientHeight)return}const p=null==(t=o.current.floatingContext)?void 0:t.nodeId,f=m&&ya(m.nodesRef.current,p).some((t=>{var n;return xn(e,null==(n=t.context)?void 0:n.elements.floating)}));if(xn(e,a.floating)||xn(e,a.domReference)||f)return;const h=m?ya(m.nodesRef.current,p):[];if(h.length>0){let e=!0;if(h.forEach((t=>{var n;null==(n=t.context)||!n.open||t.context.dataRef.current.__outsidePressBubbles||(e=!1)})),!e)return}r(!1,e,"outside-press")})),I=$r((e=>{var t;const n=()=>{var t;O(e),null==(t=En(e))||t.removeEventListener(c,n)};null==(t=En(e))||t.addEventListener(c,n)}));u.useEffect((()=>{if(!n||!i)return;o.current.__escapeKeyBubbles=S,o.current.__outsidePressBubbles=x;let e=-1;function t(e){r(!1,e,"ancestor-scroll")}function l(){window.clearTimeout(e),R.current=!0}function u(){e=window.setTimeout((()=>{R.current=!1}),an()?5:0)}const d=Sn(a.floating);s&&(d.addEventListener("keydown",E?_:D,E),d.addEventListener("compositionstart",l),d.addEventListener("compositionend",u)),b&&d.addEventListener(c,C?I:O,C);let p=[];return f&&(Kt(a.domReference)&&(p=dn(a.domReference)),Kt(a.floating)&&(p=p.concat(dn(a.floating))),!Kt(a.reference)&&a.reference&&a.reference.contextElement&&(p=p.concat(dn(a.reference.contextElement)))),p=p.filter((e=>{var t;return e!==(null==(t=d.defaultView)?void 0:t.visualViewport)})),p.forEach((e=>{e.addEventListener("scroll",t,{passive:!0})})),()=>{s&&(d.removeEventListener("keydown",E?_:D,E),d.removeEventListener("compositionstart",l),d.removeEventListener("compositionend",u)),b&&d.removeEventListener(c,C?I:O,C),p.forEach((e=>{e.removeEventListener("scroll",t)})),window.clearTimeout(e)}}),[o,a,s,b,c,n,r,f,i,S,x,D,E,_,O,C,I]),u.useEffect((()=>{y.current=!1}),[b,c]);const T=u.useMemo((()=>({onKeyDown:D,[Qa[p]]:e=>{d&&r(!1,e.nativeEvent,"reference-press")}})),[D,r,d,p]),A=u.useMemo((()=>({onKeyDown:D,onMouseDown(){w.current=!0},onMouseUp(){w.current=!0},[Ya[c]]:()=>{y.current=!0}})),[D,c]);return u.useMemo((()=>i?{reference:T,floating:A}:{}),[i,T,A])}(c,{outsidePress:e=>{var t;if(e.currentTarget instanceof Element){const n=e.currentTarget;let r=n.id;if("path"===n.nodeName&&(r=(null==(t=n.parentElement)?void 0:t.id)||""),a.includes(r))return!1}return!0}}),g=io(c,{listRef:o,activeIndex:n,onNavigate:r,virtual:!0,loop:!0,disabledIndices:i.current}),{getReferenceProps:m,getFloatingProps:v,getItemProps:b}=function(e){void 0===e&&(e=[]);const t=e.map((e=>null==e?void 0:e.reference)),n=e.map((e=>null==e?void 0:e.floating)),r=e.map((e=>null==e?void 0:e.item)),a=u.useCallback((t=>eo(t,e,"reference")),t),o=u.useCallback((t=>eo(t,e,"floating")),n),i=u.useCallback((t=>eo(t,e,"item")),r);return u.useMemo((()=>({getReferenceProps:a,getFloatingProps:o,getItemProps:i})),[a,o,i])}([f,h,g]);return{refs:s,floatingStyles:l,context:c,getReferenceProps:m,getFloatingProps:v,getItemProps:b}},Vo=({item:e,handleRemoveMultiValue:t,index:n,handleEditMultiValuePill:r})=>{var a,o;const i=(0,qe.useStyles2)(jo),s=(0,u.useCallback)((t=>{t.stopPropagation(),t.preventDefault(),r(e)}),[r,e]),l=(0,u.useCallback)((e=>{"Enter"===e.key&&s(e)}),[s]),c=(0,u.useCallback)((n=>{n.stopPropagation(),n.preventDefault(),t(e)}),[t,e]),d=(0,u.useCallback)((e=>{"Enter"===e.key&&c(e)}),[c]);return p().createElement("div",{className:(0,rt.cx)(i.basePill,i.valuePill),onClick:s,onKeyDown:l,tabIndex:0,id:`${e.value}-${n}`},null!=(a=e.label)?a:e.value,p().createElement(qe.Button,{onClick:c,onKeyDownCapture:d,fill:"text",size:"sm",variant:"secondary",className:i.removeButton,tooltip:`Remove filter value - ${null!=(o=e.label)?o:e.value}`},p().createElement(qe.Icon,{name:"times",size:"md",id:`${e.value}-${n}-close-icon`})))},jo=e=>({basePill:(0,rt.css)({display:"flex",alignItems:"center",background:e.colors.action.disabledBackground,border:`1px solid ${e.colors.border.weak}`,padding:e.spacing(.125,1,.125,1),color:e.colors.text.primary,overflow:"hidden",whiteSpace:"nowrap",minHeight:e.spacing(2.75),...e.typography.bodySmall,cursor:"pointer"}),valuePill:(0,rt.css)({background:e.colors.action.selected,padding:e.spacing(.125,0,.125,1)}),removeButton:(0,rt.css)({marginInline:e.spacing(.5),height:"100%",padding:0,cursor:"pointer","&:hover":{color:e.colors.text.primary}})}),Fo=(0,u.forwardRef)((function({filter:e,model:t,isAlwaysWip:n,handleChangeViewMode:r,focusOnWipInputRef:a,populateInputOnEdit:o},i){var s,l,c,d;const[f,h]=(0,u.useState)(!1),[g,m]=(0,u.useState)([]),[v,b]=(0,u.useState)(!1),[y,w]=(0,u.useState)(!1),[S,x]=(0,u.useState)(""),[E,C]=(0,u.useState)(null),[R,D]=(0,u.useState)(n?"key":"value"),[_,O]=(0,u.useState)(!n&&"value"===R),I=(0,qe.useStyles2)($o),[T,A]=(0,u.useState)([]),[k,P]=(0,u.useState)({}),L=null==(s=t.state.allowCustomValue)||s,N=(0,u.useRef)(null),M=ri((null==e?void 0:e.operator)||""),B=M&&"value"===R,V=(0,u.useId)(),j=(0,u.useRef)([]),F=(0,u.useRef)([]),$=(0,u.useRef)(n?"key":"value"),z=(0,u.useMemo)((()=>Mt(g)),[g]),U=(0,u.useMemo)((()=>!n&&t.state.filters.at(-1)===e),[e,n,t.state.filters]),W=(0,u.useCallback)((()=>{n&&(t._addWip(),D("key"),x(""))}),[t,n]),H=(0,u.useCallback)(((e,t,n,r)=>{if(n.length){const r=[],a=[];n.forEach((e=>{var t;r.push(null!=(t=e.label)?t:e.value),a.push(e.value)})),e._updateFilter(t,{valueLabels:r,values:a,value:a[0]}),A([])}r||setTimeout((()=>{var e;return null==(e=Y.domReference.current)?void 0:e.focus()}))}),[]),G=(0,u.useCallback)((e=>{A((t=>t.some((t=>t.value===e.value))?t.filter((t=>t.value!==e.value)):[...t,e]))}),[]),q=(0,u.useCallback)(((n,a,o)=>{h(n),o&&["outside-press","escape-key"].includes(o)&&(B&&H(t,e,T),W(),null==r||r())}),[e,T,r,H,W,B,t]),Q=(0,u.useMemo)((()=>[V,...T.reduce(((e,t,n)=>[...e,`${t.value}-${n}`,`${t.value}-${n}-close-icon`]),[])]),[V,T]),{refs:Y,floatingStyles:X,context:K,getReferenceProps:Z,getFloatingProps:J,getItemProps:ee}=Bo({open:f,onOpenChange:q,activeIndex:E,setActiveIndex:C,outsidePressIdsToIgnore:Q,listRef:j,disabledIndicesRef:F});(0,u.useImperativeHandle)(i,(()=>()=>{var e;return null==(e=Y.domReference.current)?void 0:e.focus()}),[Y.domReference]);const te=(0,u.useCallback)((e=>{A((t=>t.filter((t=>t.value!==e.value)))),setTimeout((()=>{var e;return null==(e=Y.domReference.current)?void 0:e.focus()}))}),[Y.domReference]),ne=(e=>e.flatMap((e=>e.options?[e,...e.options]:[e])))(Ci(z(_?"":S)));L&&"operator"!==R&&S&&ne.push({value:S.trim(),label:S.trim(),isCustom:!0});const re=t.state.onAddCustomValue,ae=((e,t,n)=>{var r,a,o,i;let s=182;const l=[],c=[];for(let t=0;ts&&(s=d)}return t.current=[...l],n.current=[...c],s})(ne,j,F),oe=(0,u.useCallback)((async n=>{var r;w(!1),b(!0),m([]);let a=[];try{if("key"===n?a=await t._getKeys(null):"operator"===n?a=t._getOperators():"value"===n&&(a=await t._getValuesFor(e)),$.current!==n)return;m(a),(null==(r=a[0])?void 0:r.group)?C(1):C(0)}catch(e){w(!0)}b(!1)}),[e,t]),ie=function(e){return Eo({observeElementRect:ho,observeElementOffset:vo,scrollToFn:yo,...e})}({count:ne.length,getScrollElement:()=>Y.floating.current,estimateSize:e=>ne[e].description?60:38,overscan:5}),se=(0,u.useCallback)(((r,o)=>{if("Backspace"===r.key&&!S){if("value"===R){if(o&&T.length)return void A((e=>{const t=[...e];return t.splice(-1,1),t}));if(null==e?void 0:e.origin)return;return void D("operator")}null==a||a(),t._handleComboboxBackspace(e),n&&W()}}),[S,R,t,e,n,T.length,W,a]),le=(0,u.useCallback)(((n,a)=>{var o;"Tab"!==n.key||n.shiftKey||(a&&(n.preventDefault(),H(t,e,T),null==(o=Y.domReference.current)||o.focus()),null==r||r(),W())}),[e,T,r,H,W,t,Y.domReference]),ce=(0,u.useCallback)(((n,a)=>{"Tab"===n.key&&n.shiftKey&&(a&&(n.preventDefault(),H(t,e,T,!0)),null==r||r(),W())}),[e,T,r,H,W,t]),ue=(0,u.useCallback)(((n,i)=>{if("Enter"===n.key&&null!=E){if(!ne[E])return;const n=ne[E];i?(G(n),x("")):(t._updateFilter(e,Po({filterInputType:R,item:n,filter:e,setFilterMultiValues:A,onAddCustomValue:re})),Mo({populateInputOnEdit:o,item:n,filterInputType:R,setInputValue:x,filter:e}),Ao(R,D,r,Y.domReference.current,!U&&void 0),C(null),U&&(null==a||a()))}}),[E,ne,G,t,e,R,o,r,Y.domReference,U,a,re]),de=(0,u.useCallback)((e=>{var t;const n=e.label||e.value;A((t=>t.filter((t=>t.value!==e.value)))),O(!0),x(n),null==(t=Y.domReference.current)||t.focus(),setTimeout((()=>{var e;null==(e=Y.domReference.current)||e.select()}))}),[Y.domReference]);(0,u.useEffect)((()=>{f&&oe(R)}),[f,R]),(0,u.useEffect)((()=>{var t,r,a,i;if(!n){if(M&&(null==(t=null==e?void 0:e.values)?void 0:t.length)){const t=e.values.reduce(((t,n,r)=>{var a;return[...t,{label:(null==(a=e.valueLabels)?void 0:a[r])||n,value:n}]}),[]);A(t)}!M&&o&&(x(null!=(a=null==(r=null==e?void 0:e.valueLabels)?void 0:r[0])?a:(null==e?void 0:e.value)||""),setTimeout((()=>{var e;null==(e=Y.domReference.current)||e.select()}))),null==(i=Y.domReference.current)||i.focus()}}),[]),(0,u.useEffect)((()=>{B&&T&&setTimeout((()=>P({})))}),[T,B]),(0,u.useLayoutEffect)((()=>{$.current&&($.current=R)}),[R]),(0,u.useLayoutEffect)((()=>{var e,t;null!==E&&ie.range&&(E>(null==(e=ie.range)?void 0:e.endIndex)||E<(null==(t=ie.range)?void 0:t.startIndex))&&ie.scrollToIndex(E)}),[E,ie]);const pe=null!=(l=null==e?void 0:e.keyLabel)?l:null==e?void 0:e.key;return p().createElement("div",{className:I.comboboxWrapper},e?p().createElement("div",{className:I.pillWrapper},(null==e?void 0:e.key)?p().createElement("div",{className:(0,rt.cx)(I.basePill,I.keyPill)},pe):null,(null==e?void 0:e.key)&&(null==e?void 0:e.operator)&&"operator"!==R?p().createElement("div",{id:V,className:(0,rt.cx)(I.basePill,!e.origin&&I.operatorPill,e.origin&&I.keyPill,V),"aria-label":"Edit filter operator",tabIndex:e.origin?-1:0,onClick:t=>{e.origin?null==r||r():(t.stopPropagation(),x(""),ko("operator",D,void 0,Y.domReference.current))},onKeyDown:t=>{e.origin||(ce(t,M),"Enter"===t.key&&(x(""),ko("operator",D,void 0,Y.domReference.current)))},...!e.origin&&{role:"button"}},e.operator):null,p().createElement("div",{ref:N}),B?T.map(((e,t)=>p().createElement(Vo,{key:`${e.value}-${t}`,item:e,index:t,handleRemoveMultiValue:te,handleEditMultiValuePill:de}))):null):null,p().createElement("input",{...Z({ref:Y.setReference,onChange:function(e){const t=e.target.value;x(t),C(0),_&&O(!1)},value:S,placeholder:No(e,R,B,n),"aria-autocomplete":"list",onKeyDown(e){f?("operator"===R&&ce(e),se(e,B),le(e,B),ue(e,B)):h(!0)}}),className:(0,rt.cx)(I.inputStyle,{[I.loadingInputPadding]:!v}),onClick:e=>{e.stopPropagation(),h(!0)},onFocus:()=>{h(!0)}}),v?p().createElement(qe.Spinner,{className:I.loadingIndicator,inline:!0}):null,p().createElement(ja,null,f&&p().createElement(qa,{context:K,initialFocus:-1,visuallyHiddenDismiss:!0,modal:!1},p().createElement(p().Fragment,null,p().createElement("div",{style:{...X,width:`${y?366:ae}px`,transform:B?`translate(${(null==(c=N.current)?void 0:c.getBoundingClientRect().left)||0}px, ${((null==(d=Y.domReference.current)?void 0:d.getBoundingClientRect().bottom)||0)+10}px )`:X.transform},ref:Y.setFloating,className:I.dropdownWrapper,tabIndex:-1},p().createElement("div",{style:{height:`${ie.getTotalSize()||38}px`},...J(),tabIndex:-1},v?p().createElement(Do,null):y?p().createElement(Oo,{handleFetchOptions:()=>oe(R)}):ne.length||L&&"operator"!==R&&S?ie.getVirtualItems().map((n=>{var a;const i=ne[n.index],s=n.index;if(i.options)return p().createElement("div",{key:`${i.label}+${s}`,className:(0,rt.cx)(I.optionGroupLabel,I.groupTopBorder),style:{height:`${n.size}px`,transform:`translateY(${n.start}px)`}},p().createElement(qe.Text,{weight:"bold",variant:"bodySmall",color:"secondary"},i.label));const l=ne[n.index+1],c=l&&!l.group&&!l.options&&i.group;return p().createElement(Co,{...ee({key:`${i.value}-${s}`,ref(e){j.current[s]=e},onClick(n){var a;"value"!==R&&n.stopPropagation(),B?(n.preventDefault(),n.stopPropagation(),G(i),x(""),null==(a=Y.domReference.current)||a.focus()):(t._updateFilter(e,Po({filterInputType:R,item:i,filter:e,setFilterMultiValues:A,onAddCustomValue:re})),Mo({populateInputOnEdit:o,item:i,filterInputType:R,setInputValue:x,filter:e}),Ao(R,D,r,Y.domReference.current,!1))}}),active:E===s,addGroupBottomBorder:c,style:{height:`${n.size}px`,transform:`translateY(${n.start}px)`},"aria-setsize":ne.length,"aria-posinset":n.index+1,isMultiValueEdit:B,checked:T.some((e=>e.value===i.value))},p().createElement("span",null,i.isCustom?"Use custom value: ":""," ",null!=(a=i.label)?a:i.value),i.description?p().createElement("div",{className:I.descriptionText},i.description):null)})):p().createElement(_o,null))),B&&!v&&!y&&ne.length?p().createElement(Io,{onApply:()=>{H(t,e,T)},floatingElement:Y.floating.current,maxOptionWidth:ae,menuHeight:Math.min(ie.getTotalSize(),300)}):null))))})),$o=e=>({comboboxWrapper:(0,rt.css)({display:"flex",flexWrap:"wrap"}),pillWrapper:(0,rt.css)({display:"flex",alignItems:"center",flexWrap:"wrap"}),basePill:(0,rt.css)({display:"flex",alignItems:"center",background:e.colors.action.disabledBackground,border:`1px solid ${e.colors.border.weak}`,padding:e.spacing(.125,1,.125,1),color:e.colors.text.primary,overflow:"hidden",whiteSpace:"nowrap",minHeight:e.spacing(2.75),...e.typography.bodySmall,cursor:"pointer"}),keyPill:(0,rt.css)({fontWeight:e.typography.fontWeightBold,cursor:"default"}),operatorPill:(0,rt.css)({"&:hover":{background:e.colors.action.hover}}),dropdownWrapper:(0,rt.css)({backgroundColor:e.colors.background.primary,color:e.colors.text.primary,boxShadow:e.shadows.z2,overflowY:"auto",zIndex:e.zIndex.dropdown}),inputStyle:(0,rt.css)({paddingBlock:0,"&:focus":{outline:"none"}}),loadingIndicator:(0,rt.css)({color:e.colors.text.secondary,marginLeft:e.spacing(.5)}),loadingInputPadding:(0,rt.css)({paddingRight:e.spacing(2.5)}),optionGroupLabel:(0,rt.css)({padding:e.spacing(1),position:"absolute",top:0,left:0,width:"100%"}),groupTopBorder:(0,rt.css)({"&:not(:first-child)":{borderTop:`1px solid ${e.colors.border.weak}`}}),descriptionText:(0,rt.css)({...e.typography.bodySmall,color:e.colors.text.secondary,paddingTop:e.spacing(.5)})});function zo({filter:e,model:t,readOnly:n,focusOnWipInputRef:r}){var a,o,i;const s=(0,qe.useStyles2)(Uo),[l,c]=(0,u.useState)(!0),[d,f]=(0,u.useState)(!1),h=(0,u.useRef)(null),[g,m]=(0,u.useState)(!1),v=null!=(a=e.keyLabel)?a:e.key,b=(null==(o=e.valueLabels)?void 0:o.join(", "))||(null==(i=e.values)?void 0:i.join(", "))||e.value,y=(0,u.useCallback)(((e,t)=>{null==e||e.stopPropagation(),n||(f(null!=t?t:!l),c(!l))}),[n,l]);if((0,u.useEffect)((()=>{var e;d&&(null==(e=h.current)||e.focus(),f(!1))}),[d]),(0,u.useEffect)((()=>{e.forceEdit&&l&&(c(!1),t._updateFilter(e,{forceEdit:void 0}))}),[e,t,l]),(0,u.useEffect)((()=>{l&&m((e=>!e&&e))}),[l]),l){const a=p().createElement("span",{className:s.pillText},v," ",e.operator," ",b);return p().createElement("div",{className:(0,rt.cx)(s.combinedFilterPill,n&&s.readOnlyCombinedFilter),onClick:e=>{e.stopPropagation(),m(!0),y()},onKeyDown:e=>{"Enter"===e.key&&(m(!0),y())},role:"button","aria-label":`Edit filter with key ${v}`,tabIndex:0,ref:h},b.length<20?a:p().createElement(qe.Tooltip,{content:p().createElement("div",{className:s.tooltipText},b),placement:"top"},a),n||e.origin?null:p().createElement(qe.IconButton,{onClick:n=>{n.stopPropagation(),t._removeFilter(e),setTimeout((()=>null==r?void 0:r()))},onKeyDownCapture:n=>{"Enter"===n.key&&(n.preventDefault(),n.stopPropagation(),t._removeFilter(e),setTimeout((()=>null==r?void 0:r())))},name:"times",size:"md",className:s.pillIcon,tooltip:`Remove filter with key ${v}`}),e.origin&&!e.originalValue&&p().createElement(qe.IconButton,{name:"info-circle",size:"md",className:s.pillIcon,tooltip:`This is a ${e.origin} injected filter`}),e.origin&&e.originalValue&&p().createElement(qe.IconButton,{onClick:n=>{n.stopPropagation(),t.restoreOriginalFilter(e)},onKeyDownCapture:n=>{"Enter"===n.key&&(n.preventDefault(),n.stopPropagation(),t.restoreOriginalFilter(e))},name:"history",size:"md",className:s.pillIcon,tooltip:"Restore filter to its original value"}))}return p().createElement(Fo,{filter:e,model:t,handleChangeViewMode:y,focusOnWipInputRef:r,populateInputOnEdit:g})}const Uo=e=>({combinedFilterPill:(0,rt.css)({display:"flex",alignItems:"center",background:e.colors.action.selected,borderRadius:e.shape.radius.default,border:`1px solid ${e.colors.border.weak}`,padding:e.spacing(.125,0,.125,1),color:e.colors.text.primary,overflow:"hidden",whiteSpace:"nowrap",minHeight:e.spacing(2.75),...e.typography.bodySmall,fontWeight:e.typography.fontWeightBold,cursor:"pointer","&:hover":{background:e.colors.action.hover}}),readOnlyCombinedFilter:(0,rt.css)({paddingRight:e.spacing(1),cursor:"text","&:hover":{background:e.colors.action.selected}}),pillIcon:(0,rt.css)({marginInline:e.spacing(.5),cursor:"pointer","&:hover":{color:e.colors.text.primary}}),pillText:(0,rt.css)({maxWidth:"200px",width:"100%",textOverflow:"ellipsis",overflow:"hidden"}),tooltipText:(0,rt.css)({textAlign:"center"})}),Wo=(0,u.forwardRef)((function({model:e},t){const{_wip:n}=e.useState();return(0,u.useLayoutEffect)((()=>{n||e._addWip()}),[n]),p().createElement(Fo,{model:e,filter:n,isAlwaysWip:!0,ref:t})})),Ho=(0,u.memo)((function({model:e}){const{baseFilters:t,filters:n,readOnly:r}=e.useState(),a=(0,qe.useStyles2)(Go),o=(0,u.useRef)();return p().createElement("div",{className:(0,rt.cx)(a.comboboxWrapper,{[a.comboboxFocusOutline]:!r}),onClick:()=>{var e;null==(e=o.current)||e.call(o)}},p().createElement(qe.Icon,{name:"filter",className:a.filterIcon,size:"lg"}),null==t?void 0:t.map(((t,n)=>t.origin?p().createElement(zo,{key:`${n}-${t.key}`,filter:t,model:e,focusOnWipInputRef:o.current}):null)),n.map(((t,n)=>p().createElement(zo,{key:`${n}-${t.key}`,filter:t,model:e,readOnly:r||t.readOnly,focusOnWipInputRef:o.current}))),r?null:p().createElement(Wo,{model:e,ref:o}))})),Go=e=>({comboboxWrapper:(0,rt.css)({display:"flex",flexWrap:"wrap",alignItems:"center",columnGap:e.spacing(1),rowGap:e.spacing(.5),minHeight:e.spacing(4),backgroundColor:e.components.input.background,border:`1px solid ${e.colors.border.strong}`,borderRadius:e.shape.radius.default,paddingInline:e.spacing(1),paddingBlock:e.spacing(.5),flexGrow:1}),comboboxFocusOutline:(0,rt.css)({"&:focus-within":{outline:"2px dotted transparent",outlineOffset:"2px",boxShadow:`0 0 0 2px ${e.colors.background.canvas}, 0 0 0px 4px ${e.colors.primary.main}`,transitionTimingFunction:"cubic-bezier(0.19, 1, 0.22, 1)",transitionDuration:"0.2s",transitionProperty:"outline, outline-offset, box-shadow",zIndex:2}}),filterIcon:(0,rt.css)({color:e.colors.text.secondary,alignSelf:"center"})}),qo=Object.fromEntries(Object.entries(o.scopeFilterOperatorMap).map((([e,t])=>[t,e])));function Qo(e){return new Set(["equals","not-equals","one-of","not-one-of"]).has(e)}function Yo(e,t,n){var r,a;const i=e.get(n.key);i&&function(e,t){const n=o.scopeFilterOperatorMap[e];if(!Qo(n)||!Qo(t))return!1;if(n.includes("not")&&!t.includes("not")||!n.includes("not")&&t.includes("not"))return!1;return!0}(i.operator,n.operator)?function(e,t){var n,r,a,o;const i=null!=(n=t.values)?n:[t.value];for(const t of i)(null==(r=e.values)?void 0:r.includes(t))||null==(a=e.values)||a.push(t);if(1===(null==(o=e.values)?void 0:o.length))return;"equals"===t.operator&&e.operator===qo.equals?e.operator=qo["one-of"]:"not-equals"===t.operator&&e.operator===qo["not-equals"]&&(e.operator=qo["not-one-of"])}(i,n):i?t.push({key:n.key,operator:qo[n.operator],value:n.value,values:null!=(a=n.values)?a:[n.value],origin:Xo.Scopes}):e.set(n.key,{key:n.key,operator:qo[n.operator],value:n.value,values:null!=(r=n.values)?r:[n.value],origin:Xo.Scopes})}var Xo=(e=>(e.Scopes="scopes",e.Dashboards="dashboards",e))(Xo||{});const Ko=[{value:"=",description:"Equals"},{value:"!=",description:"Not equal"},{value:"=|",description:"One of. Use to filter on multiple values.",isMulti:!0},{value:"!=|",description:"Not one of. Use to exclude multiple values.",isMulti:!0},{value:"=~",description:"Matches regex",isRegex:!0},{value:"!~",description:"Does not match regex",isRegex:!0},{value:"<",description:"Less than"},{value:">",description:"Greater than"}];class Zo extends I{constructor(e){var t,n,r,a,o;super({type:"adhoc",name:null!=(t=e.name)?t:"Filters",filters:[],datasource:null,applyMode:"auto",filterExpression:null!=(o=e.filterExpression)?o:Jo(e.expressionBuilder,[...null!=(r=null==(n=e.baseFilters)?void 0:n.filter((e=>e.origin)))?r:[],...null!=(a=e.filters)?a:[]]),...e}),this._scopedVars={__sceneObject:It(this)},this._dataSourceSrv=(0,i.getDataSourceSrv)(),this._urlSync=new zt(this),this._activationHandler=()=>{var e,t;this._scopesBridge=Xi.getScopesBridge(this);const n=null==(e=this._scopesBridge)?void 0:e.getValue();n&&this._updateScopesFilters(n);const r=null==(t=this._scopesBridge)?void 0:t.subscribeToValue(((e,t)=>{var n;this._updateScopesFilters(e,null==(n=this._scopesBridge)?void 0:n.isLoading())}));return()=>{null==r||r.unsubscribe()}},this._updateScopesFilters=(e,t)=>{var n,r;if(!e.length)return void this.setState({baseFilters:null==(n=this.state.baseFilters)?void 0:n.filter((e=>"scopes"!==e.origin))});const a=function(e){const t=new Map,n=[],r=e.flatMap((e=>e.spec.filters));for(const e of r)Yo(t,n,e);return[...t.values(),...n]}(e);let o=a;const i=[],s=[];if(null==(r=this.state.baseFilters)||r.forEach((e=>{"scopes"===e.origin?i.push(e):s.push(e)})),!a.length)return;const l=i.filter((e=>{var t;return null==(t=e.originalValue)?void 0:t.length})),c=l.map((e=>e.key)),u=a.map((e=>e.key));o=[...l.filter((e=>u.includes(e.key))),...a.filter((e=>!c.includes(e.key)))],this.setState({baseFilters:[...s,...o]})},"auto"===this.state.applyMode&&function(e){if(e.addActivationHandler((()=>(He.add(e),()=>He.delete(e)))),We)return;const t=(0,i.getTemplateSrv)();(null==t?void 0:t.getAdhocFilters)&&(We=t.getAdhocFilters,t.getAdhocFilters=function(e){var n;if(0===He.size)return We.call(t,e);const r=(0,i.getDataSourceSrv)().getInstanceSettings(e);if(!r)return[];for(const e of He.values())if((null==(n=e.state.datasource)?void 0:n.uid)===r.uid)return e.state.filters;return[]}.bind(t))}(this),this.addActivationHandler(this._activationHandler)}setState(e){var t,n,r;let a=!1;if((e.filters&&e.filters!==this.state.filters||e.baseFilters&&e.baseFilters!==this.state.baseFilters)&&!e.filterExpression){const o=null!=(t=e.filters)?t:this.state.filters,i=null!=(n=e.baseFilters)?n:this.state.baseFilters;e.filterExpression=Jo(this.state.expressionBuilder,[...null!=(r=null==i?void 0:i.filter((e=>e.origin)))?r:[],...null!=o?o:[]]),a=e.filterExpression!==this.state.filterExpression}super.setState(e),a&&this.publishEvent(new te(this),!0)}updateFilters(e,t){var n,r;let a,o=!1;e&&e!==this.state.filters&&(a=Jo(this.state.expressionBuilder,[...null!=(r=null==(n=this.state.baseFilters)?void 0:n.filter((e=>e.origin)))?r:[],...e]),o=a!==this.state.filterExpression),super.setState({filters:e,filterExpression:a}),(o&&!0!==(null==t?void 0:t.skipPublish)||(null==t?void 0:t.forcePublish))&&this.publishEvent(new te(this),!0)}restoreOriginalFilter(e){var t;const n={originalValue:void 0};(null==(t=e.originalValue)?void 0:t.length)&&(n.value=e.originalValue[0],n.values=e.originalValue,n.valueLabels=e.originalValue),this._updateFilter(e,n)}getValue(){return this.state.filterExpression}_updateFilter(e,t){var n;const{baseFilters:r,filters:a,_wip:o}=this.state;if(e.origin){const a=e.values?e.values:[e.value],o=t.values||(t.value?[t.value]:void 0),i=t.hasOwnProperty("originalValue");i||!o||e.originalValue||(0,k.isEqual)(a,o)||(t.originalValue=a),!i&&(0,k.isEqual)(o,e.originalValue)&&(t.originalValue=void 0);const s=null!=(n=null==r?void 0:r.map((n=>n===e?{...n,...t}:n)))?n:[];return void this.setState({baseFilters:s})}if(e===o)return void("value"in t&&""!==t.value?this.setState({filters:[...a,{...o,...t}],_wip:void 0}):this.setState({_wip:{...e,...t}}));const i=this.state.filters.map((n=>n===e?{...n,...t}:n));this.setState({filters:i})}_removeFilter(e){e!==this.state._wip?this.setState({filters:this.state.filters.filter((t=>t!==e))}):this.setState({_wip:void 0})}_removeLastFilter(){const e=this.state.filters.at(-1);e&&this._removeFilter(e)}_handleComboboxBackspace(e){var t;if(this.state.filters.length){let t=this.state.filters.length-1;e!==this.state._wip&&(t=-1),this.setState({filters:this.state.filters.reduce(((n,r,a)=>a===t?[...n,{...r,forceEdit:!0}]:r===e?n:[...n,r]),[])})}else if(null==(t=this.state.baseFilters)?void 0:t.length){let t=this.state.baseFilters.length-1;e!==this.state._wip&&(t=-1),this.setState({baseFilters:this.state.baseFilters.reduce(((n,r,a)=>a===t?[...n,{...r,forceEdit:!0}]:r===e?n:[...n,r]),[])})}}async _getKeys(e){var t,n,r,a;const o=await(null==(n=(t=this.state).getTagKeysProvider)?void 0:n.call(t,this,e));if(o&&o.replace)return xi(o.values).map(ti);if(this.state.defaultKeys)return this.state.defaultKeys.map(ti);const i=await this._dataSourceSrv.get(this.state.datasource,this._scopedVars);if(!i||!i.getTagKeys)return[];const s=this.state.filters.filter((t=>t.key!==e)).concat(null!=(r=this.state.baseFilters)?r:[]),l=Xi.getTimeRange(this).state.value,c=this.state.useQueriesAsFilterForOptions?mi(this):void 0,u=await i.getTagKeys({filters:s,queries:c,timeRange:l,scopes:null==(a=this._scopesBridge)?void 0:a.getValue(),...Ct(this)});Ei(u)&&this.setState({error:u.error.message});let d=xi(u);o&&(d=d.concat(xi(o.values)));const p=this.state.tagKeyRegexFilter;return p&&(d=d.filter((e=>e.text.match(p)))),d.map(ti)}async _getValuesFor(e){var t,n,r,a,o;const i=await(null==(n=(t=this.state).getTagValuesProvider)?void 0:n.call(t,this,e));if(i&&i.replace)return xi(i.values).map(ti);const s=await this._dataSourceSrv.get(this.state.datasource,this._scopedVars);if(!s||!s.getTagValues)return[];const l=null!=(a=null==(r=this.state.baseFilters)?void 0:r.filter((t=>t.origin&&t.key!==e.key)))?a:[],c=this.state.filters.filter((t=>t.key!==e.key)).concat(l),u=Xi.getTimeRange(this).state.value,d=this.state.useQueriesAsFilterForOptions?mi(this):void 0;let p=null==(o=this._scopesBridge)?void 0:o.getValue();"scopes"===e.origin&&(p=null==p?void 0:p.map((t=>({...t,spec:{...t.spec,filters:t.spec.filters.filter((t=>t.key!==e.key))}}))));const f=await s.getTagValues({key:e.key,filters:c,timeRange:u,queries:d,scopes:p,...Ct(this)});Ei(f)&&this.setState({error:f.error.message});let h=xi(f);return i&&(h=h.concat(xi(i.values))),h.map(ti)}_addWip(){this.setState({_wip:{key:"",value:"",operator:"=",condition:""}})}_getOperators(){const{supportsMultiValueOperators:e,allowCustomValue:t=!0}=this.state;return Ko.filter((({isMulti:n,isRegex:r})=>!(!e&&n)&&!(!t&&r))).map((({value:e,description:t})=>({label:e,value:e,description:t})))}}function Jo(e,t){return(null!=e?e:pi)(null!=t?t:[])}Zo.Component=function({model:e}){const{filters:t,readOnly:n,addFilterButtonText:r}=e.useState(),a=(0,qe.useStyles2)(ei);if("combobox"===e.state.layout)return p().createElement(Ho,{model:e});return p().createElement("div",{className:a.wrapper},t.filter((e=>!e.hidden)).map(((t,n)=>p().createElement(p().Fragment,{key:n},p().createElement(jt,{filter:t,model:e})))),!n&&p().createElement($t,{model:e,key:"'builder",addFilterButtonText:r}))};const ei=e=>({wrapper:(0,rt.css)({display:"flex",flexWrap:"wrap",alignItems:"flex-end",columnGap:e.spacing(2),rowGap:e.spacing(1)})});function ti(e){const{text:t,value:n}=e,r={label:String(t),value:String(null!=n?n:t)};return"group"in e&&(r.group=e.group),"meta"in e&&(r.meta=e.meta),r}function ni(e){return""!==e.key&&""!==e.operator&&""!==e.value}function ri(e){const t=Ko.find((t=>t.value===e));return!!t&&Boolean(t.isMulti)}class ai{constructor(){this._resultsMap=new Map,this._prevLayers=[]}getMergedStream(e){(function(e,t){if(e.length!==t.length)return!0;for(let n=0;ne.getResultsStream())),n=[];for(const t of e)n.push(t.activate());return(0,f.merge)(t).pipe((0,f.mergeAll)(),(0,f.filter)((e=>this._resultsMap.get(e.origin.state.key)!==e)),(0,f.map)((e=>(this._resultsMap.set(e.origin.state.key,e),this._resultsMap.values()))),(0,f.finalize)((()=>{n.forEach((e=>e()))})))}}let oi=100;function ii(){return"SQR"+oi++}class si extends I{constructor(e){super(e),this._dataLayersMerger=new ai,this._variableValueRecorder=new je,this._results=new f.ReplaySubject(1),this._scopedVars={__sceneObject:It(this)},this._variableDependency=new Di(this,{statePaths:["queries","datasource","minInterval"],onVariableUpdateCompleted:this.onVariableUpdatesCompleted.bind(this),onAnyVariableChanged:this.onAnyVariableChanged.bind(this)}),this.onDataReceived=e=>{const t=(0,o.preProcessPanelData)(e,this.state.data);this._resultAnnotations=e.annotations;const n=this._combineDataLayers(t);let r=this.state._hasFetchedData;r||t.state===$.Loading||(r=!0),this.setState({data:n,_hasFetchedData:r}),this._results.next({origin:this,data:n})},this.addActivationHandler((()=>this._onActivate()))}getResultsStream(){return this._results}_onActivate(){if(this.isQueryModeAuto()){const e=Xi.getTimeRange(this),t=Xi.getScopesBridge(this),n=this.getClosestExtraQueryProviders();for(const e of n)this._subs.add(e.subscribeToState(((t,n)=>{e.shouldRerun(n,t,this.state.queries)&&this.runQueries()})));this.subscribeToScopesChanges(t),this.subscribeToTimeRangeChanges(e),this.shouldRunQueriesOnActivate()&&this.runQueries()}return this._dataLayersSub||this._handleDataLayers(),()=>this._onDeactivate()}_handleDataLayers(){const e=Xi.getDataLayers(this);0!==e.length&&(this._dataLayersSub=this._dataLayersMerger.getMergedStream(e).subscribe(this._onLayersReceived.bind(this)))}_onLayersReceived(e){var t,n,r,a,i;const s=Xi.getTimeRange(this),{dataLayerFilter:l}=this.state;let c,u=[],d=[];for(const r of e)for(let e of r.data.series)(null==(t=e.meta)?void 0:t.dataTopic)===o.DataTopic.Annotations&&(u=u.concat(e)),(null==(n=e.meta)?void 0:n.dataTopic)===o.DataTopic.AlertStates&&(d=d.concat(e));if((null==l?void 0:l.panelId)&&(u.length>0&&(u=function(e,t){var n;if(!Array.isArray(e)||0===e.length)return e;const r=Array.from({length:e.length},(()=>new Set));let a=0;for(const o of e){for(let e=0;e"panelId"===e.name)),l=o.fields.find((e=>"source"===e.name));if(l){s&&"dashboard"===l.values[e].type&&(i=[t.panelId,ze].includes(s.values[e]));const r=l.values[e].filter;if(r){const e=[...null!=(n=r.ids)?n:[],ze].includes(t.panelId);r.exclude?e&&(i=!1):e||(i=!1)}}i&&r[a].add(e)}a++}const o=[];a=0;for(const t of e){const e=r[a].size,n=[];for(const e of t.fields){const o=[];for(let n=0;n0))for(const e of d){const t=new o.DataFrameView(e);for(const e of t)if(e.panelId===l.panelId){c=e;break}}if(ci(u)&&ci(this._layerAnnotations)&&(0,k.isEqual)(c,null==(r=this.state.data)?void 0:r.alertState))return;this._layerAnnotations=u;const p=this.state.data?this.state.data:{...U,timeRange:s.state.value};this.setState({data:{...p,annotations:[...null!=(a=this._resultAnnotations)?a:[],...u],alertState:null!=c?c:null==(i=this.state.data)?void 0:i.alertState}})}onVariableUpdatesCompleted(){this.isQueryModeAuto()&&this.runQueries()}onAnyVariableChanged(e){this._adhocFiltersVar!==e&&this._groupByVar!==e&&this.isQueryModeAuto()&&(e instanceof Zo&&this._isRelevantAutoVariable(e)&&this.runQueries(),e instanceof Tt&&this._isRelevantAutoVariable(e)&&this.runQueries())}_isRelevantAutoVariable(e){var t,n;const r=null!=(t=this.state.datasource)?t:li(this.state.queries);return"auto"===e.state.applyMode&&(null==r?void 0:r.uid)===(null==(n=e.state.datasource)?void 0:n.uid)}shouldRunQueriesOnActivate(){return this._variableValueRecorder.hasDependenciesChanged(this)?(V(),!0):!this.state.data||!!this._isDataTimeRangeStale(this.state.data)}_isDataTimeRangeStale(e){const t=Xi.getTimeRange(this).state.value,n=e.timeRange;return(t.from.unix()!==n.from.unix()||t.to.unix()!==n.to.unix())&&(V(),!0)}_onDeactivate(){var e;this._querySub&&(this._querySub.unsubscribe(),this._querySub=void 0),this._dataLayersSub&&(this._dataLayersSub.unsubscribe(),this._dataLayersSub=void 0),null==(e=this._timeSub)||e.unsubscribe(),this._timeSub=void 0,this._timeSubRange=void 0,this._adhocFiltersVar=void 0,this._groupByVar=void 0,this._variableValueRecorder.recordCurrentDependencyValuesForSceneObject(this)}setContainerWidth(e){!this._containerWidth&&e>0?(this._containerWidth=e,this.state.maxDataPointsFromWidth&&!this.state.maxDataPoints&&setTimeout((()=>{this.isActive&&!this.state._hasFetchedData&&this.runQueries()}),0)):e>0&&(this._containerWidth=e)}isDataReadyToDisplay(){return Boolean(this.state._hasFetchedData)}subscribeToScopesChanges(e){e&&this._scopesSubBridge!==e&&(this._scopesSub&&this._scopesSub.unsubscribe(),this._scopesSubBridge=e,this._scopesSub=e.subscribeToValue((()=>{this.runWithTimeRangeAndScopes(Xi.getTimeRange(this),e)})))}subscribeToTimeRangeChanges(e){this._timeSubRange!==e&&(this._timeSub&&this._timeSub.unsubscribe(),this._timeSubRange=e,this._timeSub=e.subscribeToState((()=>{this.runWithTimeRangeAndScopes(e,Xi.getScopesBridge(this))})))}runQueries(){const e=Xi.getTimeRange(this),t=Xi.getScopesBridge(this);this.isQueryModeAuto()&&(this.subscribeToTimeRangeChanges(e),this.subscribeToScopesChanges(t)),this.runWithTimeRangeAndScopes(e,t)}getMaxDataPoints(){var e;return this.state.maxDataPoints?this.state.maxDataPoints:this.state.maxDataPointsFromWidth&&null!=(e=this._containerWidth)?e:500}cancelQuery(){var e;null==(e=this._querySub)||e.unsubscribe(),this._dataLayersSub&&(this._dataLayersSub.unsubscribe(),this._dataLayersSub=void 0),this.setState({data:{...this.state.data,state:$.Done}})}async runWithTimeRangeAndScopes(e,t){var n,r,a,o;if(!this.state.maxDataPoints&&this.state.maxDataPointsFromWidth&&!this._containerWidth)return;if(this._dataLayersSub||this._handleDataLayers(),null==(n=this._querySub)||n.unsubscribe(),this._variableDependency.hasDependencyInLoadingState())return V(),void this.setState({data:{...null!=(r=this.state.data)?r:U,state:$.Loading}});if((null==t?void 0:t.isLoading())&&(null==t?void 0:t.getValue().length))return V(),void this.setState({data:{...null!=(a=this.state.data)?a:U,state:$.Loading}});const{queries:s}=this.state;if(null==s?void 0:s.length)try{const n=null!=(o=this.state.datasource)?o:li(s),r=await Ve(n,this._scopedVars);this.findAndSubscribeToAdHocFilters(r.uid);const a=(0,i.getRunRequest)(),{primary:l,secondaries:c,processors:u}=this.prepareRequests(e,r,t);V(0,0,this.state.key);let d=a(r,l);if(c.length>0){const e=c.map((e=>a(r,e))),t=(e=>t=>t.pipe((0,f.mergeMap)((([t,...n])=>{const r=n.flatMap((n=>{var r,a;return null!=(a=null==(r=e.get(n.request.requestId))?void 0:r(t,n))?a:(0,f.of)(n)}));return(0,f.forkJoin)([(0,f.of)(t),...r])})),(0,f.map)((([e,...t])=>{var n;return{...e,series:[...e.series,...t.flatMap((e=>e.series))],annotations:[...null!=(n=e.annotations)?n:[],...t.flatMap((e=>{var t;return null!=(t=e.annotations)?t:[]}))]}}))))(u);d=(0,f.forkJoin)([d,...e]).pipe(t)}d=d.pipe(Me({type:"data",request:l,origin:this,cancel:()=>this.cancelQuery()})),this._querySub=d.subscribe(this.onDataReceived)}catch(e){console.error("PanelQueryRunner Error",e),this.onDataReceived({...U,...this.state.data,state:$.Error,errors:[(0,i.toDataQueryError)(e)]})}else this._setNoDataState()}clone(e){var t;const n=super.clone(e);return this._resultAnnotations&&(n._resultAnnotations=this._resultAnnotations.map((e=>({...e})))),this._layerAnnotations&&(n._layerAnnotations=this._layerAnnotations.map((e=>({...e})))),n._variableValueRecorder=this._variableValueRecorder.cloneAndRecordCurrentValuesForSceneObject(this),n._containerWidth=this._containerWidth,n._results.next({origin:this,data:null!=(t=this.state.data)?t:U}),n}prepareRequests(e,t,n){var r,a;const{minInterval:s,queries:l}=this.state;let c={app:"scenes",requestId:ii(),timezone:e.getTimeZone(),range:e.state.value,interval:"1s",intervalMs:1e3,targets:(0,k.cloneDeep)(l),maxDataPoints:this.getMaxDataPoints(),scopedVars:this._scopedVars,startTime:Date.now(),liveStreaming:this.state.liveStreaming,rangeRaw:{from:e.state.from,to:e.state.to},cacheTimeout:this.state.cacheTimeout,queryCachingTTL:this.state.queryCachingTTL,scopes:null==n?void 0:n.getValue(),...Ue(this)};if(this._adhocFiltersVar){if(c.filters=[],null==(r=this._adhocFiltersVar.state.baseFilters)?void 0:r.length){const e=this._adhocFiltersVar.state.baseFilters.filter((e=>e.origin));c.filters=c.filters.concat(e)}c.filters=c.filters.concat(this._adhocFiltersVar.state.filters.filter(ni))}this._groupByVar&&(c.groupByKeys=this._groupByVar.state.value),c.targets=c.targets.map((e=>{var n;return e.datasource&&(e.datasource.uid===t.uid||(null==(n=t.meta)?void 0:n.mixed)||!i.isExpressionReference||(0,i.isExpressionReference)(e.datasource))||(e.datasource=t.getRef()),e}));const u=s?Gi(this,s):t.interval,d=o.rangeUtil.calculateInterval(e.state.value,c.maxDataPoints,u);c.scopedVars=Object.assign({},c.scopedVars,{__interval:{text:d.interval,value:d.interval},__interval_ms:{text:d.intervalMs.toString(),value:d.intervalMs}}),c.interval=d.interval,c.intervalMs=d.intervalMs;const p=e.state.value;let f=[],h=new Map;for(const e of null!=(a=this.getClosestExtraQueryProviders())?a:[])for(const{req:t,processor:n}of e.getExtraQueries(c)){const e=ii();f.push({...t,requestId:e}),h.set(e,null!=n?n:$e)}return c.range=p,{primary:c,secondaries:f,processors:h}}_combineDataLayers(e){return this._layerAnnotations&&this._layerAnnotations.length>0&&(e.annotations=(e.annotations||[]).concat(this._layerAnnotations)),this.state.data&&this.state.data.alertState&&(e.alertState=this.state.data.alertState),e}_setNoDataState(){this.state.data!==U&&this.setState({data:U})}getClosestExtraQueryProviders(){const e=new Map;return this.parent?(L(this.parent,(t=>(Fe(t)&&!e.has(t.constructor)&&e.set(t.constructor,t),t.forEachChild((t=>{Fe(t)&&!e.has(t.constructor)&&e.set(t.constructor,t)})),null))),Array.from(e.values())):[]}findAndSubscribeToAdHocFilters(e){const t=function(e){var t;for(const n of He.values())if(Gi(n,null==(t=n.state.datasource)?void 0:t.uid)===e)return n}(e);this._adhocFiltersVar!==t&&(this._adhocFiltersVar=t,this._updateExplicitVariableDependencies());const n=function(e){var t;for(const n of Ge.values())if(Gi(n,null==(t=n.state.datasource)?void 0:t.uid)===e)return n}(e);this._groupByVar!==n&&(this._groupByVar=n,this._updateExplicitVariableDependencies())}_updateExplicitVariableDependencies(){const e=[];this._adhocFiltersVar&&e.push(this._adhocFiltersVar.state.name),this._groupByVar&&e.push(this._groupByVar.state.name),this._variableDependency.setVariableNames(e)}isQueryModeAuto(){var e;return"auto"===(null!=(e=this.state.runQueriesMode)?e:"auto")}}function li(e){var t,n;return null!=(n=null==(t=e.find((e=>null!==e.datasource)))?void 0:t.datasource)?n:void 0}function ci(e){if(!e)return!0;for(let t=0;t0)return!1;return!0}function ui(e,t){return e===t||(0,k.isEqual)(e,t)}function di(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,n)=>{if("object"==typeof n&&null!==n){if(e.has(n))return;e.add(n)}return n}})())}catch(e){console.error(e)}return""}function pi(e){return e.map((e=>function(e){var t,n;let r="",a=e.operator;"=|"===a?(a="=~",r=null==(t=e.values)?void 0:t.map(hi).join("|")):"!=|"===a?(a="!~",r=null==(n=e.values)?void 0:n.map(hi).join("|")):r="=~"===a||"!~"===a?hi(e.value):fi(e.value);return`${e.key}${a}"${r}"`}(e))).join(",")}function fi(e){return e.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/"/g,'\\"')}function hi(e){return fi(e.replace(gi,"\\$&"))}const gi=/[*+?()|\\.\[\]{}^$]/g;function mi(e){var t;const n=Xi.findAllObjects(e.getRoot(),(e=>e instanceof si)),r=Xi.interpolate(e,null==(t=e.state.datasource)?void 0:t.uid),a=function(e){const t={};for(const n of e)n.state.key&&(n.state.key in t||(t[n.state.key]=[]),t[n.state.key].push(n));return Object.values(t).flatMap((e=>{const t=e.filter((e=>e.isActive));return 0===t.length&&1===e.length?e:t}))}(n).filter((t=>{var n;return Xi.interpolate(e,null==(n=t.state.datasource)?void 0:n.uid)===r}));if(0===a.length)return[];const o=[];return a.forEach((t=>{o.push(...t.state.queries.filter((t=>{if(!t.datasource||!t.datasource.uid)return!0;return Xi.interpolate(e,t.datasource.uid)===r})))})),o}function vi(e){return null==e?"":/\|/g[Symbol.replace](e,"__gfp__")}function bi(e){return null==e?"":/,/g[Symbol.replace](e,"__gfc__")}function yi(e){return function(e){return null==e?"":/#/g[Symbol.replace](e,"__gfh__")}(vi(e))}function wi(e){return null==e?"":(e=/__gfp__/g[Symbol.replace](e,"|"),e=/__gfc__/g[Symbol.replace](e,","),e=/__gfh__/g[Symbol.replace](e,"#"))}function Si(e,t){return t&&e!==t?[e,t].map(bi).join(","):bi(e)}function xi(e){return Array.isArray(e)?e:e.data}function Ei(e){return!Array.isArray(e)&&Boolean(e.error)}function Ci(e){const t=[],n=new Map;for(const r of e){const e=r.group;if(e){let a=n.get(e);a||(a=[],n.set(e,a),t.push({label:e,options:a})),a.push(r)}else t.push(r)}return t}class Ri extends I{constructor(e){super({type:"constant",value:"",name:"",...e,skipUrlSync:!0}),this._variableDependency=new Di(this,{statePaths:["value"]}),this._prevValue=""}validateAndUpdate(){const e=this.getValue();return this._prevValue!==e&&(this._prevValue=e,this.publishEvent(new te(this),!0)),(0,f.of)({})}getValue(){return"string"==typeof this.state.value?Xi.interpolate(this,this.state.value):this.state.value}}class Di{constructor(e,t){this._sceneObject=e,this._options=t,this._dependencies=new Set,this._isWaitingForVariables=!1,this.scanCount=0,this._statePaths=t.statePaths,this._options.handleTimeMacros&&this.handleTimeMacros()}hasDependencyOn(e){return this.getNames().has(e)}variableUpdateCompleted(e,t){const n=this.getNames();let r=!1;(n.has(e.state.name)||n.has(o.DataLinkBuiltInVars.includeVars))&&t&&(r=!0),V(0,0,e.state.name,this._isWaitingForVariables),this._options.onAnyVariableChanged&&this._options.onAnyVariableChanged(e),this._options.onVariableUpdateCompleted&&(this._isWaitingForVariables||r)&&this._options.onVariableUpdateCompleted(),r&&(this._options.onReferencedVariableValueChanged&&this._options.onReferencedVariableValueChanged(e),this._options.onReferencedVariableValueChanged||this._options.onVariableUpdateCompleted||this._sceneObject.forceRender())}hasDependencyInLoadingState(){return Xi.hasVariableDependencyInLoadingState(this._sceneObject)?(this._isWaitingForVariables=!0,!0):(this._isWaitingForVariables=!1,!1)}getNames(){const e=this._state,t=this._state=this._sceneObject.state;if(!e)return this.scanStateForDependencies(this._state),this._dependencies;if(t!==e)if(this._statePaths){for(const n of this._statePaths)if("*"===n||t[n]!==e[n]){this.scanStateForDependencies(t);break}}else this.scanStateForDependencies(t);return this._dependencies}setVariableNames(e){this._options.variableNames=e,this.scanStateForDependencies(this._state)}setPaths(e){this._statePaths=e}scanStateForDependencies(e){if(this._dependencies.clear(),this.scanCount+=1,this._options.variableNames)for(const e of this._options.variableNames)this._dependencies.add(e);if(this._statePaths)for(const t of this._statePaths){if("*"===t){this.extractVariablesFrom(e);break}{const n=e[t];n&&this.extractVariablesFrom(n)}}}extractVariablesFrom(e){be.lastIndex=0;const t=("string"!=typeof e?di(e):e).matchAll(be);if(t)for(const e of t){const[,t,n,,r]=e,a=t||n||r;this._dependencies.add(a)}}handleTimeMacros(){this._sceneObject.addActivationHandler((()=>{const e=Xi.getTimeRange(this._sceneObject).subscribeToState(((e,t)=>{const n=this.getNames(),r=n.has("__from"),a=n.has("__to"),o=n.has("__timezone");if(e.value!==t.value)if(r){const t=new Ri({name:"__from",value:e.from});this.variableUpdateCompleted(t,!0)}else if(a){const t=new Ri({name:"__to",value:e.to});this.variableUpdateCompleted(t,!0)}if(e.timeZone!==t.timeZone&&o){const t=new Ri({name:"__timezone",value:e.timeZone});this.variableUpdateCompleted(t,!0)}}));return()=>e.unsubscribe()}))}}const _i=e=>Boolean(e.metricFindQuery)&&!Boolean(e.variables),Oi=e=>{if(!e.variables)return!1;if(e.variables.getType()!==o.VariableSupportType.Standard)return!1;const t=e.variables;return"toDataQuery"in t&&Boolean(t.toDataQuery)},Ii=e=>{if(!e.variables)return!1;if(e.variables.getType()!==o.VariableSupportType.Custom)return!1;const t=e.variables;return"query"in t&&"editor"in t&&Boolean(t.query)&&Boolean(t.editor)},Ti=e=>!!e.variables&&e.variables.getType()===o.VariableSupportType.Datasource;class Ai{constructor(e,t=(0,i.getRunRequest)()){this.datasource=e,this._runRequest=t}getTarget(e){if(Oi(this.datasource))return this.datasource.variables.toDataQuery(function(e){var t;const n=null!=(t=e.state.query)?t:"";if("string"==typeof n)return{query:n,refId:`variable-${e.state.name}`};if(null==n.refId)return{...n,refId:`variable-${e.state.name}`};return e.state.query}(e));throw new Error("Couldn't create a target with supplied arguments.")}runRequest(e,t){return Oi(this.datasource)?this.datasource.variables.query?this._runRequest(this.datasource,t,this.datasource.variables.query.bind(this.datasource.variables)):this._runRequest(this.datasource,t):Ni()}}class ki{constructor(e){this.datasource=e}getTarget(e){if(_i(this.datasource))return e.state.query;throw new Error("Couldn't create a target with supplied arguments.")}runRequest({variable:e,searchFilter:t},n){return _i(this.datasource)?(0,f.from)(this.datasource.metricFindQuery(e.state.query,{...n,variable:{name:e.state.name,type:e.state.type},searchFilter:t})).pipe((0,f.mergeMap)((e=>{if(!e||!e.length)return Ni();const t=e;return(0,f.of)({series:t,state:o.LoadingState.Done,timeRange:n.range})}))):Ni()}}class Pi{constructor(e,t=(0,i.getRunRequest)()){this.datasource=e,this._runRequest=t}getTarget(e){if(Ii(this.datasource))return e.state.query;throw new Error("Couldn't create a target with supplied arguments.")}runRequest(e,t){return Ii(this.datasource)?this.datasource.variables.query?this._runRequest(this.datasource,t,this.datasource.variables.query.bind(this.datasource.variables)):this._runRequest(this.datasource,t):Ni()}}class Li{constructor(e,t=(0,i.getRunRequest)()){this.datasource=e,this._runRequest=t}getTarget(e){var t;if(Ti(this.datasource))return"string"==typeof e.state.query?e.state.query:{...e.state.query,refId:null!=(t=e.state.query.refId)?t:"variable-query"};throw new Error("Couldn't create a target with supplied arguments.")}runRequest(e,t){return Ti(this.datasource)?this._runRequest(this.datasource,t):Ni()}}function Ni(){return(0,f.of)({state:o.LoadingState.Done,series:[],timeRange:(0,o.getDefaultTimeRange)()})}let Mi=function(e){if(Oi(e))return new Ai(e,(0,i.getRunRequest)());if(_i(e))return new ki(e);if(Ii(e))return new Pi(e);if(Ti(e))return new Li(e);throw new Error(`Couldn't create a query runner for datasource ${e.type}`)};const Bi=(e,t)=>{const n=[];let r=null;t.lastIndex=0;do{r=t.exec(e),r&&n.push(r)}while(t.global&&r&&""!==r[0]&&void 0!==r[0]);return n},Vi=(e,t)=>{if(t===o.VariableSort.disabled)return e;switch(t){case o.VariableSort.alphabeticalAsc:e=(0,k.sortBy)(e,"label");break;case o.VariableSort.alphabeticalDesc:e=(0,k.sortBy)(e,"label").reverse();break;case o.VariableSort.numericalAsc:e=(0,k.sortBy)(e,ji);break;case o.VariableSort.numericalDesc:e=(e=(0,k.sortBy)(e,ji)).reverse();break;case o.VariableSort.alphabeticalCaseInsensitiveAsc:e=(0,k.sortBy)(e,(e=>(0,k.toLower)(e.label)));break;case o.VariableSort.alphabeticalCaseInsensitiveDesc:e=(e=(0,k.sortBy)(e,(e=>(0,k.toLower)(e.label)))).reverse();break;case o.VariableSort.naturalAsc||7:e=$i(e);break;case o.VariableSort.naturalDesc||8:e=(e=$i(e)).reverse()}return e};function ji(e){if(!e.label)return-1;const t=e.label.match(/.*?(\d+).*/);return!t||t.length<2?-1:parseInt(t[1],10)}const Fi=new Intl.Collator(void 0,{sensitivity:"accent",numeric:!0});function $i(e){return e.slice().sort(((e,t)=>Fi.compare(e.label,t.label)))}function zi(){return e=>e.pipe((0,f.map)((e=>{const t=e.series;if(!t||!t.length)return[];if(function(e){if(!e)return!1;if(!e.length)return!0;const t=e[0];if((0,o.isDataFrame)(t))return!1;for(const e in t){if(!t.hasOwnProperty(e))continue;if(null!==t[e]&&"string"!=typeof t[e]&&"number"!=typeof t[e])continue;const n=e.toLowerCase();if("text"===n||"value"===n)return!0}return!1}(t))return t;if(0===t[0].fields.length)return[];const n=(0,o.getProcessedDataFrames)(t),r=[];let a=-1,i=-1,s=-1,l=-1;for(const e of n)for(let n=0;n{di(this.state.query).indexOf(ye)>-1&&this._updateOptionsBasedOnSearchFilter(e)},this._updateOptionsBasedOnSearchFilter=(0,k.debounce)((async e=>{const t=await(0,f.lastValueFrom)(this.getValueOptions({searchFilter:e}));this.setState({options:t,loading:!1})}),400)}getValueOptions(e){return this.state.query?(this.setState({loading:!0,error:null}),(0,f.from)(Ve(this.state.datasource,{__sceneObject:It(this)})).pipe((0,f.mergeMap)((t=>{const n=Mi(t),r=n.getTarget(this),a=this.getRequest(r,e.searchFilter);return n.runRequest({variable:this,searchFilter:e.searchFilter},a).pipe(Me({type:"variable",request:a,origin:this}),(0,f.filter)((e=>e.state===o.LoadingState.Done||e.state===o.LoadingState.Error)),(0,f.take)(1),(0,f.mergeMap)((e=>e.state===o.LoadingState.Error?(0,f.throwError)((()=>e.error)):(0,f.of)(e))),zi(),(0,f.mergeMap)((e=>{let t="";return this.state.regex&&(t=Xi.interpolate(this,this.state.regex,void 0,"regex")),(0,f.of)(function(e,t,n){var r,a,i,s,l,c,u,d,p,f;let h,g=[];e&&(h=(0,o.stringToJsRegex)(e));for(let e=0;ee.groups&&e.groups.value)),n=e.find((e=>e.groups&&e.groups.text)),r=e.find((e=>e.length>1)),a=e.length>1&&r;if(t||n)m=null!=(u=null==(l=null==t?void 0:t.groups)?void 0:l.value)?u:null==(c=null==n?void 0:n.groups)?void 0:c.text,o=null!=(f=null==(d=null==n?void 0:n.groups)?void 0:d.text)?f:null==(p=null==t?void 0:t.groups)?void 0:p.value;else{if(a){for(let t=0;te.cancelled?(0,f.of)([]):(0,f.throwError)((()=>e)))))})))):(0,f.of)([])}getRequest(e,t){const n={__sceneObject:It(this)};t&&(n.__searchFilter={value:t,text:t});const r=Xi.getTimeRange(this).state.value;return{app:o.CoreApp.Dashboard,requestId:w(),timezone:"",range:r,interval:"",intervalMs:0,targets:[e],scopedVars:n,startTime:Date.now()}}}Ui.Component=({model:e})=>p().createElement(St,{model:e});class Wi extends I{constructor(){super(...arguments),this._renderBeforeActivation=!0,this._contextSubject=new f.BehaviorSubject(void 0)}getValue(){var e,t;return null!=(t=null==(e=this.context)?void 0:e.state.value)?t:[]}subscribeToValue(e){return this.contextObservable.pipe((0,f.map)((e=>{var t;return null!=(t=null==e?void 0:e.state.value)?t:[]})),(0,f.pairwise)(),(0,f.filter)((([e,t])=>!(0,k.isEqual)(e,t)))).subscribe((([t,n])=>{e(n,t)}))}isLoading(){var e,t;return null!=(t=null==(e=this.context)?void 0:e.state.loading)&&t}subscribeToLoading(e){return this.contextObservable.pipe((0,f.filter)((e=>!!e)),(0,f.pairwise)(),(0,f.map)((([e,t])=>{var n,r;return[null!=(n=null==e?void 0:e.state.loading)&&n,null!=(r=null==t?void 0:t.state.loading)&&r]})),(0,f.filter)((([e,t])=>e!==t))).subscribe((([t,n])=>{e(n)}))}setEnabled(e){var t;null==(t=this.context)||t.setEnabled(e)}setReadOnly(e){var t;null==(t=this.context)||t.setReadOnly(e)}updateContext(e){var t;this.context===e&&(null==(t=this.context)?void 0:t.state)===(null==e?void 0:e.state)||this._contextSubject.next(e)}get context(){return this._contextSubject.getValue()}get contextObservable(){return this._contextSubject.asObservable()}}function Hi(e){var t;return null!=(t=L(e,(e=>e.state.$data)))?t:K}function Gi(e,t,n,r,a){return""===t||null==t?"":ke(e,t,n,r,a)}function qi(e,t,n,r){if(t(e))return e;let a=null;return e.forEachChild((e=>{if(e===n)return;let r=qi(e,t);r&&(a=r)})),a||(r&&e.parent?qi(e.parent,t,e,!0):null)}function Qi(e,t){return qi(e,t,void 0,!0)}function Yi(e,t){const n=[];return e.forEachChild((e=>{t(e)&&n.push(e),n.push(...Yi(e,t))})),n}Wi.Component=function({model:e}){const t=(0,i.useScopes)();return(0,u.useEffect)((()=>{e.updateContext(t)}),[t,e]),null};const Xi={getVariables:function(e){var t;return null!=(t=L(e,(e=>e.state.$variables)))?t:J},getData:Hi,getTimeRange:ee,getLayout:function(e){const t=L(e,(e=>function(e){return"isDraggable"in e}(e)?e:void 0));return t||null},getDataLayers:function(e,t=!1){let n=e,r=[];for(;n;){const e=n.state.$data;if(e){if(Ne(e)?r=r.concat(e):e.state.$data&&Ne(e.state.$data)&&(r=r.concat(e.state.$data)),t&&r.length>0)break;n=n.parent}else n=n.parent}return r},interpolate:Gi,lookupVariable:B,hasVariableDependencyInLoadingState:function(e){if(!e.variableDependency)return!1;for(const t of e.variableDependency.getNames()){if(e instanceof Ui&&e.state.name===t){console.warn("Query variable is referencing itself");continue}const n=B(t,e);if(!n)continue;if(n.parent.isVariableLoadingOrWaitingToUpdate(n))return!0}return!1},findByKey:function(e,t){const n=Qi(e,(e=>e.state.key===t));if(!n)throw new Error("Unable to find scene with key "+t);return n},findByKeyAndType:function(e,t,n){const r=Qi(e,(e=>e.state.key===t));if(!r)throw new Error("Unable to find scene with key "+t);if(!(r instanceof n))throw new Error(`Found scene object with key ${t} does not match type ${n.name}`);return r},findObject:Qi,findAllObjects:Yi,getAncestor:function(e,t){let n=e;for(;n;){if(n instanceof t)return n;n=n.parent}if(!n)throw new Error("Unable to find parent of type "+t.name);return n},getQueryController:j,findDescendents:function(e,t){function n(e){return e instanceof t}return Yi(e,n).filter(n)},getScopesBridge:function(e){var t;return null!=(t=Qi(e,(e=>e instanceof Wi)))?t:void 0}};class Ki{constructor(){this.index=new Map}getUniqueKey(e,t){const n=this.index.get(e);if(!n)return this.index.set(e,[t]),e;let r=n.findIndex((e=>e===t));return-1===r&&(!function(e){for(const t of e)if(Zi(t)){const n=e.indexOf(t);e.splice(n,1)}}(n),n.push(t),r=n.length-1),r>0?`${e}-${r+1}`:e}clear(){this.index.clear()}}function Zi(e){const t=e.getRoot();return!Xi.findObject(t,(t=>t===e))}function Ji(e){const t=new Ki,n={},r=e=>{if(e.urlSync){const r=e.urlSync.getUrlState();for(const[a,o]of Object.entries(r))if(null!=o){const r=t.getUniqueKey(a,e);n[r]=o}}e.forEachChild(r)};return r(e),n}function es(e,t,n,r){r||ts(e,t,n),e.forEachChild((e=>{ts(e,t,n)})),e.forEachChild((e=>es(e,t,n,!0)))}function ts(e,t,n){if(e.urlSync){const r={},a=e.urlSync.getUrlState();for(const o of e.urlSync.getKeys()){const i=n.getUniqueKey(o,e),s=t.getAll(i),l=a[o];ns(s,l)||(s.length>0?Array.isArray(l)?r[o]=s:r[o]=s[0]:r[o]=null)}Object.keys(r).length>0&&e.urlSync.updateFromUrl(r)}}function ns(e,t){return 0===e.length&&null==t||(Array.isArray(t)||1!==(null==e?void 0:e.length)?0===(null==t?void 0:t.length)&&null===e||(0,k.isEqual)(e,t):t===e[0])}var rs=n(6145);class as extends I{constructor(e){super({...e,sync:e.sync||rs.yV.Off}),this.getEventsBus=e=>{if(!this.parent)throw new Error("EnableCursorSync cannot be used as a standalone scene object");return new os(this.parent,e)}}getEventsScope(){if(!this.parent)throw new Error("EnableCursorSync cannot be used as a standalone scene object");return this.state.key}}class os{constructor(e,t){this._source=e,this._eventsOrigin=t}publish(e){e.origin=this,this._eventsOrigin.publishEvent(e,!0)}getStream(e){return new f.Observable((t=>{const n=this._source.subscribeToEvent(e,(e=>{t.next(e)}));return()=>n.unsubscribe()}))}subscribe(e,t){return this.getStream(e).pipe().subscribe(t)}removeAllListeners(){}newScopedBus(e,t){throw new Error("For internal use only")}}var is=function(){};var ss="undefined"!=typeof window;const ls=ss?u.useLayoutEffect:u.useEffect;var cs={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};const us=ss&&void 0!==window.ResizeObserver?function(){var e=(0,u.useState)(null),t=e[0],n=e[1],r=(0,u.useState)(cs),a=r[0],o=r[1],i=(0,u.useMemo)((function(){return new window.ResizeObserver((function(e){if(e[0]){var t=e[0].contentRect,n=t.x,r=t.y,a=t.width,i=t.height,s=t.top,l=t.left,c=t.bottom,u=t.right;o({x:n,y:r,width:a,height:i,top:s,left:l,bottom:c,right:u})}}))}),[]);return ls((function(){if(t)return i.observe(t),function(){i.disconnect()}}),[t]),[n,a]}:function(){return[is,cs]};function ds({data:e,showAll:t,seriesLimit:n,onShowAllSeries:r}){const a=(0,qe.useStyles2)(ps),o=null==e?void 0:e.series.length;if(void 0===o||o({timeSeriesDisclaimer:(0,rt.css)({label:"time-series-disclaimer",display:"flex",alignItems:"center",gap:e.spacing(1)}),warningMessage:(0,rt.css)({display:"flex",alignItems:"center",gap:e.spacing(.5),color:e.colors.warning.main,fontSize:e.typography.bodySmall.fontSize})});function fs(e,t){if(t)return t;let n=e.error?e.error.message:void 0;return e.errors&&(n=e.errors.map((e=>e.message)).join(", ")),n}const hs=(0,rt.css)({position:"relative",width:"100%",height:"100%"}),gs=(0,rt.css)({position:"absolute",width:"100%",height:"100%"}),ms=e=>({ok:(0,rt.css)({color:e.colors.success.text}),pending:(0,rt.css)({color:e.colors.warning.text}),alerting:(0,rt.css)({color:e.colors.error.text})}),vs="hideSeriesFrom",bs=(0,o.isSystemOverrideWithRef)(vs);function ys(e,t=o.ByNamesMatcherMode.exclude,n){return n=null!=n?n:{id:"custom.hideFrom",value:{viz:!0,legend:!1,tooltip:!1}},{__systemRef:vs,matcher:{id:o.FieldMatcherID.byNames,options:{mode:t,names:e,prefix:t===o.ByNamesMatcherMode.exclude?"All except:":void 0,readOnly:!0}},properties:[{...n,value:{viz:!0,legend:!1,tooltip:!1}}]}}const ws=(e,t,n=o.ByNamesMatcherMode.exclude)=>{const r=e.properties.find((e=>"custom.hideFrom"===e.id)),a=Ss(e),i=a.findIndex((e=>e===t));return i<0?a.push(t):a.splice(i,1),ys(a,n,r)},Ss=e=>{var t;const n=null==(t=e.matcher.options)?void 0:t.names;return Array.isArray(n)?[...n]:[]},xs=(e,t)=>Ss(e).length===Es(t).length,Es=(e,t)=>{const n=new Set;for(const r of e)for(const a of r.fields){if(a.type!==o.FieldType.number)continue;const i=(0,o.getFieldDisplayName)(a,r,e);i!==t&&n.add(i)}return Array.from(n)},Cs=(e,t)=>{var n;let r=[];for(const a of e){const e=a.properties.find((e=>"custom.hideFrom"===e.id));if(void 0!==e&&!0===(null==(n=e.value)?void 0:n.legend)){const e=o.fieldMatchers.get(a.matcher.id).get(a.matcher.options);for(const n of t)for(const a of n.fields){if(a.type!==o.FieldType.number)continue;const i=(0,o.getFieldDisplayName)(a,n,t);e(a,n,t)&&r.push(i)}}}return r},Rs=(e,t)=>({matcher:{id:o.FieldMatcherID.byName,options:e},properties:[Ds(t)]}),Ds=e=>({id:"color",value:{mode:o.FieldColorModeId.Fixed,fixedColor:e}});class _s extends I{constructor(e){var t;super({options:{},fieldConfig:{defaults:{},overrides:[]},title:"Title",pluginId:"timeseries",_renderCounter:0,...e}),this._variableDependency=new Di(this,{statePaths:["title","options","fieldConfig"]}),this._structureRev=0,this.onTimeRangeChange=e=>{Xi.getTimeRange(this).onTimeRangeChange({raw:{from:(0,o.toUtc)(e.from),to:(0,o.toUtc)(e.to)},from:(0,o.toUtc)(e.from),to:(0,o.toUtc)(e.to)})},this.getTimeRange=e=>{const t=Xi.findObject(this,(e=>e instanceof Is)),n=Xi.getTimeRange(this);if(t instanceof Is&&t.isEnabled)return q(n.state.from,n.state.to,n.getTimeZone(),n.state.fiscalYearStartMonth,n.state.UNSAFE_nowDelay,n.state.weekStart);const r=this.getPlugin();return r&&!r.meta.skipDataQuery&&e&&e.timeRange?e.timeRange:n.state.value},this.onTitleChange=e=>{this.setState({title:e})},this.onDescriptionChange=e=>{this.setState({description:e})},this.onDisplayModeChange=e=>{this.setState({displayMode:e})},this.onToggleCollapse=e=>{this.setState({collapsed:e})},this.onOptionsChange=(e,t=!1,n=!1)=>{var r;const{fieldConfig:a,options:i}=this.state,s=t?e:(0,k.mergeWith)((0,k.cloneDeep)(i),e,((e,t,n,r)=>{if((0,k.isArray)(t))return t;e===t||void 0!==t||(r[n]=t)})),l=(0,o.getPanelOptionsWithDefaults)({plugin:this._plugin,currentOptions:s,currentFieldConfig:a,isAfterPluginChange:n});this.setState({options:l.options,_renderCounter:(null!=(r=this.state._renderCounter)?r:0)+1})},this.onFieldConfigChange=(e,t)=>{const{fieldConfig:n,options:r}=this.state,a=t?e:(0,k.merge)((0,k.cloneDeep)(n),e),i=(0,o.getPanelOptionsWithDefaults)({plugin:this._plugin,currentOptions:r,currentFieldConfig:a,isAfterPluginChange:!1});this._dataWithFieldConfig=void 0,this.setState({fieldConfig:i.fieldConfig})},this.interpolate=(e,t,n)=>Xi.interpolate(this,e,t,n),this.getDescription=()=>{this.publishEvent(new C({origin:this,interaction:"panel-description-shown"}),!0);const{description:e}=this.state;if(e){const t=this.interpolate(e);return(0,o.renderMarkdown)(t)}return""},this.onCancelQuery=()=>{var e;this.publishEvent(new C({origin:this,interaction:"panel-cancel-query-clicked"}),!0);const t=Xi.getData(this);null==(e=t.cancelQuery)||e.call(t)},this.onStatusMessageClick=()=>{this.publishEvent(new C({origin:this,interaction:"panel-status-message-clicked"}),!0)},this._onSeriesColorChange=(e,t)=>{this.onFieldConfigChange(((e,t,n)=>{const{overrides:r}=n,a=n.overrides.findIndex((t=>t.matcher.id===o.FieldMatcherID.byName&&t.matcher.options===e));if(a<0)return{...n,overrides:[...n.overrides,Rs(e,t)]};const i=Array.from(r),s=i[a],l=s.properties.findIndex((e=>"color"===e.id));if(l<0)return i[a]={...s,properties:[...s.properties,Ds(t)]},{...n,overrides:i};const c=Array.from(s.properties);return c[l]=Ds(t),i[a]={...s,properties:c},{...n,overrides:i}})(e,t,this.state.fieldConfig))},this._onSeriesVisibilityChange=(e,t)=>{this._dataWithFieldConfig&&this.onFieldConfigChange(function(e,t,n,r){const{overrides:a}=n,o=e,i=a.findIndex(bs);if(i<0){if(t===qe.SeriesVisibilityChangeMode.ToggleSelection){const e=ys([o,...Cs(a,r)]);return{...n,overrides:[...n.overrides,e]}}const e=ys(Es(r,o));return{...n,overrides:[...n.overrides,e]}}const s=Array.from(a),[l]=s.splice(i,1);if(t===qe.SeriesVisibilityChangeMode.ToggleSelection){let e=Ss(l);const t=Cs(s,r);if(t.length>0&&(e=e.filter((e=>t.indexOf(e)<0))),e[0]===o&&1===e.length)return{...n,overrides:s};const a=ys([o,...t]);return{...n,overrides:[...s,a]}}const c=ws(l,o);return xs(c,r)?{...n,overrides:s}:{...n,overrides:[...s,c]}}(e,t,this.state.fieldConfig,this._dataWithFieldConfig.series),!0)},this._onInstanceStateChange=e=>{this._panelContext&&(this._panelContext={...this._panelContext,instanceState:e}),this.setState({_pluginInstanceState:e})},this._onToggleLegendSort=e=>{const t=this.state.options.legend;if(!t)return;let n=t.sortDesc,r=t.sortBy;e!==r&&(n=void 0),!1===n?(r=void 0,n=void 0):(n=!n,r=e),this.onOptionsChange({...this.state.options,legend:{...t,sortBy:r,sortDesc:n}},!0)},this.addActivationHandler((()=>{this._onActivate()})),null==(t=e.menu)||t.addActivationHandler((()=>{this.publishEvent(new C({origin:this,interaction:"panel-menu-shown"}),!0)}))}_onActivate(){this._plugin||this._loadPlugin(this.state.pluginId)}forceRender(){var e;this.setState({_renderCounter:(null!=(e=this.state._renderCounter)?e:0)+1})}async _loadPlugin(e,t,n,r){const a=function(e){var t;const{getPanelPluginFromCache:n}=(0,i.getPluginImportUtils)();return null!=(t=n(e))?t:c.get(e)}(e);if(a)this._pluginLoaded(a,t,n,r);else{const{importPanelPlugin:a}=(0,i.getPluginImportUtils)();try{const o=a(e),i=Xi.getQueryController(this);i&&i.state.enableProfiling&&Be(o).pipe(Me({type:"plugin",origin:this})).subscribe((()=>{}));const s=await o;this._pluginLoaded(s,t,n,r)}catch(t){this._pluginLoaded(function(e){const t=new o.PanelPlugin((()=>null));return t.meta={id:e,name:e,sort:100,type:o.PluginType.panel,module:"",baseUrl:"",info:{author:{name:""},description:"",links:[],logos:{large:"",small:"public/img/grafana_icon.svg"},screenshots:[],updated:"",version:""}},t}(e)),t instanceof Error&&this.setState({_pluginLoadError:t.message})}}}getLegacyPanelId(){var e,t;const n=null!=(t=null==(e=this.state.key)?void 0:e.split("/"))?t:[];if(0===n.length)return 0;const r=n[n.length-1],a=parseInt(r.replace("panel-",""),10);return isNaN(a)?0:a}async _pluginLoaded(e,t,n,r){const{options:a,fieldConfig:i,title:s,pluginVersion:l,_UNSAFE_customMigrationHandler:c}=this.state,u={title:s,options:a,fieldConfig:i,id:this.getLegacyPanelId(),type:e.meta.id,pluginVersion:l};t&&(u.options=t),n&&(u.fieldConfig=n);const d=this._getPluginVersion(e);null==c||c(u,e),e.onPanelMigration&&d!==l&&!r&&(u.options=await e.onPanelMigration(u));const p=(0,o.getPanelOptionsWithDefaults)({plugin:e,currentOptions:u.options,currentFieldConfig:u.fieldConfig,isAfterPluginChange:null!=r&&r});if(this._plugin=e,this.setState({options:p.options,fieldConfig:p.fieldConfig,pluginVersion:d,pluginId:e.meta.id}),e.meta.skipDataQuery){const e=Xi.getTimeRange(this);this._subs.add(e.subscribeToState((()=>this.forceRender())))}}_getPluginVersion(e){return e&&e.meta.info.version?e.meta.info.version:i.config.buildInfo.version}getPlugin(){return this._plugin}getPanelContext(){return null!=this._panelContext||(this._panelContext=this.buildPanelContext()),this._panelContext}async changePluginType(e,t,n){var r,a;const{options:o,fieldConfig:i,pluginId:s}=this.state;this._dataWithFieldConfig=void 0;const l=this.state.pluginId!==e;await this._loadPlugin(e,null!=t?t:{},n,l);const c={title:this.state.title,options:this.state.options,fieldConfig:this.state.fieldConfig,id:1,type:e},u=null==(a=null==(r=this._plugin)?void 0:r.onPanelTypeChanged)?void 0:a.call(r,c,s,o,i);u&&!(0,k.isEmpty)(u)&&this.onOptionsChange(u,!0,!0)}clearFieldConfigCache(){this._dataWithFieldConfig=void 0}applyFieldConfig(e){var t,n,r,a;const s=this._plugin;if(!s||s.meta.skipDataQuery||!e)return U;if(this._prevData===e&&this._dataWithFieldConfig)return this._dataWithFieldConfig;const l=s.dataSupport||{alertStates:!1,annotations:!1},c=s.fieldConfigRegistry,u=null!=(n=null==(t=this._dataWithFieldConfig)?void 0:t.series)?n:[],d=(0,o.applyFieldOverrides)({data:e.series,fieldConfig:this.state.fieldConfig,fieldConfigRegistry:c,replaceVariables:this.interpolate,theme:i.config.theme2,timeZone:null==(r=e.request)?void 0:r.timezone});return(0,o.compareArrayValues)(d,u,o.compareDataFrameStructures)||this._structureRev++,this._dataWithFieldConfig={...e,structureRev:this._structureRev,series:d},this._dataWithFieldConfig.annotations&&(this._dataWithFieldConfig.annotations=(0,o.applyFieldOverrides)({data:this._dataWithFieldConfig.annotations,fieldConfig:{defaults:{},overrides:[]},fieldConfigRegistry:c,replaceVariables:this.interpolate,theme:i.config.theme2,timeZone:null==(a=e.request)?void 0:a.timezone})),l.alertStates||(this._dataWithFieldConfig.alertState=void 0),l.annotations||(this._dataWithFieldConfig.annotations=void 0),this._prevData=e,this._dataWithFieldConfig}buildPanelContext(){const e=(t=this,Xi.findObject(t,(e=>e instanceof as)));var t;const n={eventsScope:e?e.getEventsScope():"__global_",eventBus:e?e.getEventsBus(this):(0,i.getAppEvents)(),app:o.CoreApp.Unknown,sync:()=>e?e.state.sync:o.DashboardCursorSync.Off,onSeriesColorChange:this._onSeriesColorChange,onToggleSeriesVisibility:this._onSeriesVisibilityChange,onToggleLegendSort:this._onToggleLegendSort,onInstanceStateChange:this._onInstanceStateChange};return this.state.extendPanelContext&&this.state.extendPanelContext(this,n),n}}_s.Component=function({model:e}){var t;const{title:n,options:r,fieldConfig:a,_pluginLoadError:s,displayMode:l,hoverHeader:c,showMenuAlways:d,hoverHeaderOffset:f,menu:h,headerActions:g,titleItems:m,seriesLimit:v,seriesLimitShowAll:b,description:y,collapsible:w,collapsed:S,_renderCounter:x=0}=e.useState(),[E,{width:C,height:R}]=us(),D=(0,u.useMemo)((()=>(0,i.getAppEvents)()),[]),_=(0,u.useCallback)((()=>{e.state.key&&D.publish(new o.SetPanelAttentionEvent({panelId:e.state.key}))}),[e.state.key,D]),O=(0,u.useMemo)((()=>(0,k.debounce)(_,100,{leading:!0,trailing:!1})),[_]),I=e.getPlugin(),{dragClass:T,dragClassCancel:A}=function(e){var t,n;const r=Xi.getLayout(e),a=null==r?void 0:r.isDraggable();if(!r||!a||function(e,t){let n=e.parent;for(;n&&n!==t;){if("isDraggable"in n.state&&!1===n.state.isDraggable)return!0;n=n.parent}return!1}(e,r))return{dragClass:"",dragClassCancel:""};return{dragClass:null==(t=r.getDragClass)?void 0:t.call(r),dragClassCancel:null==(n=null==r?void 0:r.getDragClassCancel)?void 0:n.call(r)}}(e),P=function(e){var t,n;const r=Xi.getLayout(e);return null!=(n=null==(t=null==r?void 0:r.getDragHooks)?void 0:t.call(r))?n:{}}(e),L=Xi.getData(e),N=L.useState(),M=function(e,t,n){return(0,u.useMemo)((()=>(null==e?void 0:e.series)&&t&&!n?{...e,series:e.series.slice(0,t)}:e),[e,t,n])}(N.data,v,b),B=e.applyFieldConfig(M),V=Xi.getTimeRange(e).getTimeZone(),j=e.getTimeRange(B),F=e.interpolate(n,void 0,"text"),$=(0,qe.useStyles2)(ms);if(!I)return p().createElement("div",null,"Loading plugin panel...");if(!I.panel)return p().createElement("div",null,"Panel plugin has no panel component");const z=I.panel;L&&L.setContainerWidth&&L.setContainerWidth(Math.round(C));let U,W,H=[];m&&(Array.isArray(m)?H=H.concat(m.map((e=>p().createElement(e.Component,{model:e,key:`${e.state.key}`})))):Pe(m)?H.push(p().createElement(m.Component,{model:m})):H.push(m)),v&&H.push(p().createElement(ds,{key:"series-limit",data:N.data,seriesLimit:v,showAll:b,onShowAllSeries:()=>e.setState({seriesLimitShowAll:!b})})),e.state.$timeRange&&H.push(p().createElement(e.state.$timeRange.Component,{model:e.state.$timeRange,key:e.state.key})),B.alertState&&H.push(p().createElement(qe.Tooltip,{content:null!=(t=B.alertState.state)?t:"unknown",key:`alert-states-icon-${e.state.key}`},p().createElement(qe.PanelChrome.TitleItem,{className:(0,rt.cx)({[$.ok]:B.alertState.state===o.AlertState.OK,[$.pending]:B.alertState.state===o.AlertState.Pending,[$.alerting]:B.alertState.state===o.AlertState.Alerting})},p().createElement(qe.Icon,{name:"alerting"===B.alertState.state?"heart-break":"heart",className:"panel-alert-icon",size:"md"})))),h&&(U=p().createElement(h.Component,{model:h})),g&&(W=Array.isArray(g)?p().createElement(p().Fragment,null,g.map((e=>p().createElement(e.Component,{model:e,key:`${e.state.key}`})))):Pe(g)?p().createElement(g.Component,{model:g}):g);const G=B,q=!L.isDataReadyToDisplay||L.isDataReadyToDisplay(),Q=e.getPanelContext(),Y=e.getLegacyPanelId();return p().createElement("div",{className:hs},p().createElement("div",{ref:E,className:gs,"data-viz-panel-key":e.state.key},C>0&&R>0&&p().createElement(qe.PanelChrome,{title:F,description:(null==y?void 0:y.trim())?e.getDescription:void 0,loadingState:G.state,statusMessage:fs(G,s),statusMessageOnClick:e.onStatusMessageClick,width:C,height:R,selectionId:e.state.key,displayMode:l,titleItems:H,dragClass:T,actions:W,dragClassCancel:A,padding:I.noPadding?"none":"md",menu:U,onCancelQuery:e.onCancelQuery,onFocus:_,onMouseEnter:_,onMouseMove:O,onDragStart:t=>{var n;null==(n=P.onDragStart)||n.call(P,t,e)},showMenuAlways:d,...w?{collapsible:Boolean(w),collapsed:S,onToggleCollapse:e.onToggleCollapse}:{hoverHeader:c,hoverHeaderOffset:f}},((t,i)=>p().createElement(p().Fragment,null,p().createElement(qe.ErrorBoundaryAlert,{dependencies:[I,G]},p().createElement(o.PluginContextProvider,{meta:I.meta},p().createElement(qe.PanelContextProvider,{value:Q},q&&p().createElement(z,{id:Y,data:G,title:n,timeRange:j,timeZone:V,options:r,fieldConfig:a,transparent:!1,width:t,height:i,renderCounter:x,replaceVariables:e.interpolate,onOptionsChange:e.onOptionsChange,onFieldConfigChange:e.onFieldConfigChange,onChangeTimeRange:e.onTimeRangeChange,eventBus:Q.eventBus})))))))))};const Os=class e extends I{constructor({enabled:e=!1}){super({enabled:e}),this.timerId=void 0,this._activationHandler=()=>(this.state.enabled&&this.enable(),()=>{window.clearInterval(this.timerId),this.timerId=void 0}),this.addActivationHandler(this._activationHandler)}enable(){window.clearInterval(this.timerId),this.timerId=void 0,this.timerId=window.setInterval((()=>{const e=Xi.findAllObjects(this.getRoot(),(e=>e instanceof _s));for(const t of e)t.forceRender()}),e.REFRESH_RATE),this.setState({enabled:!0})}disable(){window.clearInterval(this.timerId),this.timerId=void 0,this.setState({enabled:!1})}get isEnabled(){return this.state.enabled}};Os.REFRESH_RATE=100;let Is=Os;function Ts(e){if("string"==typeof e)return e;if(e){if(e instanceof Error)return e.message;if((0,i.isFetchError)(e)){if(e.data&&e.data.message)return e.data.message;if(e.statusText)return e.statusText}else if(e.hasOwnProperty("message"))return e.message}return JSON.stringify(e)}class As extends I{constructor(e,t=[]){super({isEnabled:!0,...e}),this._results=new f.ReplaySubject(1),this.isDataLayer=!0,this._variableValueRecorder=new je,this._variableDependency=new Di(this,{onVariableUpdateCompleted:this.onVariableUpdateCompleted.bind(this)}),this._variableDependency.setPaths(t),this.addActivationHandler((()=>this.onActivate()))}onActivate(){return this.state.isEnabled&&this.onEnable(),this.shouldRunLayerOnActivate()&&this.runLayer(),this.subscribeToState(((e,t)=>{!e.isEnabled&&this.querySub&&(this.querySub.unsubscribe(),this.querySub=void 0,this.onDisable(),this._results.next({origin:this,data:U}),this.setStateHelper({data:U})),e.isEnabled&&!t.isEnabled&&(this.onEnable(),this.runLayer())})),()=>{this.onDeactivate()}}onDeactivate(){this.querySub&&(this.querySub.unsubscribe(),this.querySub=void 0),this.onDisable(),this._variableValueRecorder.recordCurrentDependencyValuesForSceneObject(this)}onVariableUpdateCompleted(){this.runLayer()}cancelQuery(){this.querySub&&(this.querySub.unsubscribe(),this.querySub=void 0,this.publishResults(U))}publishResults(e){this.state.isEnabled&&(this._results.next({origin:this,data:e}),this.setStateHelper({data:e}))}getResultsStream(){return this._results}shouldRunLayerOnActivate(){return!!this.state.isEnabled&&(this._variableValueRecorder.hasDependenciesChanged(this)?(V(),!0):!this.state.data)}setStateHelper(e){Ee(this,e)}}function ks({layer:e}){var t,n;const r=`data-layer-${e.state.key}`,{data:a,isEnabled:o}=e.useState(),i=Boolean(a&&a.state===$.Loading);return p().createElement("div",{className:Ps},p().createElement(Lt,{htmlFor:r,isLoading:i,onCancel:()=>{var t;return null==(t=e.cancelQuery)?void 0:t.call(e)},label:e.state.name,description:e.state.description,error:null==(n=null==(t=e.state.data)?void 0:t.errors)?void 0:n[0].message}),p().createElement(qe.InlineSwitch,{id:r,value:o,onChange:()=>e.setState({isEnabled:!o})}))}(class extends I{constructor(){super({})}}).Component=function({model:e}){const t=Xi.getDataLayers(e,!0);if(0===t.length)return null;return p().createElement(p().Fragment,null,t.map((e=>p().createElement(e.Component,{model:e,key:e.state.key}))))};const Ps=(0,rt.css)({display:"flex"});function Ls(e){return"function"==typeof e}function Ns(e){return function(t){if(function(e){return Ls(null==e?void 0:e.lift)}(t))return t.lift((function(t){try{return e(t,this)}catch(e){this.error(e)}}));throw new TypeError("Unable to lift unknown Observable type")}}var Ms=function(e,t){return Ms=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Ms(e,t)};function Bs(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Ms(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function Vs(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,s)}l((r=r.apply(e,t||[])).next())}))}function js(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&s[0]?r.return:s[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,s[1])).done)return a;switch(r=0,a&&(s=[2&s[0],a.value]),s[0]){case 0:case 1:a=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function $s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function zs(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a1||s(e,t)}))},t&&(r[e]=t(r[e])))}function s(e,t){try{(n=a[e](t)).value instanceof Us?Promise.resolve(n.value.v).then(l,c):u(o[0][2],n)}catch(e){u(o[0][3],e)}var n}function l(e){s("next",e)}function c(e){s("throw",e)}function u(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function Hs(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=Fs(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,a){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,a,(t=e[n](t)).done,t.value)}))}}}Object.create;"function"==typeof SuppressedError&&SuppressedError;var Gs,qs=((Gs=function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}}((function(e){Error.call(e),e.stack=(new Error).stack}))).prototype=Object.create(Error.prototype),Gs.prototype.constructor=Gs,Gs);function Qs(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var Ys=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,n,r,a;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var i=Fs(o),s=i.next();!s.done;s=i.next()){s.value.remove(this)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}else o.remove(this);var l=this.initialTeardown;if(Ls(l))try{l()}catch(e){a=e instanceof qs?e.errors:[e]}var c=this._finalizers;if(c){this._finalizers=null;try{for(var u=Fs(c),d=u.next();!d.done;d=u.next()){var p=d.value;try{Ks(p)}catch(e){a=null!=a?a:[],e instanceof qs?a=zs(zs([],$s(a)),$s(e.errors)):a.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(a)throw new qs(a)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)Ks(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&Qs(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&Qs(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();Ys.EMPTY;function Xs(e){return e instanceof Ys||e&&"closed"in e&&Ls(e.remove)&&Ls(e.add)&&Ls(e.unsubscribe)}function Ks(e){Ls(e)?e():e.unsubscribe()}var Zs={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Js={setTimeout:function(e,t){for(var n=[],r=2;r{if((0,k.isString)(null==e?void 0:e.query)){const{query:t,...n}=e;return{...n,target:{refId:"annotation_query",query:t},mappings:{}}}return e},prepareQuery:e=>e.target,processEvents:(e,t)=>function(e,t){return(0,f.of)(e).pipe((e=>e.pipe(Cl((e=>{if(!(null==e?void 0:e.length))return(0,f.of)(void 0);if(1===e.length)return(0,f.of)(e[0]);const t={interpolate:e=>e};return(0,f.of)(e).pipe(o.standardTransformers.mergeTransformer.operator({},t),gl((e=>e[0])))})))),gl((e=>{if(!(null==e?void 0:e.length))return[];let n=!1,r=!1;const a={};for(const t of e.fields){a[(0,o.getFieldDisplayName)(t,e).toLowerCase()]=t}t||(t={});const i=[];for(const s of _l){const l=t[s.key]||{};if(l.source===o.AnnotationEventFieldSource.Skip)continue;const c={key:s.key,split:s.split};if(l.source===o.AnnotationEventFieldSource.Text)c.text=l.value;else{const t=(l.value||s.key).toLowerCase();c.field=a[t],!c.field&&s.field&&(c.field=s.field(e))}(c.field||c.text)&&(i.push(c),"time"===c.key?n=!0:"text"===c.key&&(r=!0))}if(!n||!r)return console.error("Cannot process annotation fields. No time or text present."),[];const s=[];for(let t=0;te.fields.find((e=>e.type===o.FieldType.time)),placeholder:"time, or the first time field"},{key:"timeEnd",help:"When this field is defined, the annotation will be treated as a range"},{key:"title"},{key:"text",field:e=>e.fields.find((e=>e.type===o.FieldType.string)),placeholder:"text, or the first text field"},{key:"tags",split:",",help:"The results will be split on comma (,)"},{key:"id"}],_l=[...i.config.publicDashboardAccessToken?[{key:"color"},{key:"isRegion"},{key:"source"}]:[],...Dl,{key:"userId"},{key:"login"},{key:"email"},{key:"prevState"},{key:"newState"},{key:"data"},{key:"panelId"},{key:"alertId"},{key:"dashboardId"},{key:"dashboardUID"}];const Ol=["prometheus","loki","elasticsearch","grafana-opensearch-datasource"];let Il=100;function Tl(e,t,n,r){var a;if(e.annotationQuery&&function(e){const{type:t}=e;return!e.annotations||Ol.includes(t)}(e))return console.warn("Using deprecated annotationQuery method, please upgrade your datasource"),(0,f.from)(e.annotationQuery({range:t.state.value,rangeRaw:t.state.value.raw,annotation:n,dashboard:{getVariables:(0,i.getTemplateSrv)().getVariables}})).pipe(gl((e=>({state:$.Done,events:e}))));const s={...Rl,...e.annotations},l={...null==(a=s.getDefaultQuery)?void 0:a.call(s),...n},c=s.prepareAnnotation(l);if(!c)return(0,f.of)({state:$.Done,events:[]});const u=s.prepareQuery(c);if(!u)return(0,f.of)({state:$.Done,events:[]});const d=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,p=o.rangeUtil.calculateInterval(t.state.value,d,e.interval),h={__interval:{text:p.interval,value:p.interval},__interval_ms:{text:p.intervalMs.toString(),value:p.intervalMs},__annotation:{text:c.name,value:c},__sceneObject:It(r)},g={startTime:Date.now(),requestId:"AQ"+Il++,range:t.state.value,maxDataPoints:d,scopedVars:h,...p,app:o.CoreApp.Dashboard,timezone:t.getTimeZone(),targets:[{...u,refId:"Anno"}],...Ue(r)};return(0,i.getRunRequest)()(e,g).pipe(Cl((e=>{const t=(null==e?void 0:e.series.length)?e.series:e.annotations;return(null==t?void 0:t.length)?(t.forEach((e=>{var t;(null==(t=e.meta)?void 0:t.dataTopic)||(e.meta={...e.meta||{},dataTopic:o.DataTopic.Annotations})})),s.processEvents(c,t).pipe(gl((t=>({state:e.state,events:t||[]}))))):(0,f.of)({state:e.state,events:[]})})))}function Al(e){return"panel-alert"===e.eventType}(class extends As{constructor(e){super({isEnabled:!0,...e},["query"]),this._scopedVars={__sceneObject:It(this)}}onEnable(){this.publishEvent(new i.RefreshEvent,!0);const e=Xi.getTimeRange(this);this._timeRangeSub=e.subscribeToState((()=>{this.runWithTimeRange(e)}))}onDisable(){var e;this.publishEvent(new i.RefreshEvent,!0),null==(e=this._timeRangeSub)||e.unsubscribe()}runLayer(){V();const e=Xi.getTimeRange(this);this.runWithTimeRange(e)}async runWithTimeRange(e){const{query:t}=this.state;if(this.querySub&&this.querySub.unsubscribe(),this._variableDependency.hasDependencyInLoadingState())V();else try{let n=Tl(await this.resolveDataSource(t),e,t,this).pipe(Me({type:"annotations",origin:this,cancel:()=>this.cancelQuery()}),(0,f.map)((e=>this.processEvents(t,e))));this.querySub=n.subscribe((e=>{this.publishResults(e)}))}catch(e){this.publishResults({...U,state:$.Error,errors:[{message:Ts(e)}]}),console.error("AnnotationsDataLayer error",e)}}async resolveDataSource(e){return await Ve(e.datasource||void 0,this._scopedVars)}processEvents(e,t){let n=(r=e,a=t.events||[],r.snapshotData&&delete(r=(0,k.cloneDeep)(r)).snapshotData,a.map((e=>{var t;const n={...e};switch(n.source=r,n.color=i.config.theme2.visualization.getColorByName(r.iconColor),n.type=r.name,n.isRegion=Boolean(n.timeEnd&&n.time!==n.timeEnd),null==(t=n.newState)?void 0:t.toLowerCase()){case"pending":n.color="yellow";break;case"alerting":n.color="red";break;case"ok":case"normal":n.color="green";break;case"no_data":case"nodata":n.color="gray"}return n})));var r,a;n=function(e){let t=[];const n=(0,k.partition)(e,"id"),r=(0,k.groupBy)(n[0],"id");return t=(0,k.map)(r,(e=>e.length>1&&!(0,k.every)(e,Al)?(0,k.find)(e,(e=>"panel-alert"!==e.eventType)):(0,k.head)(e))),t=(0,k.concat)(t,n[1]),t}(n);const s={...U,state:t.state},l=(0,o.arrayToDataFrame)(n);return l.meta={...l.meta,dataTopic:o.DataTopic.Annotations},s.series=[l],s}}).Component=function({model:e}){const{isHidden:t}=e.useState();if(t)return null;return p().createElement(ks,{layer:e})};class kl extends I{constructor(){super(...arguments),this.isDataLayer=!0,this._results=new f.ReplaySubject(1),this._dataLayersMerger=new ai}subscribeToAllLayers(e){e.length>0?this.querySub=this._dataLayersMerger.getMergedStream(e).subscribe(this._onLayerUpdateReceived.bind(this)):(this._results.next({origin:this,data:U}),this.setStateHelper({data:U}))}_onLayerUpdateReceived(e){var t;let n=[];for(const r of e)(null==(t=r.data)?void 0:t.series)&&(n=n.concat(r.data.series));const r={...U,series:n};this._results.next({origin:this,data:r}),this.setStateHelper({data:r})}getResultsStream(){return this._results}cancelQuery(){var e;null==(e=this.querySub)||e.unsubscribe()}setStateHelper(e){Ee(this,e)}}class Pl extends kl{constructor(e){var t,n;super({name:null!=(t=e.name)?t:"Data layers",layers:null!=(n=e.layers)?n:[]}),this.addActivationHandler((()=>this._onActivate()))}_onActivate(){return this._subs.add(this.subscribeToState(((e,t)=>{var n;e.layers!==t.layers&&(null==(n=this.querySub)||n.unsubscribe(),this.subscribeToAllLayers(e.layers))}))),this.subscribeToAllLayers(this.state.layers),()=>{var e;null==(e=this.querySub)||e.unsubscribe()}}}Pl.Component=({model:e})=>{const{layers:t}=e.useState();return p().createElement(p().Fragment,null,t.map((e=>p().createElement(e.Component,{model:e,key:e.state.key}))))};class Ll extends I{constructor(e){super(e),this._results=new f.ReplaySubject(1),this._variableDependency=new Di(this,{statePaths:["transformations"],onReferencedVariableValueChanged:()=>this.reprocessTransformations()}),this.addActivationHandler((()=>this.activationHandler()))}activationHandler(){const e=this.getSourceData();return this._subs.add(e.subscribeToState((e=>this.transform(e.data)))),e.state.data&&this.transform(e.state.data),()=>{this._transformSub&&this._transformSub.unsubscribe()}}getSourceData(){if(this.state.$data){if(this.state.$data instanceof Pl)throw new Error("SceneDataLayerSet can not be used as data provider for SceneDataTransformer.");return this.state.$data}if(!this.parent||!this.parent.parent)throw new Error("SceneDataTransformer must either have $data set on it or have a parent.parent with $data");return Xi.getData(this.parent.parent)}setContainerWidth(e){this.state.$data&&this.state.$data.setContainerWidth&&this.state.$data.setContainerWidth(e)}isDataReadyToDisplay(){const e=this.getSourceData();return!e.isDataReadyToDisplay||e.isDataReadyToDisplay()}reprocessTransformations(){this.transform(this.getSourceData().state.data,!0)}cancelQuery(){var e,t;null==(t=(e=this.getSourceData()).cancelQuery)||t.call(e)}getResultsStream(){return this._results}clone(e){const t=super.clone(e);return this._prevDataFromSource&&(t._prevDataFromSource=this._prevDataFromSource),t}haveAlreadyTransformedData(e){if(!this._prevDataFromSource)return!1;if(e===this._prevDataFromSource)return!0;const{series:t,annotations:n}=this._prevDataFromSource;return e.series===t&&e.annotations===n&&(this.state.data&&e.state!==this.state.data.state&&this.setState({data:{...this.state.data,state:e.state}}),!0)}transform(e,t=!1){var n;if(0===this.state.transformations.length||!e)return this._prevDataFromSource=e,this.setState({data:e}),void(e&&this._results.next({origin:this,data:e}));if(!t&&this.haveAlreadyTransformedData(e))return;let r=this._interpolateVariablesInTransformationConfigs(e);const a=r.filter((e=>!("options"in e)&&!("topic"in e)||(null==e.topic||e.topic===o.DataTopic.Series))).map((e=>"operator"in e?e.operator:e)),s=r.filter((e=>("options"in e||"topic"in e)&&e.topic===o.DataTopic.Annotations)).map((e=>"operator"in e?e.operator:e));this._transformSub&&this._transformSub.unsubscribe();const l={interpolate:t=>{var n;return Xi.interpolate(this,t,null==(n=e.request)?void 0:n.scopedVars)}};let c=[(0,o.transformDataFrame)(a,e.series,l)];e.annotations&&e.annotations.length>0&&s.length>0&&c.push((0,o.transformDataFrame)(s,null!=(n=e.annotations)?n:[])),this._transformSub=(0,f.forkJoin)(c).pipe((0,f.map)((t=>{const n=t[0],r=t[1];return{...e,series:n,annotations:null!=r?r:e.annotations}})),(0,f.catchError)((t=>{var n;console.error("Error transforming data: ",t);const r=(null==(n=this.getSourceData().state.data)?void 0:n.errors)||[],a=(0,i.toDataQueryError)(t);a.message=`Error transforming data: ${a.message}`;const s={...e,state:o.LoadingState.Error,errors:[...r,a]};return(0,f.of)(s)}))).subscribe((t=>{this.setState({data:t}),this._results.next({origin:this,data:t}),this._prevDataFromSource=e}))}_interpolateVariablesInTransformationConfigs(e){var t;const n=this.state.transformations;if(0===this._variableDependency.getNames().size)return n;return n.every((e=>"object"==typeof e))?JSON.parse(Xi.interpolate(this,JSON.stringify(n),null==(t=e.request)?void 0:t.scopedVars)):n.map((t=>{var n;return"object"==typeof t?JSON.parse(Xi.interpolate(this,JSON.stringify(t),null==(n=e.request)?void 0:n.scopedVars)):t}))}}function Nl({variable:e,layout:t,showAlways:n,hideLabel:r}){return T(e,{shouldActivateOrKeepAlive:!0}).hide!==o.VariableHide.hideVariable||n?"vertical"===t?p().createElement("div",{className:Vl,"data-testid":nt.pages.Dashboard.SubMenu.submenuItem},p().createElement(Ml,{variable:e,layout:t,hideLabel:r}),p().createElement(e.Component,{model:e})):p().createElement("div",{className:Bl,"data-testid":nt.pages.Dashboard.SubMenu.submenuItem},p().createElement(Ml,{variable:e,hideLabel:r}),p().createElement(e.Component,{model:e})):null}function Ml({variable:e,layout:t,hideLabel:n}){var r;const{state:a}=e;if(e.state.hide===o.VariableHide.hideLabel||n)return null;const i=`var-${a.key}`,s=a.label||a.name;return p().createElement(Lt,{htmlFor:i,isLoading:a.loading,onCancel:()=>{var t;return null==(t=e.onCancel)?void 0:t.call(e)},label:s,error:a.error,layout:t,description:null!=(r=a.description)?r:void 0})}(class extends I{}).Component=function({model:e}){const t=Xi.getVariables(e).useState();return p().createElement(p().Fragment,null,t.variables.map((t=>p().createElement(Nl,{key:t.state.key,variable:t,layout:e.state.layout}))))};const Bl=(0,rt.css)({display:"flex","> :nth-child(2)":(0,rt.css)({borderTopLeftRadius:0,borderBottomLeftRadius:0})}),Vl=(0,rt.css)({display:"flex",flexDirection:"column"});(class extends I{}).Component=function({model:e}){const t=Xi.lookupVariable(e.state.variableName,e);if(!t)return null;return p().createElement(Nl,{key:t.state.key,variable:t,layout:e.state.layout,showAlways:!0})};class jl extends I{constructor(e){super(e),this._variablesThatHaveChanged=new Set,this._variablesToUpdate=new Set,this._updating=new Map,this._variableValueRecorder=new je,this._variableDependency=new $l(this._handleParentVariableUpdatesCompleted.bind(this)),this._onActivate=()=>{const e=Xi.getTimeRange(this);this._subs.add(this.subscribeToEvent(te,(e=>this._handleVariableValueChanged(e.payload)))),this._subs.add(e.subscribeToState((()=>{this._refreshTimeRangeBasedVariables()}))),this._subs.add(this.subscribeToState(this._onStateChanged)),this._checkForVariablesThatChangedWhileInactive();for(const e of this.state.variables)this._variableNeedsUpdate(e)&&this._variablesToUpdate.add(e);return this._updateNextBatch(),this._onDeactivate},this._onDeactivate=()=>{var e;for(const t of this._updating.values())null==(e=t.subscription)||e.unsubscribe();for(const e of this.state.variables)this._variablesToUpdate.has(e)||this._updating.has(e)||this._variableValueRecorder.recordCurrentValue(e);this._variablesToUpdate.clear(),this._updating.clear()},this._onStateChanged=(e,t)=>{const n=this._variablesToUpdate.size;for(const n of t.variables)if(!e.variables.includes(n)){const e=this._updating.get(n);(null==e?void 0:e.subscription)&&e.subscription.unsubscribe(),this._updating.delete(n),this._variablesToUpdate.delete(n)}for(const n of e.variables)t.variables.includes(n)||this._variableNeedsUpdate(n)&&this._variablesToUpdate.add(n);0===n&&this._variablesToUpdate.size>0&&this._updateNextBatch()},this.addActivationHandler(this._onActivate)}getByName(e){return this.state.variables.find((t=>t.state.name===e))}_refreshTimeRangeBasedVariables(){for(const e of this.state.variables)"refresh"in e.state&&e.state.refresh===o.VariableRefresh.onTimeRangeChanged&&this._variablesToUpdate.add(e);this._updateNextBatch()}_checkForVariablesThatChangedWhileInactive(){if(this._variableValueRecorder.hasValues())for(const e of this.state.variables)this._variableValueRecorder.hasValueChanged(e)&&(Fl(e,"Changed while in-active"),this._addDependentVariablesToUpdateQueue(e))}_variableNeedsUpdate(e){return!e.isLazy&&(!!e.validateAndUpdate&&(!this._variableValueRecorder.hasRecordedValue(e)||(Fl(e,"Skipping updateAndValidate current value valid"),!1)))}_updateNextBatch(){for(const e of this._variablesToUpdate){if(!e.validateAndUpdate)throw new Error("Variable added to variablesToUpdate but does not have validateAndUpdate");if(this._updating.has(e))continue;if(Xi.hasVariableDependencyInLoadingState(e))continue;const t={variable:e};this._updating.set(e,t),Fl(e,"updateAndValidate started"),t.subscription=e.validateAndUpdate().subscribe({next:()=>this._validateAndUpdateCompleted(e),complete:()=>this._validateAndUpdateCompleted(e),error:t=>this._handleVariableError(e,t)})}}_validateAndUpdateCompleted(e){var t;if(!this._updating.has(e))return;const n=this._updating.get(e);null==(t=null==n?void 0:n.subscription)||t.unsubscribe(),this._updating.delete(e),this._variablesToUpdate.delete(e),Fl(e,"updateAndValidate completed"),this._notifyDependentSceneObjects(e),this._updateNextBatch()}cancel(e){var t;const n=this._updating.get(e);null==(t=null==n?void 0:n.subscription)||t.unsubscribe(),this._updating.delete(e),this._variablesToUpdate.delete(e)}_handleVariableError(e,t){var n;const r=this._updating.get(e);null==(n=null==r?void 0:r.subscription)||n.unsubscribe(),this._updating.delete(e),this._variablesToUpdate.delete(e),e.setState({loading:!1,error:t.message}),console.error("SceneVariableSet updateAndValidate error",t),Fl(e,"updateAndValidate error",t),this._notifyDependentSceneObjects(e),this._updateNextBatch()}_handleVariableValueChanged(e){this._variablesThatHaveChanged.add(e),this._addDependentVariablesToUpdateQueue(e),this._updating.has(e)||(this._updateNextBatch(),this._notifyDependentSceneObjects(e))}_handleParentVariableUpdatesCompleted(e,t){t&&this._addDependentVariablesToUpdateQueue(e),this._variablesToUpdate.size>0&&0===this._updating.size&&this._updateNextBatch()}_addDependentVariablesToUpdateQueue(e){for(const t of this.state.variables)t.variableDependency&&t.variableDependency.hasDependencyOn(e.state.name)&&(Fl(t,"Added to update queue, dependant variable value changed"),this._updating.has(t)&&t.onCancel&&t.onCancel(),this._variablesToUpdate.add(t))}_notifyDependentSceneObjects(e){this.parent&&(this._traverseSceneAndNotify(this.parent,e,this._variablesThatHaveChanged.has(e)),this._variablesThatHaveChanged.delete(e))}_traverseSceneAndNotify(e,t,n){if(this!==e&&e.isActive){if(e.state.$variables&&e.state.$variables!==this){const n=e.state.$variables.getByName(t.state.name);if(null==n?void 0:n.isAncestorLoading)t=n;else if(n)return}e.variableDependency&&e.variableDependency.variableUpdateCompleted(t,n),e.forEachChild((e=>this._traverseSceneAndNotify(e,t,n)))}}isVariableLoadingOrWaitingToUpdate(e){return!(!e.isAncestorLoading||!e.isAncestorLoading())||(!(!this._variablesToUpdate.has(e)&&!this._updating.has(e))||Xi.hasVariableDependencyInLoadingState(e))}}function Fl(e,t,n){V(0,e.state.name)}class $l{constructor(e){this._variableUpdatesCompleted=e,this._emptySet=new Set}getNames(){return this._emptySet}hasDependencyOn(e){return!1}variableUpdateCompleted(e,t){this._variableUpdatesCompleted(e,t)}}class zl extends Re{constructor(e){super({type:"custom",query:"",value:"",text:"",options:[],name:"",...e}),this._variableDependency=new Di(this,{statePaths:["query"]})}getValueOptions(e){var t;const n=(null!=(t=Xi.interpolate(this,this.state.query).match(/(?:\\,|[^,])+/g))?t:[]).map((e=>{var t;e=e.replace(/\\,/g,",");const n=null!=(t=/^(.+)\s:\s(.+)$/g.exec(e))?t:[];if(3===n.length){const[,e,t]=n;return{label:e.trim(),value:t.trim()}}return{label:e.trim(),value:e.trim()}}));return n.length||(this.skipNextValidation=!0),(0,f.of)(n)}}zl.Component=({model:e})=>p().createElement(St,{model:e});class Ul extends Re{constructor(e){super({type:"datasource",value:"",text:"",options:[],name:"",regex:"",pluginId:"",...e}),this._variableDependency=new Di(this,{statePaths:["regex"]})}getValueOptions(e){if(!this.state.pluginId)return(0,f.of)([]);const t=(0,i.getDataSourceSrv)().getList({metrics:!0,variables:!1,pluginId:this.state.pluginId});let n;if(this.state.regex){const e=Xi.interpolate(this,this.state.regex,void 0,"regex");n=(0,o.stringToJsRegex)(e)}const r=[];for(let e=0;e5)return[];for(const a of n){const n=`${e}${a}`;r.push({name:n,children:Gl(n,t+1)})}return r}function ql(e,t,n){if(n>=t.length)return e;if("*"===t[n])return e;const r=t[n];let a=[],o=[r];r.startsWith("{")&&(o=r.replace(/\{|\}/g,"").split(","));for(const r of e)for(const e of o)if(-1!==e.indexOf("*")){const o=e.replace("*","");new RegExp(`^${o}.*`,"gi").test(r.name)&&(a=a.concat(ql([r],t,n+1)))}else r.name===e&&(a=a.concat(ql(r.children,t,n+1)));return a}function Ql(e){if(0===e.indexOf("value"))return[{name:e,children:[]}];return ql(Gl("",0),e.split("."),0)}Ul.Component=({model:e})=>p().createElement(St,{model:e});function Yl({model:e}){const{value:t,key:n,loading:r}=e.useState(),a=(0,u.useCallback)((t=>{e.setValue(t.currentTarget.value)}),[e]),o=(0,u.useCallback)((t=>{"Enter"===t.key&&e.setValue(t.currentTarget.value)}),[e]);return p().createElement(qe.AutoSizeInput,{id:n,placeholder:"Enter value",minWidth:15,maxWidth:30,value:t,loading:r,onBlur:a,onKeyDown:o})}(class extends Re{constructor(e,t=!1){super({type:"custom",name:"Test",value:"Value",text:"Text",query:"Query",options:[],refresh:o.VariableRefresh.onDashboardLoad,updateOptions:!0,...e}),this.completeUpdate=new f.Subject,this.isGettingValues=!0,this.getValueOptionsCount=0,this.isLazy=!1,this._variableDependency=new Di(this,{statePaths:["query"]}),this.isLazy=t}getValueOptions(e){const{delayMs:t}=this.state;this.getValueOptionsCount+=1;const n=Xi.getQueryController(this);return new f.Observable((e=>{const r={type:"variable",origin:this,cancel:()=>e.complete()};if(n&&n.queryStarted(r),this.setState({loading:!0}),this.state.throwError)throw new Error(this.state.throwError);const a=Xi.interpolate(this,this.state.query),o=this.getOptions(a),i=this.completeUpdate.subscribe({next:()=>{const t={issuedQuery:a,loading:!1};this.state.updateOptions&&(t.options=o),this.setState(t),e.next(o),e.complete()}});let s;return t?s=window.setTimeout((()=>this.signalUpdateCompleted()),t):0===t&&this.signalUpdateCompleted(),this.isGettingValues=!0,()=>{i.unsubscribe(),window.clearTimeout(s),this.isGettingValues=!1,this.state.loading&&this.setState({loading:!1}),n&&n.queryCompleted(r)}}))}cancel(){const e=L(this,(e=>e instanceof jl?e:void 0));null==e||e.cancel(this)}getOptions(e){return this.state.optionsToReturn?this.state.optionsToReturn:Ql(e).map((e=>({label:e.name,value:e.name})))}signalUpdateCompleted(){this.completeUpdate.next(1)}}).Component=({model:e})=>p().createElement(St,{model:e});(class extends I{constructor(e){super({type:"textbox",value:"",name:"",...e}),this._urlSync=new W(this,{keys:()=>[this.getKey()]})}getValue(){return this.state.value}setValue(e){e!==this.state.value&&(this.setState({value:e}),this.publishEvent(new te(this),!0))}getKey(){return`var-${this.state.name}`}getUrlState(){return{[this.getKey()]:this.state.value}}updateFromUrl(e){const t=e[this.getKey()];"string"==typeof t&&this.setValue(t)}}).Component=({model:e})=>p().createElement(Yl,{model:e});(class extends I{constructor(e){super({type:"interval",value:"",intervals:["1m","10m","30m","1h","6h","12h","1d","7d","14d","30d"],name:"",autoStepCount:30,autoMinInterval:"10s",autoEnabled:!1,refresh:rs.CO.onTimeRangeChanged,...e}),this._onChange=e=>{this.setState({value:e.value}),this.publishEvent(new te(this),!0)},this._urlSync=new W(this,{keys:()=>[this.getKey()]})}getKey(){return`var-${this.state.name}`}getUrlState(){return{[this.getKey()]:this.state.value}}updateFromUrl(e){const t={},n=e[this.getKey()];"string"==typeof n&&(n.startsWith("$__auto_interval_")?t.value=ve:t.value=n),this.setState(t)}getOptionsForSelect(){const{value:e,intervals:t,autoEnabled:n}=this.state;let r=t.map((e=>({value:e,label:e})));return n&&(r=[{value:ve,label:"Auto"},...r]),e&&!r.some((t=>t.value===e))&&r.push({value:e,label:e}),r}getValue(){const{value:e,autoStepCount:t,autoMinInterval:n}=this.state;return e===ve?this.getAutoRefreshInteval(t,n):e}getAutoRefreshInteval(e,t){const n=Xi.getTimeRange(this).state.value;return o.rangeUtil.calculateInterval(n,e,t).interval}validateAndUpdate(){const{value:e,intervals:t}=this.state;let n=!1;if(e===ve)n=!0;else if(!e&&t.length>0){const e=t[0];this.setState({value:e}),n=!0}return n&&this.publishEvent(new te(this),!0),(0,f.of)({})}}).Component=({model:e})=>{const{key:t,value:n}=e.useState();return p().createElement(qe.Select,{id:t,placeholder:"Select value",width:"auto",value:n,tabSelectsValue:!1,options:e.getOptionsForSelect(),onChange:e._onChange})};var Xl,Kl,Zl=e=>{throw TypeError(e)},Jl=(e,t,n)=>t.has(e)||Zl("Cannot "+n),ec=(e,t,n)=>(Jl(e,t,"read from private field"),n?n.call(e):t.get(e)),tc=(e,t,n)=>t.has(e)?Zl("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),nc=(e,t,n,r)=>(Jl(e,t,"write to private field"),t.set(e,n),n);class rc extends o.BusEventWithPayload{}rc.type="new-scene-object-added";class ac{constructor(e={},t=i.locationService){this._urlKeyMapper=new Ki,this._options=e,this._locationService=t,this._paramsCache=new oc(t)}initSync(e){var t;if(this._subs&&(V(0,0,null==(t=this._sceneRoot)||t.state.key),this._subs.unsubscribe()),V(0,0,e.state.key),this._sceneRoot=e,this._subs=new f.Subscription,this._subs.add(e.subscribeToEvent(E,(e=>{this.handleSceneObjectStateChanged(e.payload.changedObject)}))),this._subs.add(e.subscribeToEvent(rc,(e=>{this.handleNewObject(e.payload)}))),this._urlKeyMapper.clear(),this._lastLocation=this._locationService.getLocation(),this.handleNewObject(this._sceneRoot),this._options.updateUrlOnInit){const t=Ji(e);(function(e,t){for(let n in e)if(!ns(t.getAll(n),e[n]))return!0;return!1})(t,this._paramsCache.getParams())&&this._locationService.partial(t,!0)}}cleanUp(e){this._sceneRoot===e&&(V(),this._subs&&(this._subs.unsubscribe(),this._subs=void 0,V(0,0,(this._sceneRoot.state.key,e.state.key))),this._sceneRoot=void 0,this._lastLocation=void 0)}handleNewLocation(e){this._sceneRoot&&this._lastLocation!==e&&(V(),this._lastLocation=e,es(this._sceneRoot,this._paramsCache.getParams(),this._urlKeyMapper))}handleNewObject(e){this._sceneRoot&&es(e,this._paramsCache.getParams(),this._urlKeyMapper)}handleSceneObjectStateChanged(e){var t,n;if(!e.urlSync)return;const r=e.urlSync.getUrlState(),a=this._locationService.getSearch(),o={};for(const[t,n]of Object.entries(r)){const r=this._urlKeyMapper.getUniqueKey(t,e);ns(a.getAll(r),n)||(o[r]=n)}if(Object.keys(o).length>0){const a=!0!==(null==(n=(t=e.urlSync).shouldCreateHistoryStep)?void 0:n.call(t,r));V(),this._locationService.partial(o,a),this._lastLocation=this._locationService.getLocation()}}getUrlState(e){return Ji(e)}}class oc{constructor(e){this.locationService=e,tc(this,Xl),tc(this,Kl)}getParams(){const e=this.locationService.getLocation();return ec(this,Kl)===e||(nc(this,Kl,e),nc(this,Xl,new URLSearchParams(e.search))),ec(this,Xl)}}function ic(e,t={}){const n=(0,a.useLocation)(),r=Ce(),[o,i]=(0,u.useState)(!1),s=function(e,t){return(0,u.useMemo)((()=>new ac({updateUrlOnInit:e.updateUrlOnInit,createBrowserHistorySteps:e.createBrowserHistorySteps},t)),[e.updateUrlOnInit,e.createBrowserHistorySteps,t])}(t,r);return(0,u.useEffect)((()=>(s.initSync(e),i(!0),()=>s.cleanUp(e))),[e,s]),(0,u.useEffect)((()=>{const e=r.getLocation(),t=e!==n?e:n;e!==n&&V(),s.handleNewLocation(t)}),[e,s,n,r]),o}Xl=new WeakMap,Kl=new WeakMap;class sc extends I{constructor(e){super(e),this.addActivationHandler((()=>{const e=function(e){const t=window.__grafanaSceneContext;return V(),window.__grafanaSceneContext=e,()=>{window.__grafanaSceneContext===e&&(V(),window.__grafanaSceneContext=t)}}(this);return()=>{e()}}))}}sc.Component=function({model:e}){const{body:t,controls:n}=e.useState(),r=(0,qe.useStyles2)(lc);return p().createElement("div",{className:r.container},n&&p().createElement("div",{className:r.controls},n.map((e=>p().createElement(e.Component,{key:e.state.key,model:e})))),p().createElement("div",{className:r.body},p().createElement(t.Component,{model:t})))};const lc=e=>({container:(0,rt.css)({flexGrow:1,display:"flex",gap:e.spacing(2),minHeight:"100%",flexDirection:"column"}),body:(0,rt.css)({flexGrow:1,display:"flex",gap:e.spacing(1)}),controls:(0,rt.css)({display:"flex",gap:e.spacing(2),alignItems:"flex-end",flexWrap:"wrap"})});class cc extends I{addItem(e){this.setState({items:this.state.items?[...this.state.items,e]:[e]})}setItems(e){this.setState({items:e})}}cc.Component=function({model:e}){const{items:t=[]}=e.useState(),n=p().useRef(null);(0,u.useEffect)((()=>{n.current&&n.current.focus()}),[]);const r=e=>e.map((e=>{switch(e.type){case"divider":return p().createElement(qe.Menu.Divider,{key:e.text});case"group":return p().createElement(qe.Menu.Group,{key:e.text,label:e.text},e.subMenu?r(e.subMenu):void 0);default:return p().createElement(qe.Menu.Item,{key:e.text,label:e.text,icon:e.iconClassName,childItems:e.subMenu?r(e.subMenu):void 0,url:e.href,onClick:e.onClick,shortcut:e.shortcut,testId:nt.components.Panels.Panel.menuItems(e.text)})}}));return p().createElement(qe.Menu,{ref:n},r(t))};var uc=function(){return uc=Object.assign||function(e){for(var t,n=1,r=arguments.length;nn?async function(e,t,n,r){var a,o,s,l;const c=null==(a=e.request)?void 0:a.targets;if(!c)return"";const{from:u,to:d}=n,p=null==(o=e.request)?void 0:o.filters,f={__sceneObject:It(t)},h=(await Promise.allSettled(c.map((async e=>{var t;const n=await(0,i.getDataSourceSrv)().get(e.datasource);return(null==(t=n.interpolateVariablesInQueries)?void 0:t.call(n,[e],null!=f?f:{},p)[0])||e})))).filter((e=>"fulfilled"===e.status)).map((e=>e.value)).map((e=>{var t;return null!=(t=null==r?void 0:r(e))?t:e})),g=null!=h?h:[];let m=new Set(g.map((e=>{var t;return null==(t=e.datasource)?void 0:t.uid}))).size>1?"-- Mixed --":null==(l=null==(s=g.find((e=>{var t;return!!(null==(t=e.datasource)?void 0:t.uid)})))?void 0:s.datasource)?void 0:l.uid;if((null==g?void 0:g.length)&&m&&u&&d)return`/explore?left=${encodeURIComponent(JSON.stringify({datasource:m,queries:g,range:{from:u,to:d}}))}`;return""}(n,e,{from:r,to:a},t.transform):""),[n,e,r,a]),s=(0,i.useReturnToPrevious)();if(o)return p().createElement(qe.LinkButton,{key:"explore",icon:"compass",size:"sm",variant:"secondary",href:o,onClick:()=>{var e;t.returnToPrevious&&s(t.returnToPrevious.title,t.returnToPrevious.href),null==(e=t.onClick)||e.call(t)}},"Explore");return null};function pc(e){return e instanceof Oc}(class extends I{}).Component=function({model:e}){const{body:t}=e.useState(),n=e.parent;if(n&&(r=n,!(r instanceof Rc))&&!pc(n))throw new Error("SceneGridItem must be a child of SceneGridLayout or SceneGridRow");var r;if(!t)return null;return p().createElement(t.Component,{model:t})};var fc=n(2548),hc=n.n(fc);const gc=function(e){(0,u.useEffect)(e,[])};function mc(){const e=(0,u.useRef)(void 0);return null!=e.current||(e.current=(0,k.uniqueId)()),e.current}const vc=p().forwardRef((({children:e,onLoad:t,onChange:n,className:r,...a},o)=>{const i=mc(),{hideEmpty:s}=(0,qe.useStyles2)(bc),[l,c]=(0,u.useState)(!1),[d,f]=(0,u.useState)(!1),h=(0,u.useRef)(null);return(0,u.useImperativeHandle)(o,(()=>h.current)),gc((()=>{vc.addCallback(i,(e=>{!l&&e.isIntersecting&&(c(!0),null==t||t()),f(e.isIntersecting),null==n||n(e.isIntersecting)}));const e=h.current;return e&&vc.observer.observe(e),()=>{e&&vc.observer.unobserve(e),delete vc.callbacks[i],0===Object.keys(vc.callbacks).length&&vc.observer.disconnect()}})),p().createElement("div",{id:i,ref:h,className:`${s} ${r}`,...a},!l&&" ",l&&("function"==typeof e?e({isInView:d}):e))}));function bc(){return{hideEmpty:(0,rt.css)({"&:empty":{display:"none"}})}}vc.displayName="LazyLoader",vc.callbacks={},vc.addCallback=(e,t)=>vc.callbacks[e]=t,vc.observer=new IntersectionObserver((e=>{for(const t of e)"function"==typeof vc.callbacks[t.target.id]&&vc.callbacks[t.target.id](t)}),{rootMargin:"100px"});const yc=p().forwardRef(((e,t)=>{var n;const{grid:r,layoutItem:a,index:o,totalCount:i,isLazy:s,style:l,onLoad:c,onChange:u,children:d,...f}=e,h=r.getSceneLayoutChild(a.i),g=null==(n=h.getClassName)?void 0:n.call(h),m=p().createElement(h.Component,{model:h,key:h.state.key});return s?p().createElement(vc,{...f,key:h.state.key,"data-griditem-key":h.state.key,className:(0,rt.cx)(g,e.className),style:l,ref:t},m,d):p().createElement("div",{...f,ref:t,key:h.state.key,"data-griditem-key":h.state.key,className:(0,rt.cx)(g,e.className),style:l},m,d)}));function wc(e,t,n){e.current?t?e.current.classList.add("react-grid-layout--enable-move-animations"):e.current.classList.remove("react-grid-layout--enable-move-animations"):n||setTimeout((()=>wc(e,t,!0)),50)}yc.displayName="GridItemWrapper";const Sc=p().forwardRef((({handleAxis:e,...t},n)=>{const r=(0,qe.useStyles2)(xc);return p().createElement("div",{ref:n,...t,className:`${r} scene-resize-handle`},p().createElement("svg",{width:"16px",height:"16px",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},p().createElement("path",{d:"M21 15L15 21M21 8L8 21",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})))}));function xc(e){return(0,rt.css)({position:"absolute",bottom:0,right:0,zIndex:999,padding:e.spacing(1.5,0,0,1.5),color:e.colors.border.strong,cursor:"se-resize","&:hover":{color:e.colors.text.link},svg:{display:"block"},".react-resizable-hide &":{display:"none"}})}Sc.displayName="ResizeHandle";class Ec extends o.BusEventWithPayload{}Ec.type="scene-grid-layout-drag-start";const Cc=class e extends I{constructor(e){super({...e,children:Dc(e.children)}),this._skipOnLayoutChange=!1,this._oldLayout=[],this._loadOldLayout=!1,this.onLayoutChange=e=>{if(this._skipOnLayoutChange)this._skipOnLayoutChange=!1;else{this._loadOldLayout&&(e=[...this._oldLayout],this._loadOldLayout=!1);for(const r of e){const e=this.getSceneLayoutChild(r.i),a={x:r.x,y:r.y,width:r.w,height:r.h};t=e.state,n=a,(t.x!==n.x||t.y!==n.y||t.width!==n.width||t.height!==n.height)&&e.setState({...a})}var t,n;this.setState({children:Dc(this.state.children)})}},this.onResizeStop=(e,t,n)=>{this.getSceneLayoutChild(n.i).setState({width:n.w,height:n.h})},this.onDragStart=e=>{this._oldLayout=[...e]},this.onDragStop=(e,t,n)=>{const r=this.getSceneLayoutChild(n.i);e=_c(e);for(let t=0;te.i===n.i));let o=this.findGridItemSceneParent(e,a-1),i=this.state.children;r instanceof Oc&&o instanceof Oc&&(this.isRowDropValid(e,n,a)||(this._loadOldLayout=!0),o=this),o!==r.parent&&(i=this.moveChildTo(r,o)),this.setState({children:Dc(i)}),this._skipOnLayoutChange=!0}}isDraggable(){var e;return null!=(e=this.state.isDraggable)&&e}getDragClass(){return`grid-drag-handle-${this.state.key}`}getDragClassCancel(){return"grid-drag-cancel"}getDragHooks(){return{onDragStart:(e,t)=>{this.publishEvent(new Ec({evt:e,panel:t}),!0)}}}toggleRow(e){var t,n;if(!e.state.isCollapsed)return e.setState({isCollapsed:!0}),void this.setState({});const r=e.state.children;if(0===r.length)return e.setState({isCollapsed:!1}),void this.setState({});const a=e.state.y,o=(null!=(t=r[0].state.y)?t:a)-(a+1);let i=a;for(const e of r){const t={...e.state};t.y=null!=(n=t.y)?n:a,t.y-=o,t.y!==e.state.y&&e.setState(t),i=Math.max(i,Number(t.y)+Number(t.height))}const s=i-a-1;for(const t of this.state.children)if(t.state.y>a&&this.pushChildDown(t,s),pc(t)&&t!==e)for(const e of t.state.children)e.state.y>a&&this.pushChildDown(e,s);e.setState({isCollapsed:!1}),this.setState({})}ignoreLayoutChange(e){this._skipOnLayoutChange=e}getSceneLayoutChild(e){for(const t of this.state.children){if(t.state.key===e)return t;if(t instanceof Oc)for(const n of t.state.children)if(n.state.key===e)return n}throw new Error("Scene layout child not found for GridItem")}pushChildDown(e,t){e.setState({y:e.state.y+t})}findGridItemSceneParent(e,t){for(let n=t;n>=0;n--){const t=e[n],r=this.getSceneLayoutChild(t.i);if(r instanceof Oc)return r.state.isCollapsed?this:r}return this}isRowDropValid(t,n,r){if(t[t.length-1].i===n.i)return!0;const a=this.getSceneLayoutChild(t[r+1].i);return a instanceof Oc||a.parent instanceof e}moveChildTo(t,n){const r=t.parent;let a=this.state.children;const o=t.clone({key:t.state.key});if(r instanceof Oc){const e=r.clone();if(e.setState({children:e.state.children.filter((e=>e.state.key!==t.state.key))}),a=a.map((t=>t===r?e:t)),n instanceof Oc){const e=n.clone();e.setState({children:[...e.state.children,o]}),a=a.map((t=>t===n?e:t))}else a=[...a,o]}else if(!(n instanceof e)){a=a.filter((e=>e.state.key!==t.state.key));const e=n.clone();e.setState({children:[...e.state.children,o]}),a=a.map((t=>t===n?e:t))}return a}toGridCell(e){var t,n;const r=e.state;let a=null!=(t=r.x)?t:0,o=null!=(n=r.y)?n:0;const i=Number.isInteger(Number(r.width))?Number(r.width):4,s=Number.isInteger(Number(r.height))?Number(r.height):4;let l=e.state.isDraggable,c=e.state.isResizable;return e instanceof Oc&&(l=!!e.state.isCollapsed,c=!1),{i:e.state.key,x:a,y:o,h:s,w:i,isResizable:c,isDraggable:l}}buildGridLayout(e,t){let n=[];for(const e of this.state.children)if(n.push(this.toGridCell(e)),e instanceof Oc&&!e.state.isCollapsed)for(const t of e.state.children)n.push(this.toGridCell(t));return n=_c(n),this.state.UNSAFE_fitPanels&&(n=function(e,t){const n=t-32,r=Math.max(...e.map((e=>e.h+e.y)))/Math.floor(n/38);return e.map((e=>({...e,y:Math.round(e.y/r)||0,h:Math.round(e.h/r)||1})))}(n,t)),e<768?(this._skipOnLayoutChange=!0,n.map((e=>({...e,w:24})))):(this._skipOnLayoutChange=!1,n)}};Cc.Component=function({model:e}){const{children:t,isLazy:n,isDraggable:r,isResizable:a}=e.useState(),[o,{width:i,height:s}]=us(),l=(0,u.useRef)(null);return(0,u.useEffect)((()=>{wc(l,!!r)}),[r]),function(e){if(e.some((e=>void 0===e.state.height||void 0===e.state.width||void 0===e.state.x||void 0===e.state.y)))throw new Error("All children must have a size specified")}(t),p().createElement("div",{ref:o,style:{flex:"1 1 auto",position:"relative",zIndex:1,width:"100%"}},((t,o)=>{if(!t||!o)return null;const i=e.buildGridLayout(t,o);return p().createElement("div",{ref:l,style:{width:`${t}px`,height:"100%"},className:"react-grid-layout"},p().createElement(hc(),{width:t,isDraggable:r&&t>768,isResizable:null!=a&&a,containerPadding:[0,0],useCSSTransforms:!0,margin:[8,8],cols:24,rowHeight:30,draggableHandle:`.grid-drag-handle-${e.state.key}`,draggableCancel:".grid-drag-cancel",layout:i,onDragStart:e.onDragStart,onDragStop:e.onDragStop,onResizeStop:e.onResizeStop,onLayoutChange:e.onLayoutChange,isBounded:!1,resizeHandle:p().createElement(Sc,null)},i.map(((t,r)=>p().createElement(yc,{key:t.i,grid:e,layoutItem:t,index:r,isLazy:n,totalCount:i.length})))))})(i,s))};let Rc=Cc;function Dc(e){return e.forEach((e=>{e instanceof Oc&&e.setState({children:Dc(e.state.children)})})),[...e].sort(((e,t)=>e.state.y-t.state.y||e.state.x-t.state.x))}function _c(e){return[...e].sort(((e,t)=>e.y-t.y||e.x-t.x))}class Oc extends I{constructor(e){super({children:e.children||[],isCollapsible:e.isCollapsible||!0,title:e.title||"",...e,x:0,height:1,width:24}),this._variableDependency=new Di(this,{statePaths:["title"],handleTimeMacros:!0}),this.onCollapseToggle=()=>{this.state.isCollapsible&&this.getGridLayout().toggleRow(this)}}getGridLayout(){const e=this.parent;if(!(e&&e instanceof Rc))throw new Error("SceneGridRow must be a child of SceneGridLayout");return e}getUrlState(){return{rowc:this.state.isCollapsed?"1":"0"}}updateFromUrl(e){null!=e.rowc&&e.rowc!==this.getUrlState().rowc&&this.onCollapseToggle()}}Oc.Component=function({model:e}){const t=(0,qe.useStyles2)(Ic),{isCollapsible:n,isCollapsed:r,title:a,actions:o,children:i}=e.useState(),s=e.getGridLayout(),l=s.getDragClass(),c=s.isDraggable(),u=i?i.length:0,d=1===u?"panel":"panels";return p().createElement("div",{className:(0,rt.cx)(t.row,r&&t.rowCollapsed)},p().createElement("div",{className:t.rowTitleAndActionsGroup},p().createElement("button",{onClick:e.onCollapseToggle,className:t.rowTitleButton,"aria-label":r?"Expand row":"Collapse row","data-testid":nt.components.DashboardRow.title(Xi.interpolate(e,a,void 0,"text"))},n&&p().createElement(qe.Icon,{name:r?"angle-right":"angle-down"}),p().createElement("span",{className:t.rowTitle,role:"heading"},Xi.interpolate(e,a,void 0,"text"))),p().createElement("span",{className:(0,rt.cx)(t.panelCount,r&&t.panelCountCollapsed)},"(",u," ",d,")"),o&&p().createElement("div",{className:t.rowActions},p().createElement(o.Component,{model:o}))),c&&r&&p().createElement("div",{className:(0,rt.cx)(t.dragHandle,l)},p().createElement(qe.Icon,{name:"draggabledots"})))};const Ic=e=>({row:(0,rt.css)({width:"100%",height:"30px",display:"flex",justifyContent:"space-between",gap:e.spacing(1)}),rowTitleButton:(0,rt.css)({display:"flex",alignItems:"center",cursor:"pointer",background:"transparent",border:"none",minWidth:0,gap:e.spacing(1)}),rowCollapsed:(0,rt.css)({borderBottom:`1px solid ${e.colors.border.weak}`}),rowTitle:(0,rt.css)({fontSize:e.typography.h5.fontSize,fontWeight:e.typography.fontWeightMedium,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",flexGrow:1,minWidth:0}),collapsedInfo:(0,rt.css)({fontSize:e.typography.bodySmall.fontSize,color:e.colors.text.secondary,display:"flex",alignItems:"center",flexGrow:1}),rowTitleAndActionsGroup:(0,rt.css)({display:"flex",minWidth:0,"&:hover, &:focus-within":{"& > div":{opacity:1}}}),rowActions:(0,rt.css)({display:"flex",whiteSpace:"nowrap",opacity:0,transition:"200ms opacity ease-in 200ms","&:hover, &:focus-within":{opacity:1}}),dragHandle:(0,rt.css)({display:"flex",padding:e.spacing(0,1),alignItems:"center",justifyContent:"flex-end",cursor:"move",color:e.colors.text.secondary,"&:hover":{color:e.colors.text.primary}}),panelCount:(0,rt.css)({whiteSpace:"nowrap",paddingLeft:e.spacing(2),color:e.colors.text.secondary,fontStyle:"italic",fontSize:e.typography.size.sm,fontWeight:"normal",display:"none",lineHeight:"30px"}),panelCountCollapsed:(0,rt.css)({display:"inline-block"})});(class extends I{constructor(){super(...arguments),this.onToggle=()=>{this.setState({isCollapsed:!this.state.isCollapsed})},this.onRemove=()=>{const e=this.parent;"body"in e.state&&e.setState({body:void 0})}}}).Component=function({model:e}){const{title:t,isCollapsed:n,canCollapse:r,canRemove:a,body:o,controls:i}=e.useState(),s=(0,qe.useStyles2)(Ic),l=(0,qe.useStyles2)(Tc),c=(null!=i?i:[]).map((e=>p().createElement(e.Component,{key:e.state.key,model:e})));a&&c.push(p().createElement(qe.ToolbarButton,{icon:"times",variant:"default",onClick:e.onRemove,key:"remove-button","aria-label":"Remove scene"}));return p().createElement("div",{className:l.wrapper},p().createElement("div",{className:(0,rt.cx)(l.row,n&&l.rowCollapsed)},p().createElement("button",{onClick:e.onToggle,className:s.rowTitleButton,"aria-label":n?"Expand scene":"Collapse scene"},r&&p().createElement(qe.Icon,{name:n?"angle-right":"angle-down"}),p().createElement("span",{className:s.rowTitle,role:"heading"},Xi.interpolate(e,t,void 0,"text"))),p().createElement("div",{className:l.actions},c)),!n&&p().createElement(o.Component,{model:o}))};const Tc=e=>({wrapper:(0,rt.css)({display:"flex",flexDirection:"column",flexGrow:1,gap:e.spacing(1)}),row:(0,rt.css)({width:"100%",display:"flex",justifyContent:"space-between",gap:e.spacing(1)}),rowCollapsed:(0,rt.css)({borderBottom:`1px solid ${e.colors.border.weak}`,paddingBottom:e.spacing(1)}),actions:(0,rt.css)({display:"flex",alignItems:"center",gap:e.spacing(1),justifyContent:"flex-end",flexGrow:1})});(class extends I{constructor(){super(...arguments),this._variableDependency=new Di(this,{statePaths:["text"]})}}).Component=({model:e})=>{const{text:t,fontSize:n=20,align:r="left",key:a,spacing:o}=e.useState(),i=(0,qe.useTheme2)(),s=(0,rt.css)({fontSize:n,display:"flex",flexGrow:1,alignItems:"center",padding:o?i.spacing(o,0):void 0,justifyContent:r});return p().createElement("div",{className:s,"data-testid":a},Xi.interpolate(e,t))};(class extends I{}).Component=({model:e})=>{const t=e.useState();return p().createElement(qe.ToolbarButton,{onClick:t.onClick,icon:t.icon})};(class extends I{}).Component=({model:e})=>{const t=e.useState();return p().createElement("div",{style:{display:"flex"}},t.label&&p().createElement(Lt,{label:t.label}),p().createElement(qe.Input,{defaultValue:t.value,width:8,onBlur:t=>{e.state.onChange(parseInt(t.currentTarget.value,10))}}))};const Ac=function(e,t,n){if(!ss)return[t,is,is];if(!e)throw new Error("useLocalStorage key may not be falsy");var r=n?n.raw?function(e){return e}:n.deserializer:JSON.parse,a=(0,u.useRef)((function(e){try{var a=n?n.raw?String:n.serializer:JSON.stringify,o=localStorage.getItem(e);return null!==o?r(o):(t&&localStorage.setItem(e,a(t)),t)}catch(e){return t}})),o=(0,u.useState)((function(){return a.current(e)})),i=o[0],s=o[1];(0,u.useLayoutEffect)((function(){return s(a.current(e))}),[e]);var l=(0,u.useCallback)((function(t){try{var a="function"==typeof t?t(i):t;if(void 0===a)return;var o=void 0;o=n?n.raw?"string"==typeof a?a:JSON.stringify(a):n.serializer?n.serializer(a):JSON.stringify(a):JSON.stringify(a),localStorage.setItem(e,o),s(r(o))}catch(e){}}),[e,s]),c=(0,u.useCallback)((function(){try{localStorage.removeItem(e),s(void 0)}catch(e){}}),[e,s]);return[i,l,c]};class kc extends I{constructor(){super(...arguments),this.onZoom=()=>{const e=Xi.getTimeRange(this),t=function(e,t){const n=e.to.valueOf()-e.from.valueOf(),r=e.to.valueOf()-n/2,a=0===n?3e4:n*t,i=r+a/2,s=r-a/2;return{from:(0,o.toUtc)(s),to:(0,o.toUtc)(i),raw:{from:(0,o.toUtc)(s),to:(0,o.toUtc)(i)}}}(e.state.value,2);e.onTimeRangeChange(t)},this.onChangeFiscalYearStartMonth=e=>{Xi.getTimeRange(this).setState({fiscalYearStartMonth:e})},this.toAbsolute=()=>{const e=Xi.getTimeRange(this),t=e.state.value,n=(0,o.toUtc)(t.from),r=(0,o.toUtc)(t.to);e.onTimeRangeChange({from:n,to:r,raw:{from:n,to:r}})},this.onMoveBackward=()=>{const e=Xi.getTimeRange(this),{state:{value:t}}=e;e.onTimeRangeChange(Pc(0,t,Date.now()))},this.onMoveForward=()=>{const e=Xi.getTimeRange(this),{state:{value:t}}=e;e.onTimeRangeChange(Pc(1,t,Date.now()))}}}function Pc(e,t,n){const r=t.to.valueOf(),a=t.from.valueOf(),i=(r-a)/2;let s,l;0===e?(s=a-i,l=r-i):(s=a+i,l=r+i,l>n&&r{var t;t=e,((0,o.isDateTime)(t.raw.from)||(0,o.isDateTime)(t.raw.to))&&c([e,...null!=l?l:[]]),a.onTimeRangeChange(e)},timeZone:i,fiscalYearStartMonth:s.fiscalYearStartMonth,onMoveBackward:e.onMoveBackward,onMoveForward:e.onMoveForward,onZoom:e.onZoom,onChangeTimeZone:a.onTimeZoneChange,onChangeFiscalYearStartMonth:e.onChangeFiscalYearStartMonth,weekStart:s.weekStart,history:l,quickRanges:r})};const Lc="grafana.dashboard.timepicker.history";function Nc(e){return JSON.parse(e).map((e=>o.rangeUtil.convertRawToRange(e,"utc",void 0,"YYYY-MM-DD HH:mm:ss")))}function Mc(e){return JSON.stringify((t=e.map((e=>({from:"string"==typeof e.raw.from?e.raw.from:e.raw.from.toISOString(),to:"string"==typeof e.raw.to?e.raw.to:e.raw.to.toISOString()}))),(0,k.uniqBy)(t,(e=>e.from+e.to)).slice(0,4)));var t}const Bc=["5s","10s","30s","1m","5m","15m","30m","1h","2h","1d"];class Vc extends I{constructor(e){var t,n,r;super({refresh:"",...e,autoValue:void 0,autoEnabled:null==(t=e.autoEnabled)||t,autoMinInterval:null!=(n=e.autoMinInterval)?n:i.config.minRefreshInterval,intervals:(null!=(r=e.intervals)?r:Bc).filter((t=>{var n;const r=null!=(n=e.minRefreshInterval)?n:i.config.minRefreshInterval;try{return!r||o.rangeUtil.intervalToMs(t)>=o.rangeUtil.intervalToMs(r)}catch(e){return!1}}))}),this._urlSync=new W(this,{keys:["refresh"]}),this._autoRefreshBlocked=!1,this.onRefresh=()=>{const e=Xi.getQueryController(this);if(null==e||e.startProfile("SceneRefreshPicker"),null==e?void 0:e.state.isRunning)return void e.cancelAll();const t=Xi.getTimeRange(this);this._intervalTimer&&clearInterval(this._intervalTimer),t.onRefresh(),this.setupIntervalTimer()},this.onIntervalChanged=e=>{this.setState({refresh:e}),this.setupIntervalTimer()},this.setupAutoTimeRangeListener=()=>Xi.getTimeRange(this).subscribeToState(((e,t)=>{e.from===t.from&&e.to===t.to||this.setupIntervalTimer()})),this.calculateAutoRefreshInterval=()=>{var e;const t=Xi.getTimeRange(this),n=null!=(e=null==window?void 0:window.innerWidth)?e:2e3;return o.rangeUtil.calculateInterval(t.state.value,n,this.state.autoMinInterval)},this.setupIntervalTimer=()=>{var e;const t=Xi.getTimeRange(this),{refresh:n,intervals:r}=this.state;if((this._intervalTimer||""===n)&&clearInterval(this._intervalTimer),""===n)return;if(n!==qe.RefreshPicker.autoOption.value&&r&&!r.includes(n))return;let a;if(null==(e=this._autoTimeRangeListener)||e.unsubscribe(),n===qe.RefreshPicker.autoOption.value){const e=this.calculateAutoRefreshInterval();a=e.intervalMs,this._autoTimeRangeListener=this.setupAutoTimeRangeListener(),e.interval!==this.state.autoValue&&this.setState({autoValue:e.interval})}else a=o.rangeUtil.intervalToMs(n);this._intervalTimer=setInterval((()=>{if(this.isTabVisible()){const e=Xi.getQueryController(this);null==e||e.startProfile("SceneRefreshPicker"),t.onRefresh()}else this._autoRefreshBlocked=!0}),a)},this.addActivationHandler((()=>{this.setupIntervalTimer();const e=()=>{this._autoRefreshBlocked&&"visible"===document.visibilityState&&(this._autoRefreshBlocked=!1,this.onRefresh())};return document.addEventListener("visibilitychange",e),()=>{var t;this._intervalTimer&&clearInterval(this._intervalTimer),document.removeEventListener("visibilitychange",e),null==(t=this._autoTimeRangeListener)||t.unsubscribe()}}))}getUrlState(){let e=this.state.refresh;return"string"==typeof e&&0!==e.length||(e=void 0),{refresh:e}}updateFromUrl(e){const{intervals:t}=this.state;let n=e.refresh;"string"==typeof n&&function(e){try{return o.rangeUtil.describeInterval(e).count>0}catch(e){return!1}}(n)&&((null==t?void 0:t.includes(n))?this.setState({refresh:n}):this.setState({refresh:t?t[0]:void 0}))}isTabVisible(){return void 0===document.visibilityState||"visible"===document.visibilityState}}Vc.Component=function({model:e}){var t;const{refresh:n,intervals:r,autoEnabled:a,autoValue:o,isOnCanvas:i,primary:s,withText:l}=e.useState(),c=function(e){const t=Xi.getQueryController(e);if(!t)return!1;return t.useState().isRunning}(e);let u,d,f=n===(null==(t=qe.RefreshPicker.autoOption)?void 0:t.value)?o:l?"Refresh":void 0;c&&(u="Cancel all queries",l&&(f="Cancel"));l&&(d="96px");return p().createElement(qe.RefreshPicker,{showAutoInterval:a,value:n,intervals:r,tooltip:u,width:d,text:f,onRefresh:()=>{e.onRefresh()},primary:s,onIntervalChanged:e.onIntervalChanged,isLoading:c,isOnCanvas:null==i||i})};const jc=e=>`${e}-compare`,Fc="__previousPeriod",$c="__noPeriod",zc={label:"Previous period",value:Fc},Uc={label:"No comparison",value:$c},Wc=[{label:"Day before",value:"24h"},{label:"Week before",value:"1w"},{label:"Month before",value:"1M"}];(class extends I{constructor(e){super({compareOptions:Wc,...e}),this._urlSync=new W(this,{keys:["compareWith"]}),this._onActivate=()=>{const e=Xi.getTimeRange(this);this.setState({compareOptions:this.getCompareOptions(e.state.value)}),this._subs.add(e.subscribeToState((e=>{const t=this.getCompareOptions(e.value),n={compareOptions:t};Boolean(this.state.compareWith)&&!t.find((({value:e})=>e===this.state.compareWith))&&(n.compareWith=Fc),this.setState(n)})))},this.getCompareOptions=e=>{const t=Math.ceil(e.to.diff(e.from)),n=Wc.findIndex((({value:e})=>o.rangeUtil.intervalToMs(e)>=t));return[Uc,zc,...Wc.slice(n).map((({label:e,value:t})=>({label:e,value:t})))]},this.onCompareWithChanged=e=>{e===$c?this.onClearCompare():this.setState({compareWith:e})},this.onClearCompare=()=>{this.setState({compareWith:void 0})},this.addActivationHandler(this._onActivate)}getExtraQueries(e){const t=[],n=this.getCompareTimeRange(e.range);if(!n)return t;const r=e.targets.filter((e=>!1!==e.timeRangeCompare));return r.length&&t.push({req:{...e,targets:r,range:n},processor:Hc}),t}shouldRerun(e,t,n){return e.compareWith!==t.compareWith&&void 0!==n.find((e=>!1!==e.timeRangeCompare))}getCompareTimeRange(e){let t,n;if(this.state.compareWith){if(this.state.compareWith===Fc){const r=e.to.diff(e.from);t=(0,o.dateTime)(e.from).subtract(r),n=(0,o.dateTime)(e.to).subtract(r)}else t=(0,o.dateTime)(e.from).subtract(o.rangeUtil.intervalToMs(this.state.compareWith)),n=(0,o.dateTime)(e.to).subtract(o.rangeUtil.intervalToMs(this.state.compareWith));return{from:t,to:n,raw:{from:t,to:n}}}}getUrlState(){return{compareWith:this.state.compareWith}}updateFromUrl(e){if(!e.compareWith)return;const t=G(e.compareWith);if(t){this.getCompareOptions(Xi.getTimeRange(this).state.value).find((({value:e})=>e===t))?this.setState({compareWith:t}):this.setState({compareWith:"__previousPeriod"})}}}).Component=function({model:e}){var t;const n=(0,qe.useStyles2)(Gc),{compareWith:r,compareOptions:a}=e.useState(),[o,i]=p().useState(r),s=null!=(t=a.find((({value:e})=>e===o)))?t:zc,l=a.find((({value:e})=>e===r)),c=Boolean(l),u=()=>{c?(i(r),e.onClearCompare()):c||e.onCompareWithChanged(s.value)};return p().createElement(qe.ButtonGroup,null,p().createElement(qe.ToolbarButton,{variant:"canvas",tooltip:"Enable time frame comparison",onClick:e=>{e.stopPropagation(),e.preventDefault(),u()}},p().createElement(qe.Checkbox,{label:" ",value:c,onClick:u}),"Comparison"),c?p().createElement(qe.ButtonSelect,{variant:"canvas",value:l,options:a,onChange:t=>{e.onCompareWithChanged(t.value)}}):p().createElement(qe.ToolbarButton,{className:n.previewButton,disabled:!0,variant:"canvas",isOpen:!1},s.label))};const Hc=(e,t)=>{const n=t.timeRange.from.diff(e.timeRange.from);return t.series.forEach((e=>{e.refId=jc(e.refId||""),e.meta={...e.meta,timeCompare:{diffMs:n,isTimeShiftQuery:!0}},e.fields.forEach((e=>(e.type===o.FieldType.time&&(e.values=e.values.map((e=>n<0?e-n:e+n))),e.config={...e.config,color:{mode:"fixed",fixedColor:i.config.theme.palette.gray60}},e)))})),(0,f.of)(t)};function Gc(e){return{previewButton:(0,rt.css)({"&:disabled":{border:`1px solid ${e.colors.secondary.border}`,color:e.colors.text.disabled,opacity:1}})}}(class extends I{constructor(e){super(e),this.addActivationHandler((()=>{const e=Xi.getData(this);this._subs.add(e.subscribeToState((e=>{var t;(null==(t=e.data)?void 0:t.state)===o.LoadingState.Done&&this.performRepeat(e.data)}))),e.state.data&&this.performRepeat(e.state.data)}))}performRepeat(e){const t=[];for(let n=0;n{const{body:t}=e.useState();return p().createElement(t.Component,{model:t})};(class extends I{constructor(e){super(e),this._variableDependency=new Di(this,{variableNames:[this.state.variableName],onVariableUpdateCompleted:()=>this.performRepeat()}),this.addActivationHandler((()=>this.performRepeat()))}performRepeat(){if(this._variableDependency.hasDependencyInLoadingState())return;const e=Xi.lookupVariable(this.state.variableName,this);if(!(e instanceof Re))return void console.error("SceneByVariableRepeater: variable is not a MultiValueVariable");const t=function(e){const{value:t,text:n,options:r}=e.state;if(e.hasAllValue())return r;if(Array.isArray(t)&&Array.isArray(n))return t.map(((e,t)=>({value:e,label:n[t]})));return[{value:t,label:n}]}(e),n=[];for(const e of t){const t=this.state.getLayoutChild(e);n.push(t)}this.state.body.setState({children:n})}}).Component=({model:e})=>{const{body:t}=e.useState();return p().createElement(t.Component,{model:t})};(class extends I{constructor(){super({}),this._renderBeforeActivation=!0}}).Component=e=>p().createElement("div",{style:{flexGrow:1}});class qc extends I{toggleDirection(){this.setState({direction:"row"===this.state.direction?"column":"row"})}isDraggable(){return!1}}qc.Component=function({model:e,parentState:t}){const{children:n,isHidden:r}=e.useState(),a=function(e,t){return(0,u.useMemo)((()=>{var n,r,a,o,s,l,c,u,d,p;const{direction:f="row",wrap:h}=e,g=i.config.theme2,m={};return t?Yc(m,e,t):(m.display="flex",m.flexGrow=1,m.minWidth=e.minWidth,m.minHeight=e.minHeight),m.flexDirection=f,m.gap="8px",m.flexWrap=h||"nowrap",m.alignContent="baseline",m.minWidth=m.minWidth||0,m.minHeight=m.minHeight||0,m[g.breakpoints.down("md")]={flexDirection:null!=(r=null==(n=e.md)?void 0:n.direction)?r:"column",maxWidth:null!=(o=null==(a=e.md)?void 0:a.maxWidth)?o:"unset",maxHeight:null!=(l=null==(s=e.md)?void 0:s.maxHeight)?l:"unset",height:null!=(u=null==(c=e.md)?void 0:c.height)?u:"unset",width:null!=(p=null==(d=e.md)?void 0:d.width)?p:"unset"},(0,rt.css)(m)}),[t,e])}(e.state,t);if(r)return null;return p().createElement("div",{className:a},n.map((t=>{const n=t.Component;return p().createElement(n,{key:t.state.key,model:t,parentState:e.state})})))};class Qc extends I{}function Yc(e,t,n){var r,a,o;const i=null!=(r=n.direction)?r:"row",{xSizing:s="fill",ySizing:l="fill"}=t;return e.display="flex",e.position="relative",e.flexDirection=i,"column"===i?(t.height?e.height=t.height:e.flexGrow="fill"===l?1:0,t.width?e.width=t.width:e.alignSelf="fill"===s?"stretch":"flex-start"):(t.height?e.height=t.height:e.alignSelf="fill"===l?"stretch":"flex-start",t.width?e.width=t.width:e.flexGrow="fill"===s?1:0),e.minWidth=t.minWidth,e.maxWidth=t.maxWidth,e.maxHeight=t.maxHeight,e.minHeight=null!=(a=t.minHeight)?a:n.minHeight,e.height=null!=(o=t.height)?o:n.height,e}Qc.Component=function({model:e,parentState:t}){if(!t)throw new Error("SceneFlexItem must be a child of SceneFlexLayout");const{body:n,isHidden:r}=e.useState(),a=function(e,t){return(0,u.useMemo)((()=>{var n,r,a,o,s,l,c,u,d,p;const f=i.config.theme2,h=Yc({},e,t);return h[f.breakpoints.down("md")]={maxWidth:null!=(r=null==(n=e.md)?void 0:n.maxWidth)?r:"unset",maxHeight:null!=(o=null==(a=e.md)?void 0:a.maxHeight)?o:"unset",height:null!=(c=null==(s=e.md)?void 0:s.height)?c:null==(l=t.md)?void 0:l.height,width:null!=(p=null==(u=e.md)?void 0:u.width)?p:null==(d=t.md)?void 0:d.width},(0,rt.css)(h)}),[e,t])}(e.state,t);if(!n||r)return null;return p().createElement("div",{className:a},p().createElement(n.Component,{model:n}))};class Xc extends I{constructor(e){var t,n;super({rowGap:1,columnGap:1,templateColumns:"repeat(auto-fit, minmax(400px, 1fr))",autoRows:null!=(t=e.autoRows)?t:"320px",children:null!=(n=e.children)?n:[],...e})}isDraggable(){return!1}}Xc.Component=function({model:e}){const{children:t,isHidden:n,isLazy:r}=e.useState(),a=(o=e.state,(0,u.useMemo)((()=>{var e,t,n,r,a,s,l,c,u,d,p;const f={},h=i.config.theme2;return f.display="grid",f.gridTemplateColumns=o.templateColumns,f.gridTemplateRows=o.templateRows||"unset",f.gridAutoRows=o.autoRows||"unset",f.rowGap=h.spacing(null!=(e=o.rowGap)?e:1),f.columnGap=h.spacing(null!=(t=o.columnGap)?t:1),f.justifyItems=o.justifyItems||"unset",f.alignItems=o.alignItems||"unset",f.justifyContent=o.justifyContent||"unset",f.flexGrow=1,o.md&&(f[h.breakpoints.down("md")]={gridTemplateRows:null==(n=o.md)?void 0:n.templateRows,gridTemplateColumns:null==(r=o.md)?void 0:r.templateColumns,rowGap:o.md.rowGap?h.spacing(null!=(s=null==(a=o.md)?void 0:a.rowGap)?s:1):void 0,columnGap:o.md.columnGap?h.spacing(null!=(c=null==(l=o.md)?void 0:l.rowGap)?c:1):void 0,justifyItems:null==(u=o.md)?void 0:u.justifyItems,alignItems:null==(d=o.md)?void 0:d.alignItems,justifyContent:null==(p=o.md)?void 0:p.justifyContent}),(0,rt.css)(f)}),[o]));var o;if(n)return null;return p().createElement("div",{className:a},t.map((t=>{const n=t.Component;return r?p().createElement(vc,{key:t.state.key,className:a},p().createElement(n,{key:t.state.key,model:t,parentState:e.state})):p().createElement(n,{key:t.state.key,model:t,parentState:e.state})})))};class Kc extends I{}Kc.Component=function({model:e,parentState:t}){if(!t)throw new Error("SceneCSSGridItem must be a child of SceneCSSGridLayout");const{body:n,isHidden:r}=e.useState(),a=(o=e.state,(0,u.useMemo)((()=>{const e={};return e.gridColumn=o.gridColumn||"unset",e.gridRow=o.gridRow||"unset",e.position="relative",(0,rt.css)(e)}),[o]));var o;if(!n||r)return null;return p().createElement("div",{className:a},p().createElement(n.Component,{model:n}))};const Zc=new Set(["ArrowUp","ArrowDown"]),Jc=new Set(["ArrowLeft","ArrowRight"]),eu={row:{dim:"width",axis:"clientX",min:"minWidth",max:"maxWidth"},column:{dim:"height",axis:"clientY",min:"minHeight",max:"maxHeight"}};function tu({direction:e="row",handleSize:t=32,initialSize:n="auto",primaryPaneStyles:r,secondaryPaneStyles:a,onDragFinished:o,children:i}){const s=p().Children.toArray(i),l=(0,u.useRef)(null),c=(0,u.useRef)(null),d=(0,u.useRef)(null),f=(0,u.useRef)(null),h=(0,u.useRef)(null),g=(0,u.useRef)("1fr"),m=(0,u.useRef)(void 0),v=(0,u.useRef)(void 0),b=eu[e].dim,y=eu[e].axis,w=eu[e].min,S=eu[e].max;!function(e,t,n=0,r){const a=(0,k.throttle)(t,n);(0,u.useLayoutEffect)((()=>{if(!e)return;const t=new ResizeObserver(a);return t.observe(e,{box:"device-pixel-content-box"}),()=>t.disconnect()}),r)}(f.current,(e=>{for(const t of e){if(!t.target.isSameNode(f.current))return;const e=c.current.getBoundingClientRect()[b],n=ru(c.current);l.current.ariaValueNow=`${(0,k.clamp)((e-n[w])/(n[S]-n[w])*100,0,100)}`}}),500,[S,w,e,b]);const x=(0,u.useRef)(null),E=(0,u.useCallback)((e=>{g.current=c.current.getBoundingClientRect()[b],h.current=f.current.getBoundingClientRect()[b],x.current=e[y],l.current.setPointerCapture(e.pointerId),m.current=ru(c.current),v.current=void 0}),[b,y]),C=(0,u.useCallback)((e=>{if(null!==x.current&&"1fr"!==g.current){const n=e[y]-x.current,r=m.current,a=(0,k.clamp)(g.current+n,r[w],r[S]),o=a/(h.current-t);c.current.style.flexGrow=`${o}`,d.current.style.flexGrow=""+(1-o);const i=(0,k.clamp)((a-r[w])/(r[S]-r[w])*100,0,100);l.current.ariaValueNow=`${i}`}}),[t,y,w,S]),R=(0,u.useCallback)((e=>{e.preventDefault(),e.stopPropagation(),l.current.releasePointerCapture(e.pointerId),x.current=null,null==o||o(parseFloat(c.current.style.flexGrow))}),[o]),D=(0,u.useRef)(new Set),_=(0,u.useRef)(null),O=(0,u.useCallback)((n=>{var r;if(0===D.current.size)return void(_.current=null);if("1fr"===g.current)return;const a=.3*(n-(null!=(r=_.current)?r:n));let o=0;"row"===e?(D.current.has("ArrowLeft")&&(o-=a),D.current.has("ArrowRight")&&(o+=a)):(D.current.has("ArrowUp")&&(o-=a),D.current.has("ArrowDown")&&(o+=a));const i=m.current,s=c.current.getBoundingClientRect()[b],u=(0,k.clamp)(s+o,i[w],i[S]),p=u/(h.current-t);c.current.style.flexGrow=`${p}`,d.current.style.flexGrow=""+(1-p);const f=(u-i[w])/(i[S]-i[w])*100;l.current.ariaValueNow=`${(0,k.clamp)(f,0,100)}`,_.current=n,window.requestAnimationFrame(O)}),[e,t,w,S,b]),I=(0,u.useCallback)((n=>{if("Enter"===n.key)return void(void 0===v.current?(v.current=c.current.style.flexGrow,c.current.style.flexGrow="0",d.current.style.flexGrow="1"):(c.current.style.flexGrow=v.current,d.current.style.flexGrow=""+(1-parseFloat(v.current)),v.current=void 0));if("Home"===n.key){m.current=ru(c.current),h.current=f.current.getBoundingClientRect()[b];const e=m.current[w]/(h.current-t);return c.current.style.flexGrow=`${e}`,d.current.style.flexGrow=""+(1-e),void(l.current.ariaValueNow="0")}if("End"===n.key){m.current=ru(c.current),h.current=f.current.getBoundingClientRect()[b];const e=m.current[S]/(h.current-t);return c.current.style.flexGrow=`${e}`,d.current.style.flexGrow=""+(1-e),void(l.current.ariaValueNow="100")}if(!("column"===e&&Zc.has(n.key)||"row"===e&&Jc.has(n.key))||D.current.has(n.key))return;v.current=void 0,n.preventDefault(),n.stopPropagation(),g.current=c.current.getBoundingClientRect()[b],h.current=f.current.getBoundingClientRect()[b],m.current=ru(c.current);if(!D.current.has(n.key)){const e=0===D.current.size;D.current.add(n.key),e&&window.requestAnimationFrame(O)}}),[e,O,t,S,b,w]),T=(0,u.useCallback)((t=>{"row"===e&&!Jc.has(t.key)||"column"===e&&!Zc.has(t.key)||(D.current.delete(t.key),null==o||o(parseFloat(c.current.style.flexGrow)))}),[e,o]),A=(0,u.useCallback)((()=>{c.current.style.flexGrow="0.5",d.current.style.flexGrow="0.5";const e=ru(c.current);m.current=e,g.current=c.current.getBoundingClientRect()[b],l.current.ariaValueNow=""+(g.current-e[w])/(e[S]-e[w])*100}),[S,b,w]),P=(0,u.useCallback)((()=>{D.current.size>0&&(D.current.clear(),x.current=null,null==o||o(parseFloat(c.current.style.flexGrow)))}),[o]),L=(0,qe.useStyles2)(nu),N=mc(),M=2===s.length?"visible":"hidden";return p().createElement("div",{ref:f,className:L.container,style:{flexDirection:e}},p().createElement("div",{ref:c,className:L.panel,style:{flexGrow:"auto"===n?.5:(0,k.clamp)(n,0,1),[w]:"min-content",...r},id:`start-panel-${N}`},s[0]),s[1]&&p().createElement(p().Fragment,null,p().createElement("div",{ref:l,style:{[b]:`${t}px`},className:(0,rt.cx)(L.handle,{[L.handleHorizontal]:"column"===e}),onPointerUp:R,onPointerDown:E,onPointerMove:C,onKeyDown:I,onKeyUp:T,onDoubleClick:A,onBlur:P,role:"separator","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":50,"aria-controls":`start-panel-${N}`,"aria-label":"Pane resize widget",tabIndex:0}),p().createElement("div",{ref:d,className:L.panel,style:{flexGrow:"auto"===n?.5:(0,k.clamp)(1-n,0,1),[w]:"min-content",visibility:`${M}`,...a},id:`end-panel-${N}`},s[1])))}function nu(e){return{handle:(0,rt.css)({cursor:"col-resize",position:"relative",flexShrink:0,userSelect:"none","&::before":{content:'""',position:"absolute",backgroundColor:e.colors.primary.main,left:"50%",transform:"translate(-50%)",top:0,height:"100%",width:"1px",opacity:0,transition:"opacity ease-in-out 0.2s"},"&::after":{content:'""',width:"4px",borderRadius:"4px",backgroundColor:e.colors.border.weak,transition:"background-color ease-in-out 0.2s",height:"50%",top:"calc(50% - (50%) / 2)",transform:"translateX(-50%)",position:"absolute",left:"50%"},"&:hover, &:focus-visible":{outline:"none","&::before":{opacity:1},"&::after":{backgroundColor:e.colors.primary.main}}}),handleHorizontal:(0,rt.css)({cursor:"row-resize","&::before":{left:"inherit",transform:"translateY(-50%)",top:"50%",height:"1px",width:"100%"},"&::after":{width:"50%",height:"4px",top:"50%",transform:"translateY(-50%)",left:"calc(50% - (50%) / 2)"}}),container:(0,rt.css)({display:"flex",width:"100%",flexGrow:1,overflow:"hidden"}),panel:(0,rt.css)({display:"flex",position:"relative",flexBasis:0})}}function ru(e){if(null===e)return;const t=document.body.style.overflow,n=e.style.width,r=e.style.height,a=e.style.flexGrow;document.body.style.overflow="hidden",e.style.flexGrow="0";const{width:o,height:i}=e.getBoundingClientRect();e.style.flexGrow="100";const{width:s,height:l}=e.getBoundingClientRect();return document.body.style.overflow=t,e.style.width=n,e.style.height=r,e.style.flexGrow=a,{minWidth:o,maxWidth:s,minHeight:i,maxHeight:l}}(class extends I{toggleDirection(){this.setState({direction:"row"===this.state.direction?"column":"row"})}isDraggable(){return!1}}).Component=function({model:e}){const{primary:t,secondary:n,direction:r,isHidden:a,initialSize:o,primaryPaneStyles:i,secondaryPaneStyles:s}=e.useState();if(a)return null;const l=t.Component,c=null==n?void 0:n.Component;let u=n?o:1;return p().createElement(tu,{direction:r,initialSize:null!=u?u:.5,primaryPaneStyles:i,secondaryPaneStyles:s},p().createElement(l,{key:t.state.key,model:t,parentState:e.state}),c&&n&&p().createElement(c,{key:n.state.key,model:n,parentState:e.state}))};class au extends I{constructor(){super(...arguments),this._renderBeforeActivation=!0}enrichDataRequest(){return{app:this.state.name||"app"}}}au.Component=({model:e})=>{const{pages:t,scopesBridge:n}=e.useState();return p().createElement(p().Fragment,null,n&&p().createElement(n.Component,{model:n}),p().createElement(ou.Provider,{value:e},p().createElement(a.Routes,null,t.map((e=>p().createElement(a.Route,{key:e.state.url,path:e.state.routePath,element:p().createElement(e.Component,{model:e})}))))))};const ou=(0,u.createContext)(null),iu=new Map;function su(e){const t=iu.get(e);if(t)return t;const n=e();return iu.set(e,n),n}class lu extends I{}function cu({node:e}){const t=e.useState(),n=(0,qe.useStyles2)(uu);return p().createElement("div",{className:n.container},Object.keys(t).map((r=>p().createElement("div",{className:n.row,key:r},p().createElement("div",{className:n.keyName},r),p().createElement("div",{className:n.value},function(e,t,n){if(null===t)return"null";switch(typeof t){case"number":return p().createElement(qe.Input,{type:"number",defaultValue:t,onBlur:t=>n.setState({[e]:t.currentTarget.valueAsNumber})});case"string":return p().createElement(qe.Input,{type:"text",defaultValue:t,onBlur:t=>n.setState({[e]:t.currentTarget.value})});case"object":return Pe(t)?t.constructor.name:(0,k.isPlainObject)(t)||(0,k.isArray)(t)?p().createElement(qe.JSONFormatter,{json:t,open:0}):String(t);default:return typeof t}}(r,t[r],e))))))}function uu(e){return{container:(0,rt.css)({flexGrow:1,display:"flex",gap:e.spacing(.5),flexDirection:"column"}),row:(0,rt.css)({display:"flex",gap:e.spacing(2)}),keyName:(0,rt.css)({display:"flex",flexGrow:"0",width:120,alignItems:"center",height:e.spacing(e.components.height.md)}),value:(0,rt.css)({flexGrow:1,minHeight:e.spacing(e.components.height.md),display:"flex",alignItems:"center"})}}function du({node:e,selectedObject:t,onSelect:n}){const r=(0,qe.useStyles2)(pu),a=[],o=e===t;return e.forEachChild((e=>{a.push(p().createElement(du,{node:e,key:e.state.key,selectedObject:t,onSelect:n}))})),p().createElement("div",{className:r.container},p().createElement("div",{className:(0,rt.cx)(r.name,o&&r.selected),onClick:()=>n(e)},e.constructor.name),p().createElement("div",{className:r.children},a))}function pu(e){return{container:(0,rt.css)({flexGrow:1,display:"flex",gap:e.spacing(.5),flexDirection:"column"}),name:(0,rt.css)({flexGrow:1,display:"flex",gap:e.spacing(1),fontSize:e.typography.bodySmall.fontSize,cursor:"pointer",padding:e.spacing(0,1),borderRadius:e.shape.borderRadius(2),position:"relative","&:hover":{background:e.colors.background.secondary}}),selected:(0,rt.css)({"&::before":{display:"block",content:"' '",position:"absolute",left:0,width:4,bottom:2,top:2,borderRadius:e.shape.radius.default,backgroundImage:e.colors.gradients.brandVertical}}),children:(0,rt.css)({flexGrow:1,display:"flex",flexDirection:"column",paddingLeft:e.spacing(1)})}}function fu({scene:e}){const t=(0,qe.useStyles2)(hu),[n,r]=(0,u.useState)(!1),[a,o]=(0,u.useState)();return p().createElement(p().Fragment,null,p().createElement(qe.ToolbarButton,{variant:"canvas",icon:"bug",onClick:()=>r(!0)}),n&&p().createElement(qe.Drawer,{title:"Scene debugger",onClose:()=>r(!1),size:"lg"},p().createElement("div",{className:t.panes},p().createElement("div",{className:t.pane1},p().createElement("div",{className:t.paneHeading},"Scene graph"),p().createElement(qe.CustomScrollbar,{autoHeightMin:"100%"},p().createElement("div",{className:t.treeWrapper},p().createElement(du,{node:e,selectedObject:a,onSelect:o})))),p().createElement("div",{className:t.pane2},p().createElement("div",{className:t.paneHeading},"Object details"),a&&p().createElement(cu,{node:a})))))}function hu(e){return{panes:(0,rt.css)({flexGrow:1,display:"flex",height:"100%",flexDirection:"row",marginTop:e.spacing(-2)}),pane1:(0,rt.css)({flexGrow:0,display:"flex",height:"100%",flexDirection:"column",borderRight:`1px solid ${e.colors.border.weak}`}),pane2:(0,rt.css)({flexGrow:1,display:"flex",minHeight:"100%",flexDirection:"column",paddingLeft:e.spacing(2)}),treeWrapper:(0,rt.css)({paddingRight:e.spacing(2),height:"100%",marginLeft:e.spacing(-1)}),paneHeading:(0,rt.css)({padding:e.spacing(1,0),fontWeight:e.typography.fontWeightMedium})}}function gu({page:e}){const t=l(e.state.url),n=function(e){if(e.parent instanceof bu)return e.parent;return e}(e),r=n.useState(),o=function(){const e=(0,a.useLocation)();return(0,i.locationSearchToObject)(e.search||"")}(),c=e.getScene(t),d=(0,u.useContext)(ou),f=r.initializedScene===c,{layout:h}=e.state,g=Ce();(0,u.useLayoutEffect)((()=>{f||n.initializeScene(c)}),[c,n,f]),(0,u.useEffect)((()=>()=>n.setState({initializedScene:void 0})),[n]);const m=ic(n,null==d?void 0:d.state.urlSyncOptions);if(!f&&!m)return null;const v={text:r.title,img:r.titleImg,icon:r.titleIcon,url:s(r.url,g.getSearchObject(),r.preserveUrlKeys),hideFromBreadcrumbs:r.hideFromBreadcrumbs,parentItem:mu(r.getParentPage?r.getParentPage():n.parent,o,g.getSearchObject())};r.tabs&&(v.children=r.tabs.map((t=>({text:t.state.title,icon:t.state.titleIcon,tabSuffix:t.state.tabSuffix,active:e===t,url:s(t.state.url,g.getSearchObject(),t.state.preserveUrlKeys),parentItem:v}))));let b=[];return r.controls&&(b=r.controls.map((e=>p().createElement(e.Component,{model:e,key:e.state.key})))),o["scene-debugger"]&&b.push(p().createElement(fu,{scene:n,key:"scene-debugger"})),p().createElement(i.PluginPage,{layout:h,pageNav:v,actions:b,renderTitle:r.renderTitle,subTitle:r.subTitle},p().createElement(c.Component,{model:c}))}function mu(e,t,n){if(e instanceof bu)return{text:e.state.title,url:s(e.state.url,n,e.state.preserveUrlKeys),hideFromBreadcrumbs:e.state.hideFromBreadcrumbs,parentItem:mu(e.state.getParentPage?e.state.getParentPage():e.parent,t,n)}}function vu({drilldown:e,parent:t}){const n=l(e.routePath),r=t.getDrilldownPage(e,n);return p().createElement(r.Component,{model:r})}lu.Component=({model:e})=>{const{component:t,props:n,reactNode:r}=e.useState();return t?p().createElement(t,{...n}):r||null};class bu extends I{constructor(e){super(e),this._sceneCache=new Map,this._drilldownCache=new Map,this._activationHandler=()=>{if(this.state.useScopes){if(this._scopesBridge=Xi.getScopesBridge(this),!this._scopesBridge)throw new Error("Use of scopes is enabled but no scopes bridge found");return this._scopesBridge.setEnabled(!0),()=>{var e;null==(e=this._scopesBridge)||e.setEnabled(!1)}}},this.addActivationHandler(this._activationHandler)}initializeScene(e){this.setState({initializedScene:e})}getScene(e){let t=this._sceneCache.get(e.url);if(t)return t;if(!this.state.getScene)throw new Error("Missing getScene on SceneAppPage "+this.state.title);return t=this.state.getScene(e),this._sceneCache.set(e.url,t),t}getDrilldownPage(e,t){let n=this._drilldownCache.get(t.url);return n||(n=e.getPage(t,this),this._drilldownCache.set(t.url,n),n)}enrichDataRequest(e){if(this.state.getParentPage)return this.state.getParentPage().enrichDataRequest(e);if(!this.parent)return null;const t=this.getRoot();return Le(t)?t.enrichDataRequest(e):null}}bu.Component=function({model:e}){const{tabs:t,drilldowns:n}=e.useState(),r=[];if(r.push(function(e){var t,n,r;return p().createElement(a.Route,{key:"fallback route",path:"*",element:p().createElement(gu,{page:null!=(r=null==(n=(t=e.state).getFallbackPage)?void 0:n.call(t))?r:new bu({url:"",title:"Not found",subTitle:"The url did not match any page",routePath:"*",getScene:()=>new sc({body:new qc({direction:"column",children:[new Qc({body:new lu({component:()=>p().createElement("div",{"data-testid":"default-fallback-content"},"If you found your way here using a link then there might be a bug in this application.")})})]})})})})})}(e)),t&&t.length>0)for(let n=0;np().createElement(vu,{drilldown:t,parent:e})}));t||r.push(p().createElement(a.Route,{key:"home route",path:"/",element:p().createElement(gu,{page:e})}));return p().createElement(a.Routes,null,r)};var yu=(e=>(e.Always="always",e.Auto="auto",e.Never="never",e))(yu||{}),wu=(e=>(e.Hue="hue",e.None="none",e.Opacity="opacity",e.Scheme="scheme",e))(wu||{}),Su=(e=>(e.None="none",e.Normal="normal",e.Percent="percent",e))(Su||{}),xu=(e=>(e.Auto="auto",e.Horizontal="horizontal",e.Vertical="vertical",e))(xu||{}),Eu=(e=>(e.Background="background",e.BackgroundSolid="background_solid",e.None="none",e.Value="value",e))(Eu||{}),Cu=(e=>(e.Area="area",e.Line="line",e.None="none",e))(Cu||{}),Ru=(e=>(e.Auto="auto",e.Center="center",e))(Ru||{}),Du=(e=>(e.Auto="auto",e.Name="name",e.None="none",e.Value="value",e.ValueAndName="value_and_name",e))(Du||{}),_u=(e=>(e.Inverted="inverted",e.SameAsValue="same_as_value",e.Standard="standard",e))(_u||{}),Ou=(e=>(e.Multi="multi",e.None="none",e.Single="single",e))(Ou||{}),Iu=(e=>(e.Basic="basic",e.Gradient="gradient",e.Lcd="lcd",e))(Iu||{}),Tu=(e=>(e.Color="color",e.Hidden="hidden",e.Text="text",e))(Tu||{}),Au=(e=>(e.Auto="auto",e.Hidden="hidden",e.Left="left",e.Top="top",e))(Au||{}),ku=(e=>(e.Auto="auto",e.Manual="manual",e))(ku||{}),Pu=(e=>(e.Auto="auto",e.Lg="lg",e.Md="md",e.Sm="sm",e))(Pu||{});const Lu={barRadius:0,barWidth:.97,fullHighlight:!1,groupWidth:.7,orientation:xu.Auto,showValue:yu.Auto,stacking:Su.None,xTickLabelRotation:0,xTickLabelSpacing:0},Nu={fillOpacity:80,gradientMode:wu.None,lineWidth:1},Mu={displayMode:Iu.Gradient,maxVizHeight:300,minVizHeight:16,minVizWidth:8,namePlacement:Au.Auto,showUnfilled:!0,sizing:ku.Auto,valueMode:Tu.Color},Bu={selectedSeries:0},Vu={minVizHeight:75,minVizWidth:75,showThresholdLabels:!1,showThresholdMarkers:!0,sizing:ku.Auto},ju={layers:[]};const Fu={calculate:!1,cellGap:1,cellValues:{},color:{scheme:"Oranges",fill:"dark-orange",reverse:!1,exponent:.5,steps:64},exemplars:{color:"rgba(255,0,255,0.7)"},filterValues:{le:1e-9},legend:{show:!0},selectionMode:"x",showValue:yu.Auto,tooltip:{mode:Ou.Single,yHistogram:!1,showColorScale:!1}},$u={bucketCount:30,bucketOffset:0},zu={fillOpacity:80,gradientMode:wu.None,lineWidth:1},Uu={showImage:!0};const Wu={displayLabels:[]},Hu={colorMode:Eu.Value,graphMode:Cu.Area,justifyMode:Ru.Auto,percentChangeColorMode:_u.Standard,showPercentChange:!1,textMode:Du.Auto,wideLayout:!0},Gu={alignValue:"left",mergeValues:!0,perPage:20,rowHeight:.9,showValue:yu.Auto},qu={fillOpacity:70,lineWidth:0},Qu={colWidth:.9,perPage:20,rowHeight:.9,showValue:yu.Auto},Yu={fillOpacity:70,lineWidth:1},Xu={cellHeight:Pu.Sm,footer:{show:!1,countRows:!1,reducer:[]},frameIndex:0,showHeader:!0,showTypeIcons:!1,sortBy:[]};const Ku={content:"# Title\n\nFor markdown syntax help: [commonmark.org/help](https://commonmark.org/help/)",mode:"markdown"};const Zu={fillOpacity:50,show:"points"},Ju={series:[]};class ed{constructor(){this._overrides=[]}overrideColor(e){return this._overrides[this._overrides.length-1].properties.push({id:"color",value:e}),this}overrideDecimals(e){return this._overrides[this._overrides.length-1].properties.push({id:"decimals",value:e}),this}overrideDisplayName(e){return this._overrides[this._overrides.length-1].properties.push({id:"displayName",value:e}),this}overrideFilterable(e){return this._overrides[this._overrides.length-1].properties.push({id:"filterable",value:e}),this}overrideLinks(e){return this._overrides[this._overrides.length-1].properties.push({id:"links",value:e}),this}overrideMappings(e){return this._overrides[this._overrides.length-1].properties.push({id:"mappings",value:e}),this}overrideMax(e){return this._overrides[this._overrides.length-1].properties.push({id:"max",value:e}),this}overrideMin(e){return this._overrides[this._overrides.length-1].properties.push({id:"min",value:e}),this}overrideNoValue(e){return this._overrides[this._overrides.length-1].properties.push({id:"noValue",value:e}),this}overrideThresholds(e){return this._overrides[this._overrides.length-1].properties.push({id:"thresholds",value:e}),this}overrideUnit(e){return this._overrides[this._overrides.length-1].properties.push({id:"unit",value:e}),this}}class td extends ed{match(e){return this._overrides.push({matcher:e,properties:[]}),this}matchFieldsWithName(e){return this._overrides.push({matcher:{id:o.FieldMatcherID.byName,options:e},properties:[]}),this}matchFieldsWithNameByRegex(e){return this._overrides.push({matcher:{id:o.FieldMatcherID.byRegexp,options:e},properties:[]}),this}matchFieldsByType(e){return this._overrides.push({matcher:{id:o.FieldMatcherID.byType,options:e},properties:[]}),this}matchFieldsByQuery(e){return this._overrides.push({matcher:{id:o.FieldMatcherID.byFrameRefID,options:e},properties:[]}),this}matchFieldsByValue(e){return this._overrides.push({matcher:{id:o.FieldMatcherID.byValue,options:e},properties:[]}),this}matchComparisonQuery(e){return this.matchFieldsByQuery(jc(e))}overrideCustomFieldConfig(e,t){const n=`custom.${String(e)}`;return this._overrides[this._overrides.length-1].properties.push({id:n,value:t}),this}build(){return this._overrides}}class nd{constructor(e){this.defaultFieldConfig=e,this._fieldConfig={defaults:{},overrides:[]},this._overridesBuilder=new td,this.setDefaults()}setDefaults(){const e={defaults:{custom:this.defaultFieldConfig?(0,k.cloneDeep)(this.defaultFieldConfig()):{}},overrides:[]};this._fieldConfig=e}setColor(e){return this.setFieldConfigDefaults("color",e)}setDecimals(e){return this.setFieldConfigDefaults("decimals",e)}setDisplayName(e){return this.setFieldConfigDefaults("displayName",e)}setFilterable(e){return this.setFieldConfigDefaults("filterable",e)}setLinks(e){return this.setFieldConfigDefaults("links",e)}setMappings(e){return this.setFieldConfigDefaults("mappings",e)}setMax(e){return this.setFieldConfigDefaults("max",e)}setMin(e){return this.setFieldConfigDefaults("min",e)}setNoValue(e){return this.setFieldConfigDefaults("noValue",e)}setThresholds(e){return this.setFieldConfigDefaults("thresholds",e)}setUnit(e){return this.setFieldConfigDefaults("unit",e)}setCustomFieldConfig(e,t){return this._fieldConfig.defaults={...this._fieldConfig.defaults,custom:(0,k.merge)(this._fieldConfig.defaults.custom,{[e]:t})},this}setOverrides(e){return e(this._overridesBuilder),this}setFieldConfigDefaults(e,t){return this._fieldConfig.defaults={...this._fieldConfig.defaults,[e]:t},this}build(){return{defaults:this._fieldConfig.defaults,overrides:this._overridesBuilder.build()}}}class rd{constructor(e){this.defaultOptions=e,this._options={},this.setDefaults()}setDefaults(){this._options=this.defaultOptions?(0,k.cloneDeep)(this.defaultOptions()):{}}setOption(e,t){return this._options=(0,k.merge)(this._options,{[e]:t}),this}build(){return this._options}}class ad{constructor(e,t,n,r){this._state={},this._state.title="",this._state.description="",this._state.displayMode="default",this._state.hoverHeader=!1,this._state.pluginId=e,this._state.pluginVersion=t,this._fieldConfigBuilder=new nd(r),this._panelOptionsBuilder=new rd(n)}setTitle(e){return this._state.title=e,this}setDescription(e){return this._state.description=e,this}setDisplayMode(e){return this._state.displayMode=e,this}setHoverHeader(e){return this._state.hoverHeader=e,this}setShowMenuAlways(e){return this._state.showMenuAlways=e,this}setMenu(e){return this._state.menu=e,this}setHeaderActions(e){return this._state.headerActions=e,this}setCollapsible(e){return this._state.collapsible=e,this}setCollapsed(e){return this._state.collapsed=e,this}setColor(e){return this._fieldConfigBuilder.setColor(e),this}setDecimals(e){return this._fieldConfigBuilder.setDecimals(e),this}setDisplayName(e){return this._fieldConfigBuilder.setDisplayName(e),this}setFilterable(e){return this._fieldConfigBuilder.setFilterable(e),this}setLinks(e){return this._fieldConfigBuilder.setLinks(e),this}setMappings(e){return this._fieldConfigBuilder.setMappings(e),this}setMax(e){return this._fieldConfigBuilder.setMax(e),this}setMin(e){return this._fieldConfigBuilder.setMin(e),this}setNoValue(e){return this._fieldConfigBuilder.setNoValue(e),this}setThresholds(e){return this._fieldConfigBuilder.setThresholds(e),this}setUnit(e){return this._fieldConfigBuilder.setUnit(e),this}setCustomFieldConfig(e,t){return this._fieldConfigBuilder.setCustomFieldConfig(e,t),this}setOverrides(e){return this._fieldConfigBuilder.setOverrides(e),this}setOption(e,t){return this._panelOptionsBuilder.setOption(e,t),this}setData(e){return this._state.$data=e,this}setTimeRange(e){return this._state.$timeRange=e,this}setVariables(e){return this._state.$variables=e,this}setBehaviors(e){return this._state.$behaviors=e,this}setSeriesLimit(e){return this._state.seriesLimit=e,this}applyMixin(e){return e(this),this}build(){return new _s({...this._state,options:this._panelOptionsBuilder.build(),fieldConfig:this._fieldConfigBuilder.build()})}}const od={barchart:()=>new ad("barchart","10.0.0",(()=>Lu),(()=>Nu)),bargauge:()=>new ad("bargauge","10.0.0",(()=>Mu)),datagrid:()=>new ad("datagrid","10.0.0",(()=>Bu)),flamegraph:()=>new ad("flamegraph","10.0.0"),gauge:()=>new ad("gauge","10.0.0",(()=>Vu)),geomap:()=>new ad("geomap","10.0.0",(()=>ju)),heatmap:()=>new ad("heatmap","10.0.0",(()=>Fu)),histogram:()=>new ad("histogram","10.0.0",(()=>$u),(()=>zu)),logs:()=>new ad("logs","10.0.0"),news:()=>new ad("news","10.0.0",(()=>Uu)),nodegraph:()=>new ad("nodeGraph","10.0.0"),piechart:()=>new ad("piechart","10.0.0",(()=>Wu)),stat:()=>new ad("stat","10.0.0",(()=>Hu)),statetimeline:()=>new ad("state-timeline","10.0.0",(()=>Gu),(()=>qu)),statushistory:()=>new ad("status-history","10.0.0",(()=>Qu),(()=>Yu)),table:()=>new ad("table","10.0.0",(()=>Xu)),text:()=>new ad("text","10.0.0",(()=>Ku)),timeseries:()=>new ad("timeseries","10.0.0"),trend:()=>new ad("trend","10.0.0"),traces:()=>new ad("traces","10.0.0"),xychart:()=>new ad("xychart","10.0.0",(()=>Ju),(()=>Zu))};const id={barchart:()=>new nd((()=>Nu)),bargauge:()=>new nd,datagrid:()=>new nd,flamegraph:()=>new nd,gauge:()=>new nd,geomap:()=>new nd,heatmap:()=>new nd,histogram:()=>new nd((()=>zu)),logs:()=>new nd,news:()=>new nd,nodegraph:()=>new nd,piechart:()=>new nd,stat:()=>new nd,statetimeline:()=>new nd((()=>qu)),statushistory:()=>new nd((()=>Yu)),table:()=>new nd,text:()=>new nd,timeseries:()=>new nd,trend:()=>new nd,traces:()=>new nd,xychart:()=>new nd((()=>Zu))},sd={getUrlWithAppState:s,registerRuntimePanelPlugin:function({pluginId:e,plugin:t}){if(c.has(e))throw new Error(`A runtime panel plugin with id ${e} has already been registered`);t.meta={...t.meta,id:e,name:e,module:"runtime plugin",baseUrl:"runtime plugin",info:{author:{name:"Runtime plugin "+e},description:"",links:[],logos:{large:"",small:""},screenshots:[],updated:"",version:""}},c.set(e,t)},registerRuntimeDataSource:function({dataSource:e}){if(M.has(e.uid))throw new Error(`A runtime data source with uid ${e.uid} has already been registered`);M.set(e.uid,e)},registerVariableMacro:function(e,t){if(Ae.get(e))throw new Error(`Macro already registered ${e}`);return Ae.set(e,t),()=>{Ae.delete(e)}},cloneSceneObjectState:P,syncStateFromSearchParams:function(e,t){es(e,t,new Ki)},getUrlState:Ji,renderPrometheusLabelFilters:pi,escapeLabelValueInRegexSelector:hi,escapeLabelValueInExactSelector:fi,escapeURLDelimiters:function(e){return bi(vi(e))},isAdHocVariable:function(e){return"adhoc"===e.state.type},isConstantVariable:function(e){return"constant"===e.state.type},isCustomVariable:function(e){return"custom"===e.state.type},isDataSourceVariable:function(e){return"datasource"===e.state.type},isIntervalVariable:function(e){return"interval"===e.state.type},isQueryVariable:function(e){return"query"===e.state.type},isTextBoxVariable:function(e){return"textbox"===e.state.type},isGroupByVariable:function(e){return"groupby"===e.state.type}}},9902:(e,t,n)=>{"use strict";n.d(t,{JY:()=>Nr,sx:()=>ea,gL:()=>Da});var r=n(5959),a=n.n(r),o=n(8398),i=n.n(o),s=n(7694),l=n(200);function c(e,t){var n=(0,r.useState)((function(){return{inputs:t,result:e()}}))[0],a=(0,r.useRef)(!0),o=(0,r.useRef)(n),i=a.current||Boolean(t&&o.current.inputs&&function(e,t){if(e.length!==t.length)return!1;for(var n=0;n{const r=function(e,t){return{...e,...t}}(n,t.options);return e.addEventListener(t.eventName,t.fn,r),function(){e.removeEventListener(t.eventName,t.fn,r)}}));return function(){r.forEach((e=>{e()}))}}const A=!0,k="Invariant failed";class P extends Error{}function L(e,t){if(!e)throw new P(A?k:`${k}: ${t||""}`)}P.prototype.toString=function(){return this.message};class N extends a().Component{constructor(...e){super(...e),this.callbacks=null,this.unbind=I,this.onWindowError=e=>{const t=this.getCallbacks();t.isDragging()&&t.tryAbort();e.error instanceof P&&e.preventDefault()},this.getCallbacks=()=>{if(!this.callbacks)throw new Error("Unable to find AppCallbacks in ");return this.callbacks},this.setCallbacks=e=>{this.callbacks=e}}componentDidMount(){this.unbind=T(window,[{eventName:"error",fn:this.onWindowError}])}componentDidCatch(e){if(!(e instanceof P))throw e;this.setState({})}componentWillUnmount(){this.unbind()}render(){return this.props.children(this.setCallbacks)}}const M=e=>e+1,B=(e,t)=>{const n=e.droppableId===t.droppableId,r=M(e.index),a=M(t.index);return n?`\n You have moved the item from position ${r}\n to position ${a}\n `:`\n You have moved the item from position ${r}\n in list ${e.droppableId}\n to list ${t.droppableId}\n in position ${a}\n `},V=(e,t,n)=>t.droppableId===n.droppableId?`\n The item ${e}\n has been combined with ${n.draggableId}`:`\n The item ${e}\n in list ${t.droppableId}\n has been combined with ${n.draggableId}\n in list ${n.droppableId}\n `,j=e=>`\n The item has returned to its starting position\n of ${M(e.index)}\n`,F={dragHandleUsageInstructions:"\n Press space bar to start a drag.\n When dragging you can use the arrow keys to move the item around and escape to cancel.\n Some screen readers may require you to be in focus mode or to use your pass through key\n",onDragStart:e=>`\n You have lifted an item in position ${M(e.source.index)}\n`,onDragUpdate:e=>{const t=e.destination;if(t)return B(e.source,t);const n=e.combine;return n?V(e.draggableId,e.source,n):"You are over an area that cannot be dropped on"},onDragEnd:e=>{if("CANCEL"===e.reason)return`\n Movement cancelled.\n ${j(e.source)}\n `;const t=e.destination,n=e.combine;return t?`\n You have dropped the item.\n ${B(e.source,t)}\n `:n?`\n You have dropped the item.\n ${V(e.draggableId,e.source,n)}\n `:`\n The item has been dropped while not over a drop area.\n ${j(e.source)}\n `}};var $=F;const z={x:0,y:0},U=(e,t)=>({x:e.x+t.x,y:e.y+t.y}),W=(e,t)=>({x:e.x-t.x,y:e.y-t.y}),H=(e,t)=>e.x===t.x&&e.y===t.y,G=e=>({x:0!==e.x?-e.x:0,y:0!==e.y?-e.y:0}),q=(e,t,n=0)=>"x"===e?{x:t,y:n}:{x:n,y:t},Q=(e,t)=>Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2),Y=(e,t)=>Math.min(...t.map((t=>Q(e,t)))),X=e=>t=>({x:e(t.x),y:e(t.y)});const K=(e,t)=>({top:e.top+t.y,left:e.left+t.x,bottom:e.bottom+t.y,right:e.right+t.x}),Z=e=>[{x:e.left,y:e.top},{x:e.right,y:e.top},{x:e.left,y:e.bottom},{x:e.right,y:e.bottom}],J=(e,t)=>t&&t.shouldClipSubject?((e,t)=>{const n=f({top:Math.max(t.top,e.top),right:Math.min(t.right,e.right),bottom:Math.min(t.bottom,e.bottom),left:Math.max(t.left,e.left)});return n.width<=0||n.height<=0?null:n})(t.pageMarginBox,e):f(e);var ee=({page:e,withPlaceholder:t,axis:n,frame:r})=>{const a=((e,t)=>t?K(e,t.scroll.diff.displacement):e)(e.marginBox,r),o=((e,t,n)=>n&&n.increasedBy?{...e,[t.end]:e[t.end]+n.increasedBy[t.line]}:e)(a,n,t);return{page:e,withPlaceholder:t,active:J(o,r)}},te=(e,t)=>{e.frame||L(!1);const n=e.frame,r=W(t,n.scroll.initial),a=G(r),o={...n,scroll:{initial:n.scroll.initial,current:t,diff:{value:r,displacement:a},max:n.scroll.max}},i=ee({page:e.subject.page,withPlaceholder:e.subject.withPlaceholder,axis:e.axis,frame:o});return{...e,frame:o,subject:i}};const ne=R((e=>e.reduce(((e,t)=>(e[t.descriptor.id]=t,e)),{}))),re=R((e=>e.reduce(((e,t)=>(e[t.descriptor.id]=t,e)),{}))),ae=R((e=>Object.values(e))),oe=R((e=>Object.values(e)));var ie=R(((e,t)=>{const n=oe(t).filter((t=>e===t.descriptor.droppableId)).sort(((e,t)=>e.descriptor.index-t.descriptor.index));return n}));function se(e){return e.at&&"REORDER"===e.at.type?e.at.destination:null}function le(e){return e.at&&"COMBINE"===e.at.type?e.at.combine:null}var ce=R(((e,t)=>t.filter((t=>t.descriptor.id!==e.descriptor.id)))),ue=(e,t)=>e.descriptor.droppableId===t.descriptor.id;const de={point:z,value:0},pe={invisible:{},visible:{},all:[]};var fe={displaced:pe,displacedBy:de,at:null},he=(e,t)=>n=>e<=n&&n<=t,ge=e=>{const t=he(e.top,e.bottom),n=he(e.left,e.right);return r=>{if(t(r.top)&&t(r.bottom)&&n(r.left)&&n(r.right))return!0;const a=t(r.top)||t(r.bottom),o=n(r.left)||n(r.right);if(a&&o)return!0;const i=r.tope.bottom,s=r.lefte.right;if(i&&s)return!0;return i&&o||s&&a}},me=e=>{const t=he(e.top,e.bottom),n=he(e.left,e.right);return e=>t(e.top)&&t(e.bottom)&&n(e.left)&&n(e.right)};const ve={direction:"vertical",line:"y",crossAxisLine:"x",start:"top",end:"bottom",size:"height",crossAxisStart:"left",crossAxisEnd:"right",crossAxisSize:"width"},be={direction:"horizontal",line:"x",crossAxisLine:"y",start:"left",end:"right",size:"width",crossAxisStart:"top",crossAxisEnd:"bottom",crossAxisSize:"height"};const ye=({target:e,destination:t,viewport:n,withDroppableDisplacement:r,isVisibleThroughFrameFn:a})=>{const o=r?((e,t)=>{const n=t.frame?t.frame.scroll.diff.displacement:z;return K(e,n)})(e,t):e;return((e,t,n)=>!!t.subject.active&&n(t.subject.active)(e))(o,t,a)&&((e,t,n)=>n(t)(e))(o,n,a)},we=e=>ye({...e,isVisibleThroughFrameFn:me});function Se({afterDragging:e,destination:t,displacedBy:n,viewport:r,forceShouldAnimate:a,last:o}){return e.reduce((function(e,i){const s=function(e,t){const n=e.page.marginBox,r={top:t.point.y,right:0,bottom:0,left:t.point.x};return f(h(n,r))}(i,n),l=i.descriptor.id;e.all.push(l);var c;if(!(c={target:s,destination:t,viewport:r,withDroppableDisplacement:!0},ye({...c,isVisibleThroughFrameFn:ge})))return e.invisible[i.descriptor.id]=!0,e;const u=((e,t,n)=>{if("boolean"==typeof n)return n;if(!t)return!0;const{invisible:r,visible:a}=t;if(r[e])return!1;const o=a[e];return!o||o.shouldAnimate})(l,o,a),d={draggableId:l,shouldAnimate:u};return e.visible[l]=d,e}),{all:[],visible:{},invisible:{}})}function xe({insideDestination:e,inHomeList:t,displacedBy:n,destination:r}){const a=function(e,t){if(!e.length)return 0;const n=e[e.length-1].descriptor.index;return t.inHomeList?n:n+1}(e,{inHomeList:t});return{displaced:pe,displacedBy:n,at:{type:"REORDER",destination:{droppableId:r.descriptor.id,index:a}}}}function Ee({draggable:e,insideDestination:t,destination:n,viewport:r,displacedBy:a,last:o,index:i,forceShouldAnimate:s}){const l=ue(e,n);if(null==i)return xe({insideDestination:t,inHomeList:l,displacedBy:a,destination:n});const c=t.find((e=>e.descriptor.index===i));if(!c)return xe({insideDestination:t,inHomeList:l,displacedBy:a,destination:n});const u=ce(e,t),d=t.indexOf(c);return{displaced:Se({afterDragging:u.slice(d),destination:n,displacedBy:a,last:o,viewport:r.frame,forceShouldAnimate:s}),displacedBy:a,at:{type:"REORDER",destination:{droppableId:n.descriptor.id,index:i}}}}function Ce(e,t){return Boolean(t.effected[e])}var Re=({isMovingForward:e,isInHomeList:t,draggable:n,draggables:r,destination:a,insideDestination:o,previousImpact:i,viewport:s,afterCritical:l})=>{const c=i.at;if(c||L(!1),"REORDER"===c.type){const r=(({isMovingForward:e,isInHomeList:t,insideDestination:n,location:r})=>{if(!n.length)return null;const a=r.index,o=e?a+1:a-1,i=n[0].descriptor.index,s=n[n.length-1].descriptor.index;return o(t?s:s+1)?null:o})({isMovingForward:e,isInHomeList:t,location:c.destination,insideDestination:o});return null==r?null:Ee({draggable:n,insideDestination:o,destination:a,viewport:s,last:i.displaced,displacedBy:i.displacedBy,index:r})}const u=(({isMovingForward:e,destination:t,draggables:n,combine:r,afterCritical:a})=>{if(!t.isCombineEnabled)return null;const o=r.draggableId,i=n[o].descriptor.index;return Ce(o,a)?e?i:i-1:e?i+1:i})({isMovingForward:e,destination:a,displaced:i.displaced,draggables:r,combine:c.combine,afterCritical:l});return null==u?null:Ee({draggable:n,insideDestination:o,destination:a,viewport:s,last:i.displaced,displacedBy:i.displacedBy,index:u})},De=({afterCritical:e,impact:t,draggables:n})=>{const r=le(t);r||L(!1);const a=r.draggableId,o=n[a].page.borderBox.center,i=(({displaced:e,afterCritical:t,combineWith:n,displacedBy:r})=>{const a=Boolean(e.visible[n]||e.invisible[n]);return Ce(n,t)?a?z:G(r.point):a?r.point:z})({displaced:t.displaced,afterCritical:e,combineWith:a,displacedBy:t.displacedBy});return U(o,i)};const _e=(e,t)=>t.margin[e.start]+t.borderBox[e.size]/2,Oe=(e,t,n)=>t[e.crossAxisStart]+n.margin[e.crossAxisStart]+n.borderBox[e.crossAxisSize]/2,Ie=({axis:e,moveRelativeTo:t,isMoving:n})=>q(e.line,t.marginBox[e.end]+_e(e,n),Oe(e,t.marginBox,n)),Te=({axis:e,moveRelativeTo:t,isMoving:n})=>q(e.line,t.marginBox[e.start]-((e,t)=>t.margin[e.end]+t.borderBox[e.size]/2)(e,n),Oe(e,t.marginBox,n));var Ae=({impact:e,draggable:t,draggables:n,droppable:r,afterCritical:a})=>{const o=ie(r.descriptor.id,n),i=t.page,s=r.axis;if(!o.length)return(({axis:e,moveInto:t,isMoving:n})=>q(e.line,t.contentBox[e.start]+_e(e,n),Oe(e,t.contentBox,n)))({axis:s,moveInto:r.page,isMoving:i});const{displaced:l,displacedBy:c}=e,u=l.all[0];if(u){const e=n[u];if(Ce(u,a))return Te({axis:s,moveRelativeTo:e.page,isMoving:i});const t=y(e.page,c.point);return Te({axis:s,moveRelativeTo:t,isMoving:i})}const d=o[o.length-1];if(d.descriptor.id===t.descriptor.id)return i.borderBox.center;if(Ce(d.descriptor.id,a)){const e=y(d.page,G(a.displacedBy.point));return Ie({axis:s,moveRelativeTo:e,isMoving:i})}return Ie({axis:s,moveRelativeTo:d.page,isMoving:i})},ke=(e,t)=>{const n=e.frame;return n?U(t,n.scroll.diff.displacement):t};var Pe=e=>{const t=(({impact:e,draggable:t,droppable:n,draggables:r,afterCritical:a})=>{const o=t.page.borderBox.center,i=e.at;return n&&i?"REORDER"===i.type?Ae({impact:e,draggable:t,draggables:r,droppable:n,afterCritical:a}):De({impact:e,draggables:r,afterCritical:a}):o})(e),n=e.droppable;return n?ke(n,t):t},Le=(e,t)=>{const n=W(t,e.scroll.initial),r=G(n);return{frame:f({top:t.y,bottom:t.y+e.frame.height,left:t.x,right:t.x+e.frame.width}),scroll:{initial:e.scroll.initial,max:e.scroll.max,current:t,diff:{value:n,displacement:r}}}};function Ne(e,t){return e.map((e=>t[e]))}var Me=({pageBorderBoxCenter:e,draggable:t,viewport:n})=>{const r=((e,t)=>U(e.scroll.diff.displacement,t))(n,e),a=W(r,t.page.borderBox.center);return U(t.client.borderBox.center,a)},Be=({draggable:e,destination:t,newPageBorderBoxCenter:n,viewport:r,withDroppableDisplacement:a,onlyOnMainAxis:o=!1})=>{const i=W(n,e.page.borderBox.center),s={target:K(e.page.borderBox,i),destination:t,withDroppableDisplacement:a,viewport:r};return o?(e=>{return ye({...e,isVisibleThroughFrameFn:(t=e.destination.axis,e=>{const n=he(e.top,e.bottom),r=he(e.left,e.right);return e=>t===ve?n(e.top)&&n(e.bottom):r(e.left)&&r(e.right)})});var t})(s):we(s)},Ve=({isMovingForward:e,draggable:t,destination:n,draggables:r,previousImpact:a,viewport:o,previousPageBorderBoxCenter:i,previousClientSelection:s,afterCritical:l})=>{if(!n.isEnabled)return null;const c=ie(n.descriptor.id,r),u=ue(t,n),d=(({isMovingForward:e,draggable:t,destination:n,insideDestination:r,previousImpact:a})=>{if(!n.isCombineEnabled)return null;if(!se(a))return null;function o(e){const t={type:"COMBINE",combine:{draggableId:e,droppableId:n.descriptor.id}};return{...a,at:t}}const i=a.displaced.all,s=i.length?i[0]:null;if(e)return s?o(s):null;const l=ce(t,r);if(!s)return l.length?o(l[l.length-1].descriptor.id):null;const c=l.findIndex((e=>e.descriptor.id===s));-1===c&&L(!1);const u=c-1;return u<0?null:o(l[u].descriptor.id)})({isMovingForward:e,draggable:t,destination:n,insideDestination:c,previousImpact:a})||Re({isMovingForward:e,isInHomeList:u,draggable:t,draggables:r,destination:n,insideDestination:c,previousImpact:a,viewport:o,afterCritical:l});if(!d)return null;const p=Pe({impact:d,draggable:t,droppable:n,draggables:r,afterCritical:l});if(Be({draggable:t,destination:n,newPageBorderBoxCenter:p,viewport:o.frame,withDroppableDisplacement:!1,onlyOnMainAxis:!0})){return{clientSelection:Me({pageBorderBoxCenter:p,draggable:t,viewport:o}),impact:d,scrollJumpRequest:null}}const f=W(p,i),h=(({impact:e,viewport:t,destination:n,draggables:r,maxScrollChange:a})=>{const o=Le(t,U(t.scroll.current,a)),i=n.frame?te(n,U(n.frame.scroll.current,a)):n,s=e.displaced,l=Se({afterDragging:Ne(s.all,r),destination:n,displacedBy:e.displacedBy,viewport:o.frame,last:s,forceShouldAnimate:!1}),c=Se({afterDragging:Ne(s.all,r),destination:i,displacedBy:e.displacedBy,viewport:t.frame,last:s,forceShouldAnimate:!1}),u={},d={},p=[s,l,c];return s.all.forEach((e=>{const t=function(e,t){for(let n=0;n{const t=e.subject.active;return t||L(!1),t};const Fe=(e,t)=>{const n=e.page.borderBox.center;return Ce(e.descriptor.id,t)?W(n,t.displacedBy.point):n},$e=(e,t)=>{const n=e.page.borderBox;return Ce(e.descriptor.id,t)?K(n,G(t.displacedBy.point)):n};var ze=R((function(e,t){const n=t[e.line];return{value:n,point:q(e.line,n)}}));const Ue=(e,t)=>({...e,scroll:{...e.scroll,max:t}}),We=(e,t,n)=>{const r=e.frame;ue(t,e)&&L(!1),e.subject.withPlaceholder&&L(!1);const a=ze(e.axis,t.displaceBy).point,o=((e,t,n)=>{const r=e.axis;if("virtual"===e.descriptor.mode)return q(r.line,t[r.line]);const a=e.subject.page.contentBox[r.size],o=ie(e.descriptor.id,n).reduce(((e,t)=>e+t.client.marginBox[r.size]),0)+t[r.line]-a;return o<=0?null:q(r.line,o)})(e,a,n),i={placeholderSize:a,increasedBy:o,oldFrameMaxScroll:e.frame?e.frame.scroll.max:null};if(!r){const t=ee({page:e.subject.page,withPlaceholder:i,axis:e.axis,frame:e.frame});return{...e,subject:t}}const s=o?U(r.scroll.max,o):r.scroll.max,l=Ue(r,s),c=ee({page:e.subject.page,withPlaceholder:i,axis:e.axis,frame:l});return{...e,subject:c,frame:l}};var He=({isMovingForward:e,previousPageBorderBoxCenter:t,draggable:n,isOver:r,draggables:a,droppables:o,viewport:i,afterCritical:s})=>{const l=(({isMovingForward:e,pageBorderBoxCenter:t,source:n,droppables:r,viewport:a})=>{const o=n.subject.active;if(!o)return null;const i=n.axis,s=he(o[i.start],o[i.end]),l=ae(r).filter((e=>e!==n)).filter((e=>e.isEnabled)).filter((e=>Boolean(e.subject.active))).filter((e=>ge(a.frame)(je(e)))).filter((t=>{const n=je(t);return e?o[i.crossAxisEnd]{const t=je(e),n=he(t[i.start],t[i.end]);return s(t[i.start])||s(t[i.end])||n(o[i.start])||n(o[i.end])})).sort(((t,n)=>{const r=je(t)[i.crossAxisStart],a=je(n)[i.crossAxisStart];return e?r-a:a-r})).filter(((e,t,n)=>je(e)[i.crossAxisStart]===je(n[0])[i.crossAxisStart]));if(!l.length)return null;if(1===l.length)return l[0];const c=l.filter((e=>he(je(e)[i.start],je(e)[i.end])(t[i.line])));return 1===c.length?c[0]:c.length>1?c.sort(((e,t)=>je(e)[i.start]-je(t)[i.start]))[0]:l.sort(((e,n)=>{const r=Y(t,Z(je(e))),a=Y(t,Z(je(n)));return r!==a?r-a:je(e)[i.start]-je(n)[i.start]}))[0]})({isMovingForward:e,pageBorderBoxCenter:t,source:r,droppables:o,viewport:i});if(!l)return null;const c=ie(l.descriptor.id,a),u=(({pageBorderBoxCenter:e,viewport:t,destination:n,insideDestination:r,afterCritical:a})=>{const o=r.filter((e=>we({target:$e(e,a),destination:n,viewport:t.frame,withDroppableDisplacement:!0}))).sort(((t,r)=>{const o=Q(e,ke(n,Fe(t,a))),i=Q(e,ke(n,Fe(r,a)));return o{if(!t){if(n.length)return null;const e={displaced:pe,displacedBy:de,at:{type:"REORDER",destination:{droppableId:o.descriptor.id,index:0}}},t=Pe({impact:e,draggable:r,droppable:o,draggables:a,afterCritical:s}),l=ue(r,o)?o:We(o,r,a);return Be({draggable:r,destination:l,newPageBorderBoxCenter:t,viewport:i.frame,withDroppableDisplacement:!1,onlyOnMainAxis:!0})?e:null}const l=Boolean(e[o.axis.line]<=t.page.borderBox.center[o.axis.line]),c=(()=>{const e=t.descriptor.index;return t.descriptor.id===r.descriptor.id||l?e:e+1})(),u=ze(o.axis,r.displaceBy);return Ee({draggable:r,insideDestination:n,destination:o,viewport:i,displacedBy:u,last:pe,index:c})})({previousPageBorderBoxCenter:t,destination:l,draggable:n,draggables:a,moveRelativeTo:u,insideDestination:c,viewport:i,afterCritical:s});if(!d)return null;const p=Pe({impact:d,draggable:n,droppable:l,draggables:a,afterCritical:s});return{clientSelection:Me({pageBorderBoxCenter:p,draggable:n,viewport:i}),impact:d,scrollJumpRequest:null}},Ge=e=>{const t=e.at;return t?"REORDER"===t.type?t.destination.droppableId:t.combine.droppableId:null};var qe=({state:e,type:t})=>{const n=((e,t)=>{const n=Ge(e);return n?t[n]:null})(e.impact,e.dimensions.droppables),r=Boolean(n),a=e.dimensions.droppables[e.critical.droppable.id],o=n||a,i=o.axis.direction,s="vertical"===i&&("MOVE_UP"===t||"MOVE_DOWN"===t)||"horizontal"===i&&("MOVE_LEFT"===t||"MOVE_RIGHT"===t);if(s&&!r)return null;const l="MOVE_DOWN"===t||"MOVE_RIGHT"===t,c=e.dimensions.draggables[e.critical.draggable.id],u=e.current.page.borderBoxCenter,{draggables:d,droppables:p}=e.dimensions;return s?Ve({isMovingForward:l,previousPageBorderBoxCenter:u,draggable:c,destination:o,draggables:d,viewport:e.viewport,previousClientSelection:e.current.client.selection,previousImpact:e.impact,afterCritical:e.afterCritical}):He({isMovingForward:l,previousPageBorderBoxCenter:u,draggable:c,isOver:o,draggables:d,droppables:p,viewport:e.viewport,afterCritical:e.afterCritical})};function Qe(e){return"DRAGGING"===e.phase||"COLLECTING"===e.phase}function Ye(e){const t=he(e.top,e.bottom),n=he(e.left,e.right);return function(e){return t(e.y)&&n(e.x)}}function Xe({pageBorderBox:e,draggable:t,droppables:n}){const r=ae(n).filter((t=>{if(!t.isEnabled)return!1;const n=t.subject.active;if(!n)return!1;if(a=n,!((r=e).lefta.left&&r.topa.top))return!1;var r,a;if(Ye(n)(e.center))return!0;const o=t.axis,i=n.center[o.crossAxisLine],s=e[o.crossAxisStart],l=e[o.crossAxisEnd],c=he(n[o.crossAxisStart],n[o.crossAxisEnd]),u=c(s),d=c(l);return!u&&!d||(u?si)}));return r.length?1===r.length?r[0].descriptor.id:function({pageBorderBox:e,draggable:t,candidates:n}){const r=t.page.borderBox.center,a=n.map((t=>{const n=t.axis,a=q(t.axis.line,e.center[n.line],t.page.borderBox.center[n.crossAxisLine]);return{id:t.descriptor.id,distance:Q(r,a)}})).sort(((e,t)=>t.distance-e.distance));return a[0]?a[0].id:null}({pageBorderBox:e,draggable:t,candidates:r}):null}const Ke=(e,t)=>f(K(e,t));function Ze({displaced:e,id:t}){return Boolean(e.visible[t]||e.invisible[t])}var Je=({pageOffset:e,draggable:t,draggables:n,droppables:r,previousImpact:a,viewport:o,afterCritical:i})=>{const s=Ke(t.page.borderBox,e),l=Xe({pageBorderBox:s,draggable:t,droppables:r});if(!l)return fe;const c=r[l],u=ie(c.descriptor.id,n),d=((e,t)=>{const n=e.frame;return n?Ke(t,n.scroll.diff.value):t})(c,s);return(({draggable:e,pageBorderBoxWithDroppableScroll:t,previousImpact:n,destination:r,insideDestination:a,afterCritical:o})=>{if(!r.isCombineEnabled)return null;const i=r.axis,s=ze(r.axis,e.displaceBy),l=s.value,c=t[i.start],u=t[i.end],d=ce(e,a).find((e=>{const t=e.descriptor.id,r=e.page.borderBox,a=r[i.size]/4,s=Ce(t,o),d=Ze({displaced:n.displaced,id:t});return s?d?u>r[i.start]+a&&ur[i.start]-l+a&&cr[i.start]+l+a&&ur[i.start]+a&&c{const s=n.axis,l=ze(n.axis,t.displaceBy),c=l.value,u=e[s.start],d=e[s.end],p=function({draggable:e,closest:t,inHomeList:n}){return t?n&&t.descriptor.index>e.descriptor.index?t.descriptor.index-1:t.descriptor.index:null}({draggable:t,closest:ce(t,r).find((e=>{const t=e.descriptor.id,n=e.page.borderBox.center[s.line],r=Ce(t,i),o=Ze({displaced:a,id:t});return r?o?d<=n:u({...e,[t.descriptor.id]:t});const tt=({previousImpact:e,impact:t,droppables:n})=>{const r=Ge(e),a=Ge(t);if(!r)return n;if(r===a)return n;const o=n[r];if(!o.subject.withPlaceholder)return n;const i=(e=>{const t=e.subject.withPlaceholder;t||L(!1);const n=e.frame;if(!n){const t=ee({page:e.subject.page,axis:e.axis,frame:null,withPlaceholder:null});return{...e,subject:t}}const r=t.oldFrameMaxScroll;r||L(!1);const a=Ue(n,r),o=ee({page:e.subject.page,axis:e.axis,frame:a,withPlaceholder:null});return{...e,subject:o,frame:a}})(o);return et(n,i)};var nt=({state:e,clientSelection:t,dimensions:n,viewport:r,impact:a,scrollJumpRequest:o})=>{const i=r||e.viewport,s=n||e.dimensions,l=t||e.current.client.selection,c=W(l,e.initial.client.selection),u={offset:c,selection:l,borderBoxCenter:U(e.initial.client.borderBoxCenter,c)},d={selection:U(u.selection,i.scroll.current),borderBoxCenter:U(u.borderBoxCenter,i.scroll.current),offset:U(u.offset,i.scroll.diff.value)},p={client:u,page:d};if("COLLECTING"===e.phase)return{...e,dimensions:s,viewport:i,current:p};const f=s.draggables[e.critical.draggable.id],h=a||Je({pageOffset:d.offset,draggable:f,draggables:s.draggables,droppables:s.droppables,previousImpact:e.impact,viewport:i,afterCritical:e.afterCritical}),g=(({draggable:e,draggables:t,droppables:n,previousImpact:r,impact:a})=>{const o=tt({previousImpact:r,impact:a,droppables:n}),i=Ge(a);if(!i)return o;const s=n[i];if(ue(e,s))return o;if(s.subject.withPlaceholder)return o;const l=We(s,e,t);return et(o,l)})({draggable:f,impact:h,previousImpact:e.impact,draggables:s.draggables,droppables:s.droppables});return{...e,current:p,dimensions:{draggables:s.draggables,droppables:g},impact:h,viewport:i,scrollJumpRequest:o||null,forceShouldAnimate:!o&&null}};var rt=({impact:e,viewport:t,draggables:n,destination:r,forceShouldAnimate:a})=>{const o=e.displaced,i=function(e,t){return e.map((e=>t[e]))}(o.all,n),s=Se({afterDragging:i,destination:r,displacedBy:e.displacedBy,viewport:t.frame,forceShouldAnimate:a,last:o});return{...e,displaced:s}},at=({impact:e,draggable:t,droppable:n,draggables:r,viewport:a,afterCritical:o})=>{const i=Pe({impact:e,draggable:t,draggables:r,droppable:n,afterCritical:o});return Me({pageBorderBoxCenter:i,draggable:t,viewport:a})},ot=({state:e,dimensions:t,viewport:n})=>{"SNAP"!==e.movementMode&&L(!1);const r=e.impact,a=n||e.viewport,o=t||e.dimensions,{draggables:i,droppables:s}=o,l=i[e.critical.draggable.id],c=Ge(r);c||L(!1);const u=s[c],d=rt({impact:r,viewport:a,destination:u,draggables:i}),p=at({impact:d,draggable:l,droppable:u,draggables:i,viewport:a,afterCritical:e.afterCritical});return nt({impact:d,clientSelection:p,state:e,dimensions:o,viewport:a})},it=({draggable:e,home:t,draggables:n,viewport:r})=>{const a=ze(t.axis,e.displaceBy),o=ie(t.descriptor.id,n),i=o.indexOf(e);-1===i&&L(!1);const s=o.slice(i+1),l=s.reduce(((e,t)=>(e[t.descriptor.id]=!0,e)),{}),c={inVirtualList:"virtual"===t.descriptor.mode,displacedBy:a,effected:l};var u;return{impact:{displaced:Se({afterDragging:s,destination:t,displacedBy:a,last:null,viewport:r.frame,forceShouldAnimate:!1}),displacedBy:a,at:{type:"REORDER",destination:(u=e.descriptor,{index:u.index,droppableId:u.droppableId})}},afterCritical:c}};const st=e=>{0},lt=e=>{0};var ct=({additions:e,updatedDroppables:t,viewport:n})=>{const r=n.scroll.diff.value;return e.map((e=>{const a=e.descriptor.droppableId,o=(e=>{const t=e.frame;return t||L(!1),t})(t[a]),i=o.scroll.diff.value,s=(({draggable:e,offset:t,initialWindowScroll:n})=>{const r=y(e.client,t),a=w(r,n);return{...e,placeholder:{...e.placeholder,client:r},client:r,page:a}})({draggable:e,offset:U(r,i),initialWindowScroll:n.scroll.initial});return s}))};const ut=e=>"SNAP"===e.movementMode,dt=(e,t,n)=>{const r=((e,t)=>({draggables:e.draggables,droppables:et(e.droppables,t)}))(e.dimensions,t);return!ut(e)||n?nt({state:e,dimensions:r}):ot({state:e,dimensions:r})};function pt(e){return e.isDragging&&"SNAP"===e.movementMode?{...e,scrollJumpRequest:null}:e}const ft={phase:"IDLE",completed:null,shouldFlush:!1};var ht=(e=ft,t)=>{if("FLUSH"===t.type)return{...ft,shouldFlush:!0};if("INITIAL_PUBLISH"===t.type){"IDLE"!==e.phase&&L(!1);const{critical:n,clientSelection:r,viewport:a,dimensions:o,movementMode:i}=t.payload,s=o.draggables[n.draggable.id],l=o.droppables[n.droppable.id],c={selection:r,borderBoxCenter:s.client.borderBox.center,offset:z},u={client:c,page:{selection:U(c.selection,a.scroll.initial),borderBoxCenter:U(c.selection,a.scroll.initial),offset:U(c.selection,a.scroll.diff.value)}},d=ae(o.droppables).every((e=>!e.isFixedOnPage)),{impact:p,afterCritical:f}=it({draggable:s,home:l,draggables:o.draggables,viewport:a});return{phase:"DRAGGING",isDragging:!0,critical:n,movementMode:i,dimensions:o,initial:u,current:u,isWindowScrollAllowed:d,impact:p,afterCritical:f,onLiftImpact:p,viewport:a,scrollJumpRequest:null,forceShouldAnimate:null}}if("COLLECTION_STARTING"===t.type){if("COLLECTING"===e.phase||"DROP_PENDING"===e.phase)return e;"DRAGGING"!==e.phase&&L(!1);return{...e,phase:"COLLECTING"}}if("PUBLISH_WHILE_DRAGGING"===t.type)return"COLLECTING"!==e.phase&&"DROP_PENDING"!==e.phase&&L(!1),(({state:e,published:t})=>{st();const n=t.modified.map((t=>{const n=e.dimensions.droppables[t.droppableId];return te(n,t.scroll)})),r={...e.dimensions.droppables,...ne(n)},a=re(ct({additions:t.additions,updatedDroppables:r,viewport:e.viewport})),o={...e.dimensions.draggables,...a};t.removals.forEach((e=>{delete o[e]}));const i={droppables:r,draggables:o},s=Ge(e.impact),l=s?i.droppables[s]:null,c=i.draggables[e.critical.draggable.id],u=i.droppables[e.critical.droppable.id],{impact:d,afterCritical:p}=it({draggable:c,home:u,draggables:o,viewport:e.viewport}),f=l&&l.isCombineEnabled?e.impact:d,h=Je({pageOffset:e.current.page.offset,draggable:i.draggables[e.critical.draggable.id],draggables:i.draggables,droppables:i.droppables,previousImpact:f,viewport:e.viewport,afterCritical:p});lt();const g={...e,phase:"DRAGGING",impact:h,onLiftImpact:d,dimensions:i,afterCritical:p,forceShouldAnimate:!1};return"COLLECTING"===e.phase?g:{...g,phase:"DROP_PENDING",reason:e.reason,isWaiting:!1}})({state:e,published:t.payload});if("MOVE"===t.type){if("DROP_PENDING"===e.phase)return e;Qe(e)||L(!1);const{client:n}=t.payload;return H(n,e.current.client.selection)?e:nt({state:e,clientSelection:n,impact:ut(e)?e.impact:null})}if("UPDATE_DROPPABLE_SCROLL"===t.type){if("DROP_PENDING"===e.phase)return pt(e);if("COLLECTING"===e.phase)return pt(e);Qe(e)||L(!1);const{id:n,newScroll:r}=t.payload,a=e.dimensions.droppables[n];if(!a)return e;const o=te(a,r);return dt(e,o,!1)}if("UPDATE_DROPPABLE_IS_ENABLED"===t.type){if("DROP_PENDING"===e.phase)return e;Qe(e)||L(!1);const{id:n,isEnabled:r}=t.payload,a=e.dimensions.droppables[n];a||L(!1),a.isEnabled===r&&L(!1);const o={...a,isEnabled:r};return dt(e,o,!0)}if("UPDATE_DROPPABLE_IS_COMBINE_ENABLED"===t.type){if("DROP_PENDING"===e.phase)return e;Qe(e)||L(!1);const{id:n,isCombineEnabled:r}=t.payload,a=e.dimensions.droppables[n];a||L(!1),a.isCombineEnabled===r&&L(!1);const o={...a,isCombineEnabled:r};return dt(e,o,!0)}if("MOVE_BY_WINDOW_SCROLL"===t.type){if("DROP_PENDING"===e.phase||"DROP_ANIMATING"===e.phase)return e;Qe(e)||L(!1),e.isWindowScrollAllowed||L(!1);const n=t.payload.newScroll;if(H(e.viewport.scroll.current,n))return pt(e);const r=Le(e.viewport,n);return ut(e)?ot({state:e,viewport:r}):nt({state:e,viewport:r})}if("UPDATE_VIEWPORT_MAX_SCROLL"===t.type){if(!Qe(e))return e;const n=t.payload.maxScroll;if(H(n,e.viewport.scroll.max))return e;const r={...e.viewport,scroll:{...e.viewport.scroll,max:n}};return{...e,viewport:r}}if("MOVE_UP"===t.type||"MOVE_DOWN"===t.type||"MOVE_LEFT"===t.type||"MOVE_RIGHT"===t.type){if("COLLECTING"===e.phase||"DROP_PENDING"===e.phase)return e;"DRAGGING"!==e.phase&&L(!1);const n=qe({state:e,type:t.type});return n?nt({state:e,impact:n.impact,clientSelection:n.clientSelection,scrollJumpRequest:n.scrollJumpRequest}):e}if("DROP_PENDING"===t.type){const n=t.payload.reason;"COLLECTING"!==e.phase&&L(!1);return{...e,phase:"DROP_PENDING",isWaiting:!0,reason:n}}if("DROP_ANIMATE"===t.type){const{completed:n,dropDuration:r,newHomeClientOffset:a}=t.payload;"DRAGGING"!==e.phase&&"DROP_PENDING"!==e.phase&&L(!1);return{phase:"DROP_ANIMATING",completed:n,dropDuration:r,newHomeClientOffset:a,dimensions:e.dimensions}}if("DROP_COMPLETE"===t.type){const{completed:e}=t.payload;return{phase:"IDLE",completed:e,shouldFlush:!1}}return e};const gt=e=>({type:"LIFT",payload:e}),mt=e=>({type:"PUBLISH_WHILE_DRAGGING",payload:e}),vt=()=>({type:"COLLECTION_STARTING",payload:null}),bt=e=>({type:"UPDATE_DROPPABLE_SCROLL",payload:e}),yt=e=>({type:"UPDATE_DROPPABLE_IS_ENABLED",payload:e}),wt=e=>({type:"UPDATE_DROPPABLE_IS_COMBINE_ENABLED",payload:e}),St=e=>({type:"MOVE",payload:e}),xt=()=>({type:"MOVE_UP",payload:null}),Et=()=>({type:"MOVE_DOWN",payload:null}),Ct=()=>({type:"MOVE_RIGHT",payload:null}),Rt=()=>({type:"MOVE_LEFT",payload:null}),Dt=()=>({type:"FLUSH",payload:null}),_t=e=>({type:"DROP_COMPLETE",payload:e}),Ot=e=>({type:"DROP",payload:e}),It=()=>({type:"DROP_ANIMATION_FINISHED",payload:null});const Tt="cubic-bezier(.2,1,.1,1)",At={drop:0,combining:.7},kt={drop:.75},Pt={outOfTheWay:.2,minDropTime:.33,maxDropTime:.55},Lt=`${Pt.outOfTheWay}s ${"cubic-bezier(0.2, 0, 0, 1)"}`,Nt={fluid:`opacity ${Lt}`,snap:`transform ${Lt}, opacity ${Lt}`,drop:e=>{const t=`${e}s ${Tt}`;return`transform ${t}, opacity ${t}`},outOfTheWay:`transform ${Lt}`,placeholder:`height ${Lt}, width ${Lt}, margin ${Lt}`},Mt=e=>H(e,z)?void 0:`translate(${e.x}px, ${e.y}px)`,Bt=Mt,Vt=(e,t)=>{const n=Mt(e);if(n)return t?`${n} scale(${kt.drop})`:n},{minDropTime:jt,maxDropTime:Ft}=Pt,$t=Ft-jt;var zt=({getState:e,dispatch:t})=>n=>r=>{if("DROP"!==r.type)return void n(r);const a=e(),o=r.payload.reason;if("COLLECTING"===a.phase)return void t((e=>({type:"DROP_PENDING",payload:e}))({reason:o}));if("IDLE"===a.phase)return;"DROP_PENDING"===a.phase&&a.isWaiting&&L(!1),"DRAGGING"!==a.phase&&"DROP_PENDING"!==a.phase&&L(!1);const i=a.critical,s=a.dimensions,l=s.draggables[a.critical.draggable.id],{impact:c,didDropInsideDroppable:u}=(({draggables:e,reason:t,lastImpact:n,home:r,viewport:a,onLiftImpact:o})=>{if(!n.at||"DROP"!==t)return{impact:rt({draggables:e,impact:o,destination:r,viewport:a,forceShouldAnimate:!0}),didDropInsideDroppable:!1};return"REORDER"===n.at.type?{impact:n,didDropInsideDroppable:!0}:{impact:{...n,displaced:pe},didDropInsideDroppable:!0}})({reason:o,lastImpact:a.impact,afterCritical:a.afterCritical,onLiftImpact:a.onLiftImpact,home:a.dimensions.droppables[a.critical.droppable.id],viewport:a.viewport,draggables:a.dimensions.draggables}),d=u?se(c):null,p=u?le(c):null,f={index:i.draggable.index,droppableId:i.droppable.id},h={draggableId:l.descriptor.id,type:l.descriptor.type,source:f,reason:o,mode:a.movementMode,destination:d,combine:p},g=(({impact:e,draggable:t,dimensions:n,viewport:r,afterCritical:a})=>{const{draggables:o,droppables:i}=n,s=Ge(e),l=s?i[s]:null,c=i[t.descriptor.droppableId],u=at({impact:e,draggable:t,draggables:o,afterCritical:a,droppable:l||c,viewport:r});return W(u,t.client.borderBox.center)})({impact:c,draggable:l,dimensions:s,viewport:a.viewport,afterCritical:a.afterCritical}),m={critical:a.critical,afterCritical:a.afterCritical,result:h,impact:c};if(!(!H(a.current.client.offset,g)||Boolean(h.combine)))return void t(_t({completed:m}));const v=(({current:e,destination:t,reason:n})=>{const r=Q(e,t);if(r<=0)return jt;if(r>=1500)return Ft;const a=jt+$t*(r/1500);return Number(("CANCEL"===n?.6*a:a).toFixed(2))})({current:a.current.client.offset,destination:g,reason:o});t((e=>({type:"DROP_ANIMATE",payload:e}))({newHomeClientOffset:g,dropDuration:v,completed:m}))},Ut=()=>({x:window.pageXOffset,y:window.pageYOffset});function Wt({onWindowScroll:e}){const t=D((function(){e(Ut())})),n=function(e){return{eventName:"scroll",options:{passive:!0,capture:!1},fn:t=>{t.target!==window&&t.target!==window.document||e()}}}(t);let r=I;function a(){return r!==I}return{start:function(){a()&&L(!1),r=T(window,[n])},stop:function(){a()||L(!1),t.cancel(),r(),r=I},isActive:a}}var Ht=e=>{const t=Wt({onWindowScroll:t=>{e.dispatch({type:"MOVE_BY_WINDOW_SCROLL",payload:{newScroll:t}})}});return e=>n=>{t.isActive()||"INITIAL_PUBLISH"!==n.type||t.start(),t.isActive()&&(e=>"DROP_COMPLETE"===e.type||"DROP_ANIMATE"===e.type||"FLUSH"===e.type)(n)&&t.stop(),e(n)}},Gt=()=>{const e=[];return{add:t=>{const n=setTimeout((()=>(t=>{const n=e.findIndex((e=>e.timerId===t));-1===n&&L(!1);const[r]=e.splice(n,1);r.callback()})(n))),r={timerId:n,callback:t};e.push(r)},flush:()=>{if(!e.length)return;const t=[...e];e.length=0,t.forEach((e=>{clearTimeout(e.timerId),e.callback()}))}}};const qt=(e,t)=>{st(),t(),lt()},Qt=(e,t)=>({draggableId:e.draggable.id,type:e.droppable.type,source:{droppableId:e.droppable.id,index:e.draggable.index},mode:t});function Yt(e,t,n,r){if(!e)return void n(r(t));const a=(e=>{let t=!1,n=!1;const r=setTimeout((()=>{n=!0})),a=a=>{t||n||(t=!0,e(a),clearTimeout(r))};return a.wasCalled=()=>t,a})(n);e(t,{announce:a}),a.wasCalled()||n(r(t))}var Xt=(e,t)=>{const n=((e,t)=>{const n=Gt();let r=null;const a=n=>{r||L(!1),r=null,qt(0,(()=>Yt(e().onDragEnd,n,t,$.onDragEnd)))};return{beforeCapture:(t,n)=>{r&&L(!1),qt(0,(()=>{const r=e().onBeforeCapture;r&&r({draggableId:t,mode:n})}))},beforeStart:(t,n)=>{r&&L(!1),qt(0,(()=>{const r=e().onBeforeDragStart;r&&r(Qt(t,n))}))},start:(a,o)=>{r&&L(!1);const i=Qt(a,o);r={mode:o,lastCritical:a,lastLocation:i.source,lastCombine:null},n.add((()=>{qt(0,(()=>Yt(e().onDragStart,i,t,$.onDragStart)))}))},update:(a,o)=>{const i=se(o),s=le(o);r||L(!1);const l=!((e,t)=>{if(e===t)return!0;const n=e.draggable.id===t.draggable.id&&e.draggable.droppableId===t.draggable.droppableId&&e.draggable.type===t.draggable.type&&e.draggable.index===t.draggable.index,r=e.droppable.id===t.droppable.id&&e.droppable.type===t.droppable.type;return n&&r})(a,r.lastCritical);l&&(r.lastCritical=a);const c=(d=i,!(null==(u=r.lastLocation)&&null==d||null!=u&&null!=d&&u.droppableId===d.droppableId&&u.index===d.index));var u,d;c&&(r.lastLocation=i);const p=!((e,t)=>null==e&&null==t||null!=e&&null!=t&&e.draggableId===t.draggableId&&e.droppableId===t.droppableId)(r.lastCombine,s);if(p&&(r.lastCombine=s),!l&&!c&&!p)return;const f={...Qt(a,r.mode),combine:s,destination:i};n.add((()=>{qt(0,(()=>Yt(e().onDragUpdate,f,t,$.onDragUpdate)))}))},flush:()=>{r||L(!1),n.flush()},drop:a,abort:()=>{if(!r)return;const e={...Qt(r.lastCritical,r.mode),combine:null,destination:null,reason:"CANCEL"};a(e)}}})(e,t);return e=>t=>r=>{if("BEFORE_INITIAL_CAPTURE"===r.type)return void n.beforeCapture(r.payload.draggableId,r.payload.movementMode);if("INITIAL_PUBLISH"===r.type){const e=r.payload.critical;return n.beforeStart(e,r.payload.movementMode),t(r),void n.start(e,r.payload.movementMode)}if("DROP_COMPLETE"===r.type){const e=r.payload.completed.result;return n.flush(),t(r),void n.drop(e)}if(t(r),"FLUSH"===r.type)return void n.abort();const a=e.getState();"DRAGGING"===a.phase&&n.update(a.critical,a.impact)}};var Kt=e=>t=>n=>{if("DROP_ANIMATION_FINISHED"!==n.type)return void t(n);const r=e.getState();"DROP_ANIMATING"!==r.phase&&L(!1),e.dispatch(_t({completed:r.completed}))};var Zt=e=>{let t=null,n=null;return r=>a=>{if("FLUSH"!==a.type&&"DROP_COMPLETE"!==a.type&&"DROP_ANIMATION_FINISHED"!==a.type||(n&&(cancelAnimationFrame(n),n=null),t&&(t(),t=null)),r(a),"DROP_ANIMATE"!==a.type)return;const o={eventName:"scroll",options:{capture:!0,passive:!1,once:!0},fn:function(){"DROP_ANIMATING"===e.getState().phase&&e.dispatch({type:"DROP_ANIMATION_FINISHED",payload:null})}};n=requestAnimationFrame((()=>{n=null,t=T(window,[o])}))}};var Jt=e=>t=>n=>{if(t(n),"PUBLISH_WHILE_DRAGGING"!==n.type)return;const r=e.getState();"DROP_PENDING"===r.phase&&(r.isWaiting||e.dispatch(Ot({reason:r.reason})))};const en=s.compose;var tn=({dimensionMarshal:e,focusMarshal:t,styleMarshal:n,getResponders:r,announce:a,autoScroller:o})=>{return(0,s.createStore)(ht,en((0,s.applyMiddleware)((i=n,()=>e=>t=>{"INITIAL_PUBLISH"===t.type&&i.dragging(),"DROP_ANIMATE"===t.type&&i.dropping(t.payload.completed.result.reason),"FLUSH"!==t.type&&"DROP_COMPLETE"!==t.type||i.resting(),e(t)}),(e=>()=>t=>n=>{"DROP_COMPLETE"!==n.type&&"FLUSH"!==n.type&&"DROP_ANIMATE"!==n.type||e.stopPublishing(),t(n)})(e),(e=>({getState:t,dispatch:n})=>r=>a=>{if("LIFT"!==a.type)return void r(a);const{id:o,clientSelection:i,movementMode:s}=a.payload,l=t();"DROP_ANIMATING"===l.phase&&n(_t({completed:l.completed})),"IDLE"!==t().phase&&L(!1),n(Dt()),n({type:"BEFORE_INITIAL_CAPTURE",payload:{draggableId:o,movementMode:s}});const c={draggableId:o,scrollOptions:{shouldPublishImmediately:"SNAP"===s}},{critical:u,dimensions:d,viewport:p}=e.startPublishing(c);n({type:"INITIAL_PUBLISH",payload:{critical:u,dimensions:d,clientSelection:i,movementMode:s,viewport:p}})})(e),zt,Kt,Zt,Jt,(e=>t=>n=>r=>{if((e=>"DROP_COMPLETE"===e.type||"DROP_ANIMATE"===e.type||"FLUSH"===e.type)(r))return e.stop(),void n(r);if("INITIAL_PUBLISH"===r.type){n(r);const a=t.getState();return"DRAGGING"!==a.phase&&L(!1),void e.start(a)}n(r),e.scroll(t.getState())})(o),Ht,(e=>{let t=!1;return()=>n=>r=>{if("INITIAL_PUBLISH"===r.type)return t=!0,e.tryRecordFocus(r.payload.critical.draggable.id),n(r),void e.tryRestoreFocusRecorded();if(n(r),t){if("FLUSH"===r.type)return t=!1,void e.tryRestoreFocusRecorded();if("DROP_COMPLETE"===r.type){t=!1;const n=r.payload.completed.result;n.combine&&e.tryShiftRecord(n.draggableId,n.combine.draggableId),e.tryRestoreFocusRecorded()}}}})(t),Xt(r,a))));var i};var nn=({scrollHeight:e,scrollWidth:t,height:n,width:r})=>{const a=W({x:t,y:e},{x:r,y:n});return{x:Math.max(0,a.x),y:Math.max(0,a.y)}},rn=()=>{const e=document.documentElement;return e||L(!1),e},an=()=>{const e=rn();return nn({scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,width:e.clientWidth,height:e.clientHeight})},on=({critical:e,scrollOptions:t,registry:n})=>{st();const r=(()=>{const e=Ut(),t=an(),n=e.y,r=e.x,a=rn(),o=a.clientWidth,i=a.clientHeight;return{frame:f({top:n,left:r,right:r+o,bottom:n+i}),scroll:{initial:e,current:e,max:t,diff:{value:z,displacement:z}}}})(),a=r.scroll.current,o=e.droppable,i=n.droppable.getAllByType(o.type).map((e=>e.callbacks.getDimensionAndWatchScroll(a,t))),s=n.draggable.getAllByType(e.draggable.type).map((e=>e.getDimension(a))),l={draggables:re(s),droppables:ne(i)};lt();return{dimensions:l,critical:e,viewport:r}};function sn(e,t,n){if(n.descriptor.id===t.id)return!1;if(n.descriptor.type!==t.type)return!1;return"virtual"===e.droppable.getById(n.descriptor.droppableId).descriptor.mode}var ln=(e,t)=>{let n=null;const r=function({registry:e,callbacks:t}){let n={additions:{},removals:{},modified:{}},r=null;const a=()=>{r||(t.collectionStarting(),r=requestAnimationFrame((()=>{r=null,st();const{additions:a,removals:o,modified:i}=n,s=Object.keys(a).map((t=>e.draggable.getById(t).getDimension(z))).sort(((e,t)=>e.descriptor.index-t.descriptor.index)),l=Object.keys(i).map((t=>({droppableId:t,scroll:e.droppable.getById(t).callbacks.getScrollWhileDragging()}))),c={additions:s,removals:Object.keys(o),modified:l};n={additions:{},removals:{},modified:{}},lt(),t.publish(c)})))};return{add:e=>{const t=e.descriptor.id;n.additions[t]=e,n.modified[e.descriptor.droppableId]=!0,n.removals[t]&&delete n.removals[t],a()},remove:e=>{const t=e.descriptor;n.removals[t.id]=!0,n.modified[t.droppableId]=!0,n.additions[t.id]&&delete n.additions[t.id],a()},stop:()=>{r&&(cancelAnimationFrame(r),r=null,n={additions:{},removals:{},modified:{}})}}}({callbacks:{publish:t.publishWhileDragging,collectionStarting:t.collectionStarting},registry:e}),a=t=>{n||L(!1);const a=n.critical.draggable;"ADDITION"===t.type&&sn(e,a,t.value)&&r.add(t.value),"REMOVAL"===t.type&&sn(e,a,t.value)&&r.remove(t.value)},o={updateDroppableIsEnabled:(r,a)=>{e.droppable.exists(r)||L(!1),n&&t.updateDroppableIsEnabled({id:r,isEnabled:a})},updateDroppableIsCombineEnabled:(r,a)=>{n&&(e.droppable.exists(r)||L(!1),t.updateDroppableIsCombineEnabled({id:r,isCombineEnabled:a}))},scrollDroppable:(t,r)=>{n&&e.droppable.getById(t).callbacks.scroll(r)},updateDroppableScroll:(r,a)=>{n&&(e.droppable.exists(r)||L(!1),t.updateDroppableScroll({id:r,newScroll:a}))},startPublishing:t=>{n&&L(!1);const r=e.draggable.getById(t.draggableId),o=e.droppable.getById(r.descriptor.droppableId),i={draggable:r.descriptor,droppable:o.descriptor},s=e.subscribe(a);return n={critical:i,unsubscribe:s},on({critical:i,registry:e,scrollOptions:t.scrollOptions})},stopPublishing:()=>{if(!n)return;r.stop();const t=n.critical.droppable;e.droppable.getAllByType(t.type).forEach((e=>e.callbacks.dragStopped())),n.unsubscribe(),n=null}};return o},cn=(e,t)=>"IDLE"===e.phase||"DROP_ANIMATING"===e.phase&&(e.completed.result.draggableId!==t&&"DROP"===e.completed.result.reason),un=e=>{window.scrollBy(e.x,e.y)};const dn=R((e=>ae(e).filter((e=>!!e.isEnabled&&!!e.frame))));var pn=({center:e,destination:t,droppables:n})=>{if(t){const e=n[t];return e.frame?e:null}const r=((e,t)=>{const n=dn(t).find((t=>(t.frame||L(!1),Ye(t.frame.pageMarginBox)(e))))||null;return n})(e,n);return r};const fn={startFromPercentage:.25,maxScrollAtPercentage:.05,maxPixelScroll:28,ease:e=>e**2,durationDampening:{stopDampeningAt:1200,accelerateAt:360},disabled:!1};var hn=({startOfRange:e,endOfRange:t,current:n})=>{const r=t-e;if(0===r)return 0;return(n-e)/r},gn=({distanceToEdge:e,thresholds:t,dragStartTime:n,shouldUseTimeDampening:r,getAutoScrollerOptions:a})=>{const o=((e,t,n=()=>fn)=>{const r=n();if(e>t.startScrollingFrom)return 0;if(e<=t.maxScrollValueAt)return r.maxPixelScroll;if(e===t.startScrollingFrom)return 1;const a=1-hn({startOfRange:t.maxScrollValueAt,endOfRange:t.startScrollingFrom,current:e}),o=r.maxPixelScroll*r.ease(a);return Math.ceil(o)})(e,t,a);return 0===o?0:r?Math.max(((e,t,n)=>{const r=n(),a=r.durationDampening.accelerateAt,o=r.durationDampening.stopDampeningAt,i=t,s=o,l=Date.now()-i;if(l>=o)return e;if(l{const i=((e,t,n=()=>fn)=>{const r=n();return{startScrollingFrom:e[t.size]*r.startFromPercentage,maxScrollValueAt:e[t.size]*r.maxScrollAtPercentage}})(e,r,o);return t[r.end]0===e?0:e));var bn=({dragStartTime:e,container:t,subject:n,center:r,shouldUseTimeDampening:a,getAutoScrollerOptions:o})=>{const i={top:r.y-t.top,right:t.right-r.x,bottom:t.bottom-r.y,left:r.x-t.left},s=mn({container:t,distanceToEdges:i,dragStartTime:e,axis:ve,shouldUseTimeDampening:a,getAutoScrollerOptions:o}),l=mn({container:t,distanceToEdges:i,dragStartTime:e,axis:be,shouldUseTimeDampening:a,getAutoScrollerOptions:o}),c=vn({x:l,y:s});if(H(c,z))return null;const u=(({container:e,subject:t,proposedScroll:n})=>{const r=t.height>e.height,a=t.width>e.width;return a||r?a&&r?null:{x:a?0:n.x,y:r?0:n.y}:n})({container:t,subject:n,proposedScroll:c});return u?H(u,z)?null:u:null};const yn=X((e=>0===e?0:e>0?1:-1)),wn=(()=>{const e=(e,t)=>e<0?e:e>t?e-t:0;return({current:t,max:n,change:r})=>{const a=U(t,r),o={x:e(a.x,n.x),y:e(a.y,n.y)};return H(o,z)?null:o}})(),Sn=({max:e,current:t,change:n})=>{const r={x:Math.max(t.x,e.x),y:Math.max(t.y,e.y)},a=yn(n),o=wn({max:r,current:t,change:a});return!o||(0!==a.x&&0===o.x||0!==a.y&&0===o.y)},xn=(e,t)=>Sn({current:e.scroll.current,max:e.scroll.max,change:t}),En=(e,t)=>{const n=e.frame;return!!n&&Sn({current:n.scroll.current,max:n.scroll.max,change:t})};var Cn=({state:e,dragStartTime:t,shouldUseTimeDampening:n,scrollWindow:r,scrollDroppable:a,getAutoScrollerOptions:o})=>{const i=e.current.page.borderBoxCenter,s=e.dimensions.draggables[e.critical.draggable.id].page.marginBox;if(e.isWindowScrollAllowed){const a=(({viewport:e,subject:t,center:n,dragStartTime:r,shouldUseTimeDampening:a,getAutoScrollerOptions:o})=>{const i=bn({dragStartTime:r,container:e.frame,subject:t,center:n,shouldUseTimeDampening:a,getAutoScrollerOptions:o});return i&&xn(e,i)?i:null})({dragStartTime:t,viewport:e.viewport,subject:s,center:i,shouldUseTimeDampening:n,getAutoScrollerOptions:o});if(a)return void r(a)}const l=pn({center:i,destination:Ge(e.impact),droppables:e.dimensions.droppables});if(!l)return;const c=(({droppable:e,subject:t,center:n,dragStartTime:r,shouldUseTimeDampening:a,getAutoScrollerOptions:o})=>{const i=e.frame;if(!i)return null;const s=bn({dragStartTime:r,container:i.pageMarginBox,subject:t,center:n,shouldUseTimeDampening:a,getAutoScrollerOptions:o});return s&&En(e,s)?s:null})({dragStartTime:t,droppable:l,subject:s,center:i,shouldUseTimeDampening:n,getAutoScrollerOptions:o});c&&a(l.descriptor.id,c)},Rn=({move:e,scrollDroppable:t,scrollWindow:n})=>{const r=(e,n)=>{if(!En(e,n))return n;const r=((e,t)=>{const n=e.frame;return n&&En(e,t)?wn({current:n.scroll.current,max:n.scroll.max,change:t}):null})(e,n);if(!r)return t(e.descriptor.id,n),null;const a=W(n,r);t(e.descriptor.id,a);return W(n,a)},a=(e,t,r)=>{if(!e)return r;if(!xn(t,r))return r;const a=((e,t)=>{if(!xn(e,t))return null;const n=e.scroll.max,r=e.scroll.current;return wn({current:r,max:n,change:t})})(t,r);if(!a)return n(r),null;const o=W(r,a);n(o);return W(r,o)};return t=>{const n=t.scrollJumpRequest;if(!n)return;const o=Ge(t.impact);o||L(!1);const i=r(t.dimensions.droppables[o],n);if(!i)return;const s=t.viewport,l=a(t.isWindowScrollAllowed,s,i);l&&((t,n)=>{const r=U(t.current.client.selection,n);e({client:r})})(t,l)}},Dn=({scrollDroppable:e,scrollWindow:t,move:n,getAutoScrollerOptions:r})=>{const a=(({scrollWindow:e,scrollDroppable:t,getAutoScrollerOptions:n=()=>fn})=>{const r=D(e),a=D(t);let o=null;const i=e=>{o||L(!1);const{shouldUseTimeDampening:t,dragStartTime:i}=o;Cn({state:e,scrollWindow:r,scrollDroppable:a,dragStartTime:i,shouldUseTimeDampening:t,getAutoScrollerOptions:n})};return{start:e=>{st(),o&&L(!1);const t=Date.now();let r=!1;const a=()=>{r=!0};Cn({state:e,dragStartTime:0,shouldUseTimeDampening:!1,scrollWindow:a,scrollDroppable:a,getAutoScrollerOptions:n}),o={dragStartTime:t,shouldUseTimeDampening:r},lt(),r&&i(e)},stop:()=>{o&&(r.cancel(),a.cancel(),o=null)},scroll:i}})({scrollWindow:t,scrollDroppable:e,getAutoScrollerOptions:r}),o=Rn({move:n,scrollWindow:t,scrollDroppable:e});return{scroll:e=>{r().disabled||"DRAGGING"!==e.phase||("FLUID"!==e.movementMode?e.scrollJumpRequest&&o(e):a.scroll(e))},start:a.start,stop:a.stop}};const _n="data-rfd",On=(()=>{const e=`${_n}-drag-handle`;return{base:e,draggableId:`${e}-draggable-id`,contextId:`${e}-context-id`}})(),In=(()=>{const e=`${_n}-draggable`;return{base:e,contextId:`${e}-context-id`,id:`${e}-id`}})(),Tn=(()=>{const e=`${_n}-droppable`;return{base:e,contextId:`${e}-context-id`,id:`${e}-id`}})(),An={contextId:`${_n}-scroll-container-context-id`},kn=(e,t)=>e.map((e=>{const n=e.styles[t];return n?`${e.selector} { ${n} }`:""})).join(" ");var Pn=e=>{const t=(n=e,e=>`[${e}="${n}"]`);var n;const r=(()=>{const e="\n cursor: -webkit-grab;\n cursor: grab;\n ";return{selector:t(On.contextId),styles:{always:"\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n touch-action: manipulation;\n ",resting:e,dragging:"pointer-events: none;",dropAnimating:e}}})(),a=[(()=>{const e=`\n transition: ${Nt.outOfTheWay};\n `;return{selector:t(In.contextId),styles:{dragging:e,dropAnimating:e,userCancel:e}}})(),r,{selector:t(Tn.contextId),styles:{always:"overflow-anchor: none;"}},{selector:"body",styles:{dragging:"\n cursor: grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n overflow-anchor: none;\n "}}];return{always:kn(a,"always"),resting:kn(a,"resting"),dragging:kn(a,"dragging"),dropAnimating:kn(a,"dropAnimating"),userCancel:kn(a,"userCancel")}};var Ln="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?r.useLayoutEffect:r.useEffect;const Nn=()=>{const e=document.querySelector("head");return e||L(!1),e},Mn=e=>{const t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.type="text/css",t};function Bn(e,t){return Array.from(e.querySelectorAll(t))}var Vn=e=>e&&e.ownerDocument&&e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;function jn(e){return e instanceof Vn(e).HTMLElement}function Fn(e,t){const n=`[${On.contextId}="${e}"]`,r=Bn(document,n);if(!r.length)return null;const a=r.find((e=>e.getAttribute(On.draggableId)===t));return a&&jn(a)?a:null}function $n(){const e={draggables:{},droppables:{}},t=[];function n(e){t.length&&t.forEach((t=>t(e)))}function r(t){return e.draggables[t]||null}function a(t){return e.droppables[t]||null}return{draggable:{register:t=>{e.draggables[t.descriptor.id]=t,n({type:"ADDITION",value:t})},update:(t,n)=>{const r=e.draggables[n.descriptor.id];r&&r.uniqueId===t.uniqueId&&(delete e.draggables[n.descriptor.id],e.draggables[t.descriptor.id]=t)},unregister:t=>{const a=t.descriptor.id,o=r(a);o&&t.uniqueId===o.uniqueId&&(delete e.draggables[a],e.droppables[t.descriptor.droppableId]&&n({type:"REMOVAL",value:t}))},getById:function(e){const t=r(e);return t||L(!1),t},findById:r,exists:e=>Boolean(r(e)),getAllByType:t=>Object.values(e.draggables).filter((e=>e.descriptor.type===t))},droppable:{register:t=>{e.droppables[t.descriptor.id]=t},unregister:t=>{const n=a(t.descriptor.id);n&&t.uniqueId===n.uniqueId&&delete e.droppables[t.descriptor.id]},getById:function(e){const t=a(e);return t||L(!1),t},findById:a,exists:e=>Boolean(a(e)),getAllByType:t=>Object.values(e.droppables).filter((e=>e.descriptor.type===t))},subscribe:function(e){return t.push(e),function(){const n=t.indexOf(e);-1!==n&&t.splice(n,1)}},clean:function(){e.draggables={},e.droppables={},t.length=0}}}var zn=a().createContext(null),Un=()=>{const e=document.body;return e||L(!1),e};var Wn={position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0 0 0 0)","clip-path":"inset(100%)"};const Hn=e=>`rfd-announcement-${e}`;let Gn=0;const qn={separator:"::"};var Qn="useId"in a()?function(e,t=qn){const n=a().useId();return u((()=>`${e}${t.separator}${n}`),[t.separator,e,n])}:function(e,t=qn){return u((()=>`${e}${t.separator}${Gn++}`),[t.separator,e])};var Yn=a().createContext(null);function Xn(e){0}function Kn(e,t){Xn()}function Zn(e){const t=(0,r.useRef)(e);return(0,r.useEffect)((()=>{t.current=e})),t}function Jn(e){return"IDLE"!==e.phase&&"DROP_ANIMATING"!==e.phase&&e.isDragging}const er=9,tr=13,nr=33,rr=34,ar=35,or=36,ir={[tr]:!0,[er]:!0};var sr=e=>{ir[e.keyCode]&&e.preventDefault()};var lr=(()=>{const e="visibilitychange";if("undefined"==typeof document)return e;return[e,`ms${e}`,`webkit${e}`,`moz${e}`,`o${e}`].find((e=>`on${e}`in document))||e})();const cr={type:"IDLE"};function ur({cancel:e,completed:t,getPhase:n,setPhase:r}){return[{eventName:"mousemove",fn:e=>{const{button:t,clientX:a,clientY:o}=e;if(0!==t)return;const i={x:a,y:o},s=n();if("DRAGGING"===s.type)return e.preventDefault(),void s.actions.move(i);"PENDING"!==s.type&&L(!1);const l=s.point;if(c=l,u=i,!(Math.abs(u.x-c.x)>=5||Math.abs(u.y-c.y)>=5))return;var c,u;e.preventDefault();const d=s.actions.fluidLift(i);r({type:"DRAGGING",actions:d})}},{eventName:"mouseup",fn:r=>{const a=n();"DRAGGING"===a.type?(r.preventDefault(),a.actions.drop({shouldBlockNextClick:!0}),t()):e()}},{eventName:"mousedown",fn:t=>{"DRAGGING"===n().type&&t.preventDefault(),e()}},{eventName:"keydown",fn:t=>{if("PENDING"!==n().type)return 27===t.keyCode?(t.preventDefault(),void e()):void sr(t);e()}},{eventName:"resize",fn:e},{eventName:"scroll",options:{passive:!0,capture:!1},fn:()=>{"PENDING"===n().type&&e()}},{eventName:"webkitmouseforcedown",fn:t=>{const r=n();"IDLE"===r.type&&L(!1),r.actions.shouldRespectForcePress()?e():t.preventDefault()}},{eventName:lr,fn:e}]}function dr(){}const pr={[rr]:!0,[nr]:!0,[or]:!0,[ar]:!0};function fr(e,t){function n(){t(),e.cancel()}return[{eventName:"keydown",fn:r=>27===r.keyCode?(r.preventDefault(),void n()):32===r.keyCode?(r.preventDefault(),t(),void e.drop()):40===r.keyCode?(r.preventDefault(),void e.moveDown()):38===r.keyCode?(r.preventDefault(),void e.moveUp()):39===r.keyCode?(r.preventDefault(),void e.moveRight()):37===r.keyCode?(r.preventDefault(),void e.moveLeft()):void(pr[r.keyCode]?r.preventDefault():sr(r))},{eventName:"mousedown",fn:n},{eventName:"mouseup",fn:n},{eventName:"click",fn:n},{eventName:"touchstart",fn:n},{eventName:"resize",fn:n},{eventName:"wheel",fn:n,options:{passive:!0}},{eventName:lr,fn:n}]}const hr={type:"IDLE"};const gr=["input","button","textarea","select","option","optgroup","video","audio"];function mr(e,t){if(null==t)return!1;if(gr.includes(t.tagName.toLowerCase()))return!0;const n=t.getAttribute("contenteditable");return"true"===n||""===n||t!==e&&mr(e,t.parentElement)}function vr(e,t){const n=t.target;return!!jn(n)&&mr(e,n)}var br=e=>f(e.getBoundingClientRect()).center;const yr=(()=>{const e="matches";if("undefined"==typeof document)return e;return[e,"msMatchesSelector","webkitMatchesSelector"].find((e=>e in Element.prototype))||e})();function wr(e,t){return null==e?null:e[yr](t)?e:wr(e.parentElement,t)}function Sr(e,t){return e.closest?e.closest(t):wr(e,t)}function xr(e,t){const n=t.target;if(!((r=n)instanceof Vn(r).Element))return null;var r;const a=function(e){return`[${On.contextId}="${e}"]`}(e),o=Sr(n,a);return o&&jn(o)?o:null}function Er(e){e.preventDefault()}function Cr({expected:e,phase:t,isLockActive:n,shouldWarn:r}){return!!n()&&e===t}function Rr({lockAPI:e,store:t,registry:n,draggableId:r}){if(e.isClaimed())return!1;const a=n.draggable.findById(r);return!!a&&(!!a.options.isEnabled&&!!cn(t.getState(),r))}function Dr({lockAPI:e,contextId:t,store:n,registry:r,draggableId:a,forceSensorStop:o,sourceEvent:i}){if(!Rr({lockAPI:e,store:n,registry:r,draggableId:a}))return null;const s=r.draggable.getById(a),l=function(e,t){const n=`[${In.contextId}="${e}"]`,r=Bn(document,n).find((e=>e.getAttribute(In.id)===t));return r&&jn(r)?r:null}(t,s.descriptor.id);if(!l)return null;if(i&&!s.options.canDragInteractiveElements&&vr(l,i))return null;const c=e.claim(o||I);let u="PRE_DRAG";function d(){return s.options.shouldRespectForcePress}function p(){return e.isActive(c)}const f=function(e,t){Cr({expected:e,phase:u,isLockActive:p,shouldWarn:!0})&&n.dispatch(t())}.bind(null,"DRAGGING");function h(t){function r(){e.release(),u="COMPLETED"}function a(e,a={shouldBlockNextClick:!1}){if(t.cleanup(),a.shouldBlockNextClick){const e=T(window,[{eventName:"click",fn:Er,options:{once:!0,passive:!1,capture:!0}}]);setTimeout(e)}r(),n.dispatch(Ot({reason:e}))}return"PRE_DRAG"!==u&&(r(),L(!1)),n.dispatch(gt(t.liftActionArgs)),u="DRAGGING",{isActive:()=>Cr({expected:"DRAGGING",phase:u,isLockActive:p,shouldWarn:!1}),shouldRespectForcePress:d,drop:e=>a("DROP",e),cancel:e=>a("CANCEL",e),...t.actions}}return{isActive:()=>Cr({expected:"PRE_DRAG",phase:u,isLockActive:p,shouldWarn:!1}),shouldRespectForcePress:d,fluidLift:function(e){const t=D((e=>{f((()=>St({client:e})))}));return{...h({liftActionArgs:{id:a,clientSelection:e,movementMode:"FLUID"},cleanup:()=>t.cancel(),actions:{move:t}}),move:t}},snapLift:function(){const e={moveUp:()=>f(xt),moveRight:()=>f(Ct),moveDown:()=>f(Et),moveLeft:()=>f(Rt)};return h({liftActionArgs:{id:a,clientSelection:br(l),movementMode:"SNAP"},cleanup:I,actions:e})},abort:function(){Cr({expected:"PRE_DRAG",phase:u,isLockActive:p,shouldWarn:!0})&&e.release()}}}const _r=[function(e){const t=(0,r.useRef)(cr),n=(0,r.useRef)(I),a=u((()=>({eventName:"mousedown",fn:function(t){if(t.defaultPrevented)return;if(0!==t.button)return;if(t.ctrlKey||t.metaKey||t.shiftKey||t.altKey)return;const r=e.findClosestDraggableId(t);if(!r)return;const a=e.tryGetLock(r,s,{sourceEvent:t});if(!a)return;t.preventDefault();const o={x:t.clientX,y:t.clientY};n.current(),p(a,o)}})),[e]),o=u((()=>({eventName:"webkitmouseforcewillbegin",fn:t=>{if(t.defaultPrevented)return;const n=e.findClosestDraggableId(t);if(!n)return;const r=e.findOptionsForDraggable(n);r&&(r.shouldRespectForcePress||e.canGetLock(n)&&t.preventDefault())}})),[e]),i=d((function(){n.current=T(window,[o,a],{passive:!1,capture:!0})}),[o,a]),s=d((()=>{"IDLE"!==t.current.type&&(t.current=cr,n.current(),i())}),[i]),l=d((()=>{const e=t.current;s(),"DRAGGING"===e.type&&e.actions.cancel({shouldBlockNextClick:!0}),"PENDING"===e.type&&e.actions.abort()}),[s]),c=d((function(){const e=ur({cancel:l,completed:s,getPhase:()=>t.current,setPhase:e=>{t.current=e}});n.current=T(window,e,{capture:!0,passive:!1})}),[l,s]),p=d((function(e,n){"IDLE"!==t.current.type&&L(!1),t.current={type:"PENDING",point:n,actions:e},c()}),[c]);Ln((function(){return i(),function(){n.current()}}),[i])},function(e){const t=(0,r.useRef)(dr),n=u((()=>({eventName:"keydown",fn:function(n){if(n.defaultPrevented)return;if(32!==n.keyCode)return;const r=e.findClosestDraggableId(n);if(!r)return;const o=e.tryGetLock(r,l,{sourceEvent:n});if(!o)return;n.preventDefault();let i=!0;const s=o.snapLift();function l(){i||L(!1),i=!1,t.current(),a()}t.current(),t.current=T(window,fr(s,l),{capture:!0,passive:!1})}})),[e]),a=d((function(){t.current=T(window,[n],{passive:!1,capture:!0})}),[n]);Ln((function(){return a(),function(){t.current()}}),[a])},function(e){const t=(0,r.useRef)(hr),n=(0,r.useRef)(I),a=d((function(){return t.current}),[]),o=d((function(e){t.current=e}),[]),i=u((()=>({eventName:"touchstart",fn:function(t){if(t.defaultPrevented)return;const r=e.findClosestDraggableId(t);if(!r)return;const a=e.tryGetLock(r,l,{sourceEvent:t});if(!a)return;const o=t.touches[0],{clientX:i,clientY:s}=o,c={x:i,y:s};n.current(),h(a,c)}})),[e]),s=d((function(){n.current=T(window,[i],{capture:!0,passive:!1})}),[i]),l=d((()=>{const e=t.current;"IDLE"!==e.type&&("PENDING"===e.type&&clearTimeout(e.longPressTimerId),o(hr),n.current(),s())}),[s,o]),c=d((()=>{const e=t.current;l(),"DRAGGING"===e.type&&e.actions.cancel({shouldBlockNextClick:!0}),"PENDING"===e.type&&e.actions.abort()}),[l]),p=d((function(){const e={capture:!0,passive:!1},t={cancel:c,completed:l,getPhase:a},r=T(window,function({cancel:e,completed:t,getPhase:n}){return[{eventName:"touchmove",options:{capture:!1},fn:t=>{const r=n();if("DRAGGING"!==r.type)return void e();r.hasMoved=!0;const{clientX:a,clientY:o}=t.touches[0],i={x:a,y:o};t.preventDefault(),r.actions.move(i)}},{eventName:"touchend",fn:r=>{const a=n();"DRAGGING"===a.type?(r.preventDefault(),a.actions.drop({shouldBlockNextClick:!0}),t()):e()}},{eventName:"touchcancel",fn:t=>{"DRAGGING"===n().type?(t.preventDefault(),e()):e()}},{eventName:"touchforcechange",fn:t=>{const r=n();"IDLE"===r.type&&L(!1);const a=t.touches[0];if(!a)return;if(!(a.force>=.15))return;const o=r.actions.shouldRespectForcePress();if("PENDING"!==r.type)return o?r.hasMoved?void t.preventDefault():void e():void t.preventDefault();o&&e()}},{eventName:lr,fn:e}]}(t),e),o=T(window,function({cancel:e,getPhase:t}){return[{eventName:"orientationchange",fn:e},{eventName:"resize",fn:e},{eventName:"contextmenu",fn:e=>{e.preventDefault()}},{eventName:"keydown",fn:n=>{"DRAGGING"===t().type?(27===n.keyCode&&n.preventDefault(),e()):e()}},{eventName:lr,fn:e}]}(t),e);n.current=function(){r(),o()}}),[c,a,l]),f=d((function(){const e=a();"PENDING"!==e.type&&L(!1);const t=e.actions.fluidLift(e.point);o({type:"DRAGGING",actions:t,hasMoved:!1})}),[a,o]),h=d((function(e,t){"IDLE"!==a().type&&L(!1);const n=setTimeout(f,120);o({type:"PENDING",point:t,actions:e,longPressTimerId:n}),p()}),[p,a,o,f]);Ln((function(){return s(),function(){n.current();const e=a();"PENDING"===e.type&&(clearTimeout(e.longPressTimerId),o(hr))}}),[a,s,o]),Ln((function(){return T(window,[{eventName:"touchmove",fn:()=>{},options:{capture:!1,passive:!1}}])}),[])}];function Or({contextId:e,store:t,registry:n,customSensors:a,enableDefaultSensors:o}){const i=[...o?_r:[],...a||[]],s=(0,r.useState)((()=>function(){let e=null;function t(){e||L(!1),e=null}return{isClaimed:function(){return Boolean(e)},isActive:function(t){return t===e},claim:function(t){e&&L(!1);const n={abandon:t};return e=n,n},release:t,tryAbandon:function(){e&&(e.abandon(),t())}}}()))[0],l=d((function(e,t){Jn(e)&&!Jn(t)&&s.tryAbandon()}),[s]);Ln((function(){let e=t.getState();return t.subscribe((()=>{const n=t.getState();l(e,n),e=n}))}),[s,t,l]),Ln((()=>s.tryAbandon),[s.tryAbandon]);const c=d((e=>Rr({lockAPI:s,registry:n,store:t,draggableId:e})),[s,n,t]),p=d(((r,a,o)=>Dr({lockAPI:s,registry:n,contextId:e,store:t,draggableId:r,forceSensorStop:a||null,sourceEvent:o&&o.sourceEvent?o.sourceEvent:null})),[e,s,n,t]),f=d((t=>function(e,t){const n=xr(e,t);return n?n.getAttribute(On.draggableId):null}(e,t)),[e]),h=d((e=>{const t=n.draggable.findById(e);return t?t.options:null}),[n.draggable]),g=d((function(){s.isClaimed()&&(s.tryAbandon(),"IDLE"!==t.getState().phase&&t.dispatch(Dt()))}),[s,t]),m=d((()=>s.isClaimed()),[s]),v=u((()=>({canGetLock:c,tryGetLock:p,findClosestDraggableId:f,findOptionsForDraggable:h,tryReleaseLock:g,isLockClaimed:m})),[c,p,f,h,g,m]);Xn();for(let e=0;e({onBeforeCapture:t=>{const n=()=>{e.onBeforeCapture&&e.onBeforeCapture(t)};a().version.startsWith("16")||a().version.startsWith("17")?n():(0,o.flushSync)(n)},onBeforeDragStart:e.onBeforeDragStart,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,onDragUpdate:e.onDragUpdate}),Tr=e=>({...fn,...e.autoScrollerOptions,durationDampening:{...fn.durationDampening,...e.autoScrollerOptions}});function Ar(e){return e.current||L(!1),e.current}function kr(e){const{contextId:t,setCallbacks:n,sensors:o,nonce:i,dragHandleUsageInstructions:c}=e,p=(0,r.useRef)(null);Kn();const f=Zn(e),h=d((()=>Ir(f.current)),[f]),g=d((()=>Tr(f.current)),[f]),m=function(e){const t=u((()=>Hn(e)),[e]),n=(0,r.useRef)(null);return(0,r.useEffect)((function(){const e=document.createElement("div");return n.current=e,e.id=t,e.setAttribute("aria-live","assertive"),e.setAttribute("aria-atomic","true"),_(e.style,Wn),Un().appendChild(e),function(){setTimeout((function(){const t=Un();t.contains(e)&&t.removeChild(e),e===n.current&&(n.current=null)}))}}),[t]),d((e=>{const t=n.current;t&&(t.textContent=e)}),[])}(t),v=function({contextId:e,text:t}){const n=Qn("hidden-text",{separator:"-"}),a=u((()=>function({contextId:e,uniqueId:t}){return`rfd-hidden-text-${e}-${t}`}({contextId:e,uniqueId:n})),[n,e]);return(0,r.useEffect)((function(){const e=document.createElement("div");return e.id=a,e.textContent=t,e.style.display="none",Un().appendChild(e),function(){const t=Un();t.contains(e)&&t.removeChild(e)}}),[a,t]),a}({contextId:t,text:c}),b=function(e,t){const n=u((()=>Pn(e)),[e]),a=(0,r.useRef)(null),o=(0,r.useRef)(null),i=d(R((e=>{const t=o.current;t||L(!1),t.textContent=e})),[]),s=d((e=>{const t=a.current;t||L(!1),t.textContent=e}),[]);Ln((()=>{(a.current||o.current)&&L(!1);const r=Mn(t),l=Mn(t);return a.current=r,o.current=l,r.setAttribute(`${_n}-always`,e),l.setAttribute(`${_n}-dynamic`,e),Nn().appendChild(r),Nn().appendChild(l),s(n.always),i(n.resting),()=>{const e=e=>{const t=e.current;t||L(!1),Nn().removeChild(t),e.current=null};e(a),e(o)}}),[t,s,i,n.always,n.resting,e]);const l=d((()=>i(n.dragging)),[i,n.dragging]),c=d((e=>{i("DROP"!==e?n.userCancel:n.dropAnimating)}),[i,n.dropAnimating,n.userCancel]),p=d((()=>{o.current&&i(n.resting)}),[i,n.resting]);return u((()=>({dragging:l,dropping:c,resting:p})),[l,c,p])}(t,i),y=d((e=>{Ar(p).dispatch(e)}),[]),w=u((()=>(0,s.bindActionCreators)({publishWhileDragging:mt,updateDroppableScroll:bt,updateDroppableIsEnabled:yt,updateDroppableIsCombineEnabled:wt,collectionStarting:vt},y)),[y]),S=function(){const e=u($n,[]);return(0,r.useEffect)((()=>function(){a().version.startsWith("16")||a().version.startsWith("17")?requestAnimationFrame(e.clean):e.clean()}),[e]),e}(),x=u((()=>ln(S,w)),[S,w]),E=u((()=>Dn({scrollWindow:un,scrollDroppable:x.scrollDroppable,getAutoScrollerOptions:g,...(0,s.bindActionCreators)({move:St},y)})),[x.scrollDroppable,y,g]),C=function(e){const t=(0,r.useRef)({}),n=(0,r.useRef)(null),a=(0,r.useRef)(null),o=(0,r.useRef)(!1),i=d((function(e,n){const r={id:e,focus:n};return t.current[e]=r,function(){const n=t.current;n[e]!==r&&delete n[e]}}),[]),s=d((function(t){const n=Fn(e,t);n&&n!==document.activeElement&&n.focus()}),[e]),l=d((function(e,t){n.current===e&&(n.current=t)}),[]),c=d((function(){a.current||o.current&&(a.current=requestAnimationFrame((()=>{a.current=null;const e=n.current;e&&s(e)})))}),[s]),p=d((function(e){n.current=null;const t=document.activeElement;t&&t.getAttribute(On.draggableId)===e&&(n.current=e)}),[]);return Ln((()=>(o.current=!0,function(){o.current=!1;const e=a.current;e&&cancelAnimationFrame(e)})),[]),u((()=>({register:i,tryRecordFocus:p,tryRestoreFocusRecorded:c,tryShiftRecord:l})),[i,p,c,l])}(t),D=u((()=>tn({announce:m,autoScroller:E,dimensionMarshal:x,focusMarshal:C,getResponders:h,styleMarshal:b})),[m,E,x,C,h,b]);p.current=D;const O=d((()=>{const e=Ar(p);"IDLE"!==e.getState().phase&&e.dispatch(Dt())}),[]),I=d((()=>{const e=Ar(p).getState();return"DROP_ANIMATING"===e.phase||"IDLE"!==e.phase&&e.isDragging}),[]);n(u((()=>({isDragging:I,tryAbort:O})),[I,O]));const T=d((e=>cn(Ar(p).getState(),e)),[]),A=d((()=>Qe(Ar(p).getState())),[]),k=u((()=>({marshal:x,focus:C,contextId:t,canLift:T,isMovementAllowed:A,dragHandleUsageInstructionsId:v,registry:S})),[t,x,v,C,T,A,S]);return Or({contextId:t,store:D,registry:S,customSensors:o||null,enableDefaultSensors:!1!==e.enableDefaultSensors}),(0,r.useEffect)((()=>O),[O]),a().createElement(Yn.Provider,{value:k},a().createElement(l.Provider,{context:zn,store:D},e.children))}let Pr=0;var Lr="useId"in a()?function(){return a().useId()}:function(){return u((()=>""+Pr++),[])};function Nr(e){const t=Lr(),n=e.dragHandleUsageInstructions||$.dragHandleUsageInstructions;return a().createElement(N,null,(r=>a().createElement(kr,{nonce:e.nonce,contextId:t,setCallbacks:r,dragHandleUsageInstructions:n,enableDefaultSensors:e.enableDefaultSensors,sensors:e.sensors,onBeforeCapture:e.onBeforeCapture,onBeforeDragStart:e.onBeforeDragStart,onDragStart:e.onDragStart,onDragUpdate:e.onDragUpdate,onDragEnd:e.onDragEnd,autoScrollerOptions:e.autoScrollerOptions},e.children)))}const Mr=5e3,Br=4500,Vr=(e,t)=>t?Nt.drop(t.duration):e?Nt.snap:Nt.fluid,jr=(e,t)=>{if(e)return t?At.drop:At.combining};function Fr(e){return"DRAGGING"===e.type?function(e){const t=e.dimension.client,{offset:n,combineWith:r,dropping:a}=e,o=Boolean(r),i=(e=>null!=e.forceShouldAnimate?e.forceShouldAnimate:"SNAP"===e.mode)(e),s=Boolean(a),l=s?Vt(n,o):Bt(n);return{position:"fixed",top:t.marginBox.top,left:t.marginBox.left,boxSizing:"border-box",width:t.borderBox.width,height:t.borderBox.height,transition:Vr(i,a),transform:l,opacity:jr(o,s),zIndex:s?Br:Mr,pointerEvents:"none"}}(e):{transform:Bt((t=e).offset),transition:t.shouldAnimateDisplacement?void 0:"none"};var t}function $r(e){const t=Qn("draggable"),{descriptor:n,registry:a,getDraggableRef:o,canDragInteractiveElements:i,shouldRespectForcePress:s,isEnabled:l}=e,c=u((()=>({canDragInteractiveElements:i,shouldRespectForcePress:s,isEnabled:l})),[i,l,s]),p=d((e=>{const t=o();return t||L(!1),function(e,t,n=z){const r=window.getComputedStyle(t),a=t.getBoundingClientRect(),o=S(a,r),i=w(o,n);return{descriptor:e,placeholder:{client:o,tagName:t.tagName.toLowerCase(),display:r.display},displaceBy:{x:o.marginBox.width,y:o.marginBox.height},client:o,page:i}}(n,t,e)}),[n,o]),f=u((()=>({uniqueId:t,descriptor:n,options:c,getDimension:p})),[n,p,c,t]),h=(0,r.useRef)(f),g=(0,r.useRef)(!0);Ln((()=>(a.draggable.register(h.current),()=>a.draggable.unregister(h.current))),[a.draggable]),Ln((()=>{if(g.current)return void(g.current=!1);const e=h.current;h.current=f,a.draggable.update(f,e)}),[f,a.draggable])}var zr=a().createContext(null);function Ur(e){const t=(0,r.useContext)(e);return t||L(!1),t}function Wr(e){e.preventDefault()}var Hr=e=>{const t=(0,r.useRef)(null),n=d(((e=null)=>{t.current=e}),[]),i=d((()=>t.current),[]),{contextId:s,dragHandleUsageInstructionsId:l,registry:c}=Ur(Yn),{type:p,droppableId:f}=Ur(zr),h=u((()=>({id:e.draggableId,index:e.index,type:p,droppableId:f})),[e.draggableId,e.index,p,f]),{children:g,draggableId:m,isEnabled:v,shouldRespectForcePress:b,canDragInteractiveElements:y,isClone:w,mapped:S,dropAnimationFinished:x}=e;if(Kn(),Xn(),!w){$r(u((()=>({descriptor:h,registry:c,getDraggableRef:i,canDragInteractiveElements:y,shouldRespectForcePress:b,isEnabled:v})),[h,c,i,y,b,v]))}const E=u((()=>v?{tabIndex:0,role:"button","aria-describedby":l,"data-rfd-drag-handle-draggable-id":m,"data-rfd-drag-handle-context-id":s,draggable:!1,onDragStart:Wr}:null),[s,l,m,v]),C=d((e=>{"DRAGGING"===S.type&&S.dropping&&"transform"===e.propertyName&&(a().version.startsWith("16")||a().version.startsWith("17")?x():(0,o.flushSync)(x))}),[x,S]),R=u((()=>{const e=Fr(S),t="DRAGGING"===S.type&&S.dropping?C:void 0;return{innerRef:n,draggableProps:{"data-rfd-draggable-context-id":s,"data-rfd-draggable-id":m,style:e,onTransitionEnd:t},dragHandleProps:E}}),[s,E,m,S,C,n]),D=u((()=>({draggableId:h.id,type:h.type,source:{index:h.index,droppableId:h.droppableId}})),[h.droppableId,h.id,h.index,h.type]);return a().createElement(a().Fragment,null,g(R,S.snapshot,D))},Gr=(e,t)=>e===t,qr=e=>{const{combine:t,destination:n}=e;return n?n.droppableId:t?t.droppableId:null};function Qr(e=null){return{isDragging:!1,isDropAnimating:!1,isClone:!1,dropAnimation:null,mode:null,draggingOver:null,combineTargetFor:e,combineWith:null}}const Yr={mapped:{type:"SECONDARY",offset:z,combineTargetFor:null,shouldAnimateDisplacement:!0,snapshot:Qr(null)}};const Xr={dropAnimationFinished:It},Kr=(0,l.connect)((()=>{const e=function(){const e=R(((e,t)=>({x:e,y:t}))),t=R(((e,t,n=null,r=null,a=null)=>({isDragging:!0,isClone:t,isDropAnimating:Boolean(a),dropAnimation:a,mode:e,draggingOver:n,combineWith:r,combineTargetFor:null}))),n=R(((e,n,r,a,o=null,i=null,s=null)=>({mapped:{type:"DRAGGING",dropping:null,draggingOver:o,combineWith:i,mode:n,offset:e,dimension:r,forceShouldAnimate:s,snapshot:t(n,a,o,i,null)}})));return(r,a)=>{if(Jn(r)){if(r.critical.draggable.id!==a.draggableId)return null;const t=r.current.client.offset,i=r.dimensions.draggables[a.draggableId],s=Ge(r.impact),l=(o=r.impact).at&&"COMBINE"===o.at.type?o.at.combine.draggableId:null,c=r.forceShouldAnimate;return n(e(t.x,t.y),r.movementMode,i,a.isClone,s,l,c)}var o;if("DROP_ANIMATING"===r.phase){const e=r.completed;if(e.result.draggableId!==a.draggableId)return null;const n=a.isClone,o=r.dimensions.draggables[a.draggableId],i=e.result,s=i.mode,l=qr(i),c=(e=>e.combine?e.combine.draggableId:null)(i),u={duration:r.dropDuration,curve:Tt,moveTo:r.newHomeClientOffset,opacity:c?At.drop:null,scale:c?kt.drop:null};return{mapped:{type:"DRAGGING",offset:r.newHomeClientOffset,dimension:o,dropping:u,draggingOver:l,combineWith:c,mode:s,forceShouldAnimate:null,snapshot:t(s,n,l,c,u)}}}return null}}(),t=function(){const e=R(((e,t)=>({x:e,y:t}))),t=R(Qr),n=R(((e,n=null,r)=>({mapped:{type:"SECONDARY",offset:e,combineTargetFor:n,shouldAnimateDisplacement:r,snapshot:t(n)}}))),r=e=>e?n(z,e,!0):null,a=(t,a,o,i)=>{const s=o.displaced.visible[t],l=Boolean(i.inVirtualList&&i.effected[t]),c=le(o),u=c&&c.draggableId===t?a:null;if(!s){if(!l)return r(u);if(o.displaced.invisible[t])return null;const a=G(i.displacedBy.point),s=e(a.x,a.y);return n(s,u,!0)}if(l)return r(u);const d=o.displacedBy.point,p=e(d.x,d.y);return n(p,u,s.shouldAnimate)};return(e,t)=>{if(Jn(e))return e.critical.draggable.id===t.draggableId?null:a(t.draggableId,e.critical.draggable.id,e.impact,e.afterCritical);if("DROP_ANIMATING"===e.phase){const n=e.completed;return n.result.draggableId===t.draggableId?null:a(t.draggableId,n.result.draggableId,n.impact,n.afterCritical)}return null}}();return(n,r)=>e(n,r)||t(n,r)||Yr}),Xr,null,{context:zn,areStatePropsEqual:Gr})(Hr);var Zr=Kr;function Jr(e){return Ur(zr).isUsingCloneFor!==e.draggableId||e.isClone?a().createElement(Zr,e):null}function ea(e){const t="boolean"!=typeof e.isDragDisabled||!e.isDragDisabled,n=Boolean(e.disableInteractiveElementBlocking),r=Boolean(e.shouldRespectForcePress);return a().createElement(Jr,_({},e,{isClone:!1,isEnabled:t,canDragInteractiveElements:n,shouldRespectForcePress:r}))}const ta=e=>t=>e===t,na=ta("scroll"),ra=ta("auto"),aa=(ta("visible"),(e,t)=>t(e.overflowX)||t(e.overflowY)),oa=e=>{const t=window.getComputedStyle(e),n={overflowX:t.overflowX,overflowY:t.overflowY};return aa(n,na)||aa(n,ra)},ia=e=>null==e||e===document.body||e===document.documentElement?null:oa(e)?e:ia(e.parentElement);var sa=e=>({x:e.scrollLeft,y:e.scrollTop});const la=e=>{if(!e)return!1;return"fixed"===window.getComputedStyle(e).position||la(e.parentElement)};var ca=({ref:e,descriptor:t,env:n,windowScroll:r,direction:a,isDropDisabled:o,isCombineEnabled:i,shouldClipSubject:s})=>{const l=n.closestScrollable,c=((e,t)=>{const n=x(e);if(!t)return n;if(e!==t)return n;const r=n.paddingBox.top-t.scrollTop,a=n.paddingBox.left-t.scrollLeft,o=r+t.scrollHeight,i=a+t.scrollWidth,s=h({top:r,right:i,bottom:o,left:a},n.border);return v({borderBox:s,margin:n.margin,border:n.border,padding:n.padding})})(e,l),u=w(c,r),d=(()=>{if(!l)return null;const e=x(l),t={scrollHeight:l.scrollHeight,scrollWidth:l.scrollWidth};return{client:e,page:w(e,r),scroll:sa(l),scrollSize:t,shouldClipSubject:s}})(),p=(({descriptor:e,isEnabled:t,isCombineEnabled:n,isFixedOnPage:r,direction:a,client:o,page:i,closest:s})=>{const l=(()=>{if(!s)return null;const{scrollSize:e,client:t}=s,n=nn({scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,height:t.paddingBox.height,width:t.paddingBox.width});return{pageMarginBox:s.page.marginBox,frameClient:t,scrollSize:e,shouldClipSubject:s.shouldClipSubject,scroll:{initial:s.scroll,current:s.scroll,max:n,diff:{value:z,displacement:z}}}})(),c="vertical"===a?ve:be;return{descriptor:e,isCombineEnabled:n,isFixedOnPage:r,axis:c,isEnabled:t,client:o,page:i,frame:l,subject:ee({page:i,withPlaceholder:null,axis:c,frame:l})}})({descriptor:t,isEnabled:!o,isCombineEnabled:i,isFixedOnPage:n.isFixedOnPage,direction:a,client:c,page:u,closest:d});return p};const ua={passive:!1},da={passive:!0};var pa=e=>e.shouldPublishImmediately?ua:da;const fa=e=>e&&e.env.closestScrollable||null;function ha(e){const t=(0,r.useRef)(null),n=Ur(Yn),a=Qn("droppable"),{registry:o,marshal:i}=n,s=Zn(e),l=u((()=>({id:e.droppableId,type:e.type,mode:e.mode})),[e.droppableId,e.mode,e.type]),c=(0,r.useRef)(l),p=u((()=>R(((e,n)=>{t.current||L(!1);const r={x:e,y:n};i.updateDroppableScroll(l.id,r)}))),[l.id,i]),f=d((()=>{const e=t.current;return e&&e.env.closestScrollable?sa(e.env.closestScrollable):z}),[]),h=d((()=>{const e=f();p(e.x,e.y)}),[f,p]),g=u((()=>D(h)),[h]),m=d((()=>{const e=t.current,n=fa(e);e&&n||L(!1);e.scrollOptions.shouldPublishImmediately?h():g()}),[g,h]),v=d(((e,r)=>{t.current&&L(!1);const a=s.current,o=a.getDroppableRef();o||L(!1);const i=(e=>({closestScrollable:ia(e),isFixedOnPage:la(e)}))(o),c={ref:o,descriptor:l,env:i,scrollOptions:r};t.current=c;const u=ca({ref:o,descriptor:l,env:i,windowScroll:e,direction:a.direction,isDropDisabled:a.isDropDisabled,isCombineEnabled:a.isCombineEnabled,shouldClipSubject:!a.ignoreContainerClipping}),d=i.closestScrollable;return d&&(d.setAttribute(An.contextId,n.contextId),d.addEventListener("scroll",m,pa(c.scrollOptions))),u}),[n.contextId,l,m,s]),b=d((()=>{const e=t.current,n=fa(e);return e&&n||L(!1),sa(n)}),[]),y=d((()=>{const e=t.current;e||L(!1);const n=fa(e);t.current=null,n&&(g.cancel(),n.removeAttribute(An.contextId),n.removeEventListener("scroll",m,pa(e.scrollOptions)))}),[m,g]),w=d((e=>{const n=t.current;n||L(!1);const r=fa(n);r||L(!1),r.scrollTop+=e.y,r.scrollLeft+=e.x}),[]),S=u((()=>({getDimensionAndWatchScroll:v,getScrollWhileDragging:b,dragStopped:y,scroll:w})),[y,v,b,w]),x=u((()=>({uniqueId:a,descriptor:l,callbacks:S})),[S,l,a]);Ln((()=>(c.current=x.descriptor,o.droppable.register(x),()=>{t.current&&y(),o.droppable.unregister(x)})),[S,l,y,x,i,o.droppable]),Ln((()=>{t.current&&i.updateDroppableIsEnabled(c.current.id,!e.isDropDisabled)}),[e.isDropDisabled,i]),Ln((()=>{t.current&&i.updateDroppableIsCombineEnabled(c.current.id,e.isCombineEnabled)}),[e.isCombineEnabled,i])}function ga(){}const ma={width:0,height:0,margin:{top:0,right:0,bottom:0,left:0}},va=({isAnimatingOpenOnMount:e,placeholder:t,animate:n})=>{const r=(({isAnimatingOpenOnMount:e,placeholder:t,animate:n})=>e||"close"===n?ma:{height:t.client.borderBox.height,width:t.client.borderBox.width,margin:t.client.margin})({isAnimatingOpenOnMount:e,placeholder:t,animate:n});return{display:t.display,boxSizing:"border-box",width:r.width,height:r.height,marginTop:r.margin.top,marginRight:r.margin.right,marginBottom:r.margin.bottom,marginLeft:r.margin.left,flexShrink:"0",flexGrow:"0",pointerEvents:"none",transition:"none"!==n?Nt.placeholder:null}};var ba=a().memo((e=>{const t=(0,r.useRef)(null),n=d((()=>{t.current&&(clearTimeout(t.current),t.current=null)}),[]),{animate:o,onTransitionEnd:i,onClose:s,contextId:l}=e,[c,u]=(0,r.useState)("open"===e.animate);(0,r.useEffect)((()=>c?"open"!==o?(n(),u(!1),ga):t.current?ga:(t.current=setTimeout((()=>{t.current=null,u(!1)})),n):ga),[o,c,n]);const p=d((e=>{"height"===e.propertyName&&(i(),"close"===o&&s())}),[o,s,i]),f=va({isAnimatingOpenOnMount:c,animate:e.animate,placeholder:e.placeholder});return a().createElement(e.placeholder.tagName,{style:f,"data-rfd-placeholder-context-id":l,onTransitionEnd:p,ref:e.innerRef})}));class ya extends a().PureComponent{constructor(...e){super(...e),this.state={isVisible:Boolean(this.props.on),data:this.props.on,animate:this.props.shouldAnimate&&this.props.on?"open":"none"},this.onClose=()=>{"close"===this.state.animate&&this.setState({isVisible:!1})}}static getDerivedStateFromProps(e,t){return e.shouldAnimate?e.on?{isVisible:!0,data:e.on,animate:"open"}:t.isVisible?{isVisible:!0,data:t.data,animate:"close"}:{isVisible:!1,animate:"close",data:null}:{isVisible:Boolean(e.on),data:e.on,animate:"none"}}render(){if(!this.state.isVisible)return null;const e={onClose:this.onClose,data:this.state.data,animate:this.state.animate};return this.props.children(e)}}var wa=e=>{const t=(0,r.useContext)(Yn);t||L(!1);const{contextId:n,isMovementAllowed:o}=t,s=(0,r.useRef)(null),l=(0,r.useRef)(null),{children:c,droppableId:p,type:f,mode:h,direction:g,ignoreContainerClipping:m,isDropDisabled:v,isCombineEnabled:b,snapshot:y,useClone:w,updateViewportMaxScroll:S,getContainerForClone:x}=e,E=d((()=>s.current),[]),C=d(((e=null)=>{s.current=e}),[]),R=(d((()=>l.current),[]),d(((e=null)=>{l.current=e}),[]));Kn();const D=d((()=>{o()&&S({maxScroll:an()})}),[o,S]);ha({droppableId:p,type:f,mode:h,direction:g,isDropDisabled:v,isCombineEnabled:b,ignoreContainerClipping:m,getDroppableRef:E});const _=u((()=>a().createElement(ya,{on:e.placeholder,shouldAnimate:e.shouldAnimatePlaceholder},(({onClose:e,data:t,animate:r})=>a().createElement(ba,{placeholder:t,onClose:e,innerRef:R,animate:r,contextId:n,onTransitionEnd:D})))),[n,D,e.placeholder,e.shouldAnimatePlaceholder,R]),O=u((()=>({innerRef:C,placeholder:_,droppableProps:{"data-rfd-droppable-id":p,"data-rfd-droppable-context-id":n}})),[n,p,_,C]),I=w?w.dragging.draggableId:null,T=u((()=>({droppableId:p,type:f,isUsingCloneFor:I})),[p,I,f]);return a().createElement(zr.Provider,{value:T},c(O,y),function(){if(!w)return null;const{dragging:e,render:t}=w,n=a().createElement(Jr,{draggableId:e.draggableId,index:e.source.index,isClone:!0,isEnabled:!0,shouldRespectForcePress:!1,canDragInteractiveElements:!0},((n,r)=>t(n,r,e)));return i().createPortal(n,x())}())};const Sa={mode:"standard",type:"DEFAULT",direction:"vertical",isDropDisabled:!1,isCombineEnabled:!1,ignoreContainerClipping:!1,renderClone:null,getContainerForClone:function(){return document.body||L(!1),document.body}},xa=e=>{let t,n={...e};for(t in Sa)void 0===e[t]&&(n={...n,[t]:Sa[t]});return n},Ea=(e,t)=>e===t.droppable.type,Ca=(e,t)=>t.draggables[e.draggable.id],Ra={updateViewportMaxScroll:e=>({type:"UPDATE_VIEWPORT_MAX_SCROLL",payload:e})};var Da=(0,l.connect)((()=>{const e={placeholder:null,shouldAnimatePlaceholder:!0,snapshot:{isDraggingOver:!1,draggingOverWith:null,draggingFromThisWith:null,isUsingPlaceholder:!1},useClone:null},t={...e,shouldAnimatePlaceholder:!1},n=R((e=>({draggableId:e.id,type:e.type,source:{index:e.index,droppableId:e.droppableId}}))),r=R(((r,a,o,i,s,l)=>{const c=s.descriptor.id;if(s.descriptor.droppableId===r){const e=l?{render:l,dragging:n(s.descriptor)}:null,t={isDraggingOver:o,draggingOverWith:o?c:null,draggingFromThisWith:c,isUsingPlaceholder:!0};return{placeholder:s.placeholder,shouldAnimatePlaceholder:!1,snapshot:t,useClone:e}}if(!a)return t;if(!i)return e;const u={isDraggingOver:o,draggingOverWith:c,draggingFromThisWith:null,isUsingPlaceholder:!0};return{placeholder:s.placeholder,shouldAnimatePlaceholder:!0,snapshot:u,useClone:null}}));return(n,a)=>{const o=xa(a),i=o.droppableId,s=o.type,l=!o.isDropDisabled,c=o.renderClone;if(Jn(n)){const e=n.critical;if(!Ea(s,e))return t;const a=Ca(e,n.dimensions),o=Ge(n.impact)===i;return r(i,l,o,o,a,c)}if("DROP_ANIMATING"===n.phase){const e=n.completed;if(!Ea(s,e.critical))return t;const a=Ca(e.critical,n.dimensions);return r(i,l,qr(e.result)===i,Ge(e.impact)===i,a,c)}if("IDLE"===n.phase&&n.completed&&!n.shouldFlush){const r=n.completed;if(!Ea(s,r.critical))return t;const a=Ge(r.impact)===i,o=Boolean(r.impact.at&&"COMBINE"===r.impact.at.type),l=r.critical.droppable.id===i;return a?o?e:t:l?e:t}return t}}),Ra,((e,t,n)=>({...xa(n),...e,...t})),{context:zn,areStatePropsEqual:Gr})(wa)},7842:(e,t,n)=>{e=n.nmd(e);var r="__lodash_hash_undefined__",a=9007199254740991,o="[object Arguments]",i="[object Array]",s="[object Boolean]",l="[object Date]",c="[object Error]",u="[object Function]",d="[object Map]",p="[object Number]",f="[object Object]",h="[object Promise]",g="[object RegExp]",m="[object Set]",v="[object String]",b="[object Symbol]",y="[object WeakMap]",w="[object ArrayBuffer]",S="[object DataView]",x=/^\[object .+?Constructor\]$/,E=/^(?:0|[1-9]\d*)$/,C={};C["[object Float32Array]"]=C["[object Float64Array]"]=C["[object Int8Array]"]=C["[object Int16Array]"]=C["[object Int32Array]"]=C["[object Uint8Array]"]=C["[object Uint8ClampedArray]"]=C["[object Uint16Array]"]=C["[object Uint32Array]"]=!0,C[o]=C[i]=C[w]=C[s]=C[S]=C[l]=C[c]=C[u]=C[d]=C[p]=C[f]=C[g]=C[m]=C[v]=C[y]=!1;var R="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,D="object"==typeof self&&self&&self.Object===Object&&self,_=R||D||Function("return this")(),O=t&&!t.nodeType&&t,I=O&&e&&!e.nodeType&&e,T=I&&I.exports===O,A=T&&R.process,k=function(){try{return A&&A.binding&&A.binding("util")}catch(e){}}(),P=k&&k.isTypedArray;function L(e,t){for(var n=-1,r=null==e?0:e.length;++ns))return!1;var c=o.get(e);if(c&&o.get(t))return c==t;var u=-1,d=!0,p=2&n?new we:void 0;for(o.set(e,t),o.set(t,e);++u-1},be.prototype.set=function(e,t){var n=this.__data__,r=Ee(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},ye.prototype.clear=function(){this.size=0,this.__data__={hash:new ve,map:new(oe||be),string:new ve}},ye.prototype.delete=function(e){var t=Ae(this,e).delete(e);return this.size-=t?1:0,t},ye.prototype.get=function(e){return Ae(this,e).get(e)},ye.prototype.has=function(e){return Ae(this,e).has(e)},ye.prototype.set=function(e,t){var n=Ae(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},we.prototype.add=we.prototype.push=function(e){return this.__data__.set(e,r),this},we.prototype.has=function(e){return this.__data__.has(e)},Se.prototype.clear=function(){this.__data__=new be,this.size=0},Se.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Se.prototype.get=function(e){return this.__data__.get(e)},Se.prototype.has=function(e){return this.__data__.has(e)},Se.prototype.set=function(e,t){var n=this.__data__;if(n instanceof be){var r=n.__data__;if(!oe||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new ye(r)}return n.set(e,t),this.size=n.size,this};var Pe=te?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,o=[];++n-1&&e%1==0&&e-1&&e%1==0&&e<=a}function Ue(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function We(e){return null!=e&&"object"==typeof e}var He=P?function(e){return function(t){return e(t)}}(P):function(e){return We(e)&&ze(e.length)&&!!C[Ce(e)]};function Ge(e){return null!=(t=e)&&ze(t.length)&&!$e(t)?xe(e):Oe(e);var t}e.exports=function(e,t){return De(e,t)}},5162:(e,t,n)=>{var r=n(1433).Symbol;e.exports=r},7148:(e,t,n)=>{var r=n(5162),a=n(7903),o=n(1738),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?a(e):o(e)}},8812:(e,t,n)=>{var r=n(2140),a=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(a,""):e}},2999:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},7903:(e,t,n)=>{var r=n(5162),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var a=i.call(e);return r&&(t?e[s]=n:delete e[s]),a}},1738:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},1433:(e,t,n)=>{var r=n(2999),a="object"==typeof self&&self&&self.Object===Object&&self,o=r||a||Function("return this")();e.exports=o},2140:e=>{var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},6177:(e,t,n)=>{var r=n(8953),a=n(3664),o=n(5378),i=Math.max,s=Math.min;e.exports=function(e,t,n){var l,c,u,d,p,f,h=0,g=!1,m=!1,v=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var n=l,r=c;return l=c=void 0,h=t,d=e.apply(r,n)}function y(e){var n=e-f;return void 0===f||n>=t||n<0||m&&e-h>=u}function w(){var e=a();if(y(e))return S(e);p=setTimeout(w,function(e){var n=t-(e-f);return m?s(n,u-(e-h)):n}(e))}function S(e){return p=void 0,v&&l?b(e):(l=c=void 0,d)}function x(){var e=a(),n=y(e);if(l=arguments,c=this,f=e,n){if(void 0===p)return function(e){return h=e,p=setTimeout(w,t),g?b(e):d}(f);if(m)return clearTimeout(p),p=setTimeout(w,t),b(f)}return void 0===p&&(p=setTimeout(w,t)),d}return t=o(t)||0,r(n)&&(g=!!n.leading,u=(m="maxWait"in n)?i(o(n.maxWait)||0,t):u,v="trailing"in n?!!n.trailing:v),x.cancel=function(){void 0!==p&&clearTimeout(p),h=0,l=f=c=p=void 0},x.flush=function(){return void 0===p?d:S(a())},x}},8953:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},2934:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},5414:(e,t,n)=>{var r=n(7148),a=n(2934);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},3664:(e,t,n)=>{var r=n(1433);e.exports=function(){return r.Date.now()}},5378:(e,t,n)=>{var r=n(8812),a=n(8953),o=n(5414),i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(a(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=a(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=s.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):i.test(e)?NaN:+e}},362:(e,t,n)=>{"use strict";var r=n(6441);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},2688:(e,t,n)=>{e.exports=n(362)()},6441:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},9111:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DraggableCore",{enumerable:!0,get:function(){return u.default}}),t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(5959)),a=p(n(2688)),o=p(n(8398)),i=p(n(8262)),s=n(2837),l=n(402),c=n(6732),u=p(n(1060)),d=p(n(7988));function p(e){return e&&e.__esModule?e:{default:e}}function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t{(0,d.default)("Draggable: onDragStart: %j",t);if(!1===this.props.onStart(e,(0,l.createDraggableData)(this,t)))return!1;this.setState({dragging:!0,dragged:!0})})),g(this,"onDrag",((e,t)=>{if(!this.state.dragging)return!1;(0,d.default)("Draggable: onDrag: %j",t);const n=(0,l.createDraggableData)(this,t),r={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){const{x:e,y:t}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;const[a,o]=(0,l.getBoundPosition)(this,r.x,r.y);r.x=a,r.y=o,r.slackX=this.state.slackX+(e-r.x),r.slackY=this.state.slackY+(t-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(!1===this.props.onDrag(e,n))return!1;this.setState(r)})),g(this,"onDragStop",((e,t)=>{if(!this.state.dragging)return!1;if(!1===this.props.onStop(e,(0,l.createDraggableData)(this,t)))return!1;(0,d.default)("Draggable: onDragStop: %j",t);const n={dragging:!1,slackX:0,slackY:0};if(Boolean(this.props.position)){const{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)})),this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},!e.position||e.onDrag||e.onStop||console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){void 0!==window.SVGElement&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.setState({dragging:!1})}findDOMNode(){var e,t;return null!==(e=null===(t=this.props)||void 0===t||null===(t=t.nodeRef)||void 0===t?void 0:t.current)&&void 0!==e?e:o.default.findDOMNode(this)}render(){const{axis:e,bounds:t,children:n,defaultPosition:a,defaultClassName:o,defaultClassNameDragging:c,defaultClassNameDragged:d,position:p,positionOffset:f,scale:g,...m}=this.props;let v={},b=null;const y=!Boolean(p)||this.state.dragging,w=p||a,S={x:(0,l.canDragX)(this)&&y?this.state.x:w.x,y:(0,l.canDragY)(this)&&y?this.state.y:w.y};this.state.isElementSVG?b=(0,s.createSVGTransform)(S,f):v=(0,s.createCSSTransform)(S,f);const x=(0,i.default)(n.props.className||"",o,{[c]:this.state.dragging,[d]:this.state.dragged});return r.createElement(u.default,h({},m,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),r.cloneElement(r.Children.only(n),{className:x,style:{...n.props.style,...v},transform:b}))}}t.default=m,g(m,"displayName","Draggable"),g(m,"propTypes",{...u.default.propTypes,axis:a.default.oneOf(["both","x","y","none"]),bounds:a.default.oneOfType([a.default.shape({left:a.default.number,right:a.default.number,top:a.default.number,bottom:a.default.number}),a.default.string,a.default.oneOf([!1])]),defaultClassName:a.default.string,defaultClassNameDragging:a.default.string,defaultClassNameDragged:a.default.string,defaultPosition:a.default.shape({x:a.default.number,y:a.default.number}),positionOffset:a.default.shape({x:a.default.oneOfType([a.default.number,a.default.string]),y:a.default.oneOfType([a.default.number,a.default.string])}),position:a.default.shape({x:a.default.number,y:a.default.number}),className:c.dontSetMe,style:c.dontSetMe,transform:c.dontSetMe}),g(m,"defaultProps",{...u.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})},1060:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=d(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(5959)),a=u(n(2688)),o=u(n(8398)),i=n(2837),s=n(402),l=n(6732),c=u(n(7988));function u(e){return e&&e.__esModule?e:{default:e}}function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(d=function(e){return e?n:t})(e)}function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const f={start:"touchstart",move:"touchmove",stop:"touchend"},h={start:"mousedown",move:"mousemove",stop:"mouseup"};let g=h;class m extends r.Component{constructor(){super(...arguments),p(this,"dragging",!1),p(this,"lastX",NaN),p(this,"lastY",NaN),p(this,"touchIdentifier",null),p(this,"mounted",!1),p(this,"handleDragStart",(e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&"number"==typeof e.button&&0!==e.button)return!1;const t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw new Error(" not mounted on DragStart!");const{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!(0,i.matchesSelectorAndParentsTo)(e.target,this.props.handle,t)||this.props.cancel&&(0,i.matchesSelectorAndParentsTo)(e.target,this.props.cancel,t))return;"touchstart"===e.type&&e.preventDefault();const r=(0,i.getTouchIdentifier)(e);this.touchIdentifier=r;const a=(0,s.getControlPosition)(e,r,this);if(null==a)return;const{x:o,y:l}=a,u=(0,s.createCoreData)(this,o,l);(0,c.default)("DraggableCore: handleDragStart: %j",u),(0,c.default)("calling",this.props.onStart);!1!==this.props.onStart(e,u)&&!1!==this.mounted&&(this.props.enableUserSelectHack&&(0,i.addUserSelectStyles)(n),this.dragging=!0,this.lastX=o,this.lastY=l,(0,i.addEvent)(n,g.move,this.handleDrag),(0,i.addEvent)(n,g.stop,this.handleDragStop))})),p(this,"handleDrag",(e=>{const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=r-this.lastY;if([e,t]=(0,s.snapToGrid)(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,r=this.lastY+t}const a=(0,s.createCoreData)(this,n,r);(0,c.default)("DraggableCore: handleDrag: %j",a);if(!1!==this.props.onDrag(e,a)&&!1!==this.mounted)this.lastX=n,this.lastY=r;else try{this.handleDragStop(new MouseEvent("mouseup"))}catch(e){const t=document.createEvent("MouseEvents");t.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(t)}})),p(this,"handleDragStop",(e=>{if(!this.dragging)return;const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=r-this.lastY||0;[e,t]=(0,s.snapToGrid)(this.props.grid,e,t),n=this.lastX+e,r=this.lastY+t}const a=(0,s.createCoreData)(this,n,r);if(!1===this.props.onStop(e,a)||!1===this.mounted)return!1;const o=this.findDOMNode();o&&this.props.enableUserSelectHack&&(0,i.removeUserSelectStyles)(o.ownerDocument),(0,c.default)("DraggableCore: handleDragStop: %j",a),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,o&&((0,c.default)("DraggableCore: Removing handlers"),(0,i.removeEvent)(o.ownerDocument,g.move,this.handleDrag),(0,i.removeEvent)(o.ownerDocument,g.stop,this.handleDragStop))})),p(this,"onMouseDown",(e=>(g=h,this.handleDragStart(e)))),p(this,"onMouseUp",(e=>(g=h,this.handleDragStop(e)))),p(this,"onTouchStart",(e=>(g=f,this.handleDragStart(e)))),p(this,"onTouchEnd",(e=>(g=f,this.handleDragStop(e))))}componentDidMount(){this.mounted=!0;const e=this.findDOMNode();e&&(0,i.addEvent)(e,f.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const e=this.findDOMNode();if(e){const{ownerDocument:t}=e;(0,i.removeEvent)(t,h.move,this.handleDrag),(0,i.removeEvent)(t,f.move,this.handleDrag),(0,i.removeEvent)(t,h.stop,this.handleDragStop),(0,i.removeEvent)(t,f.stop,this.handleDragStop),(0,i.removeEvent)(e,f.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,i.removeUserSelectStyles)(t)}}findDOMNode(){var e,t;return null!==(e=this.props)&&void 0!==e&&e.nodeRef?null===(t=this.props)||void 0===t||null===(t=t.nodeRef)||void 0===t?void 0:t.current:o.default.findDOMNode(this)}render(){return r.cloneElement(r.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}t.default=m,p(m,"displayName","DraggableCore"),p(m,"propTypes",{allowAnyClick:a.default.bool,children:a.default.node.isRequired,disabled:a.default.bool,enableUserSelectHack:a.default.bool,offsetParent:function(e,t){if(e[t]&&1!==e[t].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:a.default.arrayOf(a.default.number),handle:a.default.string,cancel:a.default.string,nodeRef:a.default.object,onStart:a.default.func,onDrag:a.default.func,onStop:a.default.func,onMouseDown:a.default.func,scale:a.default.number,className:l.dontSetMe,style:l.dontSetMe,transform:l.dontSetMe}),p(m,"defaultProps",{allowAnyClick:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1})},8230:(e,t,n)=>{"use strict";const{default:r,DraggableCore:a}=n(9111);e.exports=r,e.exports.default=r,e.exports.DraggableCore=a},2837:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addClassName=c,t.addEvent=function(e,t,n,r){if(!e)return;const a={capture:!0,...r};e.addEventListener?e.addEventListener(t,n,a):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n},t.addUserSelectStyles=function(e){if(!e)return;let t=e.getElementById("react-draggable-style-el");t||(t=e.createElement("style"),t.type="text/css",t.id="react-draggable-style-el",t.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",t.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",e.getElementsByTagName("head")[0].appendChild(t));e.body&&c(e.body,"react-draggable-transparent-selection")},t.createCSSTransform=function(e,t){const n=l(e,t,"px");return{[(0,a.browserPrefixToKey)("transform",a.default)]:n}},t.createSVGTransform=function(e,t){return l(e,t,"")},t.getTouch=function(e,t){return e.targetTouches&&(0,r.findInArray)(e.targetTouches,(e=>t===e.identifier))||e.changedTouches&&(0,r.findInArray)(e.changedTouches,(e=>t===e.identifier))},t.getTouchIdentifier=function(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier},t.getTranslation=l,t.innerHeight=function(e){let t=e.clientHeight;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=(0,r.int)(n.paddingTop),t-=(0,r.int)(n.paddingBottom),t},t.innerWidth=function(e){let t=e.clientWidth;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=(0,r.int)(n.paddingLeft),t-=(0,r.int)(n.paddingRight),t},t.matchesSelector=s,t.matchesSelectorAndParentsTo=function(e,t,n){let r=e;do{if(s(r,t))return!0;if(r===n)return!1;r=r.parentNode}while(r);return!1},t.offsetXYFromParent=function(e,t,n){const r=t===t.ownerDocument.body?{left:0,top:0}:t.getBoundingClientRect(),a=(e.clientX+t.scrollLeft-r.left)/n,o=(e.clientY+t.scrollTop-r.top)/n;return{x:a,y:o}},t.outerHeight=function(e){let t=e.clientHeight;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=(0,r.int)(n.borderTopWidth),t+=(0,r.int)(n.borderBottomWidth),t},t.outerWidth=function(e){let t=e.clientWidth;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=(0,r.int)(n.borderLeftWidth),t+=(0,r.int)(n.borderRightWidth),t},t.removeClassName=u,t.removeEvent=function(e,t,n,r){if(!e)return;const a={capture:!0,...r};e.removeEventListener?e.removeEventListener(t,n,a):e.detachEvent?e.detachEvent("on"+t,n):e["on"+t]=null},t.removeUserSelectStyles=function(e){if(!e)return;try{if(e.body&&u(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const t=(e.defaultView||window).getSelection();t&&"Caret"!==t.type&&t.removeAllRanges()}}catch(e){}};var r=n(6732),a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=a?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=e[i]}r.default=e,n&&n.set(e,r);return r}(n(7350));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}let i="";function s(e,t){return i||(i=(0,r.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],(function(t){return(0,r.isFunction)(e[t])}))),!!(0,r.isFunction)(e[i])&&e[i](t)}function l(e,t,n){let{x:r,y:a}=e,o="translate(".concat(r).concat(n,",").concat(a).concat(n,")");if(t){const e="".concat("string"==typeof t.x?t.x:t.x+n),r="".concat("string"==typeof t.y?t.y:t.y+n);o="translate(".concat(e,", ").concat(r,")")+o}return o}function c(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp("(?:^|\\s)".concat(t,"(?!\\S)")))||(e.className+=" ".concat(t))}function u(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp("(?:^|\\s)".concat(t,"(?!\\S)"),"g"),"")}},7350:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.browserPrefixToKey=a,t.browserPrefixToStyle=function(e,t){return t?"-".concat(t.toLowerCase(),"-").concat(e):e},t.default=void 0,t.getPrefix=r;const n=["Moz","Webkit","O","ms"];function r(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window)return"";const r=null===(e=window.document)||void 0===e||null===(e=e.documentElement)||void 0===e?void 0:e.style;if(!r)return"";if(t in r)return"";for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){0}},402:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.canDragX=function(e){return"both"===e.props.axis||"x"===e.props.axis},t.canDragY=function(e){return"both"===e.props.axis||"y"===e.props.axis},t.createCoreData=function(e,t,n){const a=!(0,r.isNum)(e.lastX),i=o(e);return a?{node:i,deltaX:0,deltaY:0,lastX:t,lastY:n,x:t,y:n}:{node:i,deltaX:t-e.lastX,deltaY:n-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:n}},t.createDraggableData=function(e,t){const n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}},t.getBoundPosition=function(e,t,n){if(!e.props.bounds)return[t,n];let{bounds:i}=e.props;i="string"==typeof i?i:function(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}(i);const s=o(e);if("string"==typeof i){const{ownerDocument:e}=s,t=e.defaultView;let n;if(n="parent"===i?s.parentNode:e.querySelector(i),!(n instanceof t.HTMLElement))throw new Error('Bounds selector "'+i+'" could not find an element.');const o=n,l=t.getComputedStyle(s),c=t.getComputedStyle(o);i={left:-s.offsetLeft+(0,r.int)(c.paddingLeft)+(0,r.int)(l.marginLeft),top:-s.offsetTop+(0,r.int)(c.paddingTop)+(0,r.int)(l.marginTop),right:(0,a.innerWidth)(o)-(0,a.outerWidth)(s)-s.offsetLeft+(0,r.int)(c.paddingRight)-(0,r.int)(l.marginRight),bottom:(0,a.innerHeight)(o)-(0,a.outerHeight)(s)-s.offsetTop+(0,r.int)(c.paddingBottom)-(0,r.int)(l.marginBottom)}}(0,r.isNum)(i.right)&&(t=Math.min(t,i.right));(0,r.isNum)(i.bottom)&&(n=Math.min(n,i.bottom));(0,r.isNum)(i.left)&&(t=Math.max(t,i.left));(0,r.isNum)(i.top)&&(n=Math.max(n,i.top));return[t,n]},t.getControlPosition=function(e,t,n){const r="number"==typeof t?(0,a.getTouch)(e,t):null;if("number"==typeof t&&!r)return null;const i=o(n),s=n.props.offsetParent||i.offsetParent||i.ownerDocument.body;return(0,a.offsetXYFromParent)(r||e,s,n.props.scale)},t.snapToGrid=function(e,t,n){const r=Math.round(t/e[0])*e[0],a=Math.round(n/e[1])*e[1];return[r,a]};var r=n(6732),a=n(2837);function o(e){const t=e.findDOMNode();if(!t)throw new Error(": Unmounted during event!");return t}},6732:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dontSetMe=function(e,t,n){if(e[t])return new Error("Invalid prop ".concat(t," passed to ").concat(n," - do not set this, set it on the child."))},t.findInArray=function(e,t){for(let n=0,r=e.length;n{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta,default:()=>o});const o=a},8100:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=p(n(5959)),o=p(n(2688)),i=n(8230),s=n(936),l=n(414),c=n(906),u=n(7222),d=p(n(7256));function p(e){return e&&e.__esModule?e:{default:e}}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:this.props;return{cols:e.cols,containerPadding:e.containerPadding,containerWidth:e.containerWidth,margin:e.margin,maxRows:e.maxRows,rowHeight:e.rowHeight}}},{key:"createStyle",value:function(e){var t,n=this.props,r=n.usePercentages,a=n.containerWidth;return n.useCSSTransforms?t=(0,l.setTransform)(e):(t=(0,l.setTopLeft)(e),r&&(t.left=(0,l.perc)(e.left/a),t.width=(0,l.perc)(e.width/a))),t}},{key:"mixinDraggable",value:function(e,t){return a.default.createElement(i.DraggableCore,{disabled:!t,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale,nodeRef:this.elementRef},e)}},{key:"mixinResizable",value:function(e,t,n){var r=this.props,o=r.cols,i=r.x,l=r.minW,u=r.minH,d=r.maxW,p=r.maxH,f=r.transformScale,h=r.resizeHandles,g=r.resizeHandle,m=this.getPositionParams(),v=(0,c.calcGridItemPosition)(m,0,0,o-i,0).width,b=(0,c.calcGridItemPosition)(m,0,0,l,u),y=(0,c.calcGridItemPosition)(m,0,0,d,p),w=[b.width,b.height],S=[Math.min(y.width,v),Math.min(y.height,1/0)];return a.default.createElement(s.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:t.width,height:t.height,minConstraints:w,maxConstraints:S,onResizeStop:this.onResizeStop,onResizeStart:this.onResizeStart,onResize:this.onResize,transformScale:f,resizeHandles:h,handle:g},e)}},{key:"onResizeHandler",value:function(e,t,n){var r=t.node,a=t.size,o=this.props[n];if(o){var i=this.props,s=i.cols,l=i.x,u=i.y,d=i.i,p=i.maxH,f=i.minH,h=this.props,g=h.minW,m=h.maxW,v=(0,c.calcWH)(this.getPositionParams(),a.width,a.height,l,u),b=v.w,y=v.h;g=Math.max(g,1),m=Math.min(m,s-l),b=(0,c.clamp)(b,g,m),y=(0,c.clamp)(y,f,p),this.setState({resizing:"onResizeStop"===n?null:a}),o.call(this,d,b,y,{e,node:r,size:a})}}},{key:"render",value:function(){var e=this.props,t=e.x,n=e.y,r=e.w,o=e.h,i=e.isDraggable,s=e.isResizable,l=e.droppingPosition,u=e.useCSSTransforms,p=(0,c.calcGridItemPosition)(this.getPositionParams(),t,n,r,o,this.state),f=a.default.Children.only(this.props.children),g=a.default.cloneElement(f,{ref:this.elementRef,className:(0,d.default)("react-grid-item",f.props.className,this.props.className,{static:this.props.static,resizing:Boolean(this.state.resizing),"react-draggable":i,"react-draggable-dragging":Boolean(this.state.dragging),dropping:Boolean(l),cssTransforms:u}),style:h(h(h({},this.props.style),f.props.style),this.createStyle(p))});return g=this.mixinResizable(g,p,s),g=this.mixinDraggable(g,i)}}],n&&g(t.prototype,n),r&&g(t,r),Object.defineProperty(t,"prototype",{writable:!1}),u}(a.default.Component);t.default=S,w(S,"propTypes",{children:o.default.element,cols:o.default.number.isRequired,containerWidth:o.default.number.isRequired,rowHeight:o.default.number.isRequired,margin:o.default.array.isRequired,maxRows:o.default.number.isRequired,containerPadding:o.default.array.isRequired,x:o.default.number.isRequired,y:o.default.number.isRequired,w:o.default.number.isRequired,h:o.default.number.isRequired,minW:function(e,t){var n=e[t];return"number"!=typeof n?new Error("minWidth not Number"):n>e.w||n>e.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxWidth not Number"):ne.h||n>e.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxHeight not Number"):n{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var a={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(a,i,s):a[i]=e[i]}a.default=e,n&&n.set(e,a);return a}(n(5959)),o=d(n(7842)),i=d(n(7256)),s=n(414),l=n(906),c=d(n(8100)),u=d(n(7222));function d(e){return e&&e.__esModule?e:{default:e}}function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}function f(e){return function(e){if(Array.isArray(e))return b(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var o=1/0,i=1/0;a.forEach((function(t){t.x>e.x&&(o=Math.min(o,t.x)),t.y>e.y&&(i=Math.min(i,t.y))})),Number.isFinite(o)&&(e.w=o-e.x),Number.isFinite(i)&&(e.h=i-e.y)}}return t||(e.w=n,e.h=r),e})),b=m(v,2),y=b[0],w=b[1];if(w){var S={w:w.w,h:w.h,x:w.x,y:w.y,static:!0,i:t};e.props.onResize(y,u,w,S,o,i),e.setState({layout:h?y:(0,s.compact)(y,(0,s.compactType)(e.props),p),activeDrag:S})}})),C(x(e),"onResizeStop",(function(t,n,r,a){var o=a.e,i=a.node,l=e.state,c=l.layout,u=l.oldResizeItem,d=e.props,p=d.cols,f=d.allowOverlap,h=(0,s.getLayoutItem)(c,t);e.props.onResizeStop(c,u,h,null,o,i);var g=f?c:(0,s.compact)(c,(0,s.compactType)(e.props),p),m=e.state.oldLayout;e.setState({activeDrag:null,layout:g,oldResizeItem:null,oldLayout:null}),e.onLayoutMaybeChanged(g,m)})),C(x(e),"onDragOver",(function(t){var n;if(t.preventDefault(),t.stopPropagation(),D&&(null===(n=t.nativeEvent.target)||void 0===n||!n.classList.contains(R)))return!1;var r=e.props,o=r.droppingItem,i=r.onDropDragOver,s=r.margin,c=r.cols,u=r.rowHeight,d=r.maxRows,p=r.width,h=r.containerPadding,m=r.transformScale,v=null==i?void 0:i(t);if(!1===v)return e.state.droppingDOMNode&&e.removeDroppingPlaceholder(),!1;var b=g(g({},o),v),y=e.state.layout,w=t.nativeEvent,S=w.layerX,x=w.layerY,E={left:S/m,top:x/m,e:t};if(e.state.droppingDOMNode){if(e.state.droppingPosition){var C=e.state.droppingPosition,_=C.left,O=C.top;(_!=S||O!=x)&&e.setState({droppingPosition:E})}}else{var I={cols:c,margin:s,maxRows:d,rowHeight:u,containerWidth:p,containerPadding:h||s},T=(0,l.calcXY)(I,x,S,b.w,b.h);e.setState({droppingDOMNode:a.createElement("div",{key:b.i}),droppingPosition:E,layout:[].concat(f(y),[g(g({},b),{},{x:T.x,y:T.y,static:!1,isDraggable:!0})])})}})),C(x(e),"removeDroppingPlaceholder",(function(){var t=e.props,n=t.droppingItem,r=t.cols,a=e.state.layout,o=(0,s.compact)(a.filter((function(e){return e.i!==n.i})),(0,s.compactType)(e.props),r);e.setState({layout:o,droppingDOMNode:null,activeDrag:null,droppingPosition:void 0})})),C(x(e),"onDragLeave",(function(t){t.preventDefault(),t.stopPropagation(),e.dragEnterCounter--,0===e.dragEnterCounter&&e.removeDroppingPlaceholder()})),C(x(e),"onDragEnter",(function(t){t.preventDefault(),t.stopPropagation(),e.dragEnterCounter++})),C(x(e),"onDrop",(function(t){t.preventDefault(),t.stopPropagation();var n=e.props.droppingItem,r=e.state.layout,a=r.find((function(e){return e.i===n.i}));e.dragEnterCounter=0,e.removeDroppingPlaceholder(),e.props.onDrop(r,a,t)})),e}return t=d,r=[{key:"getDerivedStateFromProps",value:function(e,t){var n;return t.activeDrag?null:((0,o.default)(e.layout,t.propsLayout)&&e.compactType===t.compactType?(0,s.childrenEqual)(e.children,t.children)||(n=t.layout):n=e.layout,n?{layout:(0,s.synchronizeLayoutWithChildren)(n,e.children,e.cols,(0,s.compactType)(e),e.allowOverlap),compactType:e.compactType,children:e.children,propsLayout:e.layout}:null)}}],(n=[{key:"componentDidMount",value:function(){this.setState({mounted:!0}),this.onLayoutMaybeChanged(this.state.layout,this.props.layout)}},{key:"shouldComponentUpdate",value:function(e,t){return this.props.children!==e.children||!(0,s.fastRGLPropsEqual)(this.props,e,o.default)||this.state.activeDrag!==t.activeDrag||this.state.mounted!==t.mounted||this.state.droppingPosition!==t.droppingPosition}},{key:"componentDidUpdate",value:function(e,t){if(!this.state.activeDrag){var n=this.state.layout,r=t.layout;this.onLayoutMaybeChanged(n,r)}}},{key:"containerHeight",value:function(){if(this.props.autoSize){var e=(0,s.bottom)(this.state.layout),t=this.props.containerPadding?this.props.containerPadding[1]:this.props.margin[1];return e*this.props.rowHeight+(e-1)*this.props.margin[1]+2*t+"px"}}},{key:"onLayoutMaybeChanged",value:function(e,t){t||(t=this.state.layout),(0,o.default)(t,e)||this.props.onLayoutChange(e)}},{key:"placeholder",value:function(){var e=this.state.activeDrag;if(!e)return null;var t=this.props,n=t.width,r=t.cols,o=t.margin,i=t.containerPadding,s=t.rowHeight,l=t.maxRows,u=t.useCSSTransforms,d=t.transformScale;return a.createElement(c.default,{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:o,containerPadding:i||o,maxRows:l,rowHeight:s,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:u,transformScale:d},a.createElement("div",null))}},{key:"processGridItem",value:function(e,t){if(e&&e.key){var n=(0,s.getLayoutItem)(this.state.layout,String(e.key));if(!n)return null;var r=this.props,o=r.width,i=r.cols,l=r.margin,u=r.containerPadding,d=r.rowHeight,p=r.maxRows,f=r.isDraggable,h=r.isResizable,g=r.isBounded,m=r.useCSSTransforms,v=r.transformScale,b=r.draggableCancel,y=r.draggableHandle,w=r.resizeHandles,S=r.resizeHandle,x=this.state,E=x.mounted,C=x.droppingPosition,R="boolean"==typeof n.isDraggable?n.isDraggable:!n.static&&f,D="boolean"==typeof n.isResizable?n.isResizable:!n.static&&h,_=n.resizeHandles||w,O=R&&g&&!1!==n.isBounded;return a.createElement(c.default,{containerWidth:o,cols:i,margin:l,containerPadding:u||l,maxRows:p,rowHeight:d,cancel:b,handle:y,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:R,isResizable:D,isBounded:O,useCSSTransforms:m&&E,usePercentages:!E,transformScale:v,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:t?C:void 0,resizeHandles:_,resizeHandle:S},e)}}},{key:"render",value:function(){var e=this,t=this.props,n=t.className,r=t.style,o=t.isDroppable,l=t.innerRef,c=(0,i.default)(R,n),u=g({height:this.containerHeight()},r);return a.createElement("div",{ref:l,className:c,style:u,onDrop:o?this.onDrop:s.noop,onDragLeave:o?this.onDragLeave:s.noop,onDragEnter:o?this.onDragEnter:s.noop,onDragOver:o?this.onDragOver:s.noop},a.Children.map(this.props.children,(function(t){return e.processGridItem(t)})),o&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}])&&y(t.prototype,n),r&&y(t,r),Object.defineProperty(t,"prototype",{writable:!1}),d}(a.Component);t.default=_,C(_,"displayName","ReactGridLayout"),C(_,"propTypes",u.default),C(_,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isBounded:!1,isDraggable:!0,isResizable:!0,allowOverlap:!1,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},resizeHandles:["se"],onLayoutChange:s.noop,onDragStart:s.noop,onDrag:s.noop,onDragStop:s.noop,onResizeStart:s.noop,onResize:s.noop,onResizeStop:s.noop,onDrop:s.noop,onDropDragOver:s.noop})},7222:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resizeHandleType=t.resizeHandleAxesType=t.default=void 0;var r=o(n(2688)),a=o(n(5959));function o(e){return e&&e.__esModule?e:{default:e}}var i=r.default.arrayOf(r.default.oneOf(["s","w","e","n","sw","nw","se","ne"]));t.resizeHandleAxesType=i;var s=r.default.oneOfType([r.default.node,r.default.func]);t.resizeHandleType=s;var l={className:r.default.string,style:r.default.object,width:r.default.number,autoSize:r.default.bool,cols:r.default.number,draggableCancel:r.default.string,draggableHandle:r.default.string,verticalCompact:function(e){e.verticalCompact,0},compactType:r.default.oneOf(["vertical","horizontal"]),layout:function(e){var t=e.layout;void 0!==t&&n(414).validateLayout(t,"layout")},margin:r.default.arrayOf(r.default.number),containerPadding:r.default.arrayOf(r.default.number),rowHeight:r.default.number,maxRows:r.default.number,isBounded:r.default.bool,isDraggable:r.default.bool,isResizable:r.default.bool,allowOverlap:r.default.bool,preventCollision:r.default.bool,useCSSTransforms:r.default.bool,transformScale:r.default.number,isDroppable:r.default.bool,resizeHandles:i,resizeHandle:s,onLayoutChange:r.default.func,onDragStart:r.default.func,onDrag:r.default.func,onDragStop:r.default.func,onResizeStart:r.default.func,onResize:r.default.func,onResizeStop:r.default.func,onDrop:r.default.func,droppingItem:r.default.shape({i:r.default.string.isRequired,w:r.default.number.isRequired,h:r.default.number.isRequired}),children:function(e,t){var n=e[t],r={};a.default.Children.forEach(n,(function(e){if(null!=(null==e?void 0:e.key)){if(r[e.key])throw new Error('Duplicate child key "'+e.key+'" found! This will cause problems in ReactGridLayout.');r[e.key]=!0}}))},innerRef:r.default.any};t.default=l},4636:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}t.default=void 0;var a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var a={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(a,i,s):a[i]=e[i]}a.default=e,n&&n.set(e,a);return a}(n(5959)),o=d(n(2688)),i=d(n(7842)),s=n(414),l=n(544),c=d(n(9482)),u=["breakpoint","breakpoints","cols","layouts","margin","containerPadding","onBreakpointChange","onLayoutChange","onWidthChange"];function d(e){return e&&e.__esModule?e:{default:e}}function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}function f(){return f=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t{"use strict";function n(e){var t=e.margin,n=e.containerPadding,r=e.containerWidth,a=e.cols;return(r-t[0]*(a-1)-2*n[0])/a}function r(e,t,n){return Number.isFinite(e)?Math.round(t*e+Math.max(0,e-1)*n):e}function a(e,t,n){return Math.max(Math.min(e,n),t)}Object.defineProperty(t,"__esModule",{value:!0}),t.calcGridColWidth=n,t.calcGridItemPosition=function(e,t,a,o,i,s){var l=e.margin,c=e.containerPadding,u=e.rowHeight,d=n(e),p={};s&&s.resizing?(p.width=Math.round(s.resizing.width),p.height=Math.round(s.resizing.height)):(p.width=r(o,d,l[0]),p.height=r(i,u,l[1]));s&&s.dragging?(p.top=Math.round(s.dragging.top),p.left=Math.round(s.dragging.left)):(p.top=Math.round((u+l[1])*a+c[1]),p.left=Math.round((d+l[0])*t+c[0]));return p},t.calcGridItemWHPx=r,t.calcWH=function(e,t,r,o,i){var s=e.margin,l=e.maxRows,c=e.cols,u=e.rowHeight,d=n(e),p=Math.round((t+s[0])/(d+s[0])),f=Math.round((r+s[1])/(u+s[1]));return p=a(p,0,c-o),f=a(f,0,l-i),{w:p,h:f}},t.calcXY=function(e,t,r,o,i){var s=e.margin,l=e.cols,c=e.rowHeight,u=e.maxRows,d=n(e),p=Math.round((r-s[0])/(d+s[0])),f=Math.round((t-s[1])/(c+s[1]));return p=a(p,0,l-o),f=a(f,0,u-i),{x:p,y:f}},t.clamp=a},6805:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}t.default=function(e){var t;return t=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(c,t);var n,o,l=(n=c,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=h(n);if(o){var a=h(this).constructor;e=Reflect.construct(t,arguments,a)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}(this,e)});function c(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c);for(var t=arguments.length,n=new Array(t),r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(t,s);return n&&!this.mounted?a.createElement("div",{className:(0,i.default)(this.props.className,m),style:this.props.style,ref:this.elementRef}):a.createElement(e,u({innerRef:this.elementRef},r,this.state))}}]),c}(a.Component),g(t,"defaultProps",{measureBeforeMount:!1}),g(t,"propTypes",{measureBeforeMount:o.default.bool}),t};var a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var a={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(a,i,s):a[i]=e[i]}a.default=e,n&&n.set(e,a);return a}(n(5959)),o=l(n(2688)),i=l(n(7256)),s=["measureBeforeMount"];function l(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}function u(){return u=Object.assign||function(e){for(var t=1;t{e.exports=function(e,t,n){return e===t||e.className===t.className&&n(e.style,t.style)&&e.width===t.width&&e.autoSize===t.autoSize&&e.cols===t.cols&&e.draggableCancel===t.draggableCancel&&e.draggableHandle===t.draggableHandle&&n(e.verticalCompact,t.verticalCompact)&&n(e.compactType,t.compactType)&&n(e.layout,t.layout)&&n(e.margin,t.margin)&&n(e.containerPadding,t.containerPadding)&&e.rowHeight===t.rowHeight&&e.maxRows===t.maxRows&&e.isBounded===t.isBounded&&e.isDraggable===t.isDraggable&&e.isResizable===t.isResizable&&e.allowOverlap===t.allowOverlap&&e.preventCollision===t.preventCollision&&e.useCSSTransforms===t.useCSSTransforms&&e.transformScale===t.transformScale&&e.isDroppable===t.isDroppable&&n(e.resizeHandles,t.resizeHandles)&&n(e.resizeHandle,t.resizeHandle)&&e.onLayoutChange===t.onLayoutChange&&e.onDragStart===t.onDragStart&&e.onDrag===t.onDrag&&e.onDragStop===t.onDragStop&&e.onResizeStart===t.onResizeStart&&e.onResize===t.onResize&&e.onResizeStop===t.onResizeStop&&e.onDrop===t.onDrop&&n(e.droppingItem,t.droppingItem)&&n(e.innerRef,t.innerRef)}},544:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findOrGenerateResponsiveLayout=function(e,t,n,o,i,s){if(e[n])return(0,r.cloneLayout)(e[n]);for(var l=e[o],c=a(t),u=c.slice(c.indexOf(n)),d=0,p=u.length;de[s]&&(r=s)}return r},t.getColsFromBreakpoint=function(e,t){if(!t[e])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+e+" is missing!");return t[e]},t.sortBreakpoints=a;var r=n(414);function a(e){return Object.keys(e).sort((function(t,n){return e[t]-e[n]}))}},414:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bottom=d,t.childrenEqual=function(e,t){return(0,r.default)(a.default.Children.map(e,(function(e){return null==e?void 0:e.key})),a.default.Children.map(t,(function(e){return null==e?void 0:e.key})))},t.cloneLayout=p,t.cloneLayoutItem=h,t.collides=m,t.compact=v,t.compactItem=w,t.compactType=function(e){var t=e||{},n=t.verticalCompact,r=t.compactType;return!1===n?null:r},t.correctBounds=S,t.fastPositionEqual=function(e,t){return e.left===t.left&&e.top===t.top&&e.width===t.width&&e.height===t.height},t.fastRGLPropsEqual=void 0,t.getAllCollisions=C,t.getFirstCollision=E,t.getLayoutItem=x,t.getStatics=R,t.modifyLayout=f,t.moveElement=D,t.moveElementAwayFromCollision=_,t.noop=void 0,t.perc=function(e){return 100*e+"%"},t.setTopLeft=function(e){var t=e.top,n=e.left,r=e.width,a=e.height;return{top:"".concat(t,"px"),left:"".concat(n,"px"),width:"".concat(r,"px"),height:"".concat(a,"px"),position:"absolute"}},t.setTransform=function(e){var t=e.top,n=e.left,r=e.width,a=e.height,o="translate(".concat(n,"px,").concat(t,"px)");return{transform:o,WebkitTransform:o,MozTransform:o,msTransform:o,OTransform:o,width:"".concat(r,"px"),height:"".concat(a,"px"),position:"absolute"}},t.sortLayoutItems=O,t.sortLayoutItemsByColRow=T,t.sortLayoutItemsByRowCol=I,t.synchronizeLayoutWithChildren=function(e,t,n,r,o){e=e||[];var i=[];a.default.Children.forEach(t,(function(t){if(null!=(null==t?void 0:t.key)){var n=x(e,String(t.key));if(n)i.push(h(n));else{!c&&t.props._grid&&console.warn("`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`.");var r=t.props["data-grid"]||t.props._grid;r?(c||A([r],"ReactGridLayout.children"),i.push(h(s(s({},r),{},{i:t.key})))):i.push(h({w:1,h:1,x:0,y:d(i),i:String(t.key)}))}}}));var l=S(i,{cols:n});return o?l:v(l,r,n)},t.validateLayout=A,t.withLayoutItem=function(e,t,n){var r=x(e,t);return r?(r=n(h(r)),[e=f(e,r),r]):[e,null]};var r=o(n(7842)),a=o(n(5959));function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;tn&&(n=t);return n}function p(e){for(var t=Array(e.length),n=0,r=e.length;n=t.x+t.w)&&(!(e.y+e.h<=t.y)&&!(e.y>=t.y+t.h))))}function v(e,t,n){for(var r=R(e),a=O(e,t),o=Array(e.length),i=0,s=a.length;it.y+t.h)break;m(t,i)&&y(e,i,n+t[a],r)}}t[r]=n}function w(e,t,n,r,a){var o,i="horizontal"===n;if("vertical"===n)for(t.y=Math.min(d(e),t.y);t.y>0&&!E(e,t);)t.y--;else if(i)for(;t.x>0&&!E(e,t);)t.x--;for(;o=E(e,t);)i?y(a,t,o.x+o.w,"x"):y(a,t,o.y+o.h,"y"),i&&t.x+t.w>r&&(t.x=r-t.w,t.y++);return t.y=Math.max(t.y,0),t.x=Math.max(t.x,0),t}function S(e,t){for(var n=R(e),r=0,a=e.length;rt.cols&&(o.x=t.cols-o.w),o.x<0&&(o.x=0,o.w=t.cols),o.static)for(;E(n,o);)o.y++;else n.push(o)}return e}function x(e,t){for(var n=0,r=e.length;n=r:"horizontal"===i&&"number"==typeof n&&c>=n)&&(d=d.reverse());var f=C(d,t),h=f.length>0;if(h&&l)return p(e);if(h&&o)return k("Collision prevented on ".concat(t.i,", reverting.")),t.x=c,t.y=u,t.moved=!1,e;for(var g=0,m=f.length;gt.y||e.y===t.y&&e.x>t.x?1:e.y===t.y&&e.x===t.x?0:-1}))}function T(e){return e.slice(0).sort((function(e,t){return e.x>t.x||e.x===t.x&&e.y>t.y?1:-1}))}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Layout",n=["x","y","w","h"];if(!Array.isArray(e))throw new Error(t+" must be an array!");for(var r=0,a=e.length;r{e.exports=n(9482).default,e.exports.utils=n(414),e.exports.Responsive=n(4636).default,e.exports.Responsive.utils=n(544),e.exports.WidthProvider=n(6805).default},7256:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta,default:()=>o});const o=a},1794:(e,t,n)=>{"use strict";t.__esModule=!0,t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(5959)),a=n(8230),o=n(9954),i=n(6333),s=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:t})(e)}function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;tMath.abs(l*i)?t=e/i:e=t*i}var c=e,u=t,d=this.slack||[0,0],p=d[0],f=d[1];return e+=p,t+=f,r&&(e=Math.max(r[0],e),t=Math.max(r[1],t)),a&&(e=Math.min(a[0],e),t=Math.min(a[1],t)),this.slack=[p+(c-e),f+(u-t)],[e,t]},l.resizeHandler=function(e,t){var n=this;return function(r,a){var o=a.node,i=a.deltaX,s=a.deltaY;"onResizeStart"===e&&n.resetData();var l=("both"===n.props.axis||"x"===n.props.axis)&&"n"!==t&&"s"!==t,c=("both"===n.props.axis||"y"===n.props.axis)&&"e"!==t&&"w"!==t;if(l||c){var u=t[0],d=t[t.length-1],p=o.getBoundingClientRect();if(null!=n.lastHandleRect){if("w"===d)i+=p.left-n.lastHandleRect.left;if("n"===u)s+=p.top-n.lastHandleRect.top}n.lastHandleRect=p,"w"===d&&(i=-i),"n"===u&&(s=-s);var f=n.props.width+(l?i/n.props.transformScale:0),h=n.props.height+(c?s/n.props.transformScale:0),g=n.runConstraints(f,h);f=g[0],h=g[1];var m=f!==n.props.width||h!==n.props.height,v="function"==typeof n.props[e]?n.props[e]:null;v&&!("onResize"===e&&!m)&&(null==r.persist||r.persist(),v(r,{node:o,size:{width:f,height:h},handle:t})),"onResizeStop"===e&&n.resetData()}}},l.renderResizeHandle=function(e,t){var n=this.props.handle;if(!n)return r.createElement("span",{className:"react-resizable-handle react-resizable-handle-"+e,ref:t});if("function"==typeof n)return n(e,t);var a=d({ref:t},"string"==typeof n.type?{}:{handleAxis:e});return r.cloneElement(n,a)},l.render=function(){var e=this,t=this.props,n=t.children,i=t.className,l=t.draggableOpts,u=(t.width,t.height,t.handle,t.handleSize,t.lockAspectRatio,t.axis,t.minConstraints,t.maxConstraints,t.onResize,t.onResizeStop,t.onResizeStart,t.resizeHandles),p=(t.transformScale,function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(t,s));return(0,o.cloneElement)(n,d(d({},p),{},{className:(i?i+" ":"")+"react-resizable",children:[].concat(n.props.children,u.map((function(t){var n,o=null!=(n=e.handleRefs[t])?n:e.handleRefs[t]=r.createRef();return r.createElement(a.DraggableCore,c({},l,{nodeRef:o,key:"resizableHandle-"+t,onStop:e.resizeHandler("onResizeStop",t),onStart:e.resizeHandler("onResizeStart",t),onDrag:e.resizeHandler("onResize",t)}),e.renderResizeHandle(t,o))})))}))},i}(r.Component);t.default=h,h.propTypes=i.resizableProps,h.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1}},6609:(e,t,n)=>{"use strict";t.default=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(5959)),a=l(n(2688)),o=l(n(1794)),i=n(6333),s=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function l(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,s);return r.createElement(o.default,{axis:h,draggableOpts:l,handle:t,handleSize:n,height:this.state.height,lockAspectRatio:f,maxConstraints:d,minConstraints:c,onResizeStart:a,onResize:this.onResize,onResizeStop:i,resizeHandles:g,transformScale:v,width:this.state.width},r.createElement("div",u({},b,{style:p(p({},m),{},{width:this.state.width+"px",height:this.state.height+"px"})})))},a}(r.Component);t.default=g,g.propTypes=p(p({},i.resizableProps),{},{children:a.default.element})},6333:(e,t,n)=>{"use strict";t.__esModule=!0,t.resizableProps=void 0;var r,a=(r=n(2688))&&r.__esModule?r:{default:r};n(8230);var o={axis:a.default.oneOf(["both","x","y","none"]),className:a.default.string,children:a.default.element.isRequired,draggableOpts:a.default.shape({allowAnyClick:a.default.bool,cancel:a.default.string,children:a.default.node,disabled:a.default.bool,enableUserSelectHack:a.default.bool,offsetParent:a.default.node,grid:a.default.arrayOf(a.default.number),handle:a.default.string,nodeRef:a.default.object,onStart:a.default.func,onDrag:a.default.func,onStop:a.default.func,onMouseDown:a.default.func,scale:a.default.number}),height:function(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";t.__esModule=!0,t.cloneElement=function(e,t){t.style&&e.props.style&&(t.style=i(i({},e.props.style),t.style));t.className&&e.props.className&&(t.className=e.props.className+" "+t.className);return a.default.cloneElement(e,t)};var r,a=(r=n(5959))&&r.__esModule?r:{default:r};function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t{"use strict";e.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},e.exports.Resizable=n(1794).default,e.exports.ResizableBox=n(6609).default},3367:function(e,t,n){var r;r=function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t){var n,r,a=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var l,c=[],u=!1,d=-1;function p(){u&&l&&(u=!1,l.length?c=l.concat(c):d=-1,c.length&&f())}function f(){if(!u){var e=s(p);u=!0;for(var t=c.length;t;){for(l=c,c=[];++d1)for(var n=1;n1?t-1:0),r=1;r2?n-2:0),o=2;o0&&r.syncScrollPosition(r.panes[t][0],e),r.panes[t].push(e))})),r.addEvents(e,t)},r.unregisterPane=function(e,t){t.forEach((function(t){r.findPane(e,t)&&(r.removeEvents(e),r.panes[t].splice(r.panes[t].indexOf(e),1))}))},r.addEvents=function(e,t){e.onscroll=r.handlePaneScroll.bind(r,e,t)},r.removeEvents=function(e){e.onscroll=null},r.findPane=function(e,t){return!!r.panes[t]&&r.panes[t].find((function(t){return t===e}))},r.handlePaneScroll=function(e,t){r.props.enabled&&window.requestAnimationFrame((function(){r.syncScrollPositions(e,t)}))},r.syncScrollPositions=function(e,t){t.forEach((function(n){r.panes[n].forEach((function(a){e!==a&&(r.removeEvents(a,n),r.syncScrollPosition(e,a),window.requestAnimationFrame((function(){r.addEvents(a,t)})))}))})),r.props.onSync&&r.props.onSync(e)},c(r,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"getContextValue",value:function(){return{registerPane:this.registerPane,unregisterPane:this.unregisterPane}}},{key:"syncScrollPosition",value:function(e,t){var n=e.scrollTop,r=e.scrollHeight,a=e.clientHeight,o=e.scrollLeft,i=e.scrollWidth,s=e.clientWidth,l=r-a,c=i-s,u=this.props,d=u.proportional,p=u.vertical,f=u.horizontal,h=t.scrollHeight-a,g=t.scrollWidth-s;p&&l>0&&(t.scrollTop=d?h*n/l:n),f&&c>0&&(t.scrollLeft=d?g*o/c:o)}},{key:"render",value:function(){return o.default.createElement(s.default.Provider,{value:this.getContextValue()},o.default.Children.only(this.props.children))}}]),t}(a.Component);u.propTypes={onSync:i.default.func,children:i.default.element.isRequired,proportional:i.default.bool,vertical:i.default.bool,horizontal:i.default.bool,enabled:i.default.bool},u.defaultProps={proportional:!0,vertical:!0,horizontal:!0,enabled:!0},t.default=u,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n{const r=Symbol("SemVer ANY");class a{static get ANY(){return r}constructor(e,t){if(t=o(t),e instanceof a){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),c("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===r?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(e){const t=this.options.loose?i[s.COMPARATORLOOSE]:i[s.COMPARATOR],n=e.match(t);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new u(n[2],this.options.loose):this.semver=r}toString(){return this.value}test(e){if(c("Comparator.test",e,this.options.loose),this.semver===r||e===r)return!0;if("string"==typeof e)try{e=new u(e,this.options)}catch(e){return!1}return l(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof a))throw new TypeError("a Comparator is required");return""===this.operator?""===this.value||new d(e.value,t).test(this.value):""===e.operator?""===e.value||new d(this.value,t).test(e.semver):(!(t=o(t)).includePrerelease||"<0.0.0-0"!==this.value&&"<0.0.0-0"!==e.value)&&(!(!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0")))&&(!(!this.operator.startsWith(">")||!e.operator.startsWith(">"))||(!(!this.operator.startsWith("<")||!e.operator.startsWith("<"))||(!(this.semver.version!==e.semver.version||!this.operator.includes("=")||!e.operator.includes("="))||(!!(l(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<"))||!!(l(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))))))}}e.exports=a;const o=n(7095),{safeRe:i,t:s}=n(6850),l=n(3811),c=n(9796),u=n(7944),d=n(8395)},8395:(e,t,n)=>{const r=/\s+/g;class a{constructor(e,t){if(t=i(t),e instanceof a)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new a(e.raw,t);if(e instanceof s)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(r," "),this.set=this.raw.split("||").map((e=>this.parseRange(e.trim()))).filter((e=>e.length)),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const e=this.set[0];if(this.set=this.set.filter((e=>!v(e[0]))),0===this.set.length)this.set=[e];else if(this.set.length>1)for(const e of this.set)if(1===e.length&&b(e[0])){this.set=[e];break}}this.formatted=void 0}get range(){if(void 0===this.formatted){this.formatted="";for(let e=0;e0&&(this.formatted+="||");const t=this.set[e];for(let e=0;e0&&(this.formatted+=" "),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){const t=((this.options.includePrerelease&&g)|(this.options.loose&&m))+":"+e,n=o.get(t);if(n)return n;const r=this.options.loose,a=r?u[d.HYPHENRANGELOOSE]:u[d.HYPHENRANGE];e=e.replace(a,T(this.options.includePrerelease)),l("hyphen replace",e),e=e.replace(u[d.COMPARATORTRIM],p),l("comparator trim",e),e=e.replace(u[d.TILDETRIM],f),l("tilde trim",e),e=e.replace(u[d.CARETTRIM],h),l("caret trim",e);let i=e.split(" ").map((e=>w(e,this.options))).join(" ").split(/\s+/).map((e=>I(e,this.options)));r&&(i=i.filter((e=>(l("loose invalid filter",e,this.options),!!e.match(u[d.COMPARATORLOOSE]))))),l("range list",i);const c=new Map,b=i.map((e=>new s(e,this.options)));for(const e of b){if(v(e))return[e];c.set(e.value,e)}c.size>1&&c.has("")&&c.delete("");const y=[...c.values()];return o.set(t,y),y}intersects(e,t){if(!(e instanceof a))throw new TypeError("a Range is required");return this.set.some((n=>y(n,t)&&e.set.some((e=>y(e,t)&&n.every((n=>e.every((e=>n.intersects(e,t)))))))))}test(e){if(!e)return!1;if("string"==typeof e)try{e=new c(e,this.options)}catch(e){return!1}for(let t=0;t"<0.0.0-0"===e.value,b=e=>""===e.value,y=(e,t)=>{let n=!0;const r=e.slice();let a=r.pop();for(;n&&r.length;)n=r.every((e=>a.intersects(e,t))),a=r.pop();return n},w=(e,t)=>(l("comp",e,t),e=C(e,t),l("caret",e),e=x(e,t),l("tildes",e),e=D(e,t),l("xrange",e),e=O(e,t),l("stars",e),e),S=e=>!e||"x"===e.toLowerCase()||"*"===e,x=(e,t)=>e.trim().split(/\s+/).map((e=>E(e,t))).join(" "),E=(e,t)=>{const n=t.loose?u[d.TILDELOOSE]:u[d.TILDE];return e.replace(n,((t,n,r,a,o)=>{let i;return l("tilde",e,t,n,r,a,o),S(n)?i="":S(r)?i=`>=${n}.0.0 <${+n+1}.0.0-0`:S(a)?i=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:o?(l("replaceTilde pr",o),i=`>=${n}.${r}.${a}-${o} <${n}.${+r+1}.0-0`):i=`>=${n}.${r}.${a} <${n}.${+r+1}.0-0`,l("tilde return",i),i}))},C=(e,t)=>e.trim().split(/\s+/).map((e=>R(e,t))).join(" "),R=(e,t)=>{l("caret",e,t);const n=t.loose?u[d.CARETLOOSE]:u[d.CARET],r=t.includePrerelease?"-0":"";return e.replace(n,((t,n,a,o,i)=>{let s;return l("caret",e,t,n,a,o,i),S(n)?s="":S(a)?s=`>=${n}.0.0${r} <${+n+1}.0.0-0`:S(o)?s="0"===n?`>=${n}.${a}.0${r} <${n}.${+a+1}.0-0`:`>=${n}.${a}.0${r} <${+n+1}.0.0-0`:i?(l("replaceCaret pr",i),s="0"===n?"0"===a?`>=${n}.${a}.${o}-${i} <${n}.${a}.${+o+1}-0`:`>=${n}.${a}.${o}-${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${o}-${i} <${+n+1}.0.0-0`):(l("no pr"),s="0"===n?"0"===a?`>=${n}.${a}.${o}${r} <${n}.${a}.${+o+1}-0`:`>=${n}.${a}.${o}${r} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${o} <${+n+1}.0.0-0`),l("caret return",s),s}))},D=(e,t)=>(l("replaceXRanges",e,t),e.split(/\s+/).map((e=>_(e,t))).join(" ")),_=(e,t)=>{e=e.trim();const n=t.loose?u[d.XRANGELOOSE]:u[d.XRANGE];return e.replace(n,((n,r,a,o,i,s)=>{l("xRange",e,n,r,a,o,i,s);const c=S(a),u=c||S(o),d=u||S(i),p=d;return"="===r&&p&&(r=""),s=t.includePrerelease?"-0":"",c?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&p?(u&&(o=0),i=0,">"===r?(r=">=",u?(a=+a+1,o=0,i=0):(o=+o+1,i=0)):"<="===r&&(r="<",u?a=+a+1:o=+o+1),"<"===r&&(s="-0"),n=`${r+a}.${o}.${i}${s}`):u?n=`>=${a}.0.0${s} <${+a+1}.0.0-0`:d&&(n=`>=${a}.${o}.0${s} <${a}.${+o+1}.0-0`),l("xRange return",n),n}))},O=(e,t)=>(l("replaceStars",e,t),e.trim().replace(u[d.STAR],"")),I=(e,t)=>(l("replaceGTE0",e,t),e.trim().replace(u[t.includePrerelease?d.GTE0PRE:d.GTE0],"")),T=e=>(t,n,r,a,o,i,s,l,c,u,d,p)=>`${n=S(r)?"":S(a)?`>=${r}.0.0${e?"-0":""}`:S(o)?`>=${r}.${a}.0${e?"-0":""}`:i?`>=${n}`:`>=${n}${e?"-0":""}`} ${l=S(c)?"":S(u)?`<${+c+1}.0.0-0`:S(d)?`<${c}.${+u+1}.0-0`:p?`<=${c}.${u}.${d}-${p}`:e?`<${c}.${u}.${+d+1}-0`:`<=${l}`}`.trim(),A=(e,t,n)=>{for(let n=0;n0){const r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}},7944:(e,t,n)=>{const r=n(9796),{MAX_LENGTH:a,MAX_SAFE_INTEGER:o}=n(9630),{safeRe:i,safeSrc:s,t:l}=n(6850),c=n(7095),{compareIdentifiers:u}=n(4031);class d{constructor(e,t){if(t=c(t),e instanceof d){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>a)throw new TypeError(`version is longer than ${a} characters`);r("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=e.trim().match(t.loose?i[l.LOOSE]:i[l.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(t===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let r=[t,e];!1===n&&(r=[t]),0===u(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}e.exports=d},7994:(e,t,n)=>{const r=n(5860);e.exports=(e,t)=>{const n=r(e.trim().replace(/^[=v]+/,""),t);return n?n.version:null}},3811:(e,t,n)=>{const r=n(6909),a=n(7659),o=n(144),i=n(2077),s=n(599),l=n(7092);e.exports=(e,t,n,c)=>{switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e===n;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e!==n;case"":case"=":case"==":return r(e,n,c);case"!=":return a(e,n,c);case">":return o(e,n,c);case">=":return i(e,n,c);case"<":return s(e,n,c);case"<=":return l(e,n,c);default:throw new TypeError(`Invalid operator: ${t}`)}}},5334:(e,t,n)=>{const r=n(7944),a=n(5860),{safeRe:o,t:i}=n(6850);e.exports=(e,t)=>{if(e instanceof r)return e;if("number"==typeof e&&(e=String(e)),"string"!=typeof e)return null;let n=null;if((t=t||{}).rtl){const r=t.includePrerelease?o[i.COERCERTLFULL]:o[i.COERCERTL];let a;for(;(a=r.exec(e))&&(!n||n.index+n[0].length!==e.length);)n&&a.index+a[0].length===n.index+n[0].length||(n=a),r.lastIndex=a.index+a[1].length+a[2].length;r.lastIndex=-1}else n=e.match(t.includePrerelease?o[i.COERCEFULL]:o[i.COERCE]);if(null===n)return null;const s=n[2],l=n[3]||"0",c=n[4]||"0",u=t.includePrerelease&&n[5]?`-${n[5]}`:"",d=t.includePrerelease&&n[6]?`+${n[6]}`:"";return a(`${s}.${l}.${c}${u}${d}`,t)}},2801:(e,t,n)=>{const r=n(7944);e.exports=(e,t,n)=>{const a=new r(e,n),o=new r(t,n);return a.compare(o)||a.compareBuild(o)}},7023:(e,t,n)=>{const r=n(5380);e.exports=(e,t)=>r(e,t,!0)},5380:(e,t,n)=>{const r=n(7944);e.exports=(e,t,n)=>new r(e,n).compare(new r(t,n))},660:(e,t,n)=>{const r=n(5860);e.exports=(e,t)=>{const n=r(e,null,!0),a=r(t,null,!0),o=n.compare(a);if(0===o)return null;const i=o>0,s=i?n:a,l=i?a:n,c=!!s.prerelease.length;if(!!l.prerelease.length&&!c){if(!l.patch&&!l.minor)return"major";if(0===l.compareMain(s))return l.minor&&!l.patch?"minor":"patch"}const u=c?"pre":"";return n.major!==a.major?u+"major":n.minor!==a.minor?u+"minor":n.patch!==a.patch?u+"patch":"prerelease"}},6909:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>0===r(e,t,n)},144:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(e,t,n)>0},2077:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(e,t,n)>=0},5955:(e,t,n)=>{const r=n(7944);e.exports=(e,t,n,a,o)=>{"string"==typeof n&&(o=a,a=n,n=void 0);try{return new r(e instanceof r?e.version:e,n).inc(t,a,o).version}catch(e){return null}}},599:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(e,t,n)<0},7092:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(e,t,n)<=0},2966:(e,t,n)=>{const r=n(7944);e.exports=(e,t)=>new r(e,t).major},5986:(e,t,n)=>{const r=n(7944);e.exports=(e,t)=>new r(e,t).minor},7659:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>0!==r(e,t,n)},5860:(e,t,n)=>{const r=n(7944);e.exports=(e,t,n=!1)=>{if(e instanceof r)return e;try{return new r(e,t)}catch(e){if(!n)return null;throw e}}},1617:(e,t,n)=>{const r=n(7944);e.exports=(e,t)=>new r(e,t).patch},9613:(e,t,n)=>{const r=n(5860);e.exports=(e,t)=>{const n=r(e,t);return n&&n.prerelease.length?n.prerelease:null}},2862:(e,t,n)=>{const r=n(5380);e.exports=(e,t,n)=>r(t,e,n)},6033:(e,t,n)=>{const r=n(2801);e.exports=(e,t)=>e.sort(((e,n)=>r(n,e,t)))},1722:(e,t,n)=>{const r=n(8395);e.exports=(e,t,n)=>{try{t=new r(t,n)}catch(e){return!1}return t.test(e)}},603:(e,t,n)=>{const r=n(2801);e.exports=(e,t)=>e.sort(((e,n)=>r(e,n,t)))},7645:(e,t,n)=>{const r=n(5860);e.exports=(e,t)=>{const n=r(e,t);return n?n.version:null}},8449:(e,t,n)=>{const r=n(6850),a=n(9630),o=n(7944),i=n(4031),s=n(5860),l=n(7645),c=n(7994),u=n(5955),d=n(660),p=n(2966),f=n(5986),h=n(1617),g=n(9613),m=n(5380),v=n(2862),b=n(7023),y=n(2801),w=n(603),S=n(6033),x=n(144),E=n(599),C=n(6909),R=n(7659),D=n(2077),_=n(7092),O=n(3811),I=n(5334),T=n(9524),A=n(8395),k=n(1722),P=n(651),L=n(7840),N=n(7930),M=n(3489),B=n(7494),V=n(5463),j=n(7871),F=n(4266),$=n(1112),z=n(1465),U=n(9252);e.exports={parse:s,valid:l,clean:c,inc:u,diff:d,major:p,minor:f,patch:h,prerelease:g,compare:m,rcompare:v,compareLoose:b,compareBuild:y,sort:w,rsort:S,gt:x,lt:E,eq:C,neq:R,gte:D,lte:_,cmp:O,coerce:I,Comparator:T,Range:A,satisfies:k,toComparators:P,maxSatisfying:L,minSatisfying:N,minVersion:M,validRange:B,outside:V,gtr:j,ltr:F,intersects:$,simplifyRange:z,subset:U,SemVer:o,re:r.re,src:r.src,tokens:r.t,SEMVER_SPEC_VERSION:a.SEMVER_SPEC_VERSION,RELEASE_TYPES:a.RELEASE_TYPES,compareIdentifiers:i.compareIdentifiers,rcompareIdentifiers:i.rcompareIdentifiers}},9630:e=>{const t=Number.MAX_SAFE_INTEGER||9007199254740991;e.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},9796:e=>{const t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};e.exports=t},4031:e=>{const t=/^[0-9]+$/,n=(e,n)=>{const r=t.test(e),a=t.test(n);return r&&a&&(e=+e,n=+n),e===n?0:r&&!a?-1:a&&!r?1:en(t,e)}},1158:e=>{e.exports=class{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);return void 0===t?void 0:(this.map.delete(e),this.map.set(e,t),t)}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&void 0!==t){if(this.map.size>=this.max){const e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}},7095:e=>{const t=Object.freeze({loose:!0}),n=Object.freeze({});e.exports=e=>e?"object"!=typeof e?t:e:n},6850:(e,t,n)=>{const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:a,MAX_LENGTH:o}=n(9630),i=n(9796),s=(t=e.exports={}).re=[],l=t.safeRe=[],c=t.src=[],u=t.safeSrc=[],d=t.t={};let p=0;const f="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",o],[f,a]],g=(e,t,n)=>{const r=(e=>{for(const[t,n]of h)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e})(t),a=p++;i(e,a,t),d[e]=a,c[a]=t,u[a]=r,s[a]=new RegExp(t,n?"g":void 0),l[a]=new RegExp(r,n?"g":void 0)};g("NUMERICIDENTIFIER","0|[1-9]\\d*"),g("NUMERICIDENTIFIERLOOSE","\\d+"),g("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${f}*`),g("MAINVERSION",`(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})`),g("MAINVERSIONLOOSE",`(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})`),g("PRERELEASEIDENTIFIER",`(?:${c[d.NUMERICIDENTIFIER]}|${c[d.NONNUMERICIDENTIFIER]})`),g("PRERELEASEIDENTIFIERLOOSE",`(?:${c[d.NUMERICIDENTIFIERLOOSE]}|${c[d.NONNUMERICIDENTIFIER]})`),g("PRERELEASE",`(?:-(${c[d.PRERELEASEIDENTIFIER]}(?:\\.${c[d.PRERELEASEIDENTIFIER]})*))`),g("PRERELEASELOOSE",`(?:-?(${c[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[d.PRERELEASEIDENTIFIERLOOSE]})*))`),g("BUILDIDENTIFIER",`${f}+`),g("BUILD",`(?:\\+(${c[d.BUILDIDENTIFIER]}(?:\\.${c[d.BUILDIDENTIFIER]})*))`),g("FULLPLAIN",`v?${c[d.MAINVERSION]}${c[d.PRERELEASE]}?${c[d.BUILD]}?`),g("FULL",`^${c[d.FULLPLAIN]}$`),g("LOOSEPLAIN",`[v=\\s]*${c[d.MAINVERSIONLOOSE]}${c[d.PRERELEASELOOSE]}?${c[d.BUILD]}?`),g("LOOSE",`^${c[d.LOOSEPLAIN]}$`),g("GTLT","((?:<|>)?=?)"),g("XRANGEIDENTIFIERLOOSE",`${c[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),g("XRANGEIDENTIFIER",`${c[d.NUMERICIDENTIFIER]}|x|X|\\*`),g("XRANGEPLAIN",`[v=\\s]*(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:${c[d.PRERELEASE]})?${c[d.BUILD]}?)?)?`),g("XRANGEPLAINLOOSE",`[v=\\s]*(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:${c[d.PRERELEASELOOSE]})?${c[d.BUILD]}?)?)?`),g("XRANGE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAIN]}$`),g("XRANGELOOSE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAINLOOSE]}$`),g("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),g("COERCE",`${c[d.COERCEPLAIN]}(?:$|[^\\d])`),g("COERCEFULL",c[d.COERCEPLAIN]+`(?:${c[d.PRERELEASE]})?`+`(?:${c[d.BUILD]})?(?:$|[^\\d])`),g("COERCERTL",c[d.COERCE],!0),g("COERCERTLFULL",c[d.COERCEFULL],!0),g("LONETILDE","(?:~>?)"),g("TILDETRIM",`(\\s*)${c[d.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",g("TILDE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAIN]}$`),g("TILDELOOSE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAINLOOSE]}$`),g("LONECARET","(?:\\^)"),g("CARETTRIM",`(\\s*)${c[d.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",g("CARET",`^${c[d.LONECARET]}${c[d.XRANGEPLAIN]}$`),g("CARETLOOSE",`^${c[d.LONECARET]}${c[d.XRANGEPLAINLOOSE]}$`),g("COMPARATORLOOSE",`^${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]})$|^$`),g("COMPARATOR",`^${c[d.GTLT]}\\s*(${c[d.FULLPLAIN]})$|^$`),g("COMPARATORTRIM",`(\\s*)${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]}|${c[d.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",g("HYPHENRANGE",`^\\s*(${c[d.XRANGEPLAIN]})\\s+-\\s+(${c[d.XRANGEPLAIN]})\\s*$`),g("HYPHENRANGELOOSE",`^\\s*(${c[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[d.XRANGEPLAINLOOSE]})\\s*$`),g("STAR","(<|>)?=?\\s*\\*"),g("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),g("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")},7871:(e,t,n)=>{const r=n(5463);e.exports=(e,t,n)=>r(e,t,">",n)},1112:(e,t,n)=>{const r=n(8395);e.exports=(e,t,n)=>(e=new r(e,n),t=new r(t,n),e.intersects(t,n))},4266:(e,t,n)=>{const r=n(5463);e.exports=(e,t,n)=>r(e,t,"<",n)},7840:(e,t,n)=>{const r=n(7944),a=n(8395);e.exports=(e,t,n)=>{let o=null,i=null,s=null;try{s=new a(t,n)}catch(e){return null}return e.forEach((e=>{s.test(e)&&(o&&-1!==i.compare(e)||(o=e,i=new r(o,n)))})),o}},7930:(e,t,n)=>{const r=n(7944),a=n(8395);e.exports=(e,t,n)=>{let o=null,i=null,s=null;try{s=new a(t,n)}catch(e){return null}return e.forEach((e=>{s.test(e)&&(o&&1!==i.compare(e)||(o=e,i=new r(o,n)))})),o}},3489:(e,t,n)=>{const r=n(7944),a=n(8395),o=n(144);e.exports=(e,t)=>{e=new a(e,t);let n=new r("0.0.0");if(e.test(n))return n;if(n=new r("0.0.0-0"),e.test(n))return n;n=null;for(let t=0;t{const t=new r(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":i&&!o(t,i)||(i=t);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${e.operator}`)}})),!i||n&&!o(n,i)||(n=i)}return n&&e.test(n)?n:null}},5463:(e,t,n)=>{const r=n(7944),a=n(9524),{ANY:o}=a,i=n(8395),s=n(1722),l=n(144),c=n(599),u=n(7092),d=n(2077);e.exports=(e,t,n,p)=>{let f,h,g,m,v;switch(e=new r(e,p),t=new i(t,p),n){case">":f=l,h=u,g=c,m=">",v=">=";break;case"<":f=c,h=d,g=l,m="<",v="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(s(e,t,p))return!1;for(let n=0;n{e.semver===o&&(e=new a(">=0.0.0")),i=i||e,s=s||e,f(e.semver,i.semver,p)?i=e:g(e.semver,s.semver,p)&&(s=e)})),i.operator===m||i.operator===v)return!1;if((!s.operator||s.operator===m)&&h(e,s.semver))return!1;if(s.operator===v&&g(e,s.semver))return!1}return!0}},1465:(e,t,n)=>{const r=n(1722),a=n(5380);e.exports=(e,t,n)=>{const o=[];let i=null,s=null;const l=e.sort(((e,t)=>a(e,t,n)));for(const e of l){r(e,t,n)?(s=e,i||(i=e)):(s&&o.push([i,s]),s=null,i=null)}i&&o.push([i,null]);const c=[];for(const[e,t]of o)e===t?c.push(e):t||e!==l[0]?t?e===l[0]?c.push(`<=${t}`):c.push(`${e} - ${t}`):c.push(`>=${e}`):c.push("*");const u=c.join(" || "),d="string"==typeof t.raw?t.raw:String(t);return u.length{const r=n(8395),a=n(9524),{ANY:o}=a,i=n(1722),s=n(5380),l=[new a(">=0.0.0-0")],c=[new a(">=0.0.0")],u=(e,t,n)=>{if(e===t)return!0;if(1===e.length&&e[0].semver===o){if(1===t.length&&t[0].semver===o)return!0;e=n.includePrerelease?l:c}if(1===t.length&&t[0].semver===o){if(n.includePrerelease)return!0;t=c}const r=new Set;let a,u,f,h,g,m,v;for(const t of e)">"===t.operator||">="===t.operator?a=d(a,t,n):"<"===t.operator||"<="===t.operator?u=p(u,t,n):r.add(t.semver);if(r.size>1)return null;if(a&&u){if(f=s(a.semver,u.semver,n),f>0)return null;if(0===f&&(">="!==a.operator||"<="!==u.operator))return null}for(const e of r){if(a&&!i(e,String(a),n))return null;if(u&&!i(e,String(u),n))return null;for(const r of t)if(!i(e,String(r),n))return!1;return!0}let b=!(!u||n.includePrerelease||!u.semver.prerelease.length)&&u.semver,y=!(!a||n.includePrerelease||!a.semver.prerelease.length)&&a.semver;b&&1===b.prerelease.length&&"<"===u.operator&&0===b.prerelease[0]&&(b=!1);for(const e of t){if(v=v||">"===e.operator||">="===e.operator,m=m||"<"===e.operator||"<="===e.operator,a)if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),">"===e.operator||">="===e.operator){if(h=d(a,e,n),h===e&&h!==a)return!1}else if(">="===a.operator&&!i(a.semver,String(e),n))return!1;if(u)if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),"<"===e.operator||"<="===e.operator){if(g=p(u,e,n),g===e&&g!==u)return!1}else if("<="===u.operator&&!i(u.semver,String(e),n))return!1;if(!e.operator&&(u||a)&&0!==f)return!1}return!(a&&m&&!u&&0!==f)&&(!(u&&v&&!a&&0!==f)&&(!y&&!b))},d=(e,t,n)=>{if(!e)return t;const r=s(e.semver,t.semver,n);return r>0?e:r<0||">"===t.operator&&">="===e.operator?t:e},p=(e,t,n)=>{if(!e)return t;const r=s(e.semver,t.semver,n);return r<0?e:r>0||"<"===t.operator&&"<="===e.operator?t:e};e.exports=(e,t,n={})=>{if(e===t)return!0;e=new r(e,n),t=new r(t,n);let a=!1;e:for(const r of e.set){for(const e of t.set){const t=u(r,e,n);if(a=a||null!==t,t)continue e}if(a)return!1}return!0}},651:(e,t,n)=>{const r=n(8395);e.exports=(e,t)=>new r(e,t).set.map((e=>e.map((e=>e.value)).join(" ").trim().split(" ")))},7494:(e,t,n)=>{const r=n(8395);e.exports=(e,t)=>{try{return new r(e,t).range||"*"}catch(e){return null}}},5745:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});const r={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};var a,o=new Uint8Array(16);function i(){if(!a&&!(a="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(o)}for(var s=[],l=0;l<256;++l)s.push((l+256).toString(16).slice(1));function c(e,t=0){return(s[e[t+0]]+s[e[t+1]]+s[e[t+2]]+s[e[t+3]]+"-"+s[e[t+4]]+s[e[t+5]]+"-"+s[e[t+6]]+s[e[t+7]]+"-"+s[e[t+8]]+s[e[t+9]]+"-"+s[e[t+10]]+s[e[t+11]]+s[e[t+12]]+s[e[t+13]]+s[e[t+14]]+s[e[t+15]]).toLowerCase()}const u=function(e,t,n){if(r.randomUUID&&!t&&!e)return r.randomUUID();var a=(e=e||{}).random||(e.rng||i)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t){n=n||0;for(var o=0;o<16;++o)t[n+o]=a[o];return t}return c(a)}},1625:(e,t,n)=>{"use strict";n.d(t,{$m:()=>i,ob:()=>a,qM:()=>o,uH:()=>r});var r=(e=>(e.Ascending="Ascending",e.Descending="Descending",e))(r||{});var a=(e=>(e.Actions="actions",e.Auto="auto",e.BasicGauge="basic",e.ColorBackground="color-background",e.ColorBackgroundSolid="color-background-solid",e.ColorText="color-text",e.Custom="custom",e.DataLinks="data-links",e.Gauge="gauge",e.GradientGauge="gradient-gauge",e.Image="image",e.JSONView="json-view",e.LcdGauge="lcd-gauge",e.Sparkline="sparkline",e))(a||{});var o=(e=>(e.Auto="auto",e.Lg="lg",e.Md="md",e.Sm="sm",e))(o||{}),i=(e=>(e.CSV="csv",e.Date="date",e.Distributed="distributed",e.DoubleQuote="doublequote",e.Glob="glob",e.HTML="html",e.JSON="json",e.Lucene="lucene",e.PercentEncode="percentencode",e.Pipe="pipe",e.QueryParam="queryparam",e.Raw="raw",e.Regex="regex",e.SQLString="sqlstring",e.SingleQuote="singlequote",e.Text="text",e.UriEncode="uriencode",e))(i||{})},6145:(e,t,n)=>{"use strict";n.d(t,{CO:()=>a,rw:()=>r,yV:()=>o});const r={allowCustomValue:!0,includeAll:!1,multi:!1,options:[],skipUrlSync:!1};var a=(e=>(e[e.never=0]="never",e[e.onDashboardLoad=1]="onDashboardLoad",e[e.onTimeRangeChanged=2]="onTimeRangeChanged",e))(a||{});var o=(e=>(e[e.Crosshair=1]="Crosshair",e[e.Off=0]="Off",e[e.Tooltip=2]="Tooltip",e))(o||{})},2245:(e,t,n)=>{"use strict";n.d(t,{zL:()=>a});var r=n(6145),a=(e=>(e[e.dontHide=0]="dontHide",e[e.hideLabel=1]="hideLabel",e[e.hideVariable=2]="hideVariable",e))(a||{});r.rw},7993:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});const r=(e,t)=>e>t?1:ee.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i="eexxaacctt",s=/\p{P}/gu,l=["en",{numeric:!0,sensitivity:"base"}],c=(e,t,n)=>e.replace("A-Z",t).replace("a-z",n),u={unicode:!1,alpha:null,interSplit:"[^A-Za-z\\d']+",intraSplit:"[a-z][A-Z]",interBound:"[^A-Za-z\\d]",intraBound:"[A-Za-z]\\d|\\d[A-Za-z]|[a-z][A-Z]",interLft:0,interRgt:0,interChars:".",interIns:a,intraChars:"[a-z\\d']",intraIns:null,intraContr:"'[a-z]{1,2}\\b",intraMode:0,intraSlice:[1,a],intraSub:null,intraTrn:null,intraDel:null,intraFilt:(e,t,n)=>!0,toUpper:e=>e.toLocaleUpperCase(),toLower:e=>e.toLocaleLowerCase(),compare:null,sort:(e,t,n,a=r)=>{let{idx:o,chars:i,terms:s,interLft2:l,interLft1:c,start:u,intraIns:d,interIns:p,cases:f}=e;return o.map(((e,t)=>t)).sort(((e,n)=>i[n]-i[e]||d[e]-d[n]||s[n]+l[n]+.5*c[n]-(s[e]+l[e]+.5*c[e])||p[e]-p[n]||u[e]-u[n]||f[n]-f[e]||a(t[o[e]],t[o[n]])))}},d=(e,t)=>0==t?"":1==t?e+"??":t==a?e+"*?":e+`{0,${t}}?`,p="(?:\\b|_)";function f(e){e=Object.assign({},u,e);let{unicode:t,interLft:n,interRgt:a,intraMode:f,intraSlice:h,intraIns:m,intraSub:v,intraTrn:b,intraDel:y,intraContr:w,intraSplit:S,interSplit:x,intraBound:E,interBound:C,intraChars:R,toUpper:D,toLower:_,compare:O}=e;m??=f,v??=f,b??=f,y??=f,O??="undefined"==typeof Intl?r:new Intl.Collator(...l).compare;let I=e.letters??e.alpha;if(null!=I){let e=D(I),t=_(I);x=c(x,e,t),S=c(S,e,t),C=c(C,e,t),E=c(E,e,t),R=c(R,e,t),w=c(w,e,t)}let T=t?"u":"";const A='".+?"',k=new RegExp(A,"gi"+T),P=new RegExp(`(?:\\s+|^)-(?:${R}+|${A})`,"gi"+T);let{intraRules:L}=e;null==L&&(L=e=>{let t=u.intraSlice,n=0,r=0,a=0,o=0;if(/[^\d]/.test(e)){let i=e.length;i<=4?i>=3&&(a=Math.min(b,1),4==i&&(n=Math.min(m,1))):(t=h,n=m,r=v,a=b,o=y)}return{intraSlice:t,intraIns:n,intraSub:r,intraTrn:a,intraDel:o}});let N=!!S,M=new RegExp(S,"g"+T),B=new RegExp(x,"g"+T),V=new RegExp("^"+x+"|"+x+"$","g"+T),j=new RegExp(w,"gi"+T);const F=(e,t=!1)=>{let n=[];e=(e=e.replace(k,(e=>(n.push(e),i)))).replace(V,""),t||(e=_(e)),N&&(e=e.replace(M,(e=>e[0]+" "+e[1])));let r=0;return e.split(B).filter((e=>""!=e)).map((e=>e===i?n[r++]:e))},$=/[^\d]+|\d+/g,z=(t,r=0,i=!1)=>{let s=F(t);if(0==s.length)return[];let l,c=Array(s.length).fill("");if(s=s.map(((e,t)=>e.replace(j,(e=>(c[t]=e,""))))),1==f)l=s.map(((e,t)=>{if('"'===e[0])return o(e.slice(1,-1));let n="";for(let r of e.matchAll($)){let e=r[0],{intraSlice:a,intraIns:o,intraSub:i,intraTrn:s,intraDel:l}=L(e);if(o+i+s+l==0)n+=e+c[t];else{let[r,u]=a,p=e.slice(0,r),f=e.slice(u),h=e.slice(r,u);1==o&&1==p.length&&p!=h[0]&&(p+="(?!"+p+")");let g=h.length,m=[e];if(i)for(let e=0;e0&&(e=")("+e+")("),l=s.map(((t,n)=>'"'===t[0]?o(t.slice(1,-1)):t.split("").map(((e,t,n)=>(1==m&&0==t&&n.length>1&&e!=n[t+1]&&(e+="(?!"+e+")"),e))).join(e)+c[n]))}let u=2==n?p:"",h=2==a?p:"",g=h+d(e.interChars,e.interIns)+u;return r>0?i?l=u+"("+l.join(")"+h+"|"+u+"(")+")"+h:(l="("+l.join(")("+g+")(")+")",l="(.??"+u+")"+l+"("+h+".*)"):(l=l.join(g),l=u+l+h),[new RegExp(l,"i"+T),s,c]},U=(e,t,n)=>{let[r]=z(t);if(null==r)return null;let a=[];if(null!=n)for(let t=0;t{let[i,s,l]=z(o,1),c=F(o,!0),[u]=z(o,2),d=s.length,p=Array(d),f=Array(d);for(let e=0;e=m){let e=_(l[r+1]).indexOf(i);e>-1&&(I.push(h,b,e,m),h+=Q(l,r,e,m),o=i,b=m,A=!0,0==t&&(c=h))}if(v||A){let e=h-1,u=h+b,d=!1,p=!1;if(-1==e||H.test(s[e]))A&&y++,d=!0;else{if(2==n){g=!0;break}if(W&&G.test(s[e]+s[e+1]))A&&w++,d=!0;else if(1==n){let e=l[r+1],n=h+b;if(e.length>=m){let a,u=0,p=!1,f=new RegExp(i,"ig"+T);for(;a=f.exec(e);){u=a.index;let e=n+u,t=e-1;if(-1==t||H.test(s[t])){y++,p=!0;break}if(G.test(s[t]+s[e])){w++,p=!0;break}}p&&(d=!0,I.push(h,b,u,m),h+=Q(l,r,u,m),o=i,b=m,A=!0,0==t&&(c=h))}if(!d){g=!0;break}}}if(u==s.length||H.test(s[u]))A&&S++,p=!0;else{if(2==a){g=!0;break}if(W&&G.test(s[u-1]+s[u]))A&&x++,p=!0;else if(1==a){g=!0;break}}A&&(E+=m,d&&p&&C++)}if(b>m&&(O+=b-m),t>0&&(D+=l[r-1].length),!e.intraFilt(i,o,h)){g=!0;break}t0?0:1/0,i=r-4;for(let t=2;t0&&(l.push(d,p),d=p=n)}p>d&&l.push(d,p),b++}}if(b{let a=e[t]+e[t+1].slice(0,n);return e[t-1]+=a,e[t]=e[t+1].slice(n,n+r),e[t+1]=e[t+1].slice(n+r),a.length};return{search:(...t)=>((t,n,r,a=1e3,i)=>{r=r?!0===r?5:r:0;let l=null,c=null,u=[];n=n.replace(P,(e=>{let t=e.trim().slice(1);return t='"'===t[0]?o(t.slice(1,-1)):t.replace(s,""),""!=t&&u.push(t),""}));let d,p=F(n);if(u.length>0){if(d=new RegExp(u.join("|"),"i"+T),0==p.length){let e=[];for(let n=0;n0){let e=F(n);if(e.length>1){let n=e.slice().sort(((e,t)=>t.length-e.length));for(let e=0;er)return[i,null,null];l=g(e).map((e=>e.join(" "))),c=[];let a=new Set;for(let e=0;e!a.has(e))),r=U(t,l[e],n);for(let e=0;e0?i:U(t,n)]);let f=null,h=null;if(u.length>0&&(c=c.map((e=>e.filter((e=>!d.test(t[e])))))),c.reduce(((e,t)=>e+t.length),0)<=a){f={},h=[];for(let n=0;n0)for(let e=0;e{let e={A:"ÁÀÃÂÄĄ",a:"áàãâäą",E:"ÉÈÊËĖ",e:"éèêëę",I:"ÍÌÎÏĮ",i:"íìîïį",O:"ÓÒÔÕÖ",o:"óòôõö",U:"ÚÙÛÜŪŲ",u:"úùûüūų",C:"ÇČĆ",c:"çčć",L:"Ł",l:"ł",N:"ÑŃ",n:"ñń",S:"ŠŚ",s:"šś",Z:"ŻŹ",z:"żź"},t=new Map,n="";for(let r in e)e[r].split("").forEach((e=>{n+=e,t.set(e,r)}));let r=new RegExp(`[${n}]`,"g"),a=e=>t.get(e);return e=>{if("string"==typeof e)return e.replace(r,a);let t=Array(e.length);for(let n=0;nt?`${e}`:e,v=(e,t)=>e+t;f.latinize=h,f.permute=e=>g([...Array(e.length).keys()]).sort(((e,t)=>{for(let n=0;nt.map((t=>e[t])))),f.highlight=function(e,t,n=m,r="",a=v){r=a(r,n(e.substring(0,t[0]),!1))??r;for(let o=0;o{"use strict";n.d(t,{w:()=>a});var r=n(5959);function a(e){const{ref:t,box:n,onResize:a}=e;(0,r.useEffect)((()=>{let e=null==t?void 0:t.current;if(e){if(void 0===window.ResizeObserver)return window.addEventListener("resize",a,!1),()=>{window.removeEventListener("resize",a,!1)};{const t=new window.ResizeObserver((e=>{e.length&&a()}));return t.observe(e,{box:n}),()=>{e&&t.unobserve(e)}}}}),[a,t,n])}},1792:(e,t,n)=>{"use strict";n.d(t,{A:()=>R});var r=n(5959),a=e=>"string"!=typeof e?{}:e.split(/ ?; ?/).reduce(((e,t)=>{const[n,r]=t.split(/ ?: ?/).map(((e,t)=>0===t?e.replace(/\s+/g,""):e.trim()));if(n&&r){const t=n.replace(/(\w)-(\w)/g,((e,t,n)=>`${t}${n.toUpperCase()}`));let a=r.trim();Number.isNaN(Number(r))||(a=Number(r)),e[n.startsWith("-")?n:t]=a}return e}),{});var o=["br","col","colgroup","dl","hr","iframe","img","input","link","menuitem","meta","ol","param","select","table","tbody","tfoot","thead","tr","ul","wbr"],i={"accept-charset":"acceptCharset",acceptcharset:"acceptCharset",accesskey:"accessKey",allowfullscreen:"allowFullScreen",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",cellpadding:"cellPadding",cellspacing:"cellSpacing",charset:"charSet",class:"className",classid:"classID",classname:"className",colspan:"colSpan",contenteditable:"contentEditable",contextmenu:"contextMenu",controlslist:"controlsList",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",datetime:"dateTime",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",enctype:"encType",for:"htmlFor",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",innerhtml:"innerHTML",inputmode:"inputMode",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",marginwidth:"marginWidth",marginheight:"marginHeight",maxlength:"maxLength",mediagroup:"mediaGroup",minlength:"minLength",nomodule:"noModule",novalidate:"noValidate",playsinline:"playsInline",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rowspan:"rowSpan",spellcheck:"spellCheck",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",tabindex:"tabIndex",typemustmatch:"typeMustMatch",usemap:"useMap",accentheight:"accentHeight","accent-height":"accentHeight",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",arabicform:"arabicForm","arabic-form":"arabicForm",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",diffuseconstant:"diffuseConstant",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",edgemode:"edgeMode",enablebackground:"enableBackground","enable-background":"enableBackground",externalresourcesrequired:"externalResourcesRequired",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",imagerendering:"imageRendering","image-rendering":"imageRendering",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",vmathematical:"vMathematical","v-mathematical":"vMathematical",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan",onblur:"onBlur",onchange:"onChange",onclick:"onClick",oncontextmenu:"onContextMenu",ondoubleclick:"onDoubleClick",ondrag:"onDrag",ondragend:"onDragEnd",ondragenter:"onDragEnter",ondragexit:"onDragExit",ondragleave:"onDragLeave",ondragover:"onDragOver",ondragstart:"onDragStart",ondrop:"onDrop",onerror:"onError",onfocus:"onFocus",oninput:"onInput",oninvalid:"onInvalid",onkeydown:"onKeyDown",onkeypress:"onKeyPress",onkeyup:"onKeyUp",onload:"onLoad",onmousedown:"onMouseDown",onmouseenter:"onMouseEnter",onmouseleave:"onMouseLeave",onmousemove:"onMouseMove",onmouseout:"onMouseOut",onmouseover:"onMouseOver",onmouseup:"onMouseUp",onscroll:"onScroll",onsubmit:"onSubmit",ontouchcancel:"onTouchCancel",ontouchend:"onTouchEnd",ontouchmove:"onTouchMove",ontouchstart:"onTouchStart",onwheel:"onWheel"};function s(e,t){const{key:n,level:s,...c}=t;switch(e.nodeType){case 1:return r.createElement(function(e){if(/[a-z]+[A-Z]+[a-z]+/.test(e))return e;return e.toLowerCase()}(e.nodeName),function(e,t){const n={key:t};if(e instanceof Element){const t=e.getAttribute("class");t&&(n.className=t),[...e.attributes].forEach((e=>{switch(e.name){case"class":break;case"style":n[e.name]=a(e.value);break;case"allowfullscreen":case"allowpaymentrequest":case"async":case"autofocus":case"autoplay":case"checked":case"controls":case"default":case"defer":case"disabled":case"formnovalidate":case"hidden":case"ismap":case"itemscope":case"loop":case"multiple":case"muted":case"nomodule":case"novalidate":case"open":case"readonly":case"required":case"reversed":case"selected":case"typemustmatch":n[i[e.name]||e.name]=!0;break;default:n[i[e.name]||e.name]=e.value}}))}return n}(e,n),l(e.childNodes,s,c));case 3:{const t=e.nodeValue?.toString()??"";if(!c.allowWhiteSpaces&&/^\s+$/.test(t)&&!/[\u00A0\u202F]/.test(t))return null;if(!e.parentNode)return t;const n=e.parentNode.nodeName.toLowerCase();return o.includes(n)?(/\S/.test(t)&&console.warn(`A textNode is not allowed inside '${n}'. Your text "${t}" will be ignored`),null):t}case 8:default:return null;case 11:return l(e.childNodes,s,t)}}function l(e,t,n){const r=[...e].map(((e,r)=>u(e,{...n,index:r,level:t+1}))).filter(Boolean);return r.length?r:null}function c(e,t={}){return"string"==typeof e?function(e,t={}){if(!e||"string"!=typeof e)return null;const{includeAllNodes:n=!1,nodeOnly:r=!1,selector:a="body > *",type:o="text/html"}=t;try{const i=(new DOMParser).parseFromString(e,o);if(n){const{childNodes:e}=i.body;return r?e:[...e].map((e=>u(e,t)))}const s=i.querySelector(a)||i.body.childNodes[0];if(!(s instanceof Node))throw new TypeError("Error parsing input");return r?s:u(s,t)}catch(e){0}return null}(e,t):e instanceof Node?u(e,t):null}function u(e,t={}){if(!(e&&e instanceof Node))return null;const{actions:n=[],index:r=0,level:a=0,randomKey:o}=t;let i=e,l=`${a}-${r}`;const c=[];return o&&0===a&&(l=`${function(e=6){const t="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let n="";for(let r=e;r>0;--r)n+=t[Math.round(61*Math.random())];return n}()}-${l}`),Array.isArray(n)&&n.forEach((t=>{t.condition(i,l,a)&&("function"==typeof t.pre&&(i=t.pre(i,l,a),i instanceof Node||(i=e)),"function"==typeof t.post&&c.push(t.post(i,l,a)))})),c.length?c:s(i,{key:l,level:a,...t})}var d=Object.defineProperty,p=(e,t,n)=>((e,t,n)=>t in e?d(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),f="react-inlinesvg",h={IDLE:"idle",LOADING:"loading",LOADED:"loaded",FAILED:"failed",READY:"ready",UNSUPPORTED:"unsupported"};function g(){return!("undefined"==typeof window||!window.document?.createElement)}function m(){return function(){if(!document)return!1;const e=document.createElement("div");e.innerHTML="";const t=e.firstChild;return!!t&&"http://www.w3.org/2000/svg"===t.namespaceURI}()&&"undefined"!=typeof window&&null!==window}async function v(e,t){const n=await fetch(e,t),r=n.headers.get("content-type"),[a]=(r??"").split(/ ?; ?/);if(n.status>299)throw new Error("Not found");if(!["image/svg+xml","text/plain"].some((e=>a.includes(e))))throw new Error(`Content type isn't valid: ${a}`);return n.text()}function b(e=1){return new Promise((t=>{setTimeout(t,1e3*e)}))}var y,w=class{constructor(){p(this,"cacheApi"),p(this,"cacheStore"),p(this,"subscribers",[]),p(this,"isReady",!1),this.cacheStore=new Map;let e=f,t=!1;g()&&(e=window.REACT_INLINESVG_CACHE_NAME??f,t=!!window.REACT_INLINESVG_PERSISTENT_CACHE&&"caches"in window),t?caches.open(e).then((e=>{this.cacheApi=e})).catch((e=>{console.error(`Failed to open cache: ${e.message}`),this.cacheApi=void 0})).finally((()=>{this.isReady=!0;const e=[...this.subscribers];this.subscribers.length=0,e.forEach((e=>{try{e()}catch(e){console.error(`Error in CacheStore subscriber callback: ${e.message}`)}}))})):this.isReady=!0}onReady(e){this.isReady?e():this.subscribers.push(e)}async get(e,t){return await(this.cacheApi?this.fetchAndAddToPersistentCache(e,t):this.fetchAndAddToInternalCache(e,t)),this.cacheStore.get(e)?.content??""}set(e,t){this.cacheStore.set(e,t)}isCached(e){return this.cacheStore.get(e)?.status===h.LOADED}async fetchAndAddToInternalCache(e,t){const n=this.cacheStore.get(e);if(n?.status!==h.LOADING){if(!n?.content){this.cacheStore.set(e,{content:"",status:h.LOADING});try{const n=await v(e,t);this.cacheStore.set(e,{content:n,status:h.LOADED})}catch(t){throw this.cacheStore.set(e,{content:"",status:h.FAILED}),t}}}else await this.handleLoading(e,(async()=>{this.cacheStore.set(e,{content:"",status:h.IDLE}),await this.fetchAndAddToInternalCache(e,t)}))}async fetchAndAddToPersistentCache(e,t){const n=this.cacheStore.get(e);if(n?.status===h.LOADED)return;if(n?.status===h.LOADING)return void await this.handleLoading(e,(async()=>{this.cacheStore.set(e,{content:"",status:h.IDLE}),await this.fetchAndAddToPersistentCache(e,t)}));this.cacheStore.set(e,{content:"",status:h.LOADING});const r=await(this.cacheApi?.match(e));if(r){const t=await r.text();this.cacheStore.set(e,{content:t,status:h.LOADED})}else try{await(this.cacheApi?.add(new Request(e,t)));const n=await(this.cacheApi?.match(e)),r=await(n?.text())??"";this.cacheStore.set(e,{content:r,status:h.LOADED})}catch(t){throw this.cacheStore.set(e,{content:"",status:h.FAILED}),t}}async handleLoading(e,t){for(let t=0;t<10;t++){if(this.cacheStore.get(e)?.status!==h.LOADING)return;await b(.1)}await t()}keys(){return[...this.cacheStore.keys()]}data(){return[...this.cacheStore.entries()].map((([e,t])=>({[e]:t})))}async delete(e){this.cacheApi&&await this.cacheApi.delete(e),this.cacheStore.delete(e)}async clear(){if(this.cacheApi){const e=await this.cacheApi.keys();await Promise.allSettled(e.map((e=>this.cacheApi.delete(e))))}this.cacheStore.clear()}};function S(e){const t=(0,r.useRef)(void 0);return(0,r.useEffect)((()=>{t.current=e})),t.current}function x(e){const{baseURL:t,content:n,description:r,handleError:a,hash:o,preProcessor:i,title:s,uniquifyIDs:l=!1}=e;try{const e=function(e,t){if(t)return t(e);return e}(n,i),a=c(e,{nodeOnly:!0});if(!(a&&a instanceof SVGSVGElement))throw new Error("Could not convert the src to a DOM Node");const u=E(a,{baseURL:t,hash:o,uniquifyIDs:l});if(r){const e=u.querySelector("desc");e?.parentNode&&e.parentNode.removeChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","desc");t.innerHTML=r,u.prepend(t)}if(void 0!==s){const e=u.querySelector("title");if(e?.parentNode&&e.parentNode.removeChild(e),s){const e=document.createElementNS("http://www.w3.org/2000/svg","title");e.innerHTML=s,u.prepend(e)}}return u}catch(e){return a(e)}}function E(e,t){const{baseURL:n="",hash:r,uniquifyIDs:a}=t,o=["id","href","xlink:href","xlink:role","xlink:arcrole"],i=["href","xlink:href"];return a?([...e.children].forEach((e=>{if(e.attributes?.length){const t=Object.values(e.attributes).map((e=>{const t=e,a=/url\((.*?)\)/.exec(e.value);return a?.[1]&&(t.value=e.value.replace(a[0],`url(${n}${a[1]}__${r})`)),t}));o.forEach((e=>{const n=t.find((t=>t.name===e));var a,o;n&&(a=e,o=n.value,!i.includes(a)||!o||o.includes("#"))&&(n.value=`${n.value}__${r}`)}))}return e.children.length?E(e,t):e})),e):e}function C(e){const{cacheRequests:t=!0,children:n=null,description:a,fetchOptions:o,innerRef:i,loader:s=null,onError:l,onLoad:u,src:d,title:p,uniqueHash:f}=e,[b,w]=(0,r.useReducer)(((e,t)=>({...e,...t})),{content:"",element:null,isCached:t&&y.isCached(e.src),status:h.IDLE}),{content:E,element:C,isCached:R,status:D}=b,_=S(e),O=S(b),I=(0,r.useRef)(f??function(e){const t="abcdefghijklmnopqrstuvwxyz",n=`${t}${t.toUpperCase()}1234567890`;let r="";for(let t=0;t{T.current&&(w({status:"Browser does not support SVG"===e.message?h.UNSUPPORTED:h.FAILED}),l?.(e))}),[l]),P=(0,r.useCallback)(((e,t=!1)=>{T.current&&w({content:e,isCached:t,status:h.LOADED})}),[]),L=(0,r.useCallback)((async()=>{const e=await v(d,o);P(e)}),[o,P,d]),N=(0,r.useCallback)((()=>{try{const t=c(x({...e,handleError:k,hash:I.current,content:E}));if(!t||!(0,r.isValidElement)(t))throw new Error("Could not convert the src to a React element");w({element:t,status:h.READY})}catch(e){k(e)}}),[E,k,e]),M=(0,r.useCallback)((async()=>{const e=/^data:image\/svg[^,]*?(;base64)?,(.*)/u.exec(d);let n;if(e?n=e[1]?window.atob(e[2]):decodeURIComponent(e[2]):d.includes("{T.current&&w({content:"",element:null,isCached:!1,status:h.LOADING})}),[]);(0,r.useEffect)((()=>{if(T.current=!0,g()&&!A.current){try{if(D===h.IDLE){if(!m())throw new Error("Browser does not support SVG");if(!d)throw new Error("Missing src");B()}}catch(e){k(e)}return A.current=!0,()=>{T.current=!1}}}),[]),(0,r.useEffect)((()=>{if(g()&&_&&_.src!==d){if(!d)return void k(new Error("Missing src"));B()}}),[k,B,_,d]),(0,r.useEffect)((()=>{D===h.LOADED&&N()}),[D,N]),(0,r.useEffect)((()=>{g()&&_&&_.src===d&&(_.title===p&&_.description===a||N())}),[a,N,_,d,p]),(0,r.useEffect)((()=>{if(O)switch(D){case h.LOADING:O.status!==h.LOADING&&M();break;case h.LOADED:O.status!==h.LOADED&&N();break;case h.READY:O.status!==h.READY&&u?.(d,R)}}),[M,N,R,u,O,d,D]);const V=function(e,...t){const n={};for(const r in e)({}).hasOwnProperty.call(e,r)&&(t.includes(r)||(n[r]=e[r]));return n}(e,"baseURL","cacheRequests","children","description","fetchOptions","innerRef","loader","onError","onLoad","preProcessor","src","title","uniqueHash","uniquifyIDs");return g()?C?(0,r.cloneElement)(C,{ref:i,...V}):[h.UNSUPPORTED,h.FAILED].includes(D)?n:s:s}function R(e){y||(y=new w);const{loader:t}=e,[n,a]=(0,r.useState)(y.isReady);return(0,r.useEffect)((()=>{n||y.onReady((()=>{a(!0)}))}),[n]),n?r.createElement(C,{...e}):t}}}]); +//# sourceMappingURL=677.js.map?_cache=e8f5f3a77f3d85f1a5c3 \ No newline at end of file diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/677.js.LICENSE.txt b/compose/grafana/plugins/grafana-lokiexplore-app/677.js.LICENSE.txt new file mode 100644 index 0000000..6d75ab4 --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/677.js.LICENSE.txt @@ -0,0 +1,4 @@ +/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/ diff --git a/compose/grafana/plugins/grafana-lokiexplore-app/677.js.map b/compose/grafana/plugins/grafana-lokiexplore-app/677.js.map new file mode 100644 index 0000000..c37869f --- /dev/null +++ b/compose/grafana/plugins/grafana-lokiexplore-app/677.js.map @@ -0,0 +1 @@ +{"version":3,"file":"677.js?_cache=e8f5f3a77f3d85f1a5c3","mappings":"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","sources":["webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneApp/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/uuid/dist/esm-browser/native.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/uuid/dist/esm-browser/rng.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/uuid/dist/esm-browser/stringify.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/uuid/dist/esm-browser/v4.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/SceneComponentWrapper.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/events.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/SceneObjectRef.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/SceneObjectBase.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/RuntimeDataSource.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/lookupVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/writeSceneLog.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/behaviors/SceneRenderProfiler.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/getQueryController.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/behaviors/SceneQueryController.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/veneer/common.types.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/SceneDataNode.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/services/SceneObjectUrlSyncConfig.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/parseUrlParam.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/evaluateTimeRange.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/date.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/SceneTimeRange.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/defaults.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/getTimeRange.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/types.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/fieldAccessorCache.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/ScopedVarsVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/formatRegistry.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/constants.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/types.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/timeMacros.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/MultiValueVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/AllVariablesMacro.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/dataMacros.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/urlMacros.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/index.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/templateProxies.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/macros/contextMacros.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/interpolation/sceneInterpolator.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/types.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/registerQueryWithController.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/getDataSource.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/VariableValueRecorder.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/ExtraQueryProvider.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/extraQueryProcessingOperator.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/filterAnnotations.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/getEnrichedDataRequest.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/patchGetAdhocFilters.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/e2e-selectors/dist/esm/resolver.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/e2e-selectors/dist/esm/selectors/constants.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/e2e-selectors/dist/esm/selectors/components.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/e2e-selectors/dist/esm/selectors/index.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/e2e-selectors/dist/esm/selectors/pages.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/filter.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/components/getOptionSearcher.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/components/VariableValueSelect.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/getEnrichedFiltersRequest.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/SafeSerializableSceneObject.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/wrapInSafeSerializableSceneObject.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/groupby/GroupByVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/LoadingIndicator.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/ControlsLabel.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/getAdhocOptionSearcher.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFilterRenderer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFilterBuilder.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js","webpack://grafana-lokiexplore-app/../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","webpack://grafana-lokiexplore-app/../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://grafana-lokiexplore-app/../node_modules/tabbable/dist/index.esm.js","webpack://grafana-lokiexplore-app/../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://grafana-lokiexplore-app/../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://grafana-lokiexplore-app/../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/@floating-ui/react/dist/floating-ui.react.mjs","webpack://grafana-lokiexplore-app/../node_modules/@tanstack/virtual-core/dist/esm/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@tanstack/virtual-core/dist/esm/index.js","webpack://grafana-lokiexplore-app/../node_modules/@tanstack/react-virtual/dist/esm/index.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/adhoc/AdHocFiltersVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/DataLayersMerger.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/SceneQueryRunner.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/ConstantVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/VariableDependencyConfig.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/guards.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/createQueryVariableRunner.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/toMetricFindValues.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/query/QueryVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/SceneScopesBridge.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/sceneGraph.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/sceneGraph/index.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/services/UniqueUrlKeyMapper.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/services/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/behaviors/CursorSync.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/misc/util.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useIsomorphicLayoutEffect.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useMeasure.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/VizPanelSeriesLimit.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/VizPanelRenderer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/colorSeriesConfigFactory.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/VizPanel.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/behaviors/LiveNowTimer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/getMessageFromError.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/SceneDataLayerBase.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/SceneDataLayerControls.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/lift.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/node_modules/tslib/tslib.es6.mjs","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/config.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/operators/map.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/Observable.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","webpack://grafana-lokiexplore-app/../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/standardAnnotationQuery.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/SceneDataLayerSet.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/querying/SceneDataTransformer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/components/VariableValueSelectors.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/components/VariableValueControl.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/sets/SceneVariableSet.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/CustomVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/DataSourceVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/metricTree.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/components/VariableValueInput.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/TestVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/TextBoxVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/IntervalVariable.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/services/UrlSyncManager.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/services/useUrlSync.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/EmbeddedScene.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/VizPanelMenu.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/tslib/tslib.es6.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useAsyncFn.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useMountedState.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/VizPanel/VizPanelExploreButton.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useAsync.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/explore.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/SceneGridItem.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useEffectOnce.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/LazyLoader.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/types.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/SceneGridLayout.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/constants.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/utils.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/grid/SceneGridRow.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/NestedScene.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneCanvasText.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneToolbarButton.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/node_modules/react-use/esm/useLocalStorage.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneTimePicker.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneRefreshPicker.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/utils/getCompareSeriesRefId.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneTimeRangeCompare.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneByFrameRepeater.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneByVariableRepeater.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneControlsSpacer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/SceneFlexLayout.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/split/Splitter.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/split/SplitLayout.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/layout/split/SplitLayoutRenderer.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneApp/SceneApp.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneReactObject.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneDebugger/DebugDetails.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneDebugger/DebugTreeNode.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneDebugger/SceneDebugger.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneApp/SceneAppPageView.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/components/SceneApp/SceneAppPage.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/common.gen-CZ1M9G8L.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/barchart/panelcfg/x/BarChartPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/bargauge/panelcfg/x/BarGaugePanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/datagrid/panelcfg/x/DatagridPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/gauge/panelcfg/x/GaugePanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/geomap/panelcfg/x/GeomapPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/heatmap/panelcfg/x/HeatmapPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/histogram/panelcfg/x/HistogramPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/news/panelcfg/x/NewsPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/piechart/panelcfg/x/PieChartPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/stat/panelcfg/x/StatPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/statetimeline/panelcfg/x/StateTimelinePanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/statushistory/panelcfg/x/StatusHistoryPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/table/panelcfg/x/TablePanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/text/panelcfg/x/TextPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/composable/xychart/panelcfg/x/XYChartPanelCfg_types.gen.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/StandardFieldConfigBuilders.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/FieldConfigOverridesBuilder.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/FieldConfigBuilder.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/VizPanelBuilder.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/index.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/VizConfigBuilders.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/core/PanelBuilders/FieldConfigBuilders.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/index.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/scenes/dist/esm/variables/variants/guards.js","webpack://grafana-lokiexplore-app/../node_modules/use-memo-one/dist/use-memo-one.esm.js","webpack://grafana-lokiexplore-app/../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","webpack://grafana-lokiexplore-app/../node_modules/css-box-model/dist/css-box-model.esm.js","webpack://grafana-lokiexplore-app/../node_modules/memoize-one/dist/memoize-one.esm.js","webpack://grafana-lokiexplore-app/../node_modules/raf-schd/dist/raf-schd.esm.js","webpack://grafana-lokiexplore-app/../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://grafana-lokiexplore-app/../node_modules/@hello-pangea/dnd/dist/dnd.esm.js","webpack://grafana-lokiexplore-app/../node_modules/lodash.isequal/index.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/_Symbol.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/_baseGetTag.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/_baseTrim.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/_freeGlobal.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/_getRawTag.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/_objectToString.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/_root.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/_trimmedEndIndex.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/debounce.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/isObject.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/isObjectLike.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/isSymbol.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/now.js","webpack://grafana-lokiexplore-app/../node_modules/lodash/toNumber.js","webpack://grafana-lokiexplore-app/../node_modules/prop-types/factoryWithThrowingShims.js","webpack://grafana-lokiexplore-app/../node_modules/prop-types/index.js","webpack://grafana-lokiexplore-app/../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/build/cjs/Draggable.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/build/cjs/DraggableCore.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/build/cjs/cjs.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/build/cjs/utils/domFns.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/build/cjs/utils/log.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/build/cjs/utils/shims.js","webpack://grafana-lokiexplore-app/../node_modules/react-draggable/node_modules/clsx/dist/clsx.m.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/GridItem.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/ReactGridLayout.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/ReactGridLayoutPropTypes.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/ResponsiveReactGridLayout.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/calculateUtils.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/components/WidthProvider.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/fastRGLPropsEqual.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/responsiveUtils.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/build/utils.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/index.js","webpack://grafana-lokiexplore-app/../node_modules/react-grid-layout/node_modules/clsx/dist/clsx.m.js","webpack://grafana-lokiexplore-app/../node_modules/react-resizable/build/Resizable.js","webpack://grafana-lokiexplore-app/../node_modules/react-resizable/build/ResizableBox.js","webpack://grafana-lokiexplore-app/../node_modules/react-resizable/build/propTypes.js","webpack://grafana-lokiexplore-app/../node_modules/react-resizable/build/utils.js","webpack://grafana-lokiexplore-app/../node_modules/react-resizable/index.js","webpack://grafana-lokiexplore-app/../node_modules/react-scroll-sync/dist/index.js","webpack://grafana-lokiexplore-app/../node_modules/semver/classes/comparator.js","webpack://grafana-lokiexplore-app/../node_modules/semver/classes/range.js","webpack://grafana-lokiexplore-app/../node_modules/semver/classes/semver.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/clean.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/cmp.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/coerce.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/compare-build.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/compare-loose.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/compare.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/diff.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/eq.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/gt.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/gte.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/inc.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/lt.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/lte.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/major.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/minor.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/neq.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/parse.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/patch.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/prerelease.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/rcompare.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/rsort.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/satisfies.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/sort.js","webpack://grafana-lokiexplore-app/../node_modules/semver/functions/valid.js","webpack://grafana-lokiexplore-app/../node_modules/semver/index.js","webpack://grafana-lokiexplore-app/../node_modules/semver/internal/constants.js","webpack://grafana-lokiexplore-app/../node_modules/semver/internal/debug.js","webpack://grafana-lokiexplore-app/../node_modules/semver/internal/identifiers.js","webpack://grafana-lokiexplore-app/../node_modules/semver/internal/lrucache.js","webpack://grafana-lokiexplore-app/../node_modules/semver/internal/parse-options.js","webpack://grafana-lokiexplore-app/../node_modules/semver/internal/re.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/gtr.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/intersects.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/ltr.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/max-satisfying.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/min-satisfying.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/min-version.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/outside.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/simplify.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/subset.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/to-comparators.js","webpack://grafana-lokiexplore-app/../node_modules/semver/ranges/valid.js","webpack://grafana-lokiexplore-app/../node_modules/uuid/dist/esm-browser/native.js","webpack://grafana-lokiexplore-app/../node_modules/uuid/dist/esm-browser/rng.js","webpack://grafana-lokiexplore-app/../node_modules/uuid/dist/esm-browser/stringify.js","webpack://grafana-lokiexplore-app/../node_modules/uuid/dist/esm-browser/v4.js","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/common/common.gen.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/raw/dashboard/x/dashboard_types.gen.mjs","webpack://grafana-lokiexplore-app/../node_modules/@grafana/schema/dist/esm/veneer/dashboard.types.mjs","webpack://grafana-lokiexplore-app/../node_modules/@leeoniya/ufuzzy/dist/uFuzzy.mjs","webpack://grafana-lokiexplore-app/../node_modules/@react-aria/utils/dist/useResizeObserver.mjs","webpack://grafana-lokiexplore-app/../node_modules/react-from-dom/dist/index.mjs","webpack://grafana-lokiexplore-app/../node_modules/react-inlinesvg/dist/index.mjs"],"sourcesContent":["import { useParams, useLocation, matchPath } from 'react-router-dom';\nimport { urlUtil, locationUtil } from '@grafana/data';\nimport { locationSearchToObject } from '@grafana/runtime';\n\nfunction useAppQueryParams() {\n const location = useLocation();\n return locationSearchToObject(location.search || \"\");\n}\nfunction getUrlWithAppState(path, searchObject, preserveParams) {\n const paramsCopy = { ...searchObject };\n if (preserveParams) {\n for (const key of Object.keys(paramsCopy)) {\n if (!preserveParams.includes(key)) {\n delete paramsCopy[key];\n }\n }\n }\n return urlUtil.renderUrl(locationUtil.assureBaseUrl(path), paramsCopy);\n}\nfunction useSceneRouteMatch(path) {\n const params = useParams();\n const location = useLocation();\n const isExact = matchPath(\n {\n path,\n caseSensitive: false,\n end: true\n },\n location.pathname\n );\n const match = {\n params,\n isExact: isExact !== null,\n path: location.pathname,\n url: location.pathname\n };\n return match;\n}\n\nexport { getUrlWithAppState, useAppQueryParams, useSceneRouteMatch };\n//# sourceMappingURL=utils.js.map\n","import { getPluginImportUtils } from '@grafana/runtime';\n\nconst runtimePanelPlugins = /* @__PURE__ */ new Map();\nfunction registerRuntimePanelPlugin({ pluginId, plugin }) {\n if (runtimePanelPlugins.has(pluginId)) {\n throw new Error(`A runtime panel plugin with id ${pluginId} has already been registered`);\n }\n plugin.meta = {\n ...plugin.meta,\n id: pluginId,\n name: pluginId,\n module: \"runtime plugin\",\n baseUrl: \"runtime plugin\",\n info: {\n author: {\n name: \"Runtime plugin \" + pluginId\n },\n description: \"\",\n links: [],\n logos: {\n large: \"\",\n small: \"\"\n },\n screenshots: [],\n updated: \"\",\n version: \"\"\n }\n };\n runtimePanelPlugins.set(pluginId, plugin);\n}\nfunction loadPanelPluginSync(pluginId) {\n var _a;\n const { getPanelPluginFromCache } = getPluginImportUtils();\n return (_a = getPanelPluginFromCache(pluginId)) != null ? _a : runtimePanelPlugins.get(pluginId);\n}\n\nexport { loadPanelPluginSync, registerRuntimePanelPlugin, runtimePanelPlugins };\n//# sourceMappingURL=registerRuntimePanelPlugin.js.map\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import React, { useState, useEffect } from 'react';\n\nfunction SceneComponentWrapperWithoutMemo({ model, ...otherProps }) {\n var _a;\n const Component = (_a = model.constructor[\"Component\"]) != null ? _a : EmptyRenderer;\n const [_, setValue] = useState(0);\n useEffect(() => {\n const unsub = model.activate();\n setValue((prevState) => prevState + 1);\n return unsub;\n }, [model]);\n if (!model.isActive && !model.renderBeforeActivation) {\n return null;\n }\n return /* @__PURE__ */ React.createElement(Component, { ...otherProps, model });\n}\nconst SceneComponentWrapper = React.memo(SceneComponentWrapperWithoutMemo);\nfunction EmptyRenderer(_) {\n return null;\n}\n\nexport { SceneComponentWrapper };\n//# sourceMappingURL=SceneComponentWrapper.js.map\n","import { BusEventWithPayload } from '@grafana/data';\n\nclass SceneObjectStateChangedEvent extends BusEventWithPayload {\n}\nSceneObjectStateChangedEvent.type = \"scene-object-state-change\";\nclass UserActionEvent extends BusEventWithPayload {\n}\nUserActionEvent.type = \"scene-object-user-action\";\n\nexport { SceneObjectStateChangedEvent, UserActionEvent };\n//# sourceMappingURL=events.js.map\n","var __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar _ref;\nclass SceneObjectRef {\n constructor(ref) {\n __privateAdd(this, _ref);\n __privateSet(this, _ref, ref);\n }\n resolve() {\n return __privateGet(this, _ref);\n }\n}\n_ref = new WeakMap();\n\nexport { SceneObjectRef };\n//# sourceMappingURL=SceneObjectRef.js.map\n","import { useState, useEffect } from 'react';\nimport { Subscription } from 'rxjs';\nimport { v4 } from 'uuid';\nimport { EventBusSrv } from '@grafana/data';\nimport { SceneComponentWrapper } from './SceneComponentWrapper.js';\nimport { SceneObjectStateChangedEvent } from './events.js';\nimport { cloneSceneObject } from './sceneGraph/utils.js';\nimport { SceneObjectRef } from './SceneObjectRef.js';\n\nclass SceneObjectBase {\n constructor(state) {\n this._isActive = false;\n this._activationHandlers = [];\n this._deactivationHandlers = /* @__PURE__ */ new Map();\n this._subs = new Subscription();\n this._refCount = 0;\n this._renderBeforeActivation = false;\n if (!state.key) {\n state.key = v4();\n }\n this._events = new EventBusSrv();\n this._state = Object.freeze(state);\n this._setParent(this._state);\n }\n /** Current state */\n get state() {\n return this._state;\n }\n /** True if currently being active (ie displayed for visual objects) */\n get isActive() {\n return this._isActive;\n }\n get renderBeforeActivation() {\n return this._renderBeforeActivation;\n }\n /** Returns the parent, undefined for root object */\n get parent() {\n return this._parent;\n }\n /** Returns variable dependency config */\n get variableDependency() {\n return this._variableDependency;\n }\n /** Returns url sync config */\n get urlSync() {\n return this._urlSync;\n }\n /**\n * Used in render functions when rendering a SceneObject.\n * Wraps the component in an EditWrapper that handles edit mode\n */\n get Component() {\n return SceneComponentWrapper;\n }\n _setParent(state) {\n forEachChild(state, (child) => {\n if (child._parent && child._parent !== this) {\n console.warn(\n \"SceneObject already has a parent set that is different from the new parent. You cannot share the same SceneObject instance in multiple scenes or in multiple different places of the same scene graph. Use SceneObject.clone() to duplicate a SceneObject or store a state key reference and use sceneGraph.findObject to locate it.\",\n child,\n this\n );\n }\n child._parent = this;\n });\n }\n /**\n * Sometimes you want to move one instance to another parent.\n * This is a way to do that without getting the console warning.\n */\n clearParent() {\n this._parent = void 0;\n }\n /**\n * Subscribe to the scene state subject\n **/\n subscribeToState(handler) {\n return this._events.subscribe(SceneObjectStateChangedEvent, (event) => {\n if (event.payload.changedObject === this) {\n handler(event.payload.newState, event.payload.prevState);\n }\n });\n }\n /**\n * Subscribe to the scene event\n **/\n subscribeToEvent(eventType, handler) {\n return this._events.subscribe(eventType, handler);\n }\n setState(update) {\n const prevState = this._state;\n const newState = {\n ...this._state,\n ...update\n };\n this._state = Object.freeze(newState);\n this._setParent(update);\n this._handleActivationOfChangedStateProps(prevState, newState);\n this.publishEvent(\n new SceneObjectStateChangedEvent({\n prevState,\n newState,\n partialUpdate: update,\n changedObject: this\n }),\n true\n );\n }\n /**\n * This handles activation and deactivation of $data, $timeRange and $variables when they change\n * during the active phase of the scene object.\n */\n _handleActivationOfChangedStateProps(prevState, newState) {\n if (!this.isActive) {\n return;\n }\n if (prevState.$behaviors !== newState.$behaviors) {\n this._handleChangedBehaviors(prevState.$behaviors, newState.$behaviors);\n }\n if (prevState.$data !== newState.$data) {\n this._handleChangedStateActivation(prevState.$data, newState.$data);\n }\n if (prevState.$variables !== newState.$variables) {\n this._handleChangedStateActivation(prevState.$variables, newState.$variables);\n }\n if (prevState.$timeRange !== newState.$timeRange) {\n this._handleChangedStateActivation(prevState.$timeRange, newState.$timeRange);\n }\n }\n _handleChangedStateActivation(oldValue, newValue) {\n if (oldValue) {\n const deactivationHandler = this._deactivationHandlers.get(oldValue);\n if (deactivationHandler) {\n deactivationHandler();\n this._deactivationHandlers.delete(oldValue);\n }\n }\n if (newValue) {\n this._deactivationHandlers.set(newValue, newValue.activate());\n }\n }\n _handleChangedBehaviors(oldValue, newValue) {\n if (oldValue) {\n for (const oldBehavior of oldValue) {\n if (!newValue || !newValue.includes(oldBehavior)) {\n const deactivationHandler = this._deactivationHandlers.get(oldBehavior);\n if (deactivationHandler) {\n deactivationHandler();\n this._deactivationHandlers.delete(oldBehavior);\n }\n }\n }\n }\n if (newValue) {\n for (const newBehavior of newValue) {\n if (!oldValue || !oldValue.includes(newBehavior)) {\n this._activateBehavior(newBehavior);\n }\n }\n }\n }\n /*\n * Publish an event and optionally bubble it up the scene\n **/\n publishEvent(event, bubble) {\n this._events.publish(event);\n if (bubble && this.parent) {\n this.parent.publishEvent(event, bubble);\n }\n }\n getRoot() {\n return !this._parent ? this : this._parent.getRoot();\n }\n _internalActivate() {\n this._isActive = true;\n const { $data, $variables, $timeRange, $behaviors } = this.state;\n this._activationHandlers.forEach((handler) => {\n const result = handler();\n if (result) {\n this._deactivationHandlers.set(result, result);\n }\n });\n if ($timeRange && !$timeRange.isActive) {\n this._deactivationHandlers.set($timeRange, $timeRange.activate());\n }\n if ($variables && !$variables.isActive) {\n this._deactivationHandlers.set($variables, $variables.activate());\n }\n if ($data && !$data.isActive) {\n this._deactivationHandlers.set($data, $data.activate());\n }\n if ($behaviors) {\n for (const behavior of $behaviors) {\n this._activateBehavior(behavior);\n }\n }\n }\n _activateBehavior(behavior) {\n if (behavior instanceof SceneObjectBase) {\n this._deactivationHandlers.set(behavior, behavior.activate());\n } else if (typeof behavior === \"function\") {\n const deactivate = behavior(this);\n if (deactivate) {\n this._deactivationHandlers.set(behavior, deactivate);\n }\n }\n }\n /**\n * This is primarily called from SceneComponentWrapper when the SceneObject's Component is mounted.\n * But in some scenarios this can also be called directly from another scene object. When called manually from another scene object\n * make sure to call the returned function when the source scene object is deactivated.\n */\n activate() {\n if (!this.isActive) {\n this._internalActivate();\n }\n this._refCount++;\n let called = false;\n return () => {\n this._refCount--;\n if (called) {\n const msg = `SceneObject cancelation handler returned by activate() called a second time`;\n throw new Error(msg);\n }\n called = true;\n if (this._refCount === 0) {\n this._internalDeactivate();\n }\n };\n }\n /**\n * Called by the SceneComponentWrapper when the react component is unmounted.\n * Don't override this, instead use addActivationHandler. The activation handler can return a deactivation handler.\n */\n _internalDeactivate() {\n this._isActive = false;\n for (let handler of this._deactivationHandlers.values()) {\n handler();\n }\n this._deactivationHandlers.clear();\n this._events.removeAllListeners();\n this._subs.unsubscribe();\n this._subs = new Subscription();\n }\n /**\n * Utility hook to get and subscribe to state\n */\n useState() {\n return useSceneObjectState(this);\n }\n /** Force a re-render, should only be needed when variable values change */\n forceRender() {\n this.setState({});\n }\n /**\n * Will create new SceneObject with shallow-cloned state, but all state items of type SceneObject are deep cloned\n */\n clone(withState) {\n return cloneSceneObject(this, withState);\n }\n /**\n * Allows external code to register code that is executed on activate and deactivate. This allow you\n * to wire up scene objects that need to respond to state changes in other objects from the outside.\n **/\n addActivationHandler(handler) {\n this._activationHandlers.push(handler);\n }\n /**\n * Loop through state and call callback for each direct child scene object.\n * Checks 1 level deep properties and arrays. So a scene object hidden in a nested plain object will not be detected.\n */\n forEachChild(callback) {\n forEachChild(this.state, callback);\n }\n /** Returns a SceneObjectRef that will resolve to this object */\n getRef() {\n if (!this._ref) {\n this._ref = new SceneObjectRef(this);\n }\n return this._ref;\n }\n toJSON() {\n return {\n type: Object.getPrototypeOf(this).constructor.name,\n isActive: this.isActive,\n state: this.state\n };\n }\n}\nfunction useSceneObjectState(model, options) {\n var _a;\n const [_, setState] = useState(model.state);\n const stateAtFirstRender = model.state;\n const shouldActivateOrKeepAlive = (_a = options == null ? void 0 : options.shouldActivateOrKeepAlive) != null ? _a : false;\n useEffect(() => {\n let unactivate;\n if (shouldActivateOrKeepAlive) {\n unactivate = model.activate();\n }\n const s = model.subscribeToState((state) => {\n setState(state);\n });\n if (model.state !== stateAtFirstRender) {\n setState(model.state);\n }\n return () => {\n s.unsubscribe();\n if (unactivate) {\n unactivate();\n }\n };\n }, [model, shouldActivateOrKeepAlive]);\n return model.state;\n}\nfunction forEachChild(state, callback) {\n for (const propValue of Object.values(state)) {\n if (propValue instanceof SceneObjectBase) {\n callback(propValue);\n }\n if (Array.isArray(propValue)) {\n for (const child of propValue) {\n if (child instanceof SceneObjectBase) {\n callback(child);\n }\n }\n }\n }\n}\n\nexport { SceneObjectBase, useSceneObjectState };\n//# sourceMappingURL=SceneObjectBase.js.map\n","import { SceneObjectBase } from '../SceneObjectBase.js';\nimport { SceneObjectRef } from '../SceneObjectRef.js';\nimport { cloneDeep } from 'lodash';\n\nfunction cloneSceneObject(sceneObject, withState) {\n const clonedState = cloneSceneObjectState(sceneObject.state, withState);\n return new sceneObject.constructor(clonedState);\n}\nfunction cloneSceneObjectState(sceneState, withState) {\n const clonedState = { ...sceneState };\n Object.assign(clonedState, withState);\n for (const key in clonedState) {\n if (withState && withState[key] !== void 0) {\n continue;\n }\n const propValue = clonedState[key];\n if (propValue instanceof SceneObjectRef) {\n console.warn(\"Cloning object with SceneObjectRef\");\n continue;\n }\n if (propValue instanceof SceneObjectBase) {\n clonedState[key] = propValue.clone();\n } else if (Array.isArray(propValue)) {\n const newArray = [];\n for (const child of propValue) {\n if (child instanceof SceneObjectBase) {\n newArray.push(child.clone());\n } else if (typeof child === \"object\") {\n newArray.push(cloneDeep(child));\n } else {\n newArray.push(child);\n }\n }\n clonedState[key] = newArray;\n } else if (typeof propValue === \"object\") {\n clonedState[key] = cloneDeep(propValue);\n } else {\n clonedState[key] = propValue;\n }\n }\n return clonedState;\n}\nfunction getClosest(sceneObject, extract) {\n let curSceneObject = sceneObject;\n let extracted = void 0;\n while (curSceneObject && !extracted) {\n extracted = extract(curSceneObject);\n curSceneObject = curSceneObject.parent;\n }\n return extracted;\n}\n\nexport { cloneSceneObject, cloneSceneObjectState, getClosest };\n//# sourceMappingURL=utils.js.map\n","import { DataSourceApi, PluginType } from '@grafana/data';\n\nclass RuntimeDataSource extends DataSourceApi {\n constructor(pluginId, uid) {\n super({\n name: \"RuntimeDataSource-\" + pluginId,\n uid,\n type: pluginId,\n id: 1,\n readOnly: true,\n jsonData: {},\n access: \"direct\",\n meta: {\n id: pluginId,\n name: \"RuntimeDataSource-\" + pluginId,\n type: PluginType.datasource,\n info: {\n author: {\n name: \"\"\n },\n description: \"\",\n links: [],\n logos: {\n large: \"\",\n small: \"\"\n },\n screenshots: [],\n updated: \"\",\n version: \"\"\n },\n module: \"\",\n baseUrl: \"\"\n }\n });\n }\n testDatasource() {\n return Promise.resolve({});\n }\n}\nconst runtimeDataSources = /* @__PURE__ */ new Map();\nfunction registerRuntimeDataSource({ dataSource }) {\n if (runtimeDataSources.has(dataSource.uid)) {\n throw new Error(`A runtime data source with uid ${dataSource.uid} has already been registered`);\n }\n runtimeDataSources.set(dataSource.uid, dataSource);\n}\n\nexport { RuntimeDataSource, registerRuntimeDataSource, runtimeDataSources };\n//# sourceMappingURL=RuntimeDataSource.js.map\n","function lookupVariable(name, sceneObject) {\n const variables = sceneObject.state.$variables;\n if (!variables) {\n if (sceneObject.parent) {\n return lookupVariable(name, sceneObject.parent);\n } else {\n return null;\n }\n }\n const found = variables.getByName(name);\n if (found) {\n return found;\n } else if (sceneObject.parent) {\n return lookupVariable(name, sceneObject.parent);\n }\n return null;\n}\n\nexport { lookupVariable };\n//# sourceMappingURL=lookupVariable.js.map\n","function writeSceneLog(logger, message, ...rest) {\n let loggingEnabled = false;\n if (typeof window !== \"undefined\") {\n loggingEnabled = localStorage.getItem(\"grafana.debug.scenes\") === \"true\";\n }\n if (loggingEnabled) {\n console.log(`${logger}: `, message, ...rest);\n }\n}\n\nexport { writeSceneLog };\n//# sourceMappingURL=writeSceneLog.js.map\n","import { writeSceneLog } from '../utils/writeSceneLog.js';\n\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar _profileInProgress, _profileStartTs, _trailAnimationFrameId, _recordedTrailingSpans;\nconst POST_STORM_WINDOW = 2e3;\nconst SPAN_THRESHOLD = 30;\nclass SceneRenderProfiler {\n constructor(queryController) {\n this.queryController = queryController;\n __privateAdd(this, _profileInProgress, null);\n __privateAdd(this, _profileStartTs, null);\n __privateAdd(this, _trailAnimationFrameId, null);\n // Will keep measured lengths trailing frames\n __privateAdd(this, _recordedTrailingSpans, []);\n this.lastFrameTime = 0;\n this.measureTrailingFrames = (measurementStartTs, lastFrameTime, profileStartTs) => {\n const currentFrameTime = performance.now();\n const frameLength = currentFrameTime - lastFrameTime;\n __privateGet(this, _recordedTrailingSpans).push(frameLength);\n if (currentFrameTime - measurementStartTs < POST_STORM_WINDOW) {\n __privateSet(this, _trailAnimationFrameId, requestAnimationFrame(\n () => this.measureTrailingFrames(measurementStartTs, currentFrameTime, profileStartTs)\n ));\n } else {\n const slowFrames = processRecordedSpans(__privateGet(this, _recordedTrailingSpans));\n const slowFramesTime = slowFrames.reduce((acc, val) => acc + val, 0);\n writeSceneLog(\n this.constructor.name,\n \"Profile tail recorded, slow frames duration:\",\n slowFramesTime,\n slowFrames,\n __privateGet(this, _profileInProgress)\n );\n __privateSet(this, _recordedTrailingSpans, []);\n const profileDuration = measurementStartTs - profileStartTs;\n writeSceneLog(\n this.constructor.name,\n \"Stoped recording, total measured time (network included):\",\n profileDuration + slowFramesTime\n );\n __privateSet(this, _trailAnimationFrameId, null);\n const profileEndTs = profileStartTs + profileDuration + slowFramesTime;\n performance.measure(\"DashboardInteraction\", {\n start: profileStartTs,\n end: profileEndTs\n });\n const networkDuration = captureNetwork(profileStartTs, profileEndTs);\n if (this.queryController.state.onProfileComplete) {\n this.queryController.state.onProfileComplete({\n origin: __privateGet(this, _profileInProgress).origin,\n crumbs: __privateGet(this, _profileInProgress).crumbs,\n duration: profileDuration + slowFramesTime,\n networkDuration,\n // @ts-ignore\n jsHeapSizeLimit: performance.memory ? performance.memory.jsHeapSizeLimit : 0,\n // @ts-ignore\n usedJSHeapSize: performance.memory ? performance.memory.usedJSHeapSize : 0,\n // @ts-ignore\n totalJSHeapSize: performance.memory ? performance.memory.totalJSHeapSize : 0\n });\n }\n if (window.__runs) {\n window.__runs += `${Date.now()}, ${profileDuration + slowFramesTime}\n`;\n } else {\n window.__runs = `${Date.now()}, ${profileDuration + slowFramesTime}\n`;\n }\n }\n };\n }\n startProfile(name) {\n if (__privateGet(this, _trailAnimationFrameId)) {\n cancelAnimationFrame(__privateGet(this, _trailAnimationFrameId));\n __privateSet(this, _trailAnimationFrameId, null);\n writeSceneLog(this.constructor.name, \"New profile: Stopped recording frames\");\n }\n __privateSet(this, _profileInProgress, { origin: name, crumbs: [] });\n __privateSet(this, _profileStartTs, performance.now());\n writeSceneLog(this.constructor.name, \"Profile started:\", __privateGet(this, _profileInProgress), __privateGet(this, _profileStartTs));\n }\n recordProfileTail(measurementStartTime, profileStartTs) {\n __privateSet(this, _trailAnimationFrameId, requestAnimationFrame(\n () => this.measureTrailingFrames(measurementStartTime, measurementStartTime, profileStartTs)\n ));\n }\n tryCompletingProfile() {\n writeSceneLog(this.constructor.name, \"Trying to complete profile\", __privateGet(this, _profileInProgress));\n if (this.queryController.runningQueriesCount() === 0 && __privateGet(this, _profileInProgress)) {\n writeSceneLog(this.constructor.name, \"All queries completed, stopping profile\");\n this.recordProfileTail(performance.now(), __privateGet(this, _profileStartTs));\n }\n }\n isTailRecording() {\n return Boolean(__privateGet(this, _trailAnimationFrameId));\n }\n cancelTailRecording() {\n if (__privateGet(this, _trailAnimationFrameId)) {\n cancelAnimationFrame(__privateGet(this, _trailAnimationFrameId));\n __privateSet(this, _trailAnimationFrameId, null);\n writeSceneLog(this.constructor.name, \"Cancelled recording frames, new profile started\");\n }\n }\n addCrumb(crumb) {\n if (__privateGet(this, _profileInProgress)) {\n __privateGet(this, _profileInProgress).crumbs.push(crumb);\n }\n }\n}\n_profileInProgress = new WeakMap();\n_profileStartTs = new WeakMap();\n_trailAnimationFrameId = new WeakMap();\n_recordedTrailingSpans = new WeakMap();\nfunction processRecordedSpans(spans) {\n for (let i = spans.length - 1; i >= 0; i--) {\n if (spans[i] > SPAN_THRESHOLD) {\n return spans.slice(0, i + 1);\n }\n }\n return [spans[0]];\n}\nfunction captureNetwork(startTs, endTs) {\n const entries = performance.getEntriesByType(\"resource\");\n performance.clearResourceTimings();\n const networkEntries = entries.filter((entry) => entry.startTime >= startTs && entry.startTime <= endTs);\n for (const entry of networkEntries) {\n performance.measure(\"Network entry \" + entry.name, {\n start: entry.startTime,\n end: entry.responseEnd\n });\n }\n return calculateNetworkTime(networkEntries);\n}\nfunction calculateNetworkTime(requests) {\n if (requests.length === 0) {\n return 0;\n }\n requests.sort((a, b) => a.startTime - b.startTime);\n let totalNetworkTime = 0;\n let currentStart = requests[0].startTime;\n let currentEnd = requests[0].responseEnd;\n for (let i = 1; i < requests.length; i++) {\n if (requests[i].startTime <= currentEnd) {\n currentEnd = Math.max(currentEnd, requests[i].responseEnd);\n } else {\n totalNetworkTime += currentEnd - currentStart;\n currentStart = requests[i].startTime;\n currentEnd = requests[i].responseEnd;\n }\n }\n totalNetworkTime += currentEnd - currentStart;\n return totalNetworkTime;\n}\n\nexport { SceneRenderProfiler, calculateNetworkTime, processRecordedSpans };\n//# sourceMappingURL=SceneRenderProfiler.js.map\n","import { isQueryController } from '../../behaviors/SceneQueryController.js';\n\nfunction getQueryController(sceneObject) {\n let parent = sceneObject;\n while (parent) {\n if (parent.state.$behaviors) {\n for (const behavior of parent.state.$behaviors) {\n if (isQueryController(behavior)) {\n return behavior;\n }\n }\n }\n parent = parent.parent;\n }\n return void 0;\n}\n\nexport { getQueryController };\n//# sourceMappingURL=getQueryController.js.map\n","import { SceneObjectBase } from '../core/SceneObjectBase.js';\nimport { writeSceneLog } from '../utils/writeSceneLog.js';\nimport { SceneRenderProfiler } from './SceneRenderProfiler.js';\n\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar _running, _tryCompleteProfileFrameId;\nfunction isQueryController(s) {\n return \"isQueryController\" in s;\n}\nclass SceneQueryController extends SceneObjectBase {\n constructor(state = {}) {\n super({ ...state, isRunning: false });\n this.isQueryController = true;\n this.profiler = new SceneRenderProfiler(this);\n __privateAdd(this, _running, /* @__PURE__ */ new Set());\n __privateAdd(this, _tryCompleteProfileFrameId, null);\n this.runningQueriesCount = () => {\n return __privateGet(this, _running).size;\n };\n this.addActivationHandler(() => {\n return () => __privateGet(this, _running).clear();\n });\n }\n startProfile(name) {\n if (!this.state.enableProfiling) {\n return;\n }\n this.profiler.startProfile(name);\n }\n queryStarted(entry) {\n __privateGet(this, _running).add(entry);\n this.changeRunningQueryCount(1, entry);\n if (!this.state.isRunning) {\n this.setState({ isRunning: true });\n }\n }\n queryCompleted(entry) {\n if (!__privateGet(this, _running).has(entry)) {\n return;\n }\n __privateGet(this, _running).delete(entry);\n this.changeRunningQueryCount(-1);\n if (__privateGet(this, _running).size === 0) {\n this.setState({ isRunning: false });\n }\n }\n changeRunningQueryCount(dir, entry) {\n var _a;\n window.__grafanaRunningQueryCount = ((_a = window.__grafanaRunningQueryCount) != null ? _a : 0) + dir;\n if (dir === 1 && this.state.enableProfiling) {\n if (entry) {\n this.profiler.addCrumb(`${entry.origin.constructor.name}/${entry.type}`);\n }\n if (this.profiler.isTailRecording()) {\n writeSceneLog(this.constructor.name, \"New query started, cancelling tail recording\");\n this.profiler.cancelTailRecording();\n }\n }\n if (this.state.enableProfiling) {\n if (__privateGet(this, _tryCompleteProfileFrameId)) {\n cancelAnimationFrame(__privateGet(this, _tryCompleteProfileFrameId));\n }\n __privateSet(this, _tryCompleteProfileFrameId, requestAnimationFrame(() => {\n this.profiler.tryCompletingProfile();\n }));\n }\n }\n cancelAll() {\n var _a;\n for (const entry of __privateGet(this, _running).values()) {\n (_a = entry.cancel) == null ? void 0 : _a.call(entry);\n }\n }\n}\n_running = new WeakMap();\n_tryCompleteProfileFrameId = new WeakMap();\n\nexport { SceneQueryController, isQueryController };\n//# sourceMappingURL=SceneQueryController.js.map\n","import { TableCellDisplayMode } from '../common/common.gen.mjs';\nexport { AxisColorMode, AxisPlacement, BarAlignment, BarGaugeDisplayMode, BarGaugeNamePlacement, BarGaugeSizing, BarGaugeValueMode, BigValueColorMode, BigValueGraphMode, BigValueJustifyMode, BigValueTextMode, ComparisonOperation, DataTopic, FrameGeometrySourceMode, GraphDrawStyle, GraphGradientMode, GraphThresholdsStyleMode, GraphTransform, HeatmapCalculationMode, HeatmapCellLayout, LegendDisplayMode, LineInterpolation, LogsDedupStrategy, LogsSortOrder, PercentChangeColorMode, ResourceDimensionMode, ScalarDimensionMode, ScaleDimensionMode, ScaleDirection, ScaleDistribution, ScaleOrientation, SortOrder, StackingMode, TableCellBackgroundDisplayMode, TableCellHeight, TextDimensionMode, TooltipDisplayMode, VariableFormatID, VisibilityMode, VizOrientation, defaultLineStyle, defaultOptionsWithTimezones, defaultReduceDataOptions, defaultTableFooterOptions, defaultTimeZone, defaultVizLegendOptions } from '../common/common.gen.mjs';\n\nconst defaultTableFieldOptions = {\n align: \"auto\",\n inspect: false,\n cellOptions: {\n type: TableCellDisplayMode.Auto\n }\n};\nvar LoadingState = /* @__PURE__ */ ((LoadingState2) => {\n LoadingState2[\"NotStarted\"] = \"NotStarted\";\n LoadingState2[\"Loading\"] = \"Loading\";\n LoadingState2[\"Streaming\"] = \"Streaming\";\n LoadingState2[\"Done\"] = \"Done\";\n LoadingState2[\"Error\"] = \"Error\";\n return LoadingState2;\n})(LoadingState || {});\n\nexport { LoadingState, TableCellDisplayMode, defaultTableFieldOptions };\n//# sourceMappingURL=common.types.mjs.map\n","import { getDefaultTimeRange } from '@grafana/data';\nimport { LoadingState } from '@grafana/schema';\nimport { of } from 'rxjs';\nimport { SceneObjectBase } from './SceneObjectBase.js';\n\nclass SceneDataNode extends SceneObjectBase {\n constructor(state) {\n super({\n data: emptyPanelData,\n ...state\n });\n }\n getResultsStream() {\n const result = {\n origin: this,\n data: this.state.data\n };\n return of(result);\n }\n}\nconst emptyPanelData = {\n state: LoadingState.Done,\n series: [],\n timeRange: getDefaultTimeRange()\n};\n\nexport { SceneDataNode, emptyPanelData };\n//# sourceMappingURL=SceneDataNode.js.map\n","class SceneObjectUrlSyncConfig {\n constructor(_sceneObject, _options) {\n this._sceneObject = _sceneObject;\n this._nextChangeShouldAddHistoryStep = false;\n this._keys = _options.keys;\n }\n getKeys() {\n if (typeof this._keys === \"function\") {\n return this._keys();\n }\n return this._keys;\n }\n getUrlState() {\n return this._sceneObject.getUrlState();\n }\n updateFromUrl(values) {\n this._sceneObject.updateFromUrl(values);\n }\n shouldCreateHistoryStep(values) {\n return this._nextChangeShouldAddHistoryStep;\n }\n performBrowserHistoryAction(callback) {\n this._nextChangeShouldAddHistoryStep = true;\n callback();\n this._nextChangeShouldAddHistoryStep = false;\n }\n}\n\nexport { SceneObjectUrlSyncConfig };\n//# sourceMappingURL=SceneObjectUrlSyncConfig.js.map\n","import { toUtc } from '@grafana/data';\n\nconst INTERVAL_STRING_REGEX = /^\\d+[yYmMsSwWhHdD]$/;\nfunction parseUrlParam(value) {\n if (typeof value !== \"string\") {\n return null;\n }\n if (value.indexOf(\"now\") !== -1) {\n return value;\n }\n if (INTERVAL_STRING_REGEX.test(value)) {\n return value;\n }\n if (value.length === 8) {\n const utcValue = toUtc(value, \"YYYYMMDD\");\n if (utcValue.isValid()) {\n return utcValue.toISOString();\n }\n } else if (value.length === 15) {\n const utcValue = toUtc(value, \"YYYYMMDDTHHmmss\");\n if (utcValue.isValid()) {\n return utcValue.toISOString();\n }\n } else if (value.length === 19) {\n const utcValue = toUtc(value, \"YYYY-MM-DD HH:mm:ss\");\n if (utcValue.isValid()) {\n return utcValue.toISOString();\n }\n } else if (value.length === 24) {\n const utcValue = toUtc(value);\n return utcValue.toISOString();\n }\n const epoch = parseInt(value, 10);\n if (!isNaN(epoch)) {\n return toUtc(epoch).toISOString();\n }\n return null;\n}\n\nexport { parseUrlParam };\n//# sourceMappingURL=parseUrlParam.js.map\n","import { setWeekStart, dateMath } from '@grafana/data';\n\nfunction evaluateTimeRange(from, to, timeZone, fiscalYearStartMonth, delay, weekStart) {\n const hasDelay = delay && to === \"now\";\n const now = Date.now();\n if (weekStart) {\n setWeekStartIfDifferent(weekStart);\n }\n const parseOrToDateTime = (val, options) => {\n if (dateMath.toDateTime) {\n return dateMath.toDateTime(val, options);\n } else {\n return dateMath.parse(val, options.roundUp, options.timezone, options.fiscalYearStartMonth);\n }\n };\n return {\n to: parseOrToDateTime(hasDelay ? \"now-\" + delay : to, {\n roundUp: true,\n timezone: timeZone,\n fiscalYearStartMonth,\n now\n }),\n from: parseOrToDateTime(from, {\n roundUp: false,\n timezone: timeZone,\n fiscalYearStartMonth,\n now\n }),\n raw: {\n from,\n to\n }\n };\n}\nlet prevWeekStart;\nfunction setWeekStartIfDifferent(weekStart) {\n if (weekStart !== prevWeekStart) {\n prevWeekStart = weekStart;\n setWeekStart(weekStart);\n }\n}\n\nexport { evaluateTimeRange };\n//# sourceMappingURL=evaluateTimeRange.js.map\n","import { isDateTime, dateMath, dateTimeParse } from '@grafana/data';\n\nfunction isValid(value, roundUp, timeZone) {\n if (isDateTime(value)) {\n return value.isValid();\n }\n if (dateMath.isMathString(value)) {\n return dateMath.isValid(value);\n }\n const parsed = dateTimeParse(value, { roundUp, timeZone });\n return parsed.isValid();\n}\n\nexport { isValid };\n//# sourceMappingURL=date.js.map\n","import { getTimeZone, rangeUtil, setWeekStart, toUtc } from '@grafana/data';\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig.js';\nimport { SceneObjectBase } from './SceneObjectBase.js';\nimport { getClosest } from './sceneGraph/utils.js';\nimport { parseUrlParam } from '../utils/parseUrlParam.js';\nimport { evaluateTimeRange } from '../utils/evaluateTimeRange.js';\nimport { RefreshEvent, config, locationService } from '@grafana/runtime';\nimport { isValid } from '../utils/date.js';\nimport { getQueryController } from './sceneGraph/getQueryController.js';\n\nclass SceneTimeRange extends SceneObjectBase {\n constructor(state = {}) {\n var _a;\n const from = state.from && isValid(state.from) ? state.from : \"now-6h\";\n const to = state.to && isValid(state.to) ? state.to : \"now\";\n const timeZone = state.timeZone;\n const value = evaluateTimeRange(\n from,\n to,\n timeZone || getTimeZone(),\n state.fiscalYearStartMonth,\n state.UNSAFE_nowDelay,\n state.weekStart\n );\n const refreshOnActivate = (_a = state.refreshOnActivate) != null ? _a : { percent: 10 };\n super({ from, to, timeZone, value, refreshOnActivate, ...state });\n this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: [\"from\", \"to\", \"timezone\", \"time\", \"time.window\"] });\n this.onTimeRangeChange = (timeRange) => {\n const update = {};\n if (typeof timeRange.raw.from === \"string\") {\n update.from = timeRange.raw.from;\n } else {\n update.from = timeRange.raw.from.toISOString();\n }\n if (typeof timeRange.raw.to === \"string\") {\n update.to = timeRange.raw.to;\n } else {\n update.to = timeRange.raw.to.toISOString();\n }\n update.value = evaluateTimeRange(\n update.from,\n update.to,\n this.getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n if (update.from !== this.state.from || update.to !== this.state.to) {\n const queryController = getQueryController(this);\n queryController == null ? void 0 : queryController.startProfile(\"SceneTimeRange\");\n this._urlSync.performBrowserHistoryAction(() => {\n this.setState(update);\n });\n }\n };\n this.onTimeZoneChange = (timeZone) => {\n this._urlSync.performBrowserHistoryAction(() => {\n this.setState({ timeZone });\n });\n };\n this.onRefresh = () => {\n this.refreshRange(0);\n this.publishEvent(new RefreshEvent(), true);\n };\n this.addActivationHandler(this._onActivate.bind(this));\n }\n _onActivate() {\n if (!this.state.timeZone) {\n const timeZoneSource = this.getTimeZoneSource();\n if (timeZoneSource !== this) {\n this._subs.add(\n timeZoneSource.subscribeToState((n, p) => {\n if (n.timeZone !== void 0 && n.timeZone !== p.timeZone) {\n this.refreshRange(0);\n }\n })\n );\n }\n }\n if (rangeUtil.isRelativeTimeRange(this.state.value.raw)) {\n this.refreshIfStale();\n }\n return () => {\n if (this.state.weekStart) {\n setWeekStart(config.bootData.user.weekStart);\n }\n };\n }\n refreshIfStale() {\n var _a, _b, _c, _d;\n let ms;\n if (((_b = (_a = this.state) == null ? void 0 : _a.refreshOnActivate) == null ? void 0 : _b.percent) !== void 0) {\n ms = this.calculatePercentOfInterval(this.state.refreshOnActivate.percent);\n }\n if (((_d = (_c = this.state) == null ? void 0 : _c.refreshOnActivate) == null ? void 0 : _d.afterMs) !== void 0) {\n ms = Math.min(this.state.refreshOnActivate.afterMs, ms != null ? ms : Infinity);\n }\n if (ms !== void 0) {\n this.refreshRange(ms);\n }\n }\n /**\n * Will traverse up the scene graph to find the closest SceneTimeRangeLike with time zone set\n */\n getTimeZoneSource() {\n if (!this.parent || !this.parent.parent) {\n return this;\n }\n const source = getClosest(this.parent.parent, (o) => {\n if (o.state.$timeRange && o.state.$timeRange.state.timeZone) {\n return o.state.$timeRange;\n }\n return void 0;\n });\n if (!source) {\n return this;\n }\n return source;\n }\n /**\n * Refreshes time range if it is older than the invalidation interval\n * @param refreshAfterMs invalidation interval (milliseconds)\n * @private\n */\n refreshRange(refreshAfterMs) {\n var _a;\n const value = evaluateTimeRange(\n this.state.from,\n this.state.to,\n (_a = this.state.timeZone) != null ? _a : getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n const diff = value.to.diff(this.state.value.to, \"milliseconds\");\n if (diff >= refreshAfterMs) {\n this.setState({ value });\n }\n }\n calculatePercentOfInterval(percent) {\n const intervalMs = this.state.value.to.diff(this.state.value.from, \"milliseconds\");\n return Math.ceil(intervalMs / percent);\n }\n getTimeZone() {\n if (this.state.timeZone) {\n return this.state.timeZone;\n }\n const timeZoneSource = this.getTimeZoneSource();\n if (timeZoneSource !== this) {\n return timeZoneSource.state.timeZone;\n }\n return getTimeZone();\n }\n getUrlState() {\n const params = locationService.getSearchObject();\n const urlValues = { from: this.state.from, to: this.state.to, timezone: this.getTimeZone() };\n if (params.time && params[\"time.window\"]) {\n urlValues.time = null;\n urlValues[\"time.window\"] = null;\n }\n return urlValues;\n }\n updateFromUrl(values) {\n var _a, _b, _c;\n const update = {};\n let from = parseUrlParam(values.from);\n let to = parseUrlParam(values.to);\n if (values.time && values[\"time.window\"]) {\n const time = Array.isArray(values.time) ? values.time[0] : values.time;\n const timeWindow = Array.isArray(values[\"time.window\"]) ? values[\"time.window\"][0] : values[\"time.window\"];\n const timeRange = getTimeWindow(time, timeWindow);\n if (timeRange.from && isValid(timeRange.from)) {\n from = timeRange.from;\n }\n if (timeRange.to && isValid(timeRange.to)) {\n to = timeRange.to;\n }\n }\n if (from && isValid(from)) {\n update.from = from;\n }\n if (to && isValid(to)) {\n update.to = to;\n }\n if (typeof values.timezone === \"string\") {\n update.timeZone = values.timezone !== \"\" ? values.timezone : void 0;\n }\n if (Object.keys(update).length === 0) {\n return;\n }\n update.value = evaluateTimeRange(\n (_a = update.from) != null ? _a : this.state.from,\n (_b = update.to) != null ? _b : this.state.to,\n (_c = update.timeZone) != null ? _c : this.getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n return this.setState(update);\n }\n}\nfunction getTimeWindow(time, timeWindow) {\n const valueTime = isNaN(Date.parse(time)) ? parseInt(time, 10) : Date.parse(time);\n let timeWindowMs;\n if (timeWindow.match(/^\\d+$/) && parseInt(timeWindow, 10)) {\n timeWindowMs = parseInt(timeWindow, 10);\n } else {\n timeWindowMs = rangeUtil.intervalToMs(timeWindow);\n }\n return {\n from: toUtc(valueTime - timeWindowMs / 2).toISOString(),\n to: toUtc(valueTime + timeWindowMs / 2).toISOString()\n };\n}\n\nexport { SceneTimeRange };\n//# sourceMappingURL=SceneTimeRange.js.map\n","import { SceneDataNode } from '../../core/SceneDataNode.js';\nimport { SceneObjectBase } from '../../core/SceneObjectBase.js';\nimport { SceneTimeRange } from '../../core/SceneTimeRange.js';\n\nconst EmptyDataNode = new SceneDataNode();\nconst DefaultTimeRange = new SceneTimeRange();\nclass EmptyVariableSetImpl extends SceneObjectBase {\n constructor() {\n super({ variables: [] });\n }\n getByName(name) {\n return void 0;\n }\n isVariableLoadingOrWaitingToUpdate(variable) {\n return false;\n }\n}\nconst EmptyVariableSet = new EmptyVariableSetImpl();\n\nexport { DefaultTimeRange, EmptyDataNode, EmptyVariableSet, EmptyVariableSetImpl };\n//# sourceMappingURL=defaults.js.map\n","import { DefaultTimeRange } from '../../variables/interpolation/defaults.js';\nimport { getClosest } from './utils.js';\n\nfunction getTimeRange(sceneObject) {\n var _a;\n return (_a = getClosest(sceneObject, (s) => s.state.$timeRange)) != null ? _a : DefaultTimeRange;\n}\n\nexport { getTimeRange };\n//# sourceMappingURL=getTimeRange.js.map\n","import { BusEventWithPayload } from '@grafana/data';\n\nclass SceneVariableValueChangedEvent extends BusEventWithPayload {\n}\nSceneVariableValueChangedEvent.type = \"scene-variable-changed-value\";\nfunction isCustomVariableValue(value) {\n return typeof value === \"object\" && \"formatter\" in value;\n}\n\nexport { SceneVariableValueChangedEvent, isCustomVariableValue };\n//# sourceMappingURL=types.js.map\n","import { property } from 'lodash';\n\nlet fieldAccessorCache = {};\nfunction getFieldAccessor(fieldPath) {\n const accessor = fieldAccessorCache[fieldPath];\n if (accessor) {\n return accessor;\n }\n return fieldAccessorCache[fieldPath] = property(fieldPath);\n}\n\nexport { getFieldAccessor };\n//# sourceMappingURL=fieldAccessorCache.js.map\n","import { getFieldAccessor } from './fieldAccessorCache.js';\n\nclass ScopedVarsVariable {\n constructor(name, value) {\n this.state = { name, value, type: \"scopedvar\" };\n }\n getValue(fieldPath) {\n let { value } = this.state;\n let realValue = value.value;\n if (fieldPath) {\n realValue = getFieldAccessor(fieldPath)(value.value);\n } else {\n realValue = value.value;\n }\n if (realValue === \"string\" || realValue === \"number\" || realValue === \"boolean\") {\n return realValue;\n }\n return String(realValue);\n }\n getValueText() {\n const { value } = this.state;\n if (value.text != null) {\n return String(value.text);\n }\n return String(value);\n }\n}\nlet scopedVarsVariable;\nfunction getSceneVariableForScopedVar(name, value) {\n if (!scopedVarsVariable) {\n scopedVarsVariable = new ScopedVarsVariable(name, value);\n } else {\n scopedVarsVariable.state.name = name;\n scopedVarsVariable.state.value = value;\n }\n return scopedVarsVariable;\n}\n\nexport { ScopedVarsVariable, getSceneVariableForScopedVar };\n//# sourceMappingURL=ScopedVarsVariable.js.map\n","import { map, isArray, replace } from 'lodash';\nimport { Registry, escapeRegex, textUtil, dateTime, urlUtil } from '@grafana/data';\nimport { VariableFormatID } from '@grafana/schema';\n\nconst formatRegistry = new Registry(() => {\n const formats = [\n {\n id: VariableFormatID.Lucene,\n name: \"Lucene\",\n description: \"Values are lucene escaped and multi-valued variables generate an OR expression\",\n formatter: (value) => {\n if (typeof value === \"string\") {\n return luceneEscape(value);\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return \"__empty__\";\n }\n const quotedValues = map(value, (val) => {\n return '\"' + luceneEscape(val) + '\"';\n });\n return \"(\" + quotedValues.join(\" OR \") + \")\";\n } else {\n return luceneEscape(`${value}`);\n }\n }\n },\n {\n id: VariableFormatID.Raw,\n name: \"raw\",\n description: \"Keep value as is\",\n formatter: (value) => String(value)\n },\n {\n id: VariableFormatID.Regex,\n name: \"Regex\",\n description: \"Values are regex escaped and multi-valued variables generate a (|) expression\",\n formatter: (value) => {\n if (typeof value === \"string\") {\n return escapeRegex(value);\n }\n if (Array.isArray(value)) {\n const escapedValues = value.map((item) => {\n if (typeof item === \"string\") {\n return escapeRegex(item);\n } else {\n return escapeRegex(String(item));\n }\n });\n if (escapedValues.length === 1) {\n return escapedValues[0];\n }\n return \"(\" + escapedValues.join(\"|\") + \")\";\n }\n return escapeRegex(`${value}`);\n }\n },\n {\n id: VariableFormatID.Pipe,\n name: \"Pipe\",\n description: \"Values are separated by | character\",\n formatter: (value) => {\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value.join(\"|\");\n }\n return `${value}`;\n }\n },\n {\n id: VariableFormatID.Distributed,\n name: \"Distributed\",\n description: \"Multiple values are formatted like variable=value\",\n formatter: (value, args, variable) => {\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value)) {\n value = map(value, (val, index) => {\n if (index !== 0) {\n return variable.state.name + \"=\" + val;\n } else {\n return val;\n }\n });\n return value.join(\",\");\n }\n return `${value}`;\n }\n },\n {\n id: VariableFormatID.CSV,\n name: \"Csv\",\n description: \"Comma-separated values\",\n formatter: (value) => {\n if (typeof value === \"string\") {\n return value;\n }\n if (isArray(value)) {\n return value.join(\",\");\n }\n return String(value);\n }\n },\n {\n id: VariableFormatID.HTML,\n name: \"HTML\",\n description: \"HTML escaping of values\",\n formatter: (value) => {\n if (typeof value === \"string\") {\n return textUtil.escapeHtml(value);\n }\n if (isArray(value)) {\n return textUtil.escapeHtml(value.join(\", \"));\n }\n return textUtil.escapeHtml(String(value));\n }\n },\n {\n id: VariableFormatID.JSON,\n name: \"JSON\",\n description: \"JSON stringify value\",\n formatter: (value) => {\n if (typeof value === \"string\") {\n return value;\n }\n return JSON.stringify(value);\n }\n },\n {\n id: VariableFormatID.PercentEncode,\n name: \"Percent encode\",\n description: \"Useful for URL escaping values\",\n formatter: (value) => {\n if (isArray(value)) {\n return encodeURIComponentStrict(\"{\" + value.join(\",\") + \"}\");\n }\n return encodeURIComponentStrict(value);\n }\n },\n {\n id: VariableFormatID.SingleQuote,\n name: \"Single quote\",\n description: \"Single quoted values\",\n formatter: (value) => {\n const regExp = new RegExp(`'`, \"g\");\n if (isArray(value)) {\n return map(value, (v) => `'${replace(v, regExp, `\\\\'`)}'`).join(\",\");\n }\n let strVal = typeof value === \"string\" ? value : String(value);\n return `'${replace(strVal, regExp, `\\\\'`)}'`;\n }\n },\n {\n id: VariableFormatID.DoubleQuote,\n name: \"Double quote\",\n description: \"Double quoted values\",\n formatter: (value) => {\n const regExp = new RegExp('\"', \"g\");\n if (isArray(value)) {\n return map(value, (v) => `\"${replace(v, regExp, '\\\\\"')}\"`).join(\",\");\n }\n let strVal = typeof value === \"string\" ? value : String(value);\n return `\"${replace(strVal, regExp, '\\\\\"')}\"`;\n }\n },\n {\n id: VariableFormatID.SQLString,\n name: \"SQL string\",\n description: \"SQL string quoting and commas for use in IN statements and other scenarios\",\n formatter: sqlStringFormatter\n },\n {\n id: VariableFormatID.Date,\n name: \"Date\",\n description: \"Format date in different ways\",\n formatter: (value, args) => {\n var _a;\n let nrValue = NaN;\n if (typeof value === \"number\") {\n nrValue = value;\n } else if (typeof value === \"string\") {\n nrValue = parseInt(value, 10);\n }\n if (isNaN(nrValue)) {\n return \"NaN\";\n }\n const arg = (_a = args[0]) != null ? _a : \"iso\";\n switch (arg) {\n case \"ms\":\n return String(value);\n case \"seconds\":\n return `${Math.round(nrValue / 1e3)}`;\n case \"iso\":\n return dateTime(nrValue).toISOString();\n default:\n if ((args || []).length > 1) {\n return dateTime(nrValue).format(args.join(\":\"));\n }\n return dateTime(nrValue).format(arg);\n }\n }\n },\n {\n id: VariableFormatID.Glob,\n name: \"Glob\",\n description: \"Format multi-valued variables using glob syntax, example {value1,value2}\",\n formatter: (value) => {\n if (isArray(value) && value.length > 1) {\n return \"{\" + value.join(\",\") + \"}\";\n }\n return String(value);\n }\n },\n {\n id: VariableFormatID.Text,\n name: \"Text\",\n description: \"Format variables in their text representation. Example in multi-variable scenario A + B + C.\",\n formatter: (value, _args, variable) => {\n if (variable.getValueText) {\n return variable.getValueText();\n }\n return String(value);\n }\n },\n {\n id: VariableFormatID.QueryParam,\n name: \"Query parameter\",\n description: \"Format variables as URL parameters. Example in multi-variable scenario A + B + C => var-foo=A&var-foo=B&var-foo=C.\",\n formatter: (value, _args, variable) => {\n if (variable.urlSync) {\n const urlParam = variable.urlSync.getUrlState();\n return urlUtil.toUrlParams(urlParam);\n }\n if (Array.isArray(value)) {\n return value.map((v) => formatQueryParameter(variable.state.name, v)).join(\"&\");\n }\n return formatQueryParameter(variable.state.name, value);\n }\n },\n {\n id: VariableFormatID.UriEncode,\n name: \"Percent encode as URI\",\n description: \"Useful for URL escaping values, taking into URI syntax characters\",\n formatter: (value) => {\n if (isArray(value)) {\n return encodeURIStrict(\"{\" + value.join(\",\") + \"}\");\n }\n return encodeURIStrict(value);\n }\n }\n ];\n return formats;\n});\nfunction luceneEscape(value) {\n if (isNaN(+value) === false) {\n return value;\n }\n return value.replace(/([\\!\\*\\+\\-\\=<>\\s\\&\\|\\(\\)\\[\\]\\{\\}\\^\\~\\?\\:\\\\/\"])/g, \"\\\\$1\");\n}\nfunction encodeURIComponentStrict(str) {\n if (typeof str === \"object\") {\n str = String(str);\n }\n return replaceSpecialCharactersToASCII(encodeURIComponent(str));\n}\nconst encodeURIStrict = (str) => replaceSpecialCharactersToASCII(encodeURI(String(str)));\nconst replaceSpecialCharactersToASCII = (value) => value.replace(/[!'()*]/g, (c) => {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n});\nfunction formatQueryParameter(name, value) {\n return `var-${name}=${encodeURIComponentStrict(value)}`;\n}\nconst SQL_ESCAPE_MAP = {\n \"'\": \"''\",\n '\"': '\\\\\"'\n};\nfunction sqlStringFormatter(value) {\n const regExp = new RegExp(`'|\"`, \"g\");\n if (isArray(value)) {\n return map(value, (v) => `'${replace(v, regExp, (match) => {\n var _a;\n return (_a = SQL_ESCAPE_MAP[match]) != null ? _a : \"\";\n })}'`).join(\",\");\n }\n let strVal = typeof value === \"string\" ? value : String(value);\n return `'${replace(strVal, regExp, (match) => {\n var _a;\n return (_a = SQL_ESCAPE_MAP[match]) != null ? _a : \"\";\n })}'`;\n}\n\nexport { formatRegistry };\n//# sourceMappingURL=formatRegistry.js.map\n","const ALL_VARIABLE_TEXT = \"All\";\nconst ALL_VARIABLE_VALUE = \"$__all\";\nconst AUTO_VARIABLE_TEXT = \"Auto\";\nconst AUTO_VARIABLE_VALUE = \"$__auto\";\nconst VARIABLE_REGEX = /\\$(\\w+)|\\[\\[(\\w+?)(?::(\\w+))?\\]\\]|\\${(\\w+)(?:\\.([^:^\\}]+))?(?::([^\\}]+))?}/g;\nconst SEARCH_FILTER_VARIABLE = \"__searchFilter\";\n\nexport { ALL_VARIABLE_TEXT, ALL_VARIABLE_VALUE, AUTO_VARIABLE_TEXT, AUTO_VARIABLE_VALUE, SEARCH_FILTER_VARIABLE, VARIABLE_REGEX };\n//# sourceMappingURL=constants.js.map\n","class SkipFormattingValue {\n constructor(_value) {\n this._value = _value;\n }\n formatter() {\n return this._value;\n }\n}\n\nexport { SkipFormattingValue };\n//# sourceMappingURL=types.js.map\n","import { urlUtil, dateTimeFormat } from '@grafana/data';\nimport { getTimeRange } from '../../core/sceneGraph/getTimeRange.js';\nimport { getData } from '../../core/sceneGraph/sceneGraph.js';\nimport { SkipFormattingValue } from './types.js';\n\nclass UrlTimeRangeMacro {\n constructor(name, sceneObject) {\n this.state = { name, type: \"url_variable\" };\n this._sceneObject = sceneObject;\n }\n getValue() {\n var _a;\n const timeRange = getTimeRange(this._sceneObject);\n const urlState = (_a = timeRange.urlSync) == null ? void 0 : _a.getUrlState();\n if ((urlState == null ? void 0 : urlState.timezone) === \"browser\") {\n urlState.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n return new SkipFormattingValue(urlUtil.toUrlParams(urlState));\n }\n getValueText() {\n return \"\";\n }\n}\nclass TimeFromAndToMacro {\n constructor(name, sceneObject) {\n this.state = { name, type: \"time_macro\" };\n this._sceneObject = sceneObject;\n }\n getValue() {\n const timeRange = getTimeRange(this._sceneObject);\n if (this.state.name === \"__from\") {\n return timeRange.state.value.from.valueOf();\n } else {\n return timeRange.state.value.to.valueOf();\n }\n }\n getValueText() {\n const timeRange = getTimeRange(this._sceneObject);\n if (this.state.name === \"__from\") {\n return dateTimeFormat(timeRange.state.value.from, { timeZone: timeRange.getTimeZone() });\n } else {\n return dateTimeFormat(timeRange.state.value.to, { timeZone: timeRange.getTimeZone() });\n }\n }\n}\nclass TimezoneMacro {\n constructor(name, sceneObject) {\n this.state = { name, type: \"time_macro\" };\n this._sceneObject = sceneObject;\n }\n getValue() {\n const timeRange = getTimeRange(this._sceneObject);\n const timeZone = timeRange.getTimeZone();\n if (timeZone === \"browser\") {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n return timeZone;\n }\n getValueText() {\n return this.getValue();\n }\n}\nclass IntervalMacro {\n constructor(name, sceneObject, match) {\n this.state = { name, type: \"time_macro\", match };\n this._sceneObject = sceneObject;\n }\n getValue() {\n var _a;\n const data = getData(this._sceneObject);\n if (data) {\n const request = (_a = data.state.data) == null ? void 0 : _a.request;\n if (!request) {\n return this.state.match;\n }\n if (this.state.name === \"__interval_ms\") {\n return request.intervalMs;\n }\n return request.interval;\n }\n return this.state.match;\n }\n}\n\nexport { IntervalMacro, TimeFromAndToMacro, TimezoneMacro, UrlTimeRangeMacro };\n//# sourceMappingURL=timeMacros.js.map\n","import { useLocationService, locationService } from '@grafana/runtime';\n\nfunction setBaseClassState(sceneObject, newState) {\n sceneObject.setState(newState);\n}\nfunction useLocationServiceSafe() {\n return useLocationService ? useLocationService() : locationService;\n}\n\nexport { setBaseClassState, useLocationServiceSafe };\n//# sourceMappingURL=utils.js.map\n","import { isEqual, isArray } from 'lodash';\nimport { map } from 'rxjs';\nimport { ALL_VARIABLE_VALUE, ALL_VARIABLE_TEXT } from '../constants.js';\nimport { SceneObjectBase } from '../../core/SceneObjectBase.js';\nimport { SceneVariableValueChangedEvent } from '../types.js';\nimport { formatRegistry } from '../interpolation/formatRegistry.js';\nimport { VariableFormatID } from '@grafana/schema';\nimport { setBaseClassState } from '../../utils/utils.js';\n\nclass MultiValueVariable extends SceneObjectBase {\n constructor() {\n super(...arguments);\n this._urlSync = new MultiValueUrlSyncHandler(this);\n }\n /**\n * This function is called on when SceneVariableSet is activated or when a dependency changes.\n */\n validateAndUpdate() {\n return this.getValueOptions({}).pipe(\n map((options) => {\n this.updateValueGivenNewOptions(options);\n return {};\n })\n );\n }\n onCancel() {\n this.setStateHelper({ loading: false });\n const sceneVarSet = this.parent;\n sceneVarSet == null ? void 0 : sceneVarSet.cancel(this);\n }\n /**\n * Check if current value is valid given new options. If not update the value.\n */\n updateValueGivenNewOptions(options) {\n const { value: currentValue, text: currentText, options: oldOptions } = this.state;\n const stateUpdate = this.getStateUpdateGivenNewOptions(options, currentValue, currentText);\n this.interceptStateUpdateAfterValidation(stateUpdate);\n this.setStateHelper(stateUpdate);\n if (stateUpdate.value !== currentValue || stateUpdate.text !== currentText || this.hasAllValue() && !isEqual(options, oldOptions)) {\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n }\n }\n getStateUpdateGivenNewOptions(options, currentValue, currentText) {\n const stateUpdate = {\n options,\n loading: false,\n value: currentValue,\n text: currentText\n };\n if (options.length === 0) {\n if (this.state.defaultToAll || this.state.includeAll) {\n stateUpdate.value = ALL_VARIABLE_VALUE;\n stateUpdate.text = ALL_VARIABLE_TEXT;\n } else if (this.state.isMulti) {\n stateUpdate.value = [];\n stateUpdate.text = [];\n } else {\n stateUpdate.value = \"\";\n stateUpdate.text = \"\";\n }\n return stateUpdate;\n }\n if (this.hasAllValue()) {\n if (this.state.includeAll) {\n stateUpdate.text = ALL_VARIABLE_TEXT;\n } else {\n stateUpdate.value = options[0].value;\n stateUpdate.text = options[0].label;\n if (this.state.isMulti) {\n stateUpdate.value = [stateUpdate.value];\n stateUpdate.text = [stateUpdate.text];\n }\n }\n return stateUpdate;\n }\n if (this.state.isMulti) {\n const currentValues = Array.isArray(currentValue) ? currentValue : [currentValue];\n const validValues = currentValues.filter((v) => options.find((o) => o.value === v));\n const validTexts = validValues.map((v) => options.find((o) => o.value === v).label);\n if (validValues.length === 0) {\n const defaultState = this.getDefaultMultiState(options);\n stateUpdate.value = defaultState.value;\n stateUpdate.text = defaultState.text;\n } else {\n if (!isEqual(validValues, currentValue)) {\n stateUpdate.value = validValues;\n }\n if (!isEqual(validTexts, currentText)) {\n stateUpdate.text = validTexts;\n }\n }\n return stateUpdate;\n }\n let matchingOption = findOptionMatchingCurrent(currentValue, currentText, options);\n if (matchingOption) {\n stateUpdate.text = matchingOption.label;\n stateUpdate.value = matchingOption.value;\n } else {\n const defaultState = this.getDefaultSingleState(options);\n stateUpdate.value = defaultState.value;\n stateUpdate.text = defaultState.text;\n }\n return stateUpdate;\n }\n /**\n * Values set by initial URL sync needs to survive the next validation and update.\n * This function can intercept and make sure those values are preserved.\n */\n interceptStateUpdateAfterValidation(stateUpdate) {\n const isAllValueFix = stateUpdate.value === ALL_VARIABLE_VALUE && this.state.text === ALL_VARIABLE_TEXT;\n if (this.skipNextValidation && stateUpdate.value !== this.state.value && stateUpdate.text !== this.state.text && !isAllValueFix) {\n stateUpdate.value = this.state.value;\n stateUpdate.text = this.state.text;\n }\n this.skipNextValidation = false;\n }\n getValue() {\n if (this.hasAllValue()) {\n if (this.state.allValue) {\n return new CustomAllValue(this.state.allValue, this);\n }\n return this.state.options.map((x) => x.value);\n }\n return this.state.value;\n }\n getValueText() {\n if (this.hasAllValue()) {\n return ALL_VARIABLE_TEXT;\n }\n if (Array.isArray(this.state.text)) {\n return this.state.text.join(\" + \");\n }\n return String(this.state.text);\n }\n hasAllValue() {\n const value = this.state.value;\n return value === ALL_VARIABLE_VALUE || Array.isArray(value) && value[0] === ALL_VARIABLE_VALUE;\n }\n getDefaultMultiState(options) {\n if (this.state.defaultToAll) {\n return { value: [ALL_VARIABLE_VALUE], text: [ALL_VARIABLE_TEXT] };\n } else if (options.length > 0) {\n return { value: [options[0].value], text: [options[0].label] };\n } else {\n return { value: [], text: [] };\n }\n }\n getDefaultSingleState(options) {\n if (this.state.defaultToAll) {\n return { value: ALL_VARIABLE_VALUE, text: ALL_VARIABLE_TEXT };\n } else if (options.length > 0) {\n return { value: options[0].value, text: options[0].label };\n } else {\n return { value: \"\", text: \"\" };\n }\n }\n /**\n * Change the value and publish SceneVariableValueChangedEvent event.\n */\n changeValueTo(value, text, isUserAction = false) {\n var _a, _b;\n if (value === this.state.value && text === this.state.text) {\n return;\n }\n if (!text) {\n if (Array.isArray(value)) {\n text = value.map((v) => this.findLabelTextForValue(v));\n } else {\n text = this.findLabelTextForValue(value);\n }\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n const state = this.getDefaultMultiState(this.state.options);\n value = state.value;\n text = state.text;\n }\n if (value[value.length - 1] === ALL_VARIABLE_VALUE) {\n value = [ALL_VARIABLE_VALUE];\n text = [ALL_VARIABLE_TEXT];\n } else if (value[0] === ALL_VARIABLE_VALUE && value.length > 1) {\n value.shift();\n if (Array.isArray(text)) {\n text.shift();\n }\n }\n }\n if (isEqual(value, this.state.value) && isEqual(text, this.state.text)) {\n return;\n }\n const stateChangeAction = () => this.setStateHelper({ value, text, loading: false });\n if (isUserAction) {\n (_b = (_a = this._urlSync).performBrowserHistoryAction) == null ? void 0 : _b.call(_a, stateChangeAction);\n } else {\n stateChangeAction();\n }\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n }\n findLabelTextForValue(value) {\n if (value === ALL_VARIABLE_VALUE) {\n return ALL_VARIABLE_TEXT;\n }\n const option = this.state.options.find((x) => x.value === value);\n if (option) {\n return option.label;\n }\n const optionByLabel = this.state.options.find((x) => x.label === value);\n if (optionByLabel) {\n return optionByLabel.label;\n }\n return value;\n }\n /**\n * This helper function is to counter the contravariance of setState\n */\n setStateHelper(state) {\n setBaseClassState(this, state);\n }\n getOptionsForSelect(includeCurrentValue = true) {\n let options = this.state.options;\n if (this.state.includeAll) {\n options = [{ value: ALL_VARIABLE_VALUE, label: ALL_VARIABLE_TEXT }, ...options];\n }\n if (includeCurrentValue && !Array.isArray(this.state.value)) {\n const current = options.find((x) => x.value === this.state.value);\n if (!current) {\n options = [{ value: this.state.value, label: String(this.state.text) }, ...options];\n }\n }\n return options;\n }\n refreshOptions() {\n this.getValueOptions({}).subscribe((options) => {\n this.updateValueGivenNewOptions(options);\n });\n }\n}\nfunction findOptionMatchingCurrent(currentValue, currentText, options) {\n let textMatch;\n for (const item of options) {\n if (item.value === currentValue) {\n return item;\n }\n if (item.label === currentText) {\n textMatch = item;\n }\n }\n return textMatch;\n}\nclass MultiValueUrlSyncHandler {\n constructor(_sceneObject) {\n this._sceneObject = _sceneObject;\n this._nextChangeShouldAddHistoryStep = false;\n }\n getKey() {\n return `var-${this._sceneObject.state.name}`;\n }\n getKeys() {\n if (this._sceneObject.state.skipUrlSync) {\n return [];\n }\n return [this.getKey()];\n }\n getUrlState() {\n if (this._sceneObject.state.skipUrlSync) {\n return {};\n }\n let urlValue = null;\n let value = this._sceneObject.state.value;\n if (Array.isArray(value)) {\n urlValue = value.map(String);\n } else if (this._sceneObject.state.isMulti) {\n urlValue = [String(value)];\n } else {\n urlValue = String(value);\n }\n return { [this.getKey()]: urlValue };\n }\n updateFromUrl(values) {\n let urlValue = values[this.getKey()];\n if (urlValue != null) {\n if (this._sceneObject.state.includeAll) {\n urlValue = handleLegacyUrlAllValue(urlValue);\n }\n if (this._sceneObject.state.allValue && this._sceneObject.state.allValue === urlValue) {\n urlValue = ALL_VARIABLE_VALUE;\n }\n if (!this._sceneObject.isActive) {\n this._sceneObject.skipNextValidation = true;\n }\n this._sceneObject.changeValueTo(urlValue);\n }\n }\n performBrowserHistoryAction(callback) {\n this._nextChangeShouldAddHistoryStep = true;\n callback();\n this._nextChangeShouldAddHistoryStep = false;\n }\n shouldCreateHistoryStep(values) {\n return this._nextChangeShouldAddHistoryStep;\n }\n}\nfunction handleLegacyUrlAllValue(value) {\n if (isArray(value) && value[0] === ALL_VARIABLE_TEXT) {\n return [ALL_VARIABLE_VALUE];\n } else if (value === ALL_VARIABLE_TEXT) {\n return ALL_VARIABLE_VALUE;\n }\n return value;\n}\nclass CustomAllValue {\n constructor(_value, _variable) {\n this._value = _value;\n this._variable = _variable;\n }\n formatter(formatNameOrFn) {\n if (formatNameOrFn === VariableFormatID.Text) {\n return ALL_VARIABLE_TEXT;\n }\n if (formatNameOrFn === VariableFormatID.PercentEncode) {\n return formatRegistry.get(VariableFormatID.PercentEncode).formatter(this._value, [], this._variable);\n }\n if (formatNameOrFn === VariableFormatID.QueryParam) {\n return formatRegistry.get(VariableFormatID.QueryParam).formatter(ALL_VARIABLE_TEXT, [], this._variable);\n }\n return this._value;\n }\n}\n\nexport { CustomAllValue, MultiValueUrlSyncHandler, MultiValueVariable };\n//# sourceMappingURL=MultiValueVariable.js.map\n","import { isCustomVariableValue } from '../types.js';\nimport { formatRegistry } from '../interpolation/formatRegistry.js';\nimport { SkipFormattingValue } from './types.js';\nimport { VariableFormatID } from '@grafana/schema';\nimport { MultiValueVariable } from '../variants/MultiValueVariable.js';\nimport { ALL_VARIABLE_VALUE } from '../constants.js';\n\nclass AllVariablesMacro {\n constructor(name, sceneObject) {\n this.state = { name, type: \"url_variable\" };\n this._sceneObject = sceneObject;\n }\n getValue() {\n const allVars = collectAllVariables(this._sceneObject);\n const format = formatRegistry.get(VariableFormatID.QueryParam);\n const params = [];\n for (const name of Object.keys(allVars)) {\n const variable = allVars[name];\n if (variable instanceof MultiValueVariable && variable.hasAllValue() && !variable.state.allValue) {\n params.push(format.formatter(ALL_VARIABLE_VALUE, [], variable));\n continue;\n }\n const value = variable.getValue();\n if (!value) {\n continue;\n }\n if (isCustomVariableValue(value)) {\n params.push(value.formatter(VariableFormatID.QueryParam));\n } else {\n params.push(format.formatter(value, [], variable));\n }\n }\n return new SkipFormattingValue(params.join(\"&\"));\n }\n getValueText() {\n return \"\";\n }\n}\nfunction collectAllVariables(sceneObject, record = {}) {\n if (sceneObject.state.$variables) {\n for (const variable of sceneObject.state.$variables.state.variables) {\n if (variable.state.skipUrlSync) {\n continue;\n }\n if (!record[variable.state.name]) {\n record[variable.state.name] = variable;\n }\n }\n }\n if (sceneObject.parent) {\n collectAllVariables(sceneObject.parent, record);\n }\n return record;\n}\n\nexport { AllVariablesMacro };\n//# sourceMappingURL=AllVariablesMacro.js.map\n","import { getDisplayProcessor, formattedValueToString, FieldType, getFieldDisplayValuesProxy, getFrameDisplayName } from '@grafana/data';\nimport { getFieldAccessor } from '../interpolation/fieldAccessorCache.js';\nimport { getTemplateProxyForField } from './templateProxies.js';\n\nclass ValueMacro {\n constructor(name, sceneObject, _match, _scopedVars) {\n this._match = _match;\n this._scopedVars = _scopedVars;\n this.state = { name, type: \"__value\" };\n }\n getValue(fieldPath) {\n var _a, _b;\n const dataContext = (_a = this._scopedVars) == null ? void 0 : _a.__dataContext;\n if (!dataContext) {\n return this._match;\n }\n const { frame, rowIndex, field, calculatedValue } = dataContext.value;\n if (calculatedValue) {\n switch (fieldPath) {\n case \"numeric\":\n return calculatedValue.numeric;\n case \"raw\":\n return calculatedValue.numeric;\n case \"time\":\n return \"\";\n case \"text\":\n default:\n return formattedValueToString(calculatedValue);\n }\n }\n if (rowIndex == null) {\n return this._match;\n }\n if (fieldPath === \"time\") {\n const timeField = frame.fields.find((f) => f.type === FieldType.time);\n return timeField ? timeField.values.get(rowIndex) : void 0;\n }\n if (!field) {\n return this._match;\n }\n const value = field.values.get(rowIndex);\n if (fieldPath === \"raw\") {\n return value;\n }\n const displayProcessor = (_b = field.display) != null ? _b : fallbackDisplayProcessor;\n const result = displayProcessor(value);\n switch (fieldPath) {\n case \"numeric\":\n return result.numeric;\n case \"text\":\n default:\n return formattedValueToString(result);\n }\n }\n getValueText() {\n return \"\";\n }\n}\nconst fallbackDisplayProcessor = getDisplayProcessor();\nclass DataMacro {\n constructor(name, sceneObject, _match, _scopedVars) {\n this._match = _match;\n this._scopedVars = _scopedVars;\n this.state = { name, type: \"__data\" };\n }\n getValue(fieldPath) {\n var _a, _b;\n const dataContext = (_a = this._scopedVars) == null ? void 0 : _a.__dataContext;\n if (!dataContext || !fieldPath) {\n return this._match;\n }\n const { frame, rowIndex } = dataContext.value;\n if (rowIndex === void 0 || fieldPath === void 0) {\n return this._match;\n }\n const obj = {\n name: frame.name,\n refId: frame.refId,\n fields: getFieldDisplayValuesProxy({ frame, rowIndex })\n };\n return (_b = getFieldAccessor(fieldPath)(obj)) != null ? _b : \"\";\n }\n getValueText() {\n return \"\";\n }\n}\nclass SeriesMacro {\n constructor(name, sceneObject, _match, _scopedVars) {\n this._match = _match;\n this._scopedVars = _scopedVars;\n this.state = { name, type: \"__series\" };\n }\n getValue(fieldPath) {\n var _a;\n const dataContext = (_a = this._scopedVars) == null ? void 0 : _a.__dataContext;\n if (!dataContext || !fieldPath) {\n return this._match;\n }\n if (fieldPath !== \"name\") {\n return this._match;\n }\n const { frame, frameIndex } = dataContext.value;\n return getFrameDisplayName(frame, frameIndex);\n }\n getValueText() {\n return \"\";\n }\n}\nclass FieldMacro {\n constructor(name, sceneObject, _match, _scopedVars) {\n this._match = _match;\n this._scopedVars = _scopedVars;\n this.state = { name, type: \"__field\" };\n }\n getValue(fieldPath) {\n var _a, _b;\n const dataContext = (_a = this._scopedVars) == null ? void 0 : _a.__dataContext;\n if (!dataContext || !fieldPath) {\n return this._match;\n }\n if (fieldPath === void 0 || fieldPath === \"\") {\n return this._match;\n }\n const { frame, field, data } = dataContext.value;\n const obj = getTemplateProxyForField(field, frame, data);\n return (_b = getFieldAccessor(fieldPath)(obj)) != null ? _b : \"\";\n }\n getValueText() {\n return \"\";\n }\n}\n\nexport { DataMacro, FieldMacro, SeriesMacro, ValueMacro };\n//# sourceMappingURL=dataMacros.js.map\n","import { locationService, config } from '@grafana/runtime';\n\nclass UrlMacro {\n constructor(name, _) {\n this.state = { name, type: \"url_macro\" };\n }\n getValue(fieldPath) {\n var _a;\n const location = locationService.getLocation();\n const subUrl = (_a = config.appSubUrl) != null ? _a : \"\";\n switch (fieldPath != null ? fieldPath : \"\") {\n case \"params\":\n return new UrlStateFormatter(location.search);\n case \"path\":\n return subUrl + location.pathname;\n case \"\":\n default:\n return subUrl + location.pathname + location.search;\n }\n }\n getValueText() {\n return \"\";\n }\n}\nclass UrlStateFormatter {\n constructor(_urlQueryParams) {\n this._urlQueryParams = _urlQueryParams;\n }\n formatter(options) {\n if (!options) {\n return this._urlQueryParams;\n }\n const params = options.split(\":\");\n if (params[0] === \"exclude\" && params.length > 1) {\n const allParams = new URLSearchParams(this._urlQueryParams);\n for (const param of params[1].split(\",\")) {\n allParams.delete(param);\n }\n return `?${allParams}`;\n }\n if (params[0] === \"include\" && params.length > 1) {\n const allParams = new URLSearchParams(this._urlQueryParams);\n const includeOnly = params[1].split(\",\");\n for (const param of allParams.keys()) {\n if (!includeOnly.includes(param)) {\n allParams.delete(param);\n }\n }\n return `?${allParams}`;\n }\n return this._urlQueryParams;\n }\n}\n\nexport { UrlMacro };\n//# sourceMappingURL=urlMacros.js.map\n","import { DataLinkBuiltInVars } from '@grafana/data';\nimport { UrlTimeRangeMacro, TimeFromAndToMacro, TimezoneMacro, IntervalMacro } from './timeMacros.js';\nimport { AllVariablesMacro } from './AllVariablesMacro.js';\nimport { ValueMacro, DataMacro, SeriesMacro, FieldMacro } from './dataMacros.js';\nimport { UrlMacro } from './urlMacros.js';\nimport { UserMacro, OrgMacro } from './contextMacros.js';\n\nconst macrosIndex = /* @__PURE__ */ new Map([\n [DataLinkBuiltInVars.includeVars, AllVariablesMacro],\n [DataLinkBuiltInVars.keepTime, UrlTimeRangeMacro],\n [\"__value\", ValueMacro],\n [\"__data\", DataMacro],\n [\"__series\", SeriesMacro],\n [\"__field\", FieldMacro],\n [\"__url\", UrlMacro],\n [\"__from\", TimeFromAndToMacro],\n [\"__to\", TimeFromAndToMacro],\n [\"__timezone\", TimezoneMacro],\n [\"__user\", UserMacro],\n [\"__org\", OrgMacro],\n [\"__interval\", IntervalMacro],\n [\"__interval_ms\", IntervalMacro]\n]);\nfunction registerVariableMacro(name, macro) {\n if (macrosIndex.get(name)) {\n throw new Error(`Macro already registered ${name}`);\n }\n macrosIndex.set(name, macro);\n return () => {\n macrosIndex.delete(name);\n };\n}\n\nexport { macrosIndex, registerVariableMacro };\n//# sourceMappingURL=index.js.map\n","import { getFieldDisplayName, formatLabels } from '@grafana/data';\n\nfunction getTemplateProxyForField(field, frame, frames) {\n return new Proxy(\n {},\n // This object shows up in test snapshots\n {\n get: (obj, key) => {\n if (key === \"name\") {\n return field.name;\n }\n if (key === \"displayName\") {\n return getFieldDisplayName(field, frame, frames);\n }\n if (key === \"labels\" || key === \"formattedLabels\") {\n if (!field.labels) {\n return \"\";\n }\n return {\n ...field.labels,\n __values: Object.values(field.labels).sort().join(\", \"),\n toString: () => {\n return formatLabels(field.labels, \"\", true);\n }\n };\n }\n return void 0;\n }\n }\n );\n}\n\nexport { getTemplateProxyForField };\n//# sourceMappingURL=templateProxies.js.map\n","import { config } from '@grafana/runtime';\n\nclass UserMacro {\n constructor(name, _) {\n this.state = { name, type: \"user_macro\" };\n }\n getValue(fieldPath) {\n const user = config.bootData.user;\n switch (fieldPath) {\n case \"login\":\n return user.login;\n case \"email\":\n return user.email;\n case \"id\":\n default:\n return String(user.id);\n }\n }\n getValueText() {\n return \"\";\n }\n}\nclass OrgMacro {\n constructor(name, _) {\n this.state = { name, type: \"org_macro\" };\n }\n getValue(fieldPath) {\n const user = config.bootData.user;\n switch (fieldPath) {\n case \"name\":\n return user.orgName;\n case \"id\":\n default:\n return String(user.orgId);\n }\n }\n getValueText() {\n return \"\";\n }\n}\n\nexport { OrgMacro, UserMacro };\n//# sourceMappingURL=contextMacros.js.map\n","import { VariableFormatID } from '@grafana/schema';\nimport { isCustomVariableValue } from '../types.js';\nimport { getSceneVariableForScopedVar } from './ScopedVarsVariable.js';\nimport { formatRegistry } from './formatRegistry.js';\nimport { VARIABLE_REGEX } from '../constants.js';\nimport { lookupVariable } from '../lookupVariable.js';\nimport { macrosIndex } from '../macros/index.js';\n\nfunction sceneInterpolator(sceneObject, target, scopedVars, format, interpolations) {\n if (!target || typeof target !== \"string\") {\n return target != null ? target : \"\";\n }\n VARIABLE_REGEX.lastIndex = 0;\n return target.replace(VARIABLE_REGEX, (match, var1, var2, fmt2, var3, fieldPath, fmt3) => {\n const variableName = var1 || var2 || var3;\n const fmt = fmt2 || fmt3 || format;\n const variable = lookupFormatVariable(variableName, match, scopedVars, sceneObject);\n if (!variable) {\n if (interpolations) {\n interpolations.push({ match, variableName, fieldPath, format: fmt, value: match, found: false });\n }\n return match;\n }\n const value = formatValue(sceneObject, variable, variable.getValue(fieldPath), fmt);\n if (interpolations) {\n interpolations.push({ match, variableName, fieldPath, format: fmt, value, found: value !== match });\n }\n return value;\n });\n}\nfunction lookupFormatVariable(name, match, scopedVars, sceneObject) {\n if (scopedVars && scopedVars.hasOwnProperty(name)) {\n const scopedVar = scopedVars[name];\n if (scopedVar) {\n return getSceneVariableForScopedVar(name, scopedVar);\n }\n }\n const variable = lookupVariable(name, sceneObject);\n if (variable) {\n return variable;\n }\n const Macro = macrosIndex.get(name);\n if (Macro) {\n return new Macro(name, sceneObject, match, scopedVars);\n }\n return null;\n}\nfunction formatValue(context, variable, value, formatNameOrFn) {\n if (value === null || value === void 0) {\n return \"\";\n }\n if (isCustomVariableValue(value)) {\n return sceneInterpolator(context, value.formatter(formatNameOrFn));\n }\n if (!Array.isArray(value) && typeof value === \"object\") {\n value = `${value}`;\n }\n if (typeof formatNameOrFn === \"function\") {\n return formatNameOrFn(value, {\n name: variable.state.name,\n type: variable.state.type,\n multi: variable.state.isMulti,\n includeAll: variable.state.includeAll\n });\n }\n let args = [];\n if (!formatNameOrFn) {\n formatNameOrFn = VariableFormatID.Glob;\n } else {\n args = formatNameOrFn.split(\":\");\n if (args.length > 1) {\n formatNameOrFn = args[0];\n args = args.slice(1);\n } else {\n args = [];\n }\n }\n let formatter = formatRegistry.getIfExists(formatNameOrFn);\n if (!formatter) {\n console.error(`Variable format ${formatNameOrFn} not found. Using glob format as fallback.`);\n formatter = formatRegistry.get(VariableFormatID.Glob);\n }\n return formatter.formatter(value, args, variable);\n}\n\nexport { sceneInterpolator };\n//# sourceMappingURL=sceneInterpolator.js.map\n","function isSceneObject(obj) {\n return obj.useState !== void 0;\n}\nfunction isDataRequestEnricher(obj) {\n return \"enrichDataRequest\" in obj;\n}\nfunction isFiltersRequestEnricher(obj) {\n return \"enrichFiltersRequest\" in obj;\n}\nfunction isDataLayer(obj) {\n return \"isDataLayer\" in obj;\n}\n\nexport { isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject };\n//# sourceMappingURL=types.js.map\n","import { Observable, from, map, catchError } from 'rxjs';\nimport { LoadingState } from '@grafana/schema';\nimport { sceneGraph } from '../core/sceneGraph/index.js';\n\nfunction registerQueryWithController(entry) {\n return (queryStream) => {\n const queryControler = sceneGraph.getQueryController(entry.origin);\n if (!queryControler) {\n return queryStream;\n }\n return new Observable((observer) => {\n if (!entry.cancel) {\n entry.cancel = () => observer.complete();\n }\n queryControler.queryStarted(entry);\n let markedAsCompleted = false;\n const sub = queryStream.subscribe({\n next: (v) => {\n if (!markedAsCompleted && v.state !== LoadingState.Loading) {\n markedAsCompleted = true;\n queryControler.queryCompleted(entry);\n }\n observer.next(v);\n },\n error: (e) => observer.error(e),\n complete: () => {\n observer.complete();\n }\n });\n return () => {\n sub.unsubscribe();\n if (!markedAsCompleted) {\n queryControler.queryCompleted(entry);\n }\n };\n });\n };\n}\nfunction wrapPromiseInStateObservable(promise) {\n return new Observable((observer) => {\n observer.next({ state: LoadingState.Loading });\n const promiseObservable = from(promise);\n promiseObservable.pipe(\n map(() => ({ state: LoadingState.Done })),\n catchError(() => {\n observer.next({ state: LoadingState.Error });\n return [];\n })\n ).subscribe({\n next: (result) => observer.next(result),\n complete: () => observer.complete()\n });\n });\n}\n\nexport { registerQueryWithController, wrapPromiseInStateObservable };\n//# sourceMappingURL=registerQueryWithController.js.map\n","import { getDataSourceSrv } from '@grafana/runtime';\nimport { runtimeDataSources } from '../querying/RuntimeDataSource.js';\nimport { wrapPromiseInStateObservable, registerQueryWithController } from '../querying/registerQueryWithController.js';\nimport { sceneGraph } from '../core/sceneGraph/index.js';\n\nasync function getDataSource(datasource, scopedVars) {\n if (datasource == null ? void 0 : datasource.uid) {\n const runtimeDataSource = runtimeDataSources.get(datasource.uid);\n if (runtimeDataSource) {\n return runtimeDataSource;\n }\n }\n if (datasource && datasource.query) {\n return datasource;\n }\n const dsPromise = getDataSourceSrv().get(datasource, scopedVars);\n if (scopedVars.__sceneObject && scopedVars.__sceneObject.value.valueOf()) {\n const queryControler = sceneGraph.getQueryController(scopedVars.__sceneObject.value.valueOf());\n if (queryControler && queryControler.state.enableProfiling) {\n wrapPromiseInStateObservable(dsPromise).pipe(\n registerQueryWithController({\n type: \"plugin\",\n origin: scopedVars.__sceneObject.value.valueOf()\n })\n ).subscribe(() => {\n });\n }\n }\n const result = await dsPromise;\n return result;\n}\n\nexport { getDataSource };\n//# sourceMappingURL=getDataSource.js.map\n","import { sceneGraph } from '../core/sceneGraph/index.js';\nimport { isVariableValueEqual } from './utils.js';\n\nclass VariableValueRecorder {\n constructor() {\n this._values = /* @__PURE__ */ new Map();\n }\n recordCurrentDependencyValuesForSceneObject(sceneObject) {\n this.clearValues();\n if (!sceneObject.variableDependency) {\n return;\n }\n for (const variableName of sceneObject.variableDependency.getNames()) {\n const variable = sceneGraph.lookupVariable(variableName, sceneObject);\n if (variable) {\n this._values.set(variable.state.name, variable.getValue());\n }\n }\n }\n cloneAndRecordCurrentValuesForSceneObject(sceneObject) {\n const clone = new VariableValueRecorder();\n clone.recordCurrentDependencyValuesForSceneObject(sceneObject);\n return clone;\n }\n clearValues() {\n this._values.clear();\n }\n hasValues() {\n return !!this._values;\n }\n recordCurrentValue(variable) {\n this._values.set(variable.state.name, variable.getValue());\n }\n hasRecordedValue(variable) {\n return this._values.has(variable.state.name);\n }\n hasValueChanged(variable) {\n if (this._values.has(variable.state.name)) {\n const value = this._values.get(variable.state.name);\n if (!isVariableValueEqual(value, variable.getValue())) {\n return true;\n }\n }\n return false;\n }\n hasDependenciesChanged(sceneObject) {\n if (!this._values) {\n return false;\n }\n if (!sceneObject.variableDependency) {\n return false;\n }\n for (const variableName of sceneObject.variableDependency.getNames()) {\n const variable = sceneGraph.lookupVariable(variableName, sceneObject);\n if (!variable) {\n continue;\n }\n const name = variable.state.name;\n if (variable && this._values.has(name)) {\n const value = this._values.get(name);\n if (!isVariableValueEqual(value, variable.getValue())) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nexport { VariableValueRecorder };\n//# sourceMappingURL=VariableValueRecorder.js.map\n","function isExtraQueryProvider(obj) {\n return typeof obj === \"object\" && \"getExtraQueries\" in obj;\n}\n\nexport { isExtraQueryProvider };\n//# sourceMappingURL=ExtraQueryProvider.js.map\n","import { of, mergeMap, forkJoin, map } from 'rxjs';\n\nconst passthroughProcessor = (_, secondary) => of(secondary);\nconst extraQueryProcessingOperator = (processors) => (data) => {\n return data.pipe(\n mergeMap(([primary, ...secondaries]) => {\n const processedSecondaries = secondaries.flatMap((s) => {\n var _a, _b;\n return (_b = (_a = processors.get(s.request.requestId)) == null ? void 0 : _a(primary, s)) != null ? _b : of(s);\n });\n return forkJoin([of(primary), ...processedSecondaries]);\n }),\n map(([primary, ...processedSecondaries]) => {\n var _a;\n return {\n ...primary,\n series: [...primary.series, ...processedSecondaries.flatMap((s) => s.series)],\n annotations: [...(_a = primary.annotations) != null ? _a : [], ...processedSecondaries.flatMap((s) => {\n var _a2;\n return (_a2 = s.annotations) != null ? _a2 : [];\n })]\n };\n })\n );\n};\n\nexport { extraQueryProcessingOperator, passthroughProcessor };\n//# sourceMappingURL=extraQueryProcessingOperator.js.map\n","const GLOBAL_ANNOTATION_ID = 0;\nfunction filterAnnotations(data, filters) {\n var _a;\n if (!Array.isArray(data) || data.length === 0) {\n return data;\n }\n const rows = Array.from({ length: data.length }, () => /* @__PURE__ */ new Set());\n let frameIdx = 0;\n for (const frame of data) {\n for (let index = 0; index < frame.length; index++) {\n if (rows[frameIdx].has(index)) {\n continue;\n }\n let matching = true;\n const panelIdField = frame.fields.find((f) => f.name === \"panelId\");\n const sourceField = frame.fields.find((f) => f.name === \"source\");\n if (sourceField) {\n if (panelIdField && sourceField.values[index].type === \"dashboard\") {\n matching = [filters.panelId, GLOBAL_ANNOTATION_ID].includes(panelIdField.values[index]);\n }\n const sourceFilter = sourceField.values[index].filter;\n if (sourceFilter) {\n const includes = [...(_a = sourceFilter.ids) != null ? _a : [], GLOBAL_ANNOTATION_ID].includes(filters.panelId);\n if (sourceFilter.exclude) {\n if (includes) {\n matching = false;\n }\n } else if (!includes) {\n matching = false;\n }\n }\n }\n if (matching) {\n rows[frameIdx].add(index);\n }\n }\n frameIdx++;\n }\n const processed = [];\n frameIdx = 0;\n for (const frame of data) {\n const frameLength = rows[frameIdx].size;\n const fields = [];\n for (const field of frame.fields) {\n const buffer = [];\n for (let index = 0; index < frame.length; index++) {\n if (rows[frameIdx].has(index)) {\n buffer.push(field.values[index]);\n continue;\n }\n }\n fields.push({\n ...field,\n values: buffer\n });\n }\n processed.push({\n ...frame,\n fields,\n length: frameLength\n });\n frameIdx++;\n }\n return processed;\n}\n\nexport { filterAnnotations };\n//# sourceMappingURL=filterAnnotations.js.map\n","import { isDataRequestEnricher } from '../core/types.js';\n\nfunction getEnrichedDataRequest(sourceRunner) {\n const root = sourceRunner.getRoot();\n if (isDataRequestEnricher(root)) {\n return root.enrichDataRequest(sourceRunner);\n }\n return null;\n}\n\nexport { getEnrichedDataRequest };\n//# sourceMappingURL=getEnrichedDataRequest.js.map\n","import { getTemplateSrv, getDataSourceSrv } from '@grafana/runtime';\nimport { interpolate } from '../../core/sceneGraph/sceneGraph.js';\n\nlet originalGetAdhocFilters = void 0;\nlet allActiveFilterSets = /* @__PURE__ */ new Set();\nfunction patchGetAdhocFilters(filterVar) {\n filterVar.addActivationHandler(() => {\n allActiveFilterSets.add(filterVar);\n return () => allActiveFilterSets.delete(filterVar);\n });\n if (originalGetAdhocFilters) {\n return;\n }\n const templateSrv = getTemplateSrv();\n if (!(templateSrv == null ? void 0 : templateSrv.getAdhocFilters)) {\n console.log(\"Failed to patch getAdhocFilters\");\n return;\n }\n originalGetAdhocFilters = templateSrv.getAdhocFilters;\n templateSrv.getAdhocFilters = function getAdhocFiltersScenePatch(dsName) {\n var _a;\n if (allActiveFilterSets.size === 0) {\n return originalGetAdhocFilters.call(templateSrv, dsName);\n }\n const ds = getDataSourceSrv().getInstanceSettings(dsName);\n if (!ds) {\n return [];\n }\n for (const filter of allActiveFilterSets.values()) {\n if (((_a = filter.state.datasource) == null ? void 0 : _a.uid) === ds.uid) {\n return filter.state.filters;\n }\n }\n return [];\n }.bind(templateSrv);\n}\nfunction findActiveAdHocFilterVariableByUid(dsUid) {\n var _a;\n for (const filter of allActiveFilterSets.values()) {\n if (interpolate(filter, (_a = filter.state.datasource) == null ? void 0 : _a.uid) === dsUid) {\n return filter;\n }\n }\n return void 0;\n}\n\nexport { findActiveAdHocFilterVariableByUid, patchGetAdhocFilters };\n//# sourceMappingURL=patchGetAdhocFilters.js.map\n","import { interpolate } from '../../core/sceneGraph/sceneGraph.js';\n\nconst allActiveGroupByVariables = /* @__PURE__ */ new Set();\nfunction findActiveGroupByVariablesByUid(dsUid) {\n var _a;\n for (const groupByVariable of allActiveGroupByVariables.values()) {\n if (interpolate(groupByVariable, (_a = groupByVariable.state.datasource) == null ? void 0 : _a.uid) === dsUid) {\n return groupByVariable;\n }\n }\n return void 0;\n}\n\nexport { allActiveGroupByVariables, findActiveGroupByVariablesByUid };\n//# sourceMappingURL=findActiveGroupByVariablesByUid.js.map\n","import { valid, compare, gte } from 'semver';\n\nfunction resolveSelectors(versionedSelectors, grafanaVersion = \"latest\") {\n const version = grafanaVersion.replace(/\\-.*/, \"\");\n return resolveSelectorGroup(versionedSelectors, version);\n}\nfunction resolveSelectorGroup(group, grafanaVersion) {\n const result = {};\n for (const [key, value] of Object.entries(group)) {\n if (isVersionedSelectorGroup(value)) {\n result[key] = resolveSelectorGroup(value, grafanaVersion);\n } else {\n assertIsSemverValid(value, key);\n result[key] = resolveSelector(value, grafanaVersion);\n }\n }\n return result;\n}\nfunction isVersionedSelectorGroup(target) {\n if (typeof target === \"object\") {\n const [first] = Object.keys(target);\n return !valid(first);\n }\n return false;\n}\nfunction resolveSelector(versionedSelector, grafanaVersion) {\n let versionToUse;\n let versions = Object.keys(versionedSelector).sort(compare);\n if (grafanaVersion === \"latest\") {\n return versionedSelector[versions[versions.length - 1]];\n }\n for (const version of versions) {\n if (gte(grafanaVersion, version)) {\n versionToUse = version;\n }\n }\n if (!versionToUse) {\n versionToUse = versions[versions.length - 1];\n }\n return versionedSelector[versionToUse];\n}\nfunction assertIsSemverValid(versionedSelector, selectorName) {\n if (!Object.keys(versionedSelector).every((version) => valid(version))) {\n throw new Error(`Invalid semver version: '${selectorName}'`);\n }\n}\n\nexport { resolveSelectors };\n//# sourceMappingURL=resolver.mjs.map\n","const MIN_GRAFANA_VERSION = \"8.5.0\";\n\nexport { MIN_GRAFANA_VERSION };\n//# sourceMappingURL=constants.mjs.map\n","import { MIN_GRAFANA_VERSION } from './constants.mjs';\n\nconst versionedComponents = {\n RadioButton: {\n container: {\n \"10.2.3\": \"data-testid radio-button\"\n }\n },\n Breadcrumbs: {\n breadcrumb: {\n \"9.4.0\": (title) => `data-testid ${title} breadcrumb`\n }\n },\n TimePicker: {\n openButton: {\n [MIN_GRAFANA_VERSION]: \"data-testid TimePicker Open Button\"\n },\n overlayContent: {\n \"10.2.3\": \"data-testid TimePicker Overlay Content\"\n },\n fromField: {\n \"10.2.3\": \"data-testid Time Range from field\",\n [MIN_GRAFANA_VERSION]: \"Time Range from field\"\n },\n toField: {\n \"10.2.3\": \"data-testid Time Range to field\",\n [MIN_GRAFANA_VERSION]: \"Time Range to field\"\n },\n applyTimeRange: {\n [MIN_GRAFANA_VERSION]: \"data-testid TimePicker submit button\"\n },\n copyTimeRange: {\n \"10.4.0\": \"data-testid TimePicker copy button\"\n },\n pasteTimeRange: {\n \"10.4.0\": \"data-testid TimePicker paste button\"\n },\n calendar: {\n label: {\n \"10.2.3\": \"data-testid Time Range calendar\",\n [MIN_GRAFANA_VERSION]: \"Time Range calendar\"\n },\n openButton: {\n \"10.2.3\": \"data-testid Open time range calendar\",\n [MIN_GRAFANA_VERSION]: \"Open time range calendar\"\n },\n closeButton: {\n \"10.2.3\": \"data-testid Close time range Calendar\",\n [MIN_GRAFANA_VERSION]: \"Close time range Calendar\"\n }\n },\n absoluteTimeRangeTitle: {\n [MIN_GRAFANA_VERSION]: \"data-testid-absolute-time-range-narrow\"\n }\n },\n DataSourcePermissions: {\n form: { \"9.5.0\": () => 'form[name=\"addPermission\"]' },\n roleType: {\n \"9.5.0\": \"Role to add new permission to\"\n },\n rolePicker: {\n \"9.5.0\": \"Built-in role picker\"\n },\n permissionLevel: {\n \"9.5.0\": \"Permission Level\"\n }\n },\n DateTimePicker: {\n input: {\n \"10.2.3\": \"data-testid date-time-input\"\n }\n },\n DataSource: {\n TestData: {\n QueryTab: {\n scenarioSelectContainer: {\n [MIN_GRAFANA_VERSION]: \"Test Data Query scenario select container\"\n },\n scenarioSelect: {\n [MIN_GRAFANA_VERSION]: \"Test Data Query scenario select\"\n },\n max: {\n [MIN_GRAFANA_VERSION]: \"TestData max\"\n },\n min: {\n [MIN_GRAFANA_VERSION]: \"TestData min\"\n },\n noise: {\n [MIN_GRAFANA_VERSION]: \"TestData noise\"\n },\n seriesCount: {\n [MIN_GRAFANA_VERSION]: \"TestData series count\"\n },\n spread: {\n [MIN_GRAFANA_VERSION]: \"TestData spread\"\n },\n startValue: {\n [MIN_GRAFANA_VERSION]: \"TestData start value\"\n },\n drop: {\n [MIN_GRAFANA_VERSION]: \"TestData drop values\"\n }\n }\n },\n DataSourceHttpSettings: {\n urlInput: {\n \"10.4.0\": \"data-testid Datasource HTTP settings url\",\n [MIN_GRAFANA_VERSION]: \"Datasource HTTP settings url\"\n }\n },\n Jaeger: {\n traceIDInput: {\n [MIN_GRAFANA_VERSION]: \"Trace ID\"\n }\n },\n Prometheus: {\n configPage: {\n connectionSettings: {\n [MIN_GRAFANA_VERSION]: \"Data source connection URL\"\n // aria-label in grafana experimental\n },\n manageAlerts: {\n \"10.4.0\": \"prometheus-alerts-manager\"\n // id for switch component\n },\n scrapeInterval: {\n \"10.4.0\": \"data-testid scrape interval\"\n },\n queryTimeout: {\n \"10.4.0\": \"data-testid query timeout\"\n },\n defaultEditor: {\n \"10.4.0\": \"data-testid default editor\"\n },\n disableMetricLookup: {\n \"10.4.0\": \"disable-metric-lookup\"\n // id for switch component\n },\n prometheusType: {\n \"10.4.0\": \"data-testid prometheus type\"\n },\n prometheusVersion: {\n \"10.4.0\": \"data-testid prometheus version\"\n },\n cacheLevel: {\n \"10.4.0\": \"data-testid cache level\"\n },\n incrementalQuerying: {\n \"10.4.0\": \"prometheus-incremental-querying\"\n // id for switch component\n },\n queryOverlapWindow: {\n \"10.4.0\": \"data-testid query overlap window\"\n },\n disableRecordingRules: {\n \"10.4.0\": \"disable-recording-rules\"\n // id for switch component\n },\n customQueryParameters: {\n \"10.4.0\": \"data-testid custom query parameters\"\n },\n httpMethod: {\n \"10.4.0\": \"data-testid http method\"\n },\n exemplarsAddButton: {\n \"10.3.0\": \"data-testid Add exemplar config button\",\n [MIN_GRAFANA_VERSION]: \"Add exemplar config button\"\n },\n internalLinkSwitch: {\n \"10.3.0\": \"data-testid Internal link switch\",\n [MIN_GRAFANA_VERSION]: \"Internal link switch\"\n },\n codeModeMetricNamesSuggestionLimit: {\n \"11.1.0\": \"data-testid code mode metric names suggestion limit\"\n }\n },\n queryEditor: {\n explain: {\n \"10.4.0\": \"data-testid prometheus explain switch wrapper\"\n },\n editorToggle: {\n \"10.4.0\": \"data-testid QueryEditorModeToggle\"\n // wrapper for toggle\n },\n options: {\n \"10.4.0\": \"data-testid prometheus options\"\n // wrapper for options group\n },\n legend: {\n \"10.4.0\": \"data-testid prometheus legend wrapper\"\n // wrapper for multiple compomnents\n },\n format: {\n \"10.4.0\": \"data-testid prometheus format\"\n },\n step: {\n \"10.4.0\": \"prometheus-step\"\n // id for autosize component\n },\n type: {\n \"10.4.0\": \"data-testid prometheus type\"\n //wrapper for radio button group\n },\n exemplars: {\n \"10.4.0\": \"prometheus-exemplars\"\n // id for editor switch component\n },\n builder: {\n // see QueryBuilder below for commented selectors\n metricSelect: {\n \"10.4.0\": \"data-testid metric select\"\n },\n hints: {\n \"10.4.0\": \"data-testid prometheus hints\"\n // wrapper for hints component\n },\n metricsExplorer: {\n \"10.4.0\": \"data-testid metrics explorer\"\n },\n queryAdvisor: {\n \"10.4.0\": \"data-testid query advisor\"\n }\n },\n code: {\n queryField: {\n \"10.4.0\": \"data-testid prometheus query field\"\n },\n metricsCountInfo: {\n \"11.1.0\": \"data-testid metrics count disclaimer\"\n },\n metricsBrowser: {\n openButton: {\n \"10.4.0\": \"data-testid open metrics browser\"\n },\n selectMetric: {\n \"10.4.0\": \"data-testid select a metric\"\n },\n seriesLimit: {\n \"10.3.1\": \"data-testid series limit\"\n },\n metricList: {\n \"10.4.0\": \"data-testid metric list\"\n },\n labelNamesFilter: {\n \"10.4.0\": \"data-testid label names filter\"\n },\n labelValuesFilter: {\n \"10.4.0\": \"data-testid label values filter\"\n },\n useQuery: {\n \"10.4.0\": \"data-testid use query\"\n },\n useAsRateQuery: {\n \"10.4.0\": \"data-testid use as rate query\"\n },\n validateSelector: {\n \"10.4.0\": \"data-testid validate selector\"\n },\n clear: {\n \"10.4.0\": \"data-testid clear\"\n }\n }\n }\n },\n exemplarMarker: {\n \"10.3.0\": \"data-testid Exemplar marker\",\n [MIN_GRAFANA_VERSION]: \"Exemplar marker\"\n },\n variableQueryEditor: {\n queryType: {\n \"10.4.0\": \"data-testid query type\"\n },\n labelnames: {\n metricRegex: {\n \"10.4.0\": \"data-testid label names metric regex\"\n }\n },\n labelValues: {\n labelSelect: {\n \"10.4.0\": \"data-testid label values label select\"\n }\n },\n metricNames: {\n metricRegex: {\n \"10.4.0\": \"data-testid metric names metric regex\"\n }\n },\n varQueryResult: {\n \"10.4.0\": \"data-testid variable query result\"\n },\n seriesQuery: {\n \"10.4.0\": \"data-testid prometheus series query\"\n },\n classicQuery: {\n \"10.4.0\": \"data-testid prometheus classic query\"\n }\n },\n annotations: {\n minStep: {\n \"10.4.0\": \"prometheus-annotation-min-step\"\n // id for autosize input\n },\n title: {\n \"10.4.0\": \"data-testid prometheus annotation title\"\n },\n tags: {\n \"10.4.0\": \"data-testid prometheus annotation tags\"\n },\n text: {\n \"10.4.0\": \"data-testid prometheus annotation text\"\n },\n seriesValueAsTimestamp: {\n \"10.4.0\": \"data-testid prometheus annotation series value as timestamp\"\n }\n }\n }\n },\n Menu: {\n MenuComponent: {\n [MIN_GRAFANA_VERSION]: (title) => `${title} menu`\n },\n MenuGroup: {\n [MIN_GRAFANA_VERSION]: (title) => `${title} menu group`\n },\n MenuItem: {\n [MIN_GRAFANA_VERSION]: (title) => `${title} menu item`\n },\n SubMenu: {\n container: {\n \"10.3.0\": \"data-testid SubMenu container\",\n [MIN_GRAFANA_VERSION]: \"SubMenu container\"\n },\n icon: {\n \"10.3.0\": \"data-testid SubMenu icon\",\n [MIN_GRAFANA_VERSION]: \"SubMenu icon\"\n }\n }\n },\n Panels: {\n Panel: {\n title: {\n [MIN_GRAFANA_VERSION]: (title) => `data-testid Panel header ${title}`\n },\n content: {\n \"11.1.0\": \"data-testid panel content\"\n },\n headerItems: {\n \"10.2.0\": (item) => `data-testid Panel header item ${item}`\n },\n menuItems: {\n \"9.5.0\": (item) => `data-testid Panel menu item ${item}`\n },\n menu: {\n \"9.5.0\": (title) => `data-testid Panel menu ${title}`\n },\n containerByTitle: {\n [MIN_GRAFANA_VERSION]: (title) => `${title} panel`\n },\n headerCornerInfo: {\n [MIN_GRAFANA_VERSION]: (mode) => `Panel header ${mode}`\n },\n status: {\n \"10.2.0\": (status) => `data-testid Panel status ${status}`,\n [MIN_GRAFANA_VERSION]: (_) => \"Panel status\"\n },\n loadingBar: {\n \"10.0.0\": () => `Panel loading bar`\n },\n HoverWidget: {\n container: {\n \"10.1.0\": \"data-testid hover-header-container\",\n [MIN_GRAFANA_VERSION]: \"hover-header-container\"\n },\n dragIcon: {\n \"10.0.0\": \"data-testid drag-icon\"\n }\n },\n PanelDataErrorMessage: {\n \"10.4.0\": \"data-testid Panel data error message\"\n }\n },\n Visualization: {\n Graph: {\n container: {\n \"9.5.0\": \"Graph container\"\n },\n VisualizationTab: {\n legendSection: {\n [MIN_GRAFANA_VERSION]: \"Legend section\"\n }\n },\n Legend: {\n legendItemAlias: {\n [MIN_GRAFANA_VERSION]: (name) => `gpl alias ${name}`\n },\n showLegendSwitch: {\n [MIN_GRAFANA_VERSION]: \"gpl show legend\"\n }\n },\n xAxis: {\n labels: {\n [MIN_GRAFANA_VERSION]: () => \"div.flot-x-axis > div.flot-tick-label\"\n }\n }\n },\n BarGauge: {\n valueV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Bar gauge value\"\n }\n },\n PieChart: {\n svgSlice: {\n \"10.3.0\": \"data testid Pie Chart Slice\"\n }\n },\n Text: {\n container: { [MIN_GRAFANA_VERSION]: () => \".markdown-html\" }\n },\n Table: {\n header: {\n [MIN_GRAFANA_VERSION]: \"table header\"\n },\n footer: {\n [MIN_GRAFANA_VERSION]: \"table-footer\"\n },\n body: {\n \"10.2.0\": \"data-testid table body\"\n }\n }\n }\n },\n VizLegend: {\n seriesName: {\n \"10.3.0\": (name) => `data-testid VizLegend series ${name}`\n }\n },\n Drawer: {\n General: {\n title: {\n [MIN_GRAFANA_VERSION]: (title) => `Drawer title ${title}`\n },\n expand: {\n [MIN_GRAFANA_VERSION]: \"Drawer expand\"\n },\n contract: {\n [MIN_GRAFANA_VERSION]: \"Drawer contract\"\n },\n close: {\n \"10.3.0\": \"data-testid Drawer close\",\n [MIN_GRAFANA_VERSION]: \"Drawer close\"\n },\n rcContentWrapper: { \"9.4.0\": () => \".rc-drawer-content-wrapper\" },\n subtitle: {\n \"10.4.0\": \"data-testid drawer subtitle\"\n }\n },\n DashboardSaveDrawer: {\n saveButton: {\n \"11.1.0\": \"data-testid Save dashboard drawer button\"\n },\n saveAsButton: {\n \"11.1.0\": \"data-testid Save as dashboard drawer button\"\n },\n saveAsTitleInput: {\n \"11.1.0\": \"Save dashboard title field\"\n }\n }\n },\n PanelEditor: {\n General: {\n content: {\n \"11.1.0\": \"data-testid Panel editor content\",\n \"8.0.0\": \"Panel editor content\"\n }\n },\n OptionsPane: {\n content: {\n \"11.1.0\": \"data-testid Panel editor option pane content\",\n [MIN_GRAFANA_VERSION]: \"Panel editor option pane content\"\n },\n select: {\n [MIN_GRAFANA_VERSION]: \"Panel editor option pane select\"\n },\n fieldLabel: {\n [MIN_GRAFANA_VERSION]: (type) => `${type} field property editor`\n },\n fieldInput: {\n \"11.0.0\": (title) => `data-testid Panel editor option pane field input ${title}`\n }\n },\n DataPane: {\n content: {\n \"11.1.0\": \"data-testid Panel editor data pane content\",\n [MIN_GRAFANA_VERSION]: \"Panel editor data pane content\"\n }\n },\n applyButton: {\n \"9.2.0\": \"data-testid Apply changes and go back to dashboard\",\n \"9.1.0\": \"Apply changes and go back to dashboard\",\n \"8.0.0\": \"panel editor apply\"\n },\n toggleVizPicker: {\n \"10.0.0\": \"data-testid toggle-viz-picker\",\n \"8.0.0\": \"toggle-viz-picker\"\n },\n toggleVizOptions: {\n \"10.1.0\": \"data-testid toggle-viz-options\",\n [MIN_GRAFANA_VERSION]: \"toggle-viz-options\"\n },\n toggleTableView: {\n \"11.1.0\": \"data-testid toggle-table-view\",\n [MIN_GRAFANA_VERSION]: \"toggle-table-view\"\n },\n // [Geomap] Map controls\n showZoomField: {\n \"10.2.0\": \"Map controls Show zoom control field property editor\"\n },\n showAttributionField: {\n \"10.2.0\": \"Map controls Show attribution field property editor\"\n },\n showScaleField: {\n \"10.2.0\": \"Map controls Show scale field property editor\"\n },\n showMeasureField: {\n \"10.2.0\": \"Map controls Show measure tools field property editor\"\n },\n showDebugField: {\n \"10.2.0\": \"Map controls Show debug field property editor\"\n },\n measureButton: {\n \"9.2.0\": \"show measure tools\"\n }\n },\n PanelInspector: {\n Data: {\n content: {\n [MIN_GRAFANA_VERSION]: \"Panel inspector Data content\"\n }\n },\n Stats: {\n content: {\n [MIN_GRAFANA_VERSION]: \"Panel inspector Stats content\"\n }\n },\n Json: {\n content: {\n \"11.1.0\": \"data-testid Panel inspector Json content\",\n [MIN_GRAFANA_VERSION]: \"Panel inspector Json content\"\n }\n },\n Query: {\n content: {\n [MIN_GRAFANA_VERSION]: \"Panel inspector Query content\"\n },\n refreshButton: {\n [MIN_GRAFANA_VERSION]: \"Panel inspector Query refresh button\"\n },\n jsonObjectKeys: {\n [MIN_GRAFANA_VERSION]: () => \".json-formatter-key\"\n }\n }\n },\n Tab: {\n title: {\n \"11.2.0\": (title) => `data-testid Tab ${title}`\n },\n active: { [MIN_GRAFANA_VERSION]: () => '[class*=\"-activeTabStyle\"]' }\n },\n RefreshPicker: {\n runButtonV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid RefreshPicker run button\"\n },\n intervalButtonV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid RefreshPicker interval button\"\n }\n },\n QueryTab: {\n content: {\n [MIN_GRAFANA_VERSION]: \"Query editor tab content\"\n },\n queryInspectorButton: {\n [MIN_GRAFANA_VERSION]: \"Query inspector button\"\n },\n queryHistoryButton: {\n \"10.2.0\": \"data-testid query-history-button\",\n [MIN_GRAFANA_VERSION]: \"query-history-button\"\n },\n addQuery: {\n \"10.2.0\": \"data-testid query-tab-add-query\",\n [MIN_GRAFANA_VERSION]: \"Query editor add query button\"\n },\n queryGroupTopSection: {\n \"11.2.0\": \"data-testid query group top section\"\n },\n addExpression: {\n \"11.2.0\": \"data-testid query-tab-add-expression\"\n }\n },\n QueryHistory: {\n queryText: {\n \"9.0.0\": \"Query text\"\n }\n },\n QueryEditorRows: {\n rows: {\n [MIN_GRAFANA_VERSION]: \"Query editor row\"\n }\n },\n QueryEditorRow: {\n actionButton: {\n \"10.4.0\": (title) => `data-testid ${title}`\n },\n title: {\n [MIN_GRAFANA_VERSION]: (refId) => `Query editor row title ${refId}`\n },\n container: {\n [MIN_GRAFANA_VERSION]: (refId) => `Query editor row ${refId}`\n }\n },\n AlertTab: {\n content: {\n \"10.2.3\": \"data-testid Alert editor tab content\",\n [MIN_GRAFANA_VERSION]: \"Alert editor tab content\"\n }\n },\n AlertRules: {\n groupToggle: {\n \"11.0.0\": \"data-testid group-collapse-toggle\"\n },\n toggle: {\n \"11.0.0\": \"data-testid collapse-toggle\"\n },\n expandedContent: {\n \"11.0.0\": \"data-testid expanded-content\"\n },\n previewButton: {\n \"11.1.0\": \"data-testid alert-rule preview-button\"\n },\n ruleNameField: {\n \"11.1.0\": \"data-testid alert-rule name-field\"\n },\n newFolderButton: {\n \"11.1.0\": \"data-testid alert-rule new-folder-button\"\n },\n newFolderNameField: {\n \"11.1.0\": \"data-testid alert-rule name-folder-name-field\"\n },\n newFolderNameCreateButton: {\n \"11.1.0\": \"data-testid alert-rule name-folder-name-create-button\"\n },\n newEvaluationGroupButton: {\n \"11.1.0\": \"data-testid alert-rule new-evaluation-group-button\"\n },\n newEvaluationGroupName: {\n \"11.1.0\": \"data-testid alert-rule new-evaluation-group-name\"\n },\n newEvaluationGroupInterval: {\n \"11.1.0\": \"data-testid alert-rule new-evaluation-group-interval\"\n },\n newEvaluationGroupCreate: {\n \"11.1.0\": \"data-testid alert-rule new-evaluation-group-create-button\"\n },\n step: {\n \"11.5.0\": (stepNo) => `data-testid alert-rule step-${stepNo}`\n },\n stepAdvancedModeSwitch: {\n \"11.5.0\": (stepNo) => `data-testid advanced-mode-switch step-${stepNo}`\n }\n },\n Alert: {\n alertV2: {\n [MIN_GRAFANA_VERSION]: (severity) => `data-testid Alert ${severity}`\n }\n },\n TransformTab: {\n content: {\n \"10.1.0\": \"data-testid Transform editor tab content\",\n [MIN_GRAFANA_VERSION]: \"Transform editor tab content\"\n },\n newTransform: {\n \"10.1.0\": (name) => `data-testid New transform ${name}`\n },\n transformationEditor: {\n \"10.1.0\": (name) => `data-testid Transformation editor ${name}`\n },\n transformationEditorDebugger: {\n \"10.1.0\": (name) => `data-testid Transformation editor debugger ${name}`\n }\n },\n Transforms: {\n card: {\n \"10.1.0\": (name) => `data-testid New transform ${name}`\n },\n disableTransformationButton: {\n \"10.4.0\": \"data-testid Disable transformation button\"\n },\n Reduce: {\n modeLabel: {\n \"10.2.3\": \"data-testid Transform mode label\",\n [MIN_GRAFANA_VERSION]: \"Transform mode label\"\n },\n calculationsLabel: {\n \"10.2.3\": \"data-testid Transform calculations label\",\n [MIN_GRAFANA_VERSION]: \"Transform calculations label\"\n }\n },\n SpatialOperations: {\n actionLabel: {\n \"9.1.2\": \"root Action field property editor\"\n },\n locationLabel: {\n \"10.2.0\": \"root Location Mode field property editor\"\n },\n location: {\n autoOption: {\n \"9.1.2\": \"Auto location option\"\n },\n coords: {\n option: {\n \"9.1.2\": \"Coords location option\"\n },\n latitudeFieldLabel: {\n \"9.1.2\": \"root Latitude field field property editor\"\n },\n longitudeFieldLabel: {\n \"9.1.2\": \"root Longitude field field property editor\"\n }\n },\n geohash: {\n option: {\n \"9.1.2\": \"Geohash location option\"\n },\n geohashFieldLabel: {\n \"9.1.2\": \"root Geohash field field property editor\"\n }\n },\n lookup: {\n option: {\n \"9.1.2\": \"Lookup location option\"\n },\n lookupFieldLabel: {\n \"9.1.2\": \"root Lookup field field property editor\"\n },\n gazetteerFieldLabel: {\n \"9.1.2\": \"root Gazetteer field property editor\"\n }\n }\n }\n },\n searchInput: {\n \"10.2.3\": \"data-testid search transformations\",\n [MIN_GRAFANA_VERSION]: \"search transformations\"\n },\n noTransformationsMessage: {\n \"10.2.3\": \"data-testid no transformations message\"\n },\n addTransformationButton: {\n \"10.1.0\": \"data-testid add transformation button\",\n [MIN_GRAFANA_VERSION]: \"add transformation button\"\n },\n removeAllTransformationsButton: {\n \"10.4.0\": \"data-testid remove all transformations button\"\n }\n },\n NavBar: {\n Configuration: {\n button: {\n \"9.5.0\": \"Configuration\"\n }\n },\n Toggle: {\n button: {\n \"10.2.3\": \"data-testid Toggle menu\",\n [MIN_GRAFANA_VERSION]: \"Toggle menu\"\n }\n },\n Reporting: {\n button: {\n \"9.5.0\": \"Reporting\"\n }\n }\n },\n NavMenu: {\n Menu: {\n \"10.2.3\": \"data-testid navigation mega-menu\"\n },\n item: {\n \"9.5.0\": \"data-testid Nav menu item\"\n }\n },\n NavToolbar: {\n container: {\n \"9.4.0\": \"data-testid Nav toolbar\"\n },\n commandPaletteTrigger: {\n \"11.5.0\": \"data-testid Command palette trigger\"\n },\n shareDashboard: {\n \"11.1.0\": \"data-testid Share dashboard\"\n },\n markAsFavorite: {\n \"11.1.0\": \"data-testid Mark as favorite\"\n },\n editDashboard: {\n editButton: {\n \"11.1.0\": \"data-testid Edit dashboard button\"\n },\n saveButton: {\n \"11.1.0\": \"data-testid Save dashboard button\"\n },\n exitButton: {\n \"11.1.0\": \"data-testid Exit edit mode button\"\n },\n settingsButton: {\n \"11.1.0\": \"data-testid Dashboard settings\"\n },\n addRowButton: {\n \"11.1.0\": \"data-testid Add row button\"\n },\n addLibraryPanelButton: {\n \"11.1.0\": \"data-testid Add a panel from the panel library button\"\n },\n addVisualizationButton: {\n \"11.1.0\": \"data-testid Add new visualization menu item\"\n },\n pastePanelButton: {\n \"11.1.0\": \"data-testid Paste panel button\"\n },\n discardChangesButton: {\n \"11.1.0\": \"data-testid Discard changes button\"\n },\n discardLibraryPanelButton: {\n \"11.1.0\": \"data-testid Discard library panel button\"\n },\n unlinkLibraryPanelButton: {\n \"11.1.0\": \"data-testid Unlink library panel button\"\n },\n saveLibraryPanelButton: {\n \"11.1.0\": \"data-testid Save library panel button\"\n },\n backToDashboardButton: {\n \"11.1.0\": \"data-testid Back to dashboard button\"\n }\n }\n },\n PageToolbar: {\n container: { [MIN_GRAFANA_VERSION]: () => \".page-toolbar\" },\n item: {\n [MIN_GRAFANA_VERSION]: (tooltip) => `${tooltip}`\n },\n itemButton: {\n \"9.5.0\": (title) => `data-testid ${title}`\n }\n },\n QueryEditorToolbarItem: {\n button: {\n [MIN_GRAFANA_VERSION]: (title) => `QueryEditor toolbar item button ${title}`\n }\n },\n BackButton: {\n backArrow: {\n \"10.3.0\": \"data-testid Go Back\",\n [MIN_GRAFANA_VERSION]: \"Go Back\"\n }\n },\n OptionsGroup: {\n group: {\n \"11.1.0\": (title) => title ? `data-testid Options group ${title}` : \"data-testid Options group\",\n [MIN_GRAFANA_VERSION]: (title) => title ? `Options group ${title}` : \"Options group\"\n },\n toggle: {\n \"11.1.0\": (title) => title ? `data-testid Options group ${title} toggle` : \"data-testid Options group toggle\",\n [MIN_GRAFANA_VERSION]: (title) => title ? `Options group ${title} toggle` : \"Options group toggle\"\n }\n },\n PluginVisualization: {\n item: {\n [MIN_GRAFANA_VERSION]: (title) => `Plugin visualization item ${title}`\n },\n current: {\n [MIN_GRAFANA_VERSION]: () => '[class*=\"-currentVisualizationItem\"]'\n }\n },\n Select: {\n menu: {\n \"11.5.0\": \"data-testid Select menu\",\n [MIN_GRAFANA_VERSION]: \"Select options menu\"\n },\n option: {\n \"11.1.0\": \"data-testid Select option\",\n [MIN_GRAFANA_VERSION]: \"Select option\"\n },\n toggleAllOptions: {\n \"11.3.0\": \"data-testid toggle all options\"\n },\n input: {\n [MIN_GRAFANA_VERSION]: () => 'input[id*=\"time-options-input\"]'\n },\n singleValue: {\n [MIN_GRAFANA_VERSION]: () => 'div[class*=\"-singleValue\"]'\n }\n },\n FieldConfigEditor: {\n content: {\n [MIN_GRAFANA_VERSION]: \"Field config editor content\"\n }\n },\n OverridesConfigEditor: {\n content: {\n [MIN_GRAFANA_VERSION]: \"Field overrides editor content\"\n }\n },\n FolderPicker: {\n containerV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Folder picker select container\"\n },\n input: {\n \"10.4.0\": \"data-testid folder-picker-input\"\n }\n },\n ReadonlyFolderPicker: {\n container: {\n [MIN_GRAFANA_VERSION]: \"data-testid Readonly folder picker select container\"\n }\n },\n DataSourcePicker: {\n container: {\n \"10.0.0\": \"data-testid Data source picker select container\",\n \"8.0.0\": \"Data source picker select container\"\n },\n inputV2: {\n \"10.1.0\": \"data-testid Select a data source\",\n [MIN_GRAFANA_VERSION]: \"Select a data source\"\n },\n dataSourceList: {\n \"10.4.0\": \"data-testid Data source list dropdown\"\n },\n advancedModal: {\n dataSourceList: {\n \"10.4.0\": \"data-testid Data source list\"\n },\n builtInDataSourceList: {\n \"10.4.0\": \"data-testid Built in data source list\"\n }\n }\n },\n TimeZonePicker: {\n containerV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Time zone picker select container\"\n },\n changeTimeSettingsButton: {\n \"11.0.0\": \"data-testid Time zone picker Change time settings button\"\n }\n },\n WeekStartPicker: {\n containerV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Choose starting day of the week\"\n },\n placeholder: {\n [MIN_GRAFANA_VERSION]: \"Choose starting day of the week\"\n }\n },\n TraceViewer: {\n spanBar: {\n \"9.0.0\": \"data-testid SpanBar--wrapper\"\n }\n },\n QueryField: {\n container: {\n \"10.3.0\": \"data-testid Query field\",\n [MIN_GRAFANA_VERSION]: \"Query field\"\n }\n },\n QueryBuilder: {\n queryPatterns: {\n \"10.3.0\": \"data-testid Query patterns\",\n [MIN_GRAFANA_VERSION]: \"Query patterns\"\n },\n labelSelect: {\n \"10.3.0\": \"data-testid Select label\",\n [MIN_GRAFANA_VERSION]: \"Select label\"\n },\n inputSelect: {\n \"11.1.0\": \"data-testid Select label-input\"\n },\n valueSelect: {\n \"10.3.0\": \"data-testid Select value\",\n [MIN_GRAFANA_VERSION]: \"Select value\"\n },\n matchOperatorSelect: {\n \"10.3.0\": \"data-testid Select match operator\",\n [MIN_GRAFANA_VERSION]: \"Select match operator\"\n }\n },\n ValuePicker: {\n button: {\n \"10.3.0\": (name) => `data-testid Value picker button ${name}`\n },\n select: {\n \"10.3.0\": (name) => `data-testid Value picker select ${name}`\n }\n },\n Search: {\n sectionV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Search section\"\n },\n itemsV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Search items\"\n },\n cards: {\n [MIN_GRAFANA_VERSION]: \"data-testid Search cards\"\n },\n collapseFolder: {\n [MIN_GRAFANA_VERSION]: (sectionId) => `data-testid Collapse folder ${sectionId}`\n },\n expandFolder: {\n [MIN_GRAFANA_VERSION]: (sectionId) => `data-testid Expand folder ${sectionId}`\n },\n dashboardItem: {\n [MIN_GRAFANA_VERSION]: (item) => `data-testid Dashboard search item ${item}`\n },\n dashboardCard: {\n [MIN_GRAFANA_VERSION]: (item) => `data-testid Search card ${item}`\n },\n folderHeader: {\n \"9.3.0\": (folderName) => `data-testid Folder header ${folderName}`\n },\n folderContent: {\n \"9.3.0\": (folderName) => `data-testid Folder content ${folderName}`\n },\n dashboardItems: {\n [MIN_GRAFANA_VERSION]: \"data-testid Dashboard search item\"\n }\n },\n DashboardLinks: {\n container: {\n [MIN_GRAFANA_VERSION]: \"data-testid Dashboard link container\"\n },\n dropDown: {\n [MIN_GRAFANA_VERSION]: \"data-testid Dashboard link dropdown\"\n },\n link: {\n [MIN_GRAFANA_VERSION]: \"data-testid Dashboard link\"\n }\n },\n LoadingIndicator: {\n icon: {\n \"10.4.0\": \"data-testid Loading indicator\",\n [MIN_GRAFANA_VERSION]: \"Loading indicator\"\n }\n },\n CallToActionCard: {\n buttonV2: {\n [MIN_GRAFANA_VERSION]: (name) => `data-testid Call to action button ${name}`\n }\n },\n DataLinksContextMenu: {\n singleLink: {\n \"10.3.0\": \"data-testid Data link\",\n [MIN_GRAFANA_VERSION]: \"Data link\"\n }\n },\n CodeEditor: {\n container: {\n \"10.2.3\": \"data-testid Code editor container\",\n [MIN_GRAFANA_VERSION]: \"Code editor container\"\n }\n },\n ReactMonacoEditor: {\n editorLazy: {\n \"11.1.0\": \"data-testid ReactMonacoEditor editorLazy\"\n }\n },\n DashboardImportPage: {\n textarea: {\n [MIN_GRAFANA_VERSION]: \"data-testid-import-dashboard-textarea\"\n },\n submit: {\n [MIN_GRAFANA_VERSION]: \"data-testid-load-dashboard\"\n }\n },\n ImportDashboardForm: {\n name: {\n [MIN_GRAFANA_VERSION]: \"data-testid-import-dashboard-title\"\n },\n submit: {\n [MIN_GRAFANA_VERSION]: \"data-testid-import-dashboard-submit\"\n }\n },\n PanelAlertTabContent: {\n content: {\n \"10.2.3\": \"data-testid Unified alert editor tab content\",\n [MIN_GRAFANA_VERSION]: \"Unified alert editor tab content\"\n }\n },\n VisualizationPreview: {\n card: {\n [MIN_GRAFANA_VERSION]: (name) => `data-testid suggestion-${name}`\n }\n },\n ColorSwatch: {\n name: {\n [MIN_GRAFANA_VERSION]: \"data-testid-colorswatch\"\n }\n },\n DashboardRow: {\n title: {\n [MIN_GRAFANA_VERSION]: (title) => `data-testid dashboard-row-title-${title}`\n }\n },\n UserProfile: {\n profileSaveButton: {\n [MIN_GRAFANA_VERSION]: \"data-testid-user-profile-save\"\n },\n preferencesSaveButton: {\n [MIN_GRAFANA_VERSION]: \"data-testid-shared-prefs-save\"\n },\n orgsTable: {\n [MIN_GRAFANA_VERSION]: \"data-testid-user-orgs-table\"\n },\n sessionsTable: {\n [MIN_GRAFANA_VERSION]: \"data-testid-user-sessions-table\"\n },\n extensionPointTabs: {\n \"10.2.3\": \"data-testid-extension-point-tabs\"\n },\n extensionPointTab: {\n \"10.2.3\": (tabId) => `data-testid-extension-point-tab-${tabId}`\n }\n },\n FileUpload: {\n inputField: {\n \"9.0.0\": \"data-testid-file-upload-input-field\"\n },\n fileNameSpan: {\n \"9.0.0\": \"data-testid-file-upload-file-name\"\n }\n },\n DebugOverlay: {\n wrapper: {\n \"9.2.0\": \"debug-overlay\"\n }\n },\n OrgRolePicker: {\n input: {\n \"9.5.0\": \"Role\"\n }\n },\n AnalyticsToolbarButton: {\n button: {\n \"9.5.0\": \"Dashboard insights\"\n }\n },\n Variables: {\n variableOption: {\n \"9.5.0\": \"data-testid variable-option\"\n },\n variableLinkWrapper: {\n \"11.1.1\": \"data-testid variable-link-wrapper\"\n }\n },\n Annotations: {\n annotationsTypeInput: {\n \"11.1.0\": \"data-testid annotations-type-input\",\n [MIN_GRAFANA_VERSION]: \"annotations-type-input\"\n },\n annotationsChoosePanelInput: {\n \"11.1.0\": \"data-testid choose-panels-input\",\n [MIN_GRAFANA_VERSION]: \"choose-panels-input\"\n },\n editor: {\n testButton: {\n \"11.0.0\": \"data-testid annotations-test-button\"\n },\n resultContainer: {\n \"11.0.0\": \"data-testid annotations-query-result-container\"\n }\n }\n },\n Tooltip: {\n container: {\n \"10.2.0\": \"data-testid tooltip\"\n }\n },\n ReturnToPrevious: {\n buttonGroup: {\n \"11.0.0\": \"data-testid dismissable button group\"\n },\n backButton: {\n \"11.0.0\": \"data-testid back\"\n },\n dismissButton: {\n \"11.0.0\": \"data-testid dismiss\"\n }\n },\n SQLQueryEditor: {\n selectColumn: {\n \"11.0.0\": \"data-testid select-column\"\n },\n selectColumnInput: { \"11.0.0\": \"data-testid select-column-input\" },\n selectFunctionParameter: { \"11.0.0\": (name) => `data-testid select-function-parameter-${name}` },\n selectAggregation: {\n \"11.0.0\": \"data-testid select-aggregation\"\n },\n selectAggregationInput: { \"11.0.0\": \"data-testid select-aggregation-input\" },\n selectAlias: {\n \"11.0.0\": \"data-testid select-alias\"\n },\n selectAliasInput: { \"11.0.0\": \"data-testid select-alias-input\" },\n selectInputParameter: { \"11.0.0\": \"data-testid select-input-parameter\" },\n filterConjunction: {\n \"11.0.0\": \"data-testid filter-conjunction\"\n },\n filterField: {\n \"11.0.0\": \"data-testid filter-field\"\n },\n filterOperator: {\n \"11.0.0\": \"data-testid filter-operator\"\n },\n headerTableSelector: {\n \"11.0.0\": \"data-testid header-table-selector\"\n },\n headerFilterSwitch: {\n \"11.0.0\": \"data-testid header-filter-switch\"\n },\n headerGroupSwitch: {\n \"11.0.0\": \"data-testid header-group-switch\"\n },\n headerOrderSwitch: {\n \"11.0.0\": \"data-testid header-order-switch\"\n },\n headerPreviewSwitch: {\n \"11.0.0\": \"data-testid header-preview-switch\"\n }\n },\n EntityNotFound: {\n container: {\n \"11.2.0\": \"data-testid entity-not-found\"\n }\n },\n Portal: {\n container: {\n \"11.5.0\": \"data-testid portal-container\"\n }\n }\n};\n\nexport { versionedComponents };\n//# sourceMappingURL=components.mjs.map\n","import { resolveSelectors } from '../resolver.mjs';\nimport { versionedComponents } from './components.mjs';\nimport { versionedPages } from './pages.mjs';\n\nconst Pages = resolveSelectors(versionedPages);\nconst Components = resolveSelectors(versionedComponents);\nconst selectors = { pages: Pages, components: Components };\n\nexport { Components, Pages, resolveSelectors, selectors, versionedComponents, versionedPages };\n//# sourceMappingURL=index.mjs.map\n","import { MIN_GRAFANA_VERSION } from './constants.mjs';\n\nconst versionedPages = {\n Alerting: {\n AddAlertRule: {\n url: {\n \"10.1.0\": \"/alerting/new/alerting\",\n [MIN_GRAFANA_VERSION]: \"/alerting/new\"\n }\n },\n EditAlertRule: {\n url: {\n [MIN_GRAFANA_VERSION]: (alertRuleUid) => `alerting/${alertRuleUid}/edit`\n }\n }\n },\n Login: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/login\"\n },\n username: {\n \"10.2.3\": \"data-testid Username input field\",\n [MIN_GRAFANA_VERSION]: \"Username input field\"\n },\n password: {\n \"10.2.3\": \"data-testid Password input field\",\n [MIN_GRAFANA_VERSION]: \"Password input field\"\n },\n submit: {\n \"10.2.3\": \"data-testid Login button\",\n [MIN_GRAFANA_VERSION]: \"Login button\"\n },\n skip: {\n \"10.2.3\": \"data-testid Skip change password button\"\n }\n },\n PasswordlessLogin: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/login/passwordless/authenticate\"\n },\n email: {\n \"10.2.3\": \"data-testid Email input field\",\n [MIN_GRAFANA_VERSION]: \"Email input field\"\n },\n submit: {\n \"10.2.3\": \"data-testid PasswordlessLogin button\",\n [MIN_GRAFANA_VERSION]: \"PasswordlessLogin button\"\n }\n },\n Home: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/\"\n }\n },\n DataSource: {\n name: {\n \"10.3.0\": \"data-testid Data source settings page name input field\",\n [MIN_GRAFANA_VERSION]: \"Data source settings page name input field\"\n },\n delete: {\n [MIN_GRAFANA_VERSION]: \"Data source settings page Delete button\"\n },\n readOnly: {\n \"10.3.0\": \"data-testid Data source settings page read only message\",\n [MIN_GRAFANA_VERSION]: \"Data source settings page read only message\"\n },\n saveAndTest: {\n \"10.0.0\": \"data-testid Data source settings page Save and Test button\",\n [MIN_GRAFANA_VERSION]: \"Data source settings page Save and Test button\"\n },\n alert: {\n \"10.3.0\": \"data-testid Data source settings page Alert\",\n [MIN_GRAFANA_VERSION]: \"Data source settings page Alert\"\n }\n },\n DataSources: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/datasources\"\n },\n dataSources: {\n [MIN_GRAFANA_VERSION]: (dataSourceName) => `Data source list item ${dataSourceName}`\n }\n },\n EditDataSource: {\n url: {\n \"9.5.0\": (dataSourceUid) => `/datasources/edit/${dataSourceUid}`\n },\n settings: {\n \"9.5.0\": \"Datasource settings page basic settings\"\n }\n },\n AddDataSource: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/datasources/new\"\n },\n dataSourcePluginsV2: {\n \"9.3.1\": (pluginName) => `Add new data source ${pluginName}`,\n [MIN_GRAFANA_VERSION]: (pluginName) => `Data source plugin item ${pluginName}`\n }\n },\n ConfirmModal: {\n delete: {\n \"10.0.0\": \"data-testid Confirm Modal Danger Button\",\n [MIN_GRAFANA_VERSION]: \"Confirm Modal Danger Button\"\n }\n },\n AddDashboard: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/dashboard/new\"\n },\n itemButton: {\n \"9.5.0\": (title) => `data-testid ${title}`\n },\n addNewPanel: {\n \"11.1.0\": \"data-testid Add new panel\",\n \"8.0.0\": \"Add new panel\",\n [MIN_GRAFANA_VERSION]: \"Add new panel\"\n },\n itemButtonAddViz: {\n [MIN_GRAFANA_VERSION]: \"Add new visualization menu item\"\n },\n addNewRow: {\n \"11.1.0\": \"data-testid Add new row\",\n [MIN_GRAFANA_VERSION]: \"Add new row\"\n },\n addNewPanelLibrary: {\n \"11.1.0\": \"data-testid Add new panel from panel library\",\n [MIN_GRAFANA_VERSION]: \"Add new panel from panel library\"\n },\n Settings: {\n Annotations: {\n List: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/dashboard/new?orgId=1&editview=annotations\"\n }\n },\n Edit: {\n url: {\n [MIN_GRAFANA_VERSION]: (annotationIndex) => `/dashboard/new?editview=annotations&editIndex=${annotationIndex}`\n }\n }\n },\n Variables: {\n List: {\n url: {\n \"11.3.0\": \"/dashboard/new?orgId=1&editview=variables\",\n [MIN_GRAFANA_VERSION]: \"/dashboard/new?orgId=1&editview=templating\"\n }\n },\n Edit: {\n url: {\n \"11.3.0\": (editIndex) => `/dashboard/new?orgId=1&editview=variables&editIndex=${editIndex}`,\n [MIN_GRAFANA_VERSION]: (editIndex) => `/dashboard/new?orgId=1&editview=templating&editIndex=${editIndex}`\n }\n }\n }\n }\n },\n Dashboard: {\n url: {\n [MIN_GRAFANA_VERSION]: (uid) => `/d/${uid}`\n },\n DashNav: {\n nav: {\n [MIN_GRAFANA_VERSION]: \"Dashboard navigation\"\n },\n navV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Dashboard navigation\"\n },\n publicDashboardTag: {\n \"9.1.0\": \"data-testid public dashboard tag\"\n },\n shareButton: {\n \"10.4.0\": \"data-testid share-button\"\n },\n scrollContainer: {\n \"11.1.0\": \"data-testid Dashboard canvas scroll container\"\n },\n newShareButton: {\n container: {\n \"11.1.0\": \"data-testid new share button\"\n },\n shareLink: {\n \"11.1.0\": \"data-testid new share link-button\"\n },\n arrowMenu: {\n \"11.1.0\": \"data-testid new share button arrow menu\"\n },\n menu: {\n container: {\n \"11.1.0\": \"data-testid new share button menu\"\n },\n shareInternally: {\n \"11.1.0\": \"data-testid new share button share internally\"\n },\n shareExternally: {\n \"11.1.1\": \"data-testid new share button share externally\"\n },\n shareSnapshot: {\n \"11.2.0\": \"data-testid new share button share snapshot\"\n }\n }\n },\n NewExportButton: {\n container: {\n \"11.2.0\": \"data-testid new export button\"\n },\n arrowMenu: {\n \"11.2.0\": \"data-testid new export button arrow menu\"\n },\n Menu: {\n container: {\n \"11.2.0\": \"data-testid new export button menu\"\n },\n exportAsJson: {\n \"11.2.0\": \"data-testid new export button export as json\"\n }\n }\n },\n playlistControls: {\n prev: {\n \"11.0.0\": \"data-testid playlist previous dashboard button\"\n },\n stop: {\n \"11.0.0\": \"data-testid playlist stop dashboard button\"\n },\n next: {\n \"11.0.0\": \"data-testid playlist next dashboard button\"\n }\n }\n },\n Controls: {\n \"11.1.0\": \"data-testid dashboard controls\"\n },\n SubMenu: {\n submenu: {\n [MIN_GRAFANA_VERSION]: \"Dashboard submenu\"\n },\n submenuItem: {\n [MIN_GRAFANA_VERSION]: \"data-testid template variable\"\n },\n submenuItemLabels: {\n [MIN_GRAFANA_VERSION]: (item) => `data-testid Dashboard template variables submenu Label ${item}`\n },\n submenuItemValueDropDownValueLinkTexts: {\n [MIN_GRAFANA_VERSION]: (item) => `data-testid Dashboard template variables Variable Value DropDown value link text ${item}`\n },\n submenuItemValueDropDownDropDown: {\n [MIN_GRAFANA_VERSION]: \"Variable options\"\n },\n submenuItemValueDropDownOptionTexts: {\n [MIN_GRAFANA_VERSION]: (item) => `data-testid Dashboard template variables Variable Value DropDown option text ${item}`\n },\n Annotations: {\n annotationsWrapper: {\n \"10.0.0\": \"data-testid annotation-wrapper\"\n },\n annotationLabel: {\n \"10.0.0\": (label) => `data-testid Dashboard annotations submenu Label ${label}`\n },\n annotationToggle: {\n \"10.0.0\": (label) => `data-testid Dashboard annotations submenu Toggle ${label}`\n }\n }\n },\n Settings: {\n Actions: {\n close: {\n \"9.5.0\": \"data-testid dashboard-settings-close\"\n }\n },\n General: {\n deleteDashBoard: {\n \"11.1.0\": \"data-testid Dashboard settings page delete dashboard button\"\n },\n sectionItems: {\n [MIN_GRAFANA_VERSION]: (item) => `Dashboard settings section item ${item}`\n },\n saveDashBoard: {\n [MIN_GRAFANA_VERSION]: \"Dashboard settings aside actions Save button\"\n },\n saveAsDashBoard: {\n [MIN_GRAFANA_VERSION]: \"Dashboard settings aside actions Save As button\"\n },\n title: {\n \"11.2.0\": \"General\"\n }\n },\n Annotations: {\n Edit: {\n urlParams: {\n [MIN_GRAFANA_VERSION]: (annotationIndex) => `editview=annotations&editIndex=${annotationIndex}`\n }\n },\n List: {\n url: {\n [MIN_GRAFANA_VERSION]: (dashboardUid) => `/d/${dashboardUid}?editview=annotations`\n },\n addAnnotationCTAV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Call to action button Add annotation query\"\n },\n annotations: {\n \"10.4.0\": \"data-testid list-annotations\"\n }\n },\n Settings: {\n name: {\n \"11.1.0\": \"data-testid Annotations settings name input\",\n [MIN_GRAFANA_VERSION]: \"Annotations settings name input\"\n }\n },\n NewAnnotation: {\n panelFilterSelect: {\n \"10.0.0\": \"data-testid annotations-panel-filter\"\n },\n showInLabel: {\n \"11.1.0\": \"data-testid show-in-label\"\n },\n previewInDashboard: {\n \"10.0.0\": \"data-testid annotations-preview\"\n },\n delete: {\n \"10.4.0\": \"data-testid annotations-delete\"\n },\n apply: {\n \"10.4.0\": \"data-testid annotations-apply\"\n },\n enable: {\n \"10.4.0\": \"data-testid annotation-enable\"\n },\n hide: {\n \"10.4.0\": \"data-testid annotation-hide\"\n }\n }\n },\n Variables: {\n List: {\n url: {\n \"11.3.0\": (dashboardUid) => `/d/${dashboardUid}?editview=variables`,\n [MIN_GRAFANA_VERSION]: (dashboardUid) => `/d/${dashboardUid}?editview=templating`\n },\n addVariableCTAV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Call to action button Add variable\"\n },\n newButton: {\n [MIN_GRAFANA_VERSION]: \"Variable editor New variable button\"\n },\n table: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Table\"\n },\n tableRowNameFields: {\n [MIN_GRAFANA_VERSION]: (variableName) => `Variable editor Table Name field ${variableName}`\n },\n tableRowDefinitionFields: {\n \"10.1.0\": (variableName) => `Variable editor Table Definition field ${variableName}`\n },\n tableRowArrowUpButtons: {\n [MIN_GRAFANA_VERSION]: (variableName) => `Variable editor Table ArrowUp button ${variableName}`\n },\n tableRowArrowDownButtons: {\n [MIN_GRAFANA_VERSION]: (variableName) => `Variable editor Table ArrowDown button ${variableName}`\n },\n tableRowDuplicateButtons: {\n [MIN_GRAFANA_VERSION]: (variableName) => `Variable editor Table Duplicate button ${variableName}`\n },\n tableRowRemoveButtons: {\n [MIN_GRAFANA_VERSION]: (variableName) => `Variable editor Table Remove button ${variableName}`\n }\n },\n Edit: {\n urlParams: {\n \"11.3.0\": (editIndex) => `editview=variables&editIndex=${editIndex}`,\n [MIN_GRAFANA_VERSION]: (editIndex) => `editview=templating&editIndex=${editIndex}`\n },\n General: {\n headerLink: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Header link\"\n },\n modeLabelNew: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Header mode New\"\n },\n /**\n * @deprecated\n */\n modeLabelEdit: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Header mode Edit\"\n },\n generalNameInput: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Name field\"\n },\n generalNameInputV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Name field\"\n },\n generalTypeSelect: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Type select\"\n },\n generalTypeSelectV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Type select\"\n },\n generalLabelInput: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Label field\"\n },\n generalLabelInputV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Label field\"\n },\n generalHideSelect: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Hide select\"\n },\n generalHideSelectV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Hide select\"\n },\n selectionOptionsAllowCustomValueSwitch: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Allow Custom Value switch\"\n },\n selectionOptionsMultiSwitch: {\n \"10.4.0\": \"data-testid Variable editor Form Multi switch\",\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Multi switch\"\n },\n selectionOptionsIncludeAllSwitch: {\n \"10.4.0\": \"data-testid Variable editor Form IncludeAll switch\",\n [MIN_GRAFANA_VERSION]: \"Variable editor Form IncludeAll switch\"\n },\n selectionOptionsCustomAllInput: {\n \"10.4.0\": \"data-testid Variable editor Form IncludeAll field\",\n [MIN_GRAFANA_VERSION]: \"Variable editor Form IncludeAll field\"\n },\n previewOfValuesOption: {\n \"10.4.0\": \"data-testid Variable editor Preview of Values option\",\n [MIN_GRAFANA_VERSION]: \"Variable editor Preview of Values option\"\n },\n submitButton: {\n \"10.4.0\": \"data-testid Variable editor Run Query button\",\n [MIN_GRAFANA_VERSION]: \"Variable editor Submit button\"\n },\n applyButton: {\n \"9.3.0\": \"data-testid Variable editor Apply button\"\n }\n },\n QueryVariable: {\n queryOptionsDataSourceSelect: {\n \"10.4.0\": \"data-testid Select a data source\",\n \"10.0.0\": \"data-testid Data source picker select container\",\n [MIN_GRAFANA_VERSION]: \"Data source picker select container\"\n },\n queryOptionsRefreshSelect: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Query Refresh select\"\n },\n queryOptionsRefreshSelectV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Query Refresh select\"\n },\n queryOptionsRegExInput: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Query RegEx field\"\n },\n queryOptionsRegExInputV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Query RegEx field\"\n },\n queryOptionsSortSelect: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Query Sort select\"\n },\n queryOptionsSortSelectV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Query Sort select\"\n },\n queryOptionsQueryInput: {\n \"10.4.0\": \"data-testid Variable editor Form Default Variable Query Editor textarea\"\n },\n valueGroupsTagsEnabledSwitch: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Query UseTags switch\"\n },\n valueGroupsTagsTagsQueryInput: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Query TagsQuery field\"\n },\n valueGroupsTagsTagsValuesQueryInput: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Query TagsValuesQuery field\"\n }\n },\n ConstantVariable: {\n constantOptionsQueryInput: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form Constant Query field\"\n },\n constantOptionsQueryInputV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form Constant Query field\"\n }\n },\n DatasourceVariable: {\n datasourceSelect: {\n [MIN_GRAFANA_VERSION]: \"data-testid datasource variable datasource type\"\n }\n },\n TextBoxVariable: {\n textBoxOptionsQueryInput: {\n [MIN_GRAFANA_VERSION]: \"Variable editor Form TextBox Query field\"\n },\n textBoxOptionsQueryInputV2: {\n [MIN_GRAFANA_VERSION]: \"data-testid Variable editor Form TextBox Query field\"\n }\n },\n CustomVariable: {\n customValueInput: {\n [MIN_GRAFANA_VERSION]: \"data-testid custom-variable-input\"\n }\n },\n IntervalVariable: {\n intervalsValueInput: {\n [MIN_GRAFANA_VERSION]: \"data-testid interval variable intervals input\"\n },\n autoEnabledCheckbox: {\n \"10.4.0\": \"data-testid interval variable auto value checkbox\"\n },\n stepCountIntervalSelect: {\n \"10.4.0\": \"data-testid interval variable step count input\"\n },\n minIntervalInput: {\n \"10.4.0\": \"data-testid interval variable mininum interval input\"\n }\n },\n GroupByVariable: {\n dataSourceSelect: {\n \"10.4.0\": \"data-testid Select a data source\"\n },\n infoText: {\n \"10.4.0\": \"data-testid group by variable info text\"\n },\n modeToggle: {\n \"10.4.0\": \"data-testid group by variable mode toggle\"\n }\n },\n AdHocFiltersVariable: {\n datasourceSelect: {\n \"10.4.0\": \"data-testid Select a data source\"\n },\n infoText: {\n \"10.4.0\": \"data-testid ad-hoc filters variable info text\"\n },\n modeToggle: {\n \"11.0.0\": \"data-testid ad-hoc filters variable mode toggle\"\n }\n }\n }\n }\n },\n Annotations: {\n marker: {\n \"10.0.0\": \"data-testid annotation-marker\"\n }\n },\n Rows: {\n Repeated: {\n ConfigSection: {\n warningMessage: {\n \"10.2.0\": \"data-testid Repeated rows warning message\"\n }\n }\n }\n }\n },\n Dashboards: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/dashboards\"\n },\n dashboards: {\n \"10.2.0\": (title) => `Dashboard search item ${title}`\n }\n },\n SaveDashboardAsModal: {\n newName: {\n \"10.2.0\": \"Save dashboard title field\"\n },\n save: {\n \"10.2.0\": \"Save dashboard button\"\n }\n },\n SaveDashboardModal: {\n save: {\n \"10.2.0\": \"Dashboard settings Save Dashboard Modal Save button\"\n },\n saveVariables: {\n \"10.2.0\": \"Dashboard settings Save Dashboard Modal Save variables checkbox\"\n },\n saveTimerange: {\n \"10.2.0\": \"Dashboard settings Save Dashboard Modal Save timerange checkbox\"\n },\n saveRefresh: {\n \"11.1.0\": \"Dashboard settings Save Dashboard Modal Save refresh checkbox\"\n }\n },\n SharePanelModal: {\n linkToRenderedImage: {\n [MIN_GRAFANA_VERSION]: \"Link to rendered image\"\n }\n },\n ShareDashboardModal: {\n PublicDashboard: {\n WillBePublicCheckbox: {\n \"9.1.0\": \"data-testid public dashboard will be public checkbox\"\n },\n LimitedDSCheckbox: {\n \"9.1.0\": \"data-testid public dashboard limited datasources checkbox\"\n },\n CostIncreaseCheckbox: {\n \"9.1.0\": \"data-testid public dashboard cost may increase checkbox\"\n },\n PauseSwitch: {\n \"9.5.0\": \"data-testid public dashboard pause switch\"\n },\n EnableAnnotationsSwitch: {\n \"9.3.0\": \"data-testid public dashboard on off switch for annotations\"\n },\n CreateButton: {\n \"9.5.0\": \"data-testid public dashboard create button\"\n },\n DeleteButton: {\n \"9.3.0\": \"data-testid public dashboard delete button\"\n },\n CopyUrlInput: {\n \"9.1.0\": \"data-testid public dashboard copy url input\"\n },\n CopyUrlButton: {\n \"9.1.0\": \"data-testid public dashboard copy url button\"\n },\n SettingsDropdown: {\n \"10.1.0\": \"data-testid public dashboard settings dropdown\"\n },\n TemplateVariablesWarningAlert: {\n \"9.1.0\": \"data-testid public dashboard disabled template variables alert\"\n },\n UnsupportedDataSourcesWarningAlert: {\n \"9.5.0\": \"data-testid public dashboard unsupported data sources alert\"\n },\n NoUpsertPermissionsWarningAlert: {\n \"9.5.0\": \"data-testid public dashboard no upsert permissions alert\"\n },\n EnableTimeRangeSwitch: {\n \"9.4.0\": \"data-testid public dashboard on off switch for time range\"\n },\n EmailSharingConfiguration: {\n Container: {\n \"9.5.0\": \"data-testid email sharing config container\"\n },\n ShareType: {\n \"9.5.0\": \"data-testid public dashboard share type\"\n },\n EmailSharingInput: {\n \"9.5.0\": \"data-testid public dashboard email sharing input\"\n },\n EmailSharingInviteButton: {\n \"9.5.0\": \"data-testid public dashboard email sharing invite button\"\n },\n EmailSharingList: {\n \"9.5.0\": \"data-testid public dashboard email sharing list\"\n },\n DeleteEmail: {\n \"9.5.0\": \"data-testid public dashboard delete email button\"\n },\n ReshareLink: {\n \"9.5.0\": \"data-testid public dashboard reshare link button\"\n }\n }\n },\n SnapshotScene: {\n url: {\n \"11.1.0\": (key) => `/dashboard/snapshot/${key}`\n },\n PublishSnapshot: {\n \"11.1.0\": \"data-testid publish snapshot button\"\n },\n CopyUrlButton: {\n \"11.1.0\": \"data-testid snapshot copy url button\"\n },\n CopyUrlInput: {\n \"11.1.0\": \"data-testid snapshot copy url input\"\n }\n }\n },\n ShareDashboardDrawer: {\n ShareInternally: {\n container: {\n \"11.3.0\": \"data-testid share internally drawer container\"\n },\n lockTimeRangeSwitch: {\n \"11.3.0\": \"data-testid share internally lock time range switch\"\n },\n shortenUrlSwitch: {\n \"11.3.0\": \"data-testid share internally shorten url switch\"\n },\n copyUrlButton: {\n \"11.3.0\": \"data-testid share internally copy url button\"\n },\n SharePanel: {\n preview: {\n \"11.5.0\": \"data-testid share panel internally image generation preview\"\n },\n widthInput: {\n \"11.5.0\": \"data-testid share panel internally width input\"\n },\n heightInput: {\n \"11.5.0\": \"data-testid share panel internally height input\"\n },\n scaleFactorInput: {\n \"11.5.0\": \"data-testid share panel internally scale factor input\"\n },\n generateImageButton: {\n \"11.5.0\": \"data-testid share panel internally generate image button\"\n },\n downloadImageButton: {\n \"11.5.0\": \"data-testid share panel internally download image button\"\n }\n }\n },\n ShareExternally: {\n container: {\n \"11.3.0\": \"data-testid share externally drawer container\"\n },\n publicAlert: {\n \"11.3.0\": \"data-testid public share alert\"\n },\n emailSharingAlert: {\n \"11.3.0\": \"data-testid email share alert\"\n },\n shareTypeSelect: {\n \"11.3.0\": \"data-testid share externally share type select\"\n },\n Creation: {\n PublicShare: {\n createButton: {\n \"11.3.0\": \"data-testid public share dashboard create button\"\n },\n cancelButton: {\n \"11.3.0\": \"data-testid public share dashboard cancel button\"\n }\n },\n EmailShare: {\n createButton: {\n \"11.3.0\": \"data-testid email share dashboard create button\"\n },\n cancelButton: {\n \"11.3.0\": \"data-testid email share dashboard cancel button\"\n }\n },\n willBePublicCheckbox: {\n \"11.3.0\": \"data-testid share dashboard will be public checkbox\"\n }\n },\n Configuration: {\n enableTimeRangeSwitch: {\n \"11.3.0\": \"data-testid share externally enable time range switch\"\n },\n enableAnnotationsSwitch: {\n \"11.3.0\": \"data-testid share externally enable annotations switch\"\n },\n copyUrlButton: {\n \"11.3.0\": \"data-testid share externally copy url button\"\n },\n revokeAccessButton: {\n \"11.3.0\": \"data-testid share externally revoke access button\"\n },\n toggleAccessButton: {\n \"11.3.0\": \"data-testid share externally pause or resume access button\"\n }\n }\n },\n ShareSnapshot: {\n url: {\n \"11.3.0\": (key) => `/dashboard/snapshot/${key}`\n },\n container: {\n \"11.3.0\": \"data-testid share snapshot drawer container\"\n },\n publishSnapshot: {\n \"11.3.0\": \"data-testid share snapshot publish button\"\n },\n copyUrlButton: {\n \"11.3.0\": \"data-testid share snapshot copy url button\"\n }\n }\n },\n ExportDashboardDrawer: {\n ExportAsJson: {\n container: {\n \"11.3.0\": \"data-testid export as json drawer container\"\n },\n codeEditor: {\n \"11.3.0\": \"data-testid export as json code editor\"\n },\n exportExternallyToggle: {\n \"11.3.0\": \"data-testid export as json externally switch\"\n },\n saveToFileButton: {\n \"11.3.0\": \"data-testid export as json save to file button\"\n },\n copyToClipboardButton: {\n \"11.3.0\": \"data-testid export as json copy to clipboard button\"\n },\n cancelButton: {\n \"11.3.0\": \"data-testid export as json cancel button\"\n }\n }\n },\n PublicDashboard: {\n page: {\n \"9.5.0\": \"public-dashboard-page\"\n },\n NotAvailable: {\n container: {\n \"9.5.0\": \"public-dashboard-not-available\"\n },\n title: {\n \"9.5.0\": \"public-dashboard-title\"\n },\n pausedDescription: {\n \"9.5.0\": \"public-dashboard-paused-description\"\n }\n },\n footer: {\n \"11.0.0\": \"public-dashboard-footer\"\n }\n },\n PublicDashboardScene: {\n loadingPage: {\n \"11.0.0\": \"public-dashboard-scene-loading-page\"\n },\n page: {\n \"11.0.0\": \"public-dashboard-scene-page\"\n },\n controls: {\n \"11.0.0\": \"public-dashboard-controls\"\n }\n },\n RequestViewAccess: {\n form: {\n \"9.5.0\": \"request-view-access-form\"\n },\n recipientInput: {\n \"9.5.0\": \"request-view-access-recipient-input\"\n },\n submitButton: {\n \"9.5.0\": \"request-view-access-submit-button\"\n }\n },\n PublicDashboardConfirmAccess: {\n submitButton: {\n \"10.2.0\": \"data-testid confirm-access-submit-button\"\n }\n },\n Explore: {\n url: {\n [MIN_GRAFANA_VERSION]: \"/explore\"\n },\n General: {\n container: {\n [MIN_GRAFANA_VERSION]: \"data-testid Explore\"\n },\n graph: {\n [MIN_GRAFANA_VERSION]: \"Explore Graph\"\n },\n table: {\n [MIN_GRAFANA_VERSION]: \"Explore Table\"\n },\n scrollView: {\n \"9.0.0\": \"data-testid explorer scroll view\"\n }\n },\n QueryHistory: {\n container: {\n \"11.1.0\": \"data-testid QueryHistory\"\n }\n }\n },\n SoloPanel: {\n url: {\n [MIN_GRAFANA_VERSION]: (page) => `/d-solo/${page}`\n }\n },\n PluginsList: {\n page: {\n [MIN_GRAFANA_VERSION]: \"Plugins list page\"\n },\n list: {\n [MIN_GRAFANA_VERSION]: \"Plugins list\"\n },\n listItem: {\n [MIN_GRAFANA_VERSION]: \"Plugins list item\"\n },\n signatureErrorNotice: {\n \"10.3.0\": \"data-testid Unsigned plugins notice\",\n [MIN_GRAFANA_VERSION]: \"Unsigned plugins notice\"\n }\n },\n PluginPage: {\n page: {\n [MIN_GRAFANA_VERSION]: \"Plugin page\"\n },\n signatureInfo: {\n \"10.3.0\": \"data-testid Plugin signature info\",\n [MIN_GRAFANA_VERSION]: \"Plugin signature info\"\n },\n disabledInfo: {\n \"10.3.0\": \"data-testid Plugin disabled info\",\n [MIN_GRAFANA_VERSION]: \"Plugin disabled info\"\n }\n },\n PlaylistForm: {\n name: {\n [MIN_GRAFANA_VERSION]: \"Playlist name\"\n },\n interval: {\n [MIN_GRAFANA_VERSION]: \"Playlist interval\"\n },\n itemDelete: {\n \"10.2.0\": \"data-testid playlist-form-delete-item\"\n }\n },\n BrowseDashboards: {\n table: {\n body: {\n \"10.2.0\": \"data-testid browse-dashboards-table\"\n },\n row: {\n \"10.2.0\": (name) => `data-testid browse dashboards row ${name}`\n },\n checkbox: {\n \"10.0.0\": (uid) => `data-testid ${uid} checkbox`\n }\n },\n NewFolderForm: {\n form: {\n \"10.2.0\": \"data-testid new folder form\"\n },\n nameInput: {\n \"10.2.0\": \"data-testid new-folder-name-input\"\n },\n createButton: {\n \"10.2.0\": \"data-testid new-folder-create-button\"\n }\n }\n },\n Search: {\n url: {\n \"9.3.0\": \"/?search=openn\"\n },\n FolderView: {\n url: {\n \"9.3.0\": \"/?search=open&layout=folders\"\n }\n }\n },\n PublicDashboards: {\n ListItem: {\n linkButton: {\n \"9.3.0\": \"public-dashboard-link-button\"\n },\n configButton: {\n \"9.3.0\": \"public-dashboard-configuration-button\"\n },\n trashcanButton: {\n \"9.3.0\": \"public-dashboard-remove-button\"\n },\n pauseSwitch: {\n \"10.1.0\": \"data-testid public dashboard pause switch\"\n }\n }\n },\n UserListPage: {\n tabs: {\n allUsers: {\n \"10.0.0\": \"data-testid all-users-tab\"\n },\n orgUsers: {\n \"10.0.0\": \"data-testid org-users-tab\"\n },\n anonUserDevices: {\n \"10.2.3\": \"data-testid anon-user-devices-tab\"\n },\n publicDashboardsUsers: {\n \"10.0.0\": \"data-testid public-dashboards-users-tab\"\n },\n users: {\n \"10.0.0\": \"data-testid users-tab\"\n }\n },\n org: {\n url: {\n \"10.2.0\": \"/admin/users\",\n \"9.5.0\": \"/org/users\"\n }\n },\n admin: {\n url: {\n \"9.5.0\": \"/admin/users\"\n }\n },\n publicDashboards: {\n container: {\n \"11.1.0\": \"data-testid public-dashboards-users-list\"\n }\n },\n UserListAdminPage: {\n container: {\n \"10.0.0\": \"data-testid user-list-admin-page\"\n }\n },\n UsersListPage: {\n container: {\n \"10.0.0\": \"data-testid users-list-page\"\n }\n },\n UserAnonListPage: {\n container: {\n \"10.4.0\": \"data-testid user-anon-list-page\"\n }\n },\n UsersListPublicDashboardsPage: {\n container: {\n \"10.0.0\": \"data-testid users-list-public-dashboards-page\"\n },\n DashboardsListModal: {\n listItem: {\n \"10.0.0\": (uid) => `data-testid dashboards-list-item-${uid}`\n }\n }\n }\n },\n ProfilePage: {\n url: {\n \"10.2.0\": \"/profile\"\n }\n },\n Plugin: {\n url: {\n [MIN_GRAFANA_VERSION]: (pluginId) => `/plugins/${pluginId}`\n }\n }\n};\n\nexport { versionedPages };\n//# sourceMappingURL=pages.mjs.map\n","import uFuzzy from '@leeoniya/ufuzzy';\n\nconst REGEXP_NON_ASCII = /[^ -~]/m;\nconst REGEXP_ONLY_SYMBOLS = /^[\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E]+$/m;\nconst outOfOrderLimit = 5;\nconst maxNeedleLength = 25;\nconst maxFuzzyTerms = 5;\nconst rankThreshold = 1e4;\nconst uf = new uFuzzy({ intraMode: 1 });\nfunction fuzzyFind(options, haystack, needle) {\n let matches = [];\n if (needle === \"\") {\n matches = options;\n } else if (\n // contains non-ascii\n REGEXP_NON_ASCII.test(needle) || // is only ascii symbols (operators)\n REGEXP_ONLY_SYMBOLS.test(needle) || // too long (often copy-paste from somewhere)\n needle.length > maxNeedleLength || uf.split(needle).length > maxFuzzyTerms\n ) {\n for (let i = 0; i < haystack.length; i++) {\n let item = haystack[i];\n if (item.includes(needle)) {\n matches.push(options[i]);\n }\n }\n } else {\n const [idxs, info, order] = uf.search(haystack, needle, outOfOrderLimit, rankThreshold);\n if (idxs == null ? void 0 : idxs.length) {\n if (info && order) {\n matches = order.map((idx) => options[info.idx[idx]]);\n } else {\n matches = idxs.map((idx) => options[idx]);\n }\n }\n }\n return matches;\n}\n\nexport { fuzzyFind };\n//# sourceMappingURL=filter.js.map\n","import { ALL_VARIABLE_TEXT, ALL_VARIABLE_VALUE } from '../constants.js';\nimport { fuzzyFind } from '../filter.js';\n\nfunction getOptionSearcher(options, includeAll = false) {\n let allOptions = options;\n if (includeAll) {\n allOptions = [{ value: ALL_VARIABLE_VALUE, label: ALL_VARIABLE_TEXT }, ...allOptions];\n }\n const haystack = allOptions.map((o) => o.label);\n return (search) => fuzzyFind(allOptions, haystack, search);\n}\n\nexport { getOptionSearcher };\n//# sourceMappingURL=getOptionSearcher.js.map\n","import { isArray } from 'lodash';\nimport React, { useMemo, useState, useEffect } from 'react';\nimport { useTheme2, getSelectStyles, useStyles2, Checkbox, MultiSelect, Select, ToggleAllState } from '@grafana/ui';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { css, cx } from '@emotion/css';\nimport { getOptionSearcher } from './getOptionSearcher.js';\nimport { sceneGraph } from '../../core/sceneGraph/index.js';\n\nconst filterNoOp = () => true;\nconst filterAll = (v) => v.value !== \"$__all\";\nconst determineToggleAllState = (selectedValues, options) => {\n if (selectedValues.length === options.filter(filterAll).length) {\n return ToggleAllState.allSelected;\n } else if (selectedValues.length === 0 || selectedValues.length === 1 && selectedValues[0] && selectedValues[0].value === \"$__all\") {\n return ToggleAllState.noneSelected;\n } else {\n return ToggleAllState.indeterminate;\n }\n};\nfunction toSelectableValue(value, label) {\n return {\n value,\n label: label != null ? label : String(value)\n };\n}\nfunction VariableValueSelect({ model, state }) {\n const { value, text, key, options, includeAll, isReadOnly, allowCustomValue = true } = state;\n const [inputValue, setInputValue] = useState(\"\");\n const [hasCustomValue, setHasCustomValue] = useState(false);\n const selectValue = toSelectableValue(value, String(text));\n const queryController = sceneGraph.getQueryController(model);\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n const onInputChange = (value2, { action }) => {\n if (action === \"input-change\") {\n setInputValue(value2);\n if (model.onSearchChange) {\n model.onSearchChange(value2);\n }\n return value2;\n }\n return value2;\n };\n const filteredOptions = optionSearcher(inputValue);\n const onOpenMenu = () => {\n if (hasCustomValue) {\n setInputValue(String(text));\n }\n };\n const onCloseMenu = () => {\n setInputValue(\"\");\n };\n return /* @__PURE__ */ React.createElement(\n Select,\n {\n id: key,\n isValidNewOption: (inputValue2) => inputValue2.trim().length > 0,\n placeholder: \"Select value\",\n width: \"auto\",\n disabled: isReadOnly,\n value: selectValue,\n inputValue,\n allowCustomValue,\n virtualized: true,\n filterOption: filterNoOp,\n tabSelectsValue: false,\n onInputChange,\n onOpenMenu,\n onCloseMenu,\n options: filteredOptions,\n \"data-testid\": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${value}`),\n onChange: (newValue) => {\n model.changeValueTo(newValue.value, newValue.label, true);\n queryController == null ? void 0 : queryController.startProfile(\"VariableValueSelect\");\n if (hasCustomValue !== newValue.__isNew__) {\n setHasCustomValue(newValue.__isNew__);\n }\n }\n }\n );\n}\nfunction VariableValueSelectMulti({\n model,\n state\n}) {\n const {\n value,\n options,\n key,\n maxVisibleValues,\n noValueOnClear,\n includeAll,\n isReadOnly,\n allowCustomValue = true\n } = state;\n const arrayValue = useMemo(() => isArray(value) ? value : [value], [value]);\n const [uncommittedValue, setUncommittedValue] = useState(arrayValue);\n const [inputValue, setInputValue] = useState(\"\");\n const queryController = sceneGraph.getQueryController(model);\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n useEffect(() => {\n setUncommittedValue(arrayValue);\n }, [arrayValue]);\n const onInputChange = (value2, { action }) => {\n if (action === \"input-change\") {\n setInputValue(value2);\n if (model.onSearchChange) {\n model.onSearchChange(value2);\n }\n return value2;\n }\n if (action === \"input-blur\") {\n setInputValue(\"\");\n return \"\";\n }\n return inputValue;\n };\n const placeholder = options.length > 0 ? \"Select value\" : \"\";\n const filteredOptions = optionSearcher(inputValue);\n return /* @__PURE__ */ React.createElement(\n MultiSelect,\n {\n id: key,\n placeholder,\n width: \"auto\",\n inputValue,\n disabled: isReadOnly,\n value: uncommittedValue,\n noMultiValueWrap: true,\n maxVisibleValues: maxVisibleValues != null ? maxVisibleValues : 5,\n tabSelectsValue: false,\n virtualized: true,\n allowCustomValue,\n toggleAllOptions: {\n enabled: true,\n optionsFilter: filterAll,\n determineToggleAllState\n },\n options: filteredOptions,\n closeMenuOnSelect: false,\n components: { Option: OptionWithCheckbox },\n isClearable: true,\n hideSelectedOptions: false,\n onInputChange,\n onBlur: () => {\n model.changeValueTo(uncommittedValue, void 0, true);\n queryController == null ? void 0 : queryController.startProfile(\"VariableValueSelectMulti\");\n },\n filterOption: filterNoOp,\n \"data-testid\": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${uncommittedValue}`),\n onChange: (newValue, action) => {\n if (action.action === \"clear\" && noValueOnClear) {\n model.changeValueTo([], void 0, true);\n }\n setUncommittedValue(newValue.map((x) => x.value));\n }\n }\n );\n}\nconst OptionWithCheckbox = ({\n children,\n data,\n innerProps,\n innerRef,\n isFocused,\n isSelected,\n indeterminate,\n renderOptionLabel\n}) => {\n var _a;\n const { onMouseMove, onMouseOver, ...rest } = innerProps;\n const theme = useTheme2();\n const selectStyles = getSelectStyles(theme);\n const optionStyles = useStyles2(getOptionStyles);\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n ref: innerRef,\n className: cx(selectStyles.option, isFocused && selectStyles.optionFocused),\n ...rest,\n \"data-testid\": \"data-testid Select option\",\n title: data.title\n },\n /* @__PURE__ */ React.createElement(\"div\", { className: optionStyles.checkbox }, /* @__PURE__ */ React.createElement(Checkbox, { indeterminate, value: isSelected })),\n /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: selectStyles.optionBody,\n \"data-testid\": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownOptionTexts(\n (_a = data.label) != null ? _a : String(data.value)\n )\n },\n /* @__PURE__ */ React.createElement(\"span\", null, children)\n )\n );\n};\nOptionWithCheckbox.displayName = \"SelectMenuOptions\";\nconst getOptionStyles = (theme) => ({\n checkbox: css({\n marginRight: theme.spacing(2)\n })\n});\nfunction MultiOrSingleValueSelect({ model }) {\n const state = model.useState();\n if (state.isMulti) {\n return /* @__PURE__ */ React.createElement(VariableValueSelectMulti, { model, state });\n } else {\n return /* @__PURE__ */ React.createElement(VariableValueSelect, { model, state });\n }\n}\n\nexport { MultiOrSingleValueSelect, OptionWithCheckbox, VariableValueSelect, VariableValueSelectMulti, toSelectableValue };\n//# sourceMappingURL=VariableValueSelect.js.map\n","import { toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils.js';\n\nclass GroupByVariableUrlSyncHandler {\n constructor(_sceneObject) {\n this._sceneObject = _sceneObject;\n this._nextChangeShouldAddHistoryStep = false;\n }\n getKey() {\n return `var-${this._sceneObject.state.name}`;\n }\n getKeys() {\n if (this._sceneObject.state.skipUrlSync) {\n return [];\n }\n return [this.getKey()];\n }\n getUrlState() {\n if (this._sceneObject.state.skipUrlSync) {\n return {};\n }\n return { [this.getKey()]: toUrlValues(this._sceneObject.state.value, this._sceneObject.state.text) };\n }\n updateFromUrl(values) {\n let urlValue = values[this.getKey()];\n if (urlValue != null) {\n if (!this._sceneObject.isActive) {\n this._sceneObject.skipNextValidation = true;\n }\n const { values: values2, texts } = fromUrlValues(urlValue);\n this._sceneObject.changeValueTo(values2, texts);\n }\n }\n performBrowserHistoryAction(callback) {\n this._nextChangeShouldAddHistoryStep = true;\n callback();\n this._nextChangeShouldAddHistoryStep = false;\n }\n shouldCreateHistoryStep(values) {\n return this._nextChangeShouldAddHistoryStep;\n }\n}\nfunction toUrlValues(values, texts) {\n values = Array.isArray(values) ? values : [values];\n texts = Array.isArray(texts) ? texts : [texts];\n return values.map((value, idx) => {\n if (value === void 0 || value === null) {\n return \"\";\n }\n value = String(value);\n let text = texts[idx];\n text = text === void 0 || text === null ? value : String(text);\n return toUrlCommaDelimitedString(value, text);\n });\n}\nfunction fromUrlValues(urlValues) {\n urlValues = Array.isArray(urlValues) ? urlValues : [urlValues];\n return urlValues.reduce(\n (acc, urlValue) => {\n const [value, label] = (urlValue != null ? urlValue : \"\").split(\",\");\n acc.values.push(unescapeUrlDelimiters(value));\n acc.texts.push(unescapeUrlDelimiters(label != null ? label : value));\n return acc;\n },\n {\n values: [],\n texts: []\n }\n );\n}\n\nexport { GroupByVariableUrlSyncHandler };\n//# sourceMappingURL=GroupByVariableUrlSyncHandler.js.map\n","import { isFiltersRequestEnricher } from '../core/types.js';\n\nfunction getEnrichedFiltersRequest(sourceRunner) {\n const root = sourceRunner.getRoot();\n if (isFiltersRequestEnricher(root)) {\n return root.enrichFiltersRequest(sourceRunner);\n }\n return null;\n}\n\nexport { getEnrichedFiltersRequest };\n//# sourceMappingURL=getEnrichedFiltersRequest.js.map\n","var __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar _value;\nclass SafeSerializableSceneObject {\n constructor(value) {\n __privateAdd(this, _value);\n this.text = \"__sceneObject\";\n this.valueOf = () => {\n return __privateGet(this, _value);\n };\n __privateSet(this, _value, value);\n }\n toString() {\n return void 0;\n }\n get value() {\n return this;\n }\n}\n_value = new WeakMap();\n\nexport { SafeSerializableSceneObject };\n//# sourceMappingURL=SafeSerializableSceneObject.js.map\n","import { config } from '@grafana/runtime';\nimport { SafeSerializableSceneObject } from './SafeSerializableSceneObject.js';\n\nfunction shouldWrapInSafeSerializableSceneObject(grafanaVersion) {\n const pattern = /^(\\d+)\\.(\\d+)\\.(\\d+)/;\n const match = grafanaVersion.match(pattern);\n if (!match) {\n return false;\n }\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n if (major === 11) {\n return minor === 0 && patch >= 4 || minor === 1 && patch >= 2 || minor > 1;\n }\n if (major === 10) {\n return minor === 4 && patch >= 8 || minor >= 5;\n }\n return major > 11;\n}\nfunction wrapInSafeSerializableSceneObject(sceneObject) {\n const version = config.buildInfo.version;\n if (shouldWrapInSafeSerializableSceneObject(version)) {\n return new SafeSerializableSceneObject(sceneObject);\n }\n return { value: sceneObject, text: \"__sceneObject\" };\n}\n\nexport { shouldWrapInSafeSerializableSceneObject, wrapInSafeSerializableSceneObject };\n//# sourceMappingURL=wrapInSafeSerializableSceneObject.js.map\n","import React, { useMemo, useState, useEffect } from 'react';\nimport { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid.js';\nimport { sceneGraph } from '../../core/sceneGraph/index.js';\nimport { MultiValueVariable } from '../variants/MultiValueVariable.js';\nimport { lastValueFrom, map, of, from, mergeMap, tap, take } from 'rxjs';\nimport { getDataSource } from '../../utils/getDataSource.js';\nimport { MultiSelect, Select } from '@grafana/ui';\nimport { isArray } from 'lodash';\nimport { handleOptionGroups, dataFromResponse, getQueriesForVariables, responseHasError } from '../utils.js';\nimport { OptionWithCheckbox } from '../components/VariableValueSelect.js';\nimport { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler.js';\nimport { getOptionSearcher } from '../components/getOptionSearcher.js';\nimport { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest.js';\nimport { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject.js';\n\nclass GroupByVariable extends MultiValueVariable {\n constructor(initialState) {\n super({\n isMulti: true,\n name: \"\",\n value: [],\n text: [],\n options: [],\n datasource: null,\n baseFilters: [],\n applyMode: \"auto\",\n layout: \"horizontal\",\n type: \"groupby\",\n ...initialState,\n noValueOnClear: true\n });\n this.isLazy = true;\n this._urlSync = new GroupByVariableUrlSyncHandler(this);\n /**\n * Get possible keys given current filters. Do not call from plugins directly\n */\n this._getKeys = async (ds) => {\n var _a, _b, _c, _d;\n const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, null));\n if (override && override.replace) {\n return override.values;\n }\n if (this.state.defaultOptions) {\n return this.state.defaultOptions.concat(dataFromResponse((_c = override == null ? void 0 : override.values) != null ? _c : []));\n }\n if (!ds.getTagKeys) {\n return [];\n }\n const queries = getQueriesForVariables(this);\n const otherFilters = this.state.baseFilters || [];\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const response = await ds.getTagKeys({\n filters: otherFilters,\n queries,\n timeRange,\n scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue(),\n ...getEnrichedFiltersRequest(this)\n });\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n let keys = dataFromResponse(response);\n if (override) {\n keys = keys.concat(dataFromResponse(override.values));\n }\n const tagKeyRegexFilter = this.state.tagKeyRegexFilter;\n if (tagKeyRegexFilter) {\n keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));\n }\n return keys;\n };\n if (this.state.applyMode === \"auto\") {\n this.addActivationHandler(() => {\n allActiveGroupByVariables.add(this);\n return () => allActiveGroupByVariables.delete(this);\n });\n }\n }\n validateAndUpdate() {\n return this.getValueOptions({}).pipe(\n map((options) => {\n this._updateValueGivenNewOptions(options);\n return {};\n })\n );\n }\n _updateValueGivenNewOptions(options) {\n const { value: currentValue, text: currentText } = this.state;\n const stateUpdate = {\n options,\n loading: false,\n value: currentValue != null ? currentValue : [],\n text: currentText != null ? currentText : []\n };\n this.setState(stateUpdate);\n }\n getValueOptions(args) {\n if (this.state.defaultOptions) {\n return of(\n this.state.defaultOptions.map((o) => ({\n label: o.text,\n value: String(o.value),\n group: o.group\n }))\n );\n }\n this.setState({ loading: true, error: null });\n return from(\n getDataSource(this.state.datasource, {\n __sceneObject: wrapInSafeSerializableSceneObject(this)\n })\n ).pipe(\n mergeMap((ds) => {\n return from(this._getKeys(ds)).pipe(\n tap((response) => {\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n }),\n map((response) => dataFromResponse(response)),\n take(1),\n mergeMap((data) => {\n const a = data.map((i) => {\n return {\n label: i.text,\n value: i.value ? String(i.value) : i.text,\n group: i.group\n };\n });\n return of(a);\n })\n );\n })\n );\n }\n /**\n * Allows clearing the value of the variable to an empty value. Overrides default behavior of a MultiValueVariable\n */\n getDefaultMultiState(options) {\n return { value: [], text: [] };\n }\n}\nGroupByVariable.Component = GroupByVariableRenderer;\nfunction GroupByVariableRenderer({ model }) {\n const {\n value,\n text,\n key,\n isMulti = true,\n maxVisibleValues,\n noValueOnClear,\n options,\n includeAll,\n allowCustomValue = true\n } = model.useState();\n const values = useMemo(() => {\n const arrayValue = isArray(value) ? value : [value];\n const arrayText = isArray(text) ? text : [text];\n return arrayValue.map((value2, idx) => {\n var _a;\n return {\n value: value2,\n label: String((_a = arrayText[idx]) != null ? _a : value2)\n };\n });\n }, [value, text]);\n const [isFetchingOptions, setIsFetchingOptions] = useState(false);\n const [isOptionsOpen, setIsOptionsOpen] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const [uncommittedValue, setUncommittedValue] = useState(values);\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n useEffect(() => {\n setUncommittedValue(values);\n }, [values]);\n const onInputChange = (value2, { action }) => {\n if (action === \"input-change\") {\n setInputValue(value2);\n if (model.onSearchChange) {\n model.onSearchChange(value2);\n }\n return value2;\n }\n if (action === \"input-blur\") {\n setInputValue(\"\");\n return \"\";\n }\n return inputValue;\n };\n const filteredOptions = useMemo(\n () => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),\n [optionSearcher, inputValue]\n );\n return isMulti ? /* @__PURE__ */ React.createElement(\n MultiSelect,\n {\n \"aria-label\": \"Group by selector\",\n \"data-testid\": `GroupBySelect-${key}`,\n id: key,\n placeholder: \"Select value\",\n width: \"auto\",\n allowCustomValue,\n inputValue,\n value: uncommittedValue,\n noMultiValueWrap: true,\n maxVisibleValues: maxVisibleValues != null ? maxVisibleValues : 5,\n tabSelectsValue: false,\n virtualized: true,\n options: filteredOptions,\n filterOption: filterNoOp,\n closeMenuOnSelect: false,\n isOpen: isOptionsOpen,\n isClearable: true,\n hideSelectedOptions: false,\n isLoading: isFetchingOptions,\n components: { Option: OptionWithCheckbox },\n onInputChange,\n onBlur: () => {\n model.changeValueTo(\n uncommittedValue.map((x) => x.value),\n uncommittedValue.map((x) => x.label),\n true\n );\n },\n onChange: (newValue, action) => {\n if (action.action === \"clear\" && noValueOnClear) {\n model.changeValueTo([], void 0, true);\n }\n setUncommittedValue(newValue);\n },\n onOpenMenu: async () => {\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n },\n onCloseMenu: () => {\n setIsOptionsOpen(false);\n }\n }\n ) : /* @__PURE__ */ React.createElement(\n Select,\n {\n \"aria-label\": \"Group by selector\",\n \"data-testid\": `GroupBySelect-${key}`,\n id: key,\n placeholder: \"Select value\",\n width: \"auto\",\n inputValue,\n value: uncommittedValue,\n allowCustomValue,\n noMultiValueWrap: true,\n maxVisibleValues: maxVisibleValues != null ? maxVisibleValues : 5,\n tabSelectsValue: false,\n virtualized: true,\n options: filteredOptions,\n filterOption: filterNoOp,\n closeMenuOnSelect: true,\n isOpen: isOptionsOpen,\n isClearable: true,\n hideSelectedOptions: false,\n noValueOnClear: true,\n isLoading: isFetchingOptions,\n onInputChange,\n onChange: (newValue, action) => {\n if (action.action === \"clear\") {\n setUncommittedValue([]);\n if (noValueOnClear) {\n model.changeValueTo([]);\n }\n return;\n }\n if (newValue == null ? void 0 : newValue.value) {\n setUncommittedValue([newValue]);\n model.changeValueTo([newValue.value], newValue.label ? [newValue.label] : void 0);\n }\n },\n onOpenMenu: async () => {\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n },\n onCloseMenu: () => {\n setIsOptionsOpen(false);\n }\n }\n );\n}\nconst filterNoOp = () => true;\nfunction toSelectableValue(input) {\n const { label, value, group } = input;\n const result = {\n label,\n value\n };\n if (group) {\n result.group = group;\n }\n return result;\n}\n\nexport { GroupByVariable, GroupByVariableRenderer };\n//# sourceMappingURL=GroupByVariable.js.map\n","import { Tooltip, Icon } from '@grafana/ui';\nimport React from 'react';\n\nfunction LoadingIndicator(props) {\n return /* @__PURE__ */ React.createElement(Tooltip, { content: \"Cancel query\" }, /* @__PURE__ */ React.createElement(\n Icon,\n {\n className: \"spin-clockwise\",\n name: \"sync\",\n size: \"xs\",\n role: \"button\",\n onMouseDown: (e) => {\n props.onCancel(e);\n }\n }\n ));\n}\n\nexport { LoadingIndicator };\n//# sourceMappingURL=LoadingIndicator.js.map\n","import React from 'react';\nimport { useStyles2, useTheme2, Tooltip, Icon, IconButton } from '@grafana/ui';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { css, cx } from '@emotion/css';\nimport { LoadingIndicator } from './LoadingIndicator.js';\n\nfunction ControlsLabel(props) {\n const styles = useStyles2(getStyles);\n const theme = useTheme2();\n const isVertical = props.layout === \"vertical\";\n const loadingIndicator = Boolean(props.isLoading) ? /* @__PURE__ */ React.createElement(\n \"div\",\n {\n style: { marginLeft: theme.spacing(1), marginTop: \"-1px\" },\n \"aria-label\": selectors.components.LoadingIndicator.icon\n },\n /* @__PURE__ */ React.createElement(\n LoadingIndicator,\n {\n onCancel: (e) => {\n var _a;\n e.preventDefault();\n e.stopPropagation();\n (_a = props.onCancel) == null ? void 0 : _a.call(props);\n }\n }\n )\n ) : null;\n let errorIndicator = null;\n if (props.error) {\n errorIndicator = /* @__PURE__ */ React.createElement(Tooltip, { content: props.error, placement: \"bottom\" }, /* @__PURE__ */ React.createElement(Icon, { className: styles.errorIcon, name: \"exclamation-triangle\" }));\n }\n let descriptionIndicator = null;\n if (props.description) {\n descriptionIndicator = /* @__PURE__ */ React.createElement(Tooltip, { content: props.description, placement: isVertical ? \"top\" : \"bottom\" }, /* @__PURE__ */ React.createElement(Icon, { className: styles.normalIcon, name: \"info-circle\" }));\n }\n const testId = typeof props.label === \"string\" ? selectors.pages.Dashboard.SubMenu.submenuItemLabels(props.label) : \"\";\n let labelElement;\n if (isVertical) {\n labelElement = /* @__PURE__ */ React.createElement(\"label\", { className: cx(styles.verticalLabel, props.className), \"data-testid\": testId, htmlFor: props.htmlFor }, props.prefix, props.label, descriptionIndicator, errorIndicator, props.icon && /* @__PURE__ */ React.createElement(Icon, { name: props.icon, className: styles.normalIcon }), loadingIndicator, props.onRemove && /* @__PURE__ */ React.createElement(IconButton, { variant: \"secondary\", size: \"xs\", name: \"times\", onClick: props.onRemove, tooltip: \"Remove\" }), props.suffix);\n } else {\n labelElement = /* @__PURE__ */ React.createElement(\"label\", { className: cx(styles.horizontalLabel, props.className), \"data-testid\": testId, htmlFor: props.htmlFor }, props.prefix, errorIndicator, props.icon && /* @__PURE__ */ React.createElement(Icon, { name: props.icon, className: styles.normalIcon }), props.label, descriptionIndicator, loadingIndicator, props.suffix);\n }\n return labelElement;\n}\nconst getStyles = (theme) => ({\n horizontalLabel: css({\n background: theme.isDark ? theme.colors.background.primary : theme.colors.background.secondary,\n display: `flex`,\n alignItems: \"center\",\n padding: theme.spacing(0, 1),\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.bodySmall.fontSize,\n height: theme.spacing(theme.components.height.md),\n lineHeight: theme.spacing(theme.components.height.md),\n borderRadius: `${theme.shape.radius.default} 0 0 ${theme.shape.radius.default}`,\n border: `1px solid ${theme.components.input.borderColor}`,\n position: \"relative\",\n // To make the border line up with the input border\n right: -1,\n whiteSpace: \"nowrap\",\n gap: theme.spacing(0.5)\n }),\n verticalLabel: css({\n display: `flex`,\n alignItems: \"center\",\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.bodySmall.fontSize,\n lineHeight: theme.typography.bodySmall.lineHeight,\n whiteSpace: \"nowrap\",\n marginBottom: theme.spacing(0.5),\n gap: theme.spacing(1)\n }),\n errorIcon: css({\n color: theme.colors.error.text\n }),\n normalIcon: css({\n color: theme.colors.text.secondary\n })\n});\n\nexport { ControlsLabel };\n//# sourceMappingURL=ControlsLabel.js.map\n","import { fuzzyFind } from '../filter.js';\n\nfunction getAdhocOptionSearcher(options) {\n const haystack = options.map((o) => {\n var _a;\n return (_a = o.label) != null ? _a : String(o.value);\n });\n return (search) => fuzzyFind(options, haystack, search);\n}\n\nexport { getAdhocOptionSearcher };\n//# sourceMappingURL=getAdhocOptionSearcher.js.map\n","import React, { useState, useMemo } from 'react';\nimport { isMultiValueOperator } from './AdHocFiltersVariable.js';\nimport { useStyles2, Select, Field, Button } from '@grafana/ui';\nimport { css, cx } from '@emotion/css';\nimport { ControlsLabel } from '../../utils/ControlsLabel.js';\nimport { getAdhocOptionSearcher } from './getAdhocOptionSearcher.js';\nimport { handleOptionGroups } from '../utils.js';\nimport { OptionWithCheckbox } from '../components/VariableValueSelect.js';\n\nfunction keyLabelToOption(key, label) {\n return key !== \"\" ? {\n value: key,\n label: label || key\n } : null;\n}\nconst filterNoOp = () => true;\nfunction AdHocFilterRenderer({ filter, model }) {\n var _a, _b, _c, _d, _e;\n const styles = useStyles2(getStyles);\n const [keys, setKeys] = useState([]);\n const [values, setValues] = useState([]);\n const [isKeysLoading, setIsKeysLoading] = useState(false);\n const [isValuesLoading, setIsValuesLoading] = useState(false);\n const [isKeysOpen, setIsKeysOpen] = useState(false);\n const [isValuesOpen, setIsValuesOpen] = useState(false);\n const [isOperatorOpen, setIsOperatorOpen] = useState(false);\n const [valueInputValue, setValueInputValue] = useState(\"\");\n const [valueHasCustomValue, setValueHasCustomValue] = useState(false);\n const [uncommittedValue, setUncommittedValue] = useState(\n filter.values ? filter.values.map((value, index) => {\n var _a2;\n return keyLabelToOption(value, (_a2 = filter.valueLabels) == null ? void 0 : _a2[index]);\n }) : []\n );\n const isMultiValue = isMultiValueOperator(filter.operator);\n const keyValue = keyLabelToOption(filter.key, filter.keyLabel);\n const valueValue = keyLabelToOption(filter.value, (_a = filter.valueLabels) == null ? void 0 : _a[0]);\n const optionSearcher = useMemo(() => getAdhocOptionSearcher(values), [values]);\n const onAddCustomValue = model.state.onAddCustomValue;\n const onValueInputChange = (value, { action }) => {\n if (action === \"input-change\") {\n setValueInputValue(value);\n }\n return value;\n };\n const onOperatorChange = (v) => {\n var _a2, _b2;\n const existingOperator = filter.operator;\n const newOperator = v.value;\n const update = { operator: newOperator };\n if (isMultiValueOperator(existingOperator) && !isMultiValueOperator(newOperator)) {\n update.value = \"\";\n update.valueLabels = [\"\"];\n update.values = void 0;\n setUncommittedValue([]);\n } else if (!isMultiValueOperator(existingOperator) && isMultiValueOperator(newOperator) && filter.value) {\n update.values = [filter.value];\n setUncommittedValue([\n {\n value: filter.value,\n label: (_b2 = (_a2 = filter.valueLabels) == null ? void 0 : _a2[0]) != null ? _b2 : filter.value\n }\n ]);\n }\n model._updateFilter(filter, update);\n };\n const filteredValueOptions = useMemo(\n () => handleOptionGroups(optionSearcher(valueInputValue)),\n [optionSearcher, valueInputValue]\n );\n const multiValueProps = {\n isMulti: true,\n value: uncommittedValue,\n components: {\n Option: OptionWithCheckbox\n },\n hideSelectedOptions: false,\n closeMenuOnSelect: false,\n openMenuOnFocus: false,\n onChange: (v) => {\n setUncommittedValue(v);\n if (v.some((value) => value.__isNew__)) {\n setValueInputValue(\"\");\n }\n },\n onBlur: () => {\n var _a2, _b2;\n model._updateFilter(filter, {\n value: (_b2 = (_a2 = uncommittedValue[0]) == null ? void 0 : _a2.value) != null ? _b2 : \"\",\n // TODO remove expect-error when we're on the latest version of @grafana/data\n values: uncommittedValue.map((option) => option.value),\n valueLabels: uncommittedValue.map((option) => option.label)\n });\n }\n };\n const valueSelect = /* @__PURE__ */ React.createElement(\n Select,\n {\n virtualized: true,\n allowCustomValue: (_b = model.state.allowCustomValue) != null ? _b : true,\n isValidNewOption: (inputValue) => inputValue.trim().length > 0,\n allowCreateWhileLoading: true,\n formatCreateLabel: (inputValue) => `Use custom value: ${inputValue}`,\n disabled: model.state.readOnly,\n className: cx(styles.value, isValuesOpen ? styles.widthWhenOpen : void 0),\n width: \"auto\",\n value: valueValue,\n filterOption: filterNoOp,\n placeholder: \"Select value\",\n options: filteredValueOptions,\n inputValue: valueInputValue,\n onInputChange: onValueInputChange,\n onChange: (v) => {\n if (onAddCustomValue && v.__isNew__) {\n model._updateFilter(filter, onAddCustomValue(v, filter));\n } else {\n model._updateFilter(filter, {\n value: v.value,\n valueLabels: v.label ? [v.label] : [v.value]\n });\n }\n if (valueHasCustomValue !== v.__isNew__) {\n setValueHasCustomValue(v.__isNew__);\n }\n },\n isOpen: isValuesOpen && !isValuesLoading,\n isLoading: isValuesLoading,\n openMenuOnFocus: true,\n onOpenMenu: async () => {\n var _a2;\n setIsValuesLoading(true);\n setIsValuesOpen(true);\n const values2 = await model._getValuesFor(filter);\n setIsValuesLoading(false);\n setValues(values2);\n if (valueHasCustomValue) {\n setValueInputValue((_a2 = valueValue == null ? void 0 : valueValue.label) != null ? _a2 : \"\");\n }\n },\n onCloseMenu: () => {\n setIsValuesOpen(false);\n setValueInputValue(\"\");\n },\n ...isMultiValue && multiValueProps\n }\n );\n const keySelect = /* @__PURE__ */ React.createElement(\n Select,\n {\n key: `${isValuesLoading ? \"loading\" : \"loaded\"}`,\n disabled: model.state.readOnly,\n className: cx(styles.key, isKeysOpen ? styles.widthWhenOpen : void 0),\n width: \"auto\",\n allowCustomValue: (_c = model.state.allowCustomValue) != null ? _c : true,\n value: keyValue,\n placeholder: \"Select label\",\n options: handleOptionGroups(keys),\n onChange: (v) => {\n model._updateFilter(filter, {\n key: v.value,\n keyLabel: v.label,\n // clear value if key has changed\n value: \"\",\n valueLabels: [\"\"],\n values: void 0\n });\n setUncommittedValue([]);\n },\n autoFocus: filter.key === \"\",\n isOpen: isKeysOpen && !isKeysLoading,\n isLoading: isKeysLoading,\n onOpenMenu: async () => {\n setIsKeysOpen(true);\n setIsKeysLoading(true);\n const keys2 = await model._getKeys(filter.key);\n setIsKeysLoading(false);\n setKeys(keys2);\n },\n onCloseMenu: () => {\n setIsKeysOpen(false);\n },\n onBlur: () => {\n if (filter.key === \"\") {\n model._removeFilter(filter);\n }\n },\n openMenuOnFocus: true\n }\n );\n const operatorSelect = /* @__PURE__ */ React.createElement(\n Select,\n {\n className: cx(styles.operator, {\n [styles.widthWhenOpen]: isOperatorOpen\n }),\n value: filter.operator,\n disabled: model.state.readOnly,\n options: model._getOperators(),\n onChange: onOperatorChange,\n onOpenMenu: () => {\n setIsOperatorOpen(true);\n },\n onCloseMenu: () => {\n setIsOperatorOpen(false);\n }\n }\n );\n if (model.state.layout === \"vertical\") {\n if (filter.key) {\n const label = /* @__PURE__ */ React.createElement(ControlsLabel, { layout: \"vertical\", label: (_d = filter.key) != null ? _d : \"\", onRemove: () => model._removeFilter(filter) });\n return /* @__PURE__ */ React.createElement(Field, { label, \"data-testid\": `AdHocFilter-${filter.key}`, className: styles.field }, /* @__PURE__ */ React.createElement(\"div\", { className: styles.wrapper }, operatorSelect, valueSelect));\n } else {\n return /* @__PURE__ */ React.createElement(Field, { label: \"Select label\", \"data-testid\": `AdHocFilter-${filter.key}`, className: styles.field }, keySelect);\n }\n }\n return /* @__PURE__ */ React.createElement(\"div\", { className: styles.wrapper, \"data-testid\": `AdHocFilter-${filter.key}` }, keySelect, operatorSelect, valueSelect, /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"secondary\",\n \"aria-label\": \"Remove filter\",\n title: \"Remove filter\",\n className: styles.removeButton,\n icon: \"times\",\n \"data-testid\": `AdHocFilter-remove-${(_e = filter.key) != null ? _e : \"\"}`,\n onClick: () => model._removeFilter(filter)\n }\n ));\n}\nconst getStyles = (theme) => ({\n field: css({\n marginBottom: 0\n }),\n wrapper: css({\n display: \"flex\",\n \"> *\": {\n \"&:not(:first-child)\": {\n // Negative margin hides the double-border on adjacent selects\n marginLeft: -1\n },\n \"&:first-child\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n },\n \"&:last-child\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0\n },\n \"&:not(:first-child):not(:last-child)\": {\n borderRadius: 0\n },\n // Fix focus state zIndex issues\n position: \"relative\",\n zIndex: 0,\n // Adjacent borders are overlapping, so raise children up when hovering etc\n // so all that child's borders are visible.\n \"&:hover\": {\n zIndex: 1\n },\n \"&:focus-within\": {\n zIndex: 2\n }\n }\n }),\n widthWhenOpen: css({\n minWidth: theme.spacing(16)\n }),\n value: css({\n flexBasis: \"content\",\n flexShrink: 1,\n minWidth: \"90px\"\n }),\n key: css({\n flexBasis: \"content\",\n minWidth: \"90px\",\n flexShrink: 1\n }),\n operator: css({\n flexShrink: 0,\n flexBasis: \"content\"\n }),\n removeButton: css({\n paddingLeft: theme.spacing(3 / 2),\n paddingRight: theme.spacing(3 / 2),\n borderLeft: \"none\",\n width: theme.spacing(3),\n marginRight: theme.spacing(1),\n boxSizing: \"border-box\",\n // To not have button background and last select border intersect\n position: \"relative\",\n left: \"1px\"\n })\n});\n\nexport { AdHocFilterRenderer };\n//# sourceMappingURL=AdHocFilterRenderer.js.map\n","import React from 'react';\nimport { AdHocFilterRenderer } from './AdHocFilterRenderer.js';\nimport { Button } from '@grafana/ui';\n\nfunction AdHocFilterBuilder({ model, addFilterButtonText }) {\n const { _wip } = model.useState();\n if (!_wip) {\n return /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"secondary\",\n icon: \"plus\",\n title: \"Add filter\",\n \"aria-label\": \"Add filter\",\n \"data-testid\": `AdHocFilter-add`,\n onClick: () => model._addWip()\n },\n addFilterButtonText\n );\n }\n return /* @__PURE__ */ React.createElement(AdHocFilterRenderer, { filter: _wip, model });\n}\n\nexport { AdHocFilterBuilder };\n//# sourceMappingURL=AdHocFilterBuilder.js.map\n","import { isFilterComplete, isMultiValueOperator, FilterOrigin } from './AdHocFiltersVariable.js';\nimport { escapeUrlPipeDelimiters, escapeInjectedFilterUrlDelimiters, toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils.js';\n\nclass AdHocFiltersVariableUrlSyncHandler {\n constructor(_variable) {\n this._variable = _variable;\n }\n getKey() {\n return `var-${this._variable.state.name}`;\n }\n getKeys() {\n return [this.getKey()];\n }\n getUrlState() {\n const filters = this._variable.state.filters;\n const baseFilters = this._variable.state.baseFilters;\n let value = [];\n if (filters.length === 0 && (baseFilters == null ? void 0 : baseFilters.length) === 0) {\n return { [this.getKey()]: [\"\"] };\n }\n if (filters.length) {\n value.push(\n ...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeUrlPipeDelimiters).join(\"|\"))\n );\n }\n if (baseFilters == null ? void 0 : baseFilters.length) {\n value.push(\n ...baseFilters == null ? void 0 : baseFilters.filter(isFilterComplete).filter((filter) => !filter.hidden && filter.origin && filter.originalValue).map(\n (filter) => {\n var _a, _b;\n return toArray(filter).map(escapeInjectedFilterUrlDelimiters).join(\"|\").concat(\n `#${(_b = (_a = filter.originalValue) == null ? void 0 : _a.map(escapeInjectedFilterUrlDelimiters).join(\"|\")) != null ? _b : \"\"}#${filter.origin}`\n );\n }\n )\n );\n }\n return {\n [this.getKey()]: value.length ? value : [\"\"]\n };\n }\n updateFromUrl(values) {\n const urlValue = values[this.getKey()];\n if (urlValue == null) {\n return;\n }\n if (urlValue) {\n const filters = deserializeUrlToFilters(urlValue);\n this._variable.setState({\n filters: filters.filter((f) => !f.origin),\n baseFilters: filters.filter((f) => f.origin)\n });\n }\n }\n}\nfunction deserializeUrlToFilters(value) {\n if (Array.isArray(value)) {\n const values = value;\n return values.map(toFilter).filter(isFilter);\n }\n const filter = toFilter(value);\n return filter === null ? [] : [filter];\n}\nfunction toArray(filter) {\n var _a;\n const result = [toUrlCommaDelimitedString(filter.key, filter.keyLabel), filter.operator];\n if (isMultiValueOperator(filter.operator)) {\n filter.values.forEach((value, index) => {\n var _a2;\n result.push(toUrlCommaDelimitedString(value, (_a2 = filter.valueLabels) == null ? void 0 : _a2[index]));\n });\n } else {\n result.push(toUrlCommaDelimitedString(filter.value, (_a = filter.valueLabels) == null ? void 0 : _a[0]));\n }\n return result;\n}\nfunction toFilter(urlValue) {\n var _a;\n if (typeof urlValue !== \"string\" || urlValue.length === 0) {\n return null;\n }\n const [filter, originalValues, origin] = urlValue.split(\"#\");\n const [key, keyLabel, operator, _operatorLabel, ...values] = filter.split(\"|\").reduce((acc, v) => {\n const [key2, label] = v.split(\",\");\n acc.push(key2, label != null ? label : key2);\n return acc;\n }, []).map(unescapeUrlDelimiters);\n return {\n key,\n keyLabel,\n operator,\n value: values[0],\n values: isMultiValueOperator(operator) ? values.filter((_, index) => index % 2 === 0) : void 0,\n valueLabels: values.filter((_, index) => index % 2 === 1),\n condition: \"\",\n origin: isFilterOrigin(origin) ? origin : void 0,\n originalValue: originalValues && originalValues.length ? (_a = originalValues.split(\"|\")) != null ? _a : [originalValues] : void 0\n };\n}\nfunction isFilterOrigin(value) {\n return value === FilterOrigin.Scopes || value === FilterOrigin.Dashboards;\n}\nfunction isFilter(filter) {\n return filter !== null && typeof filter.key === \"string\" && typeof filter.value === \"string\";\n}\n\nexport { AdHocFiltersVariableUrlSyncHandler };\n//# sourceMappingURL=AdHocFiltersVariableUrlSyncHandler.js.map\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","/*!\n* tabbable 6.2.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\n// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes\n// the entire query to fail, resulting in no nodes found, which will break a lot\n// of things... so we have to rely on JS to identify nodes inside an inert container\nvar candidateSelectors = ['input:not([inert])', 'select:not([inert])', 'textarea:not([inert])', 'a[href]:not([inert])', 'button:not([inert])', '[tabindex]:not(slot):not([inert])', 'audio[controls]:not([inert])', 'video[controls]:not([inert])', '[contenteditable]:not([contenteditable=\"false\"]):not([inert])', 'details>summary:first-of-type:not([inert])', 'details:not([inert])'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Element} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`\n // so it likely would not support `:is([inert] *)` either...\n var result = inert || lookUp && node && isInert(node.parentNode); // recursive\n\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert, all its children are inert\n if (isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.}\n */\nvar getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome,
,