From 9ef275f36182e64051b43d451b24ada93cb4f551 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Thu, 21 Nov 2024 07:42:16 -0800 Subject: [PATCH 01/14] move content codecs to new crate --- Cargo.lock | 12 ++++++++++++ Cargo.toml | 4 +++- examples/cli/Cargo.toml | 1 + examples/cli/cli-client.rs | 2 +- examples/cli/serializable.rs | 8 ++------ xmtp_content_types/Cargo.toml | 18 ++++++++++++++++++ .../src}/group_updated.rs | 2 +- .../mod.rs => xmtp_content_types/src/lib.rs | 12 ++++++++++++ .../src}/membership_change.rs | 2 +- xmtp_content_types/src/test_utils.rs | 15 +++++++++++++++ .../codecs => xmtp_content_types/src}/text.rs | 4 ++-- xmtp_mls/Cargo.toml | 1 + xmtp_mls/src/groups/mls_sync.rs | 4 ++-- xmtp_mls/src/groups/mod.rs | 19 +++++++++---------- xmtp_mls/src/lib.rs | 1 - 15 files changed, 80 insertions(+), 25 deletions(-) create mode 100644 xmtp_content_types/Cargo.toml rename {xmtp_mls/src/codecs => xmtp_content_types/src}/group_updated.rs (98%) rename xmtp_mls/src/codecs/mod.rs => xmtp_content_types/src/lib.rs (72%) rename {xmtp_mls/src/codecs => xmtp_content_types/src}/membership_change.rs (98%) create mode 100644 xmtp_content_types/src/test_utils.rs rename {xmtp_mls/src/codecs => xmtp_content_types/src}/text.rs (97%) diff --git a/Cargo.lock b/Cargo.lock index c6e3452c5..1bd6b2300 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7196,12 +7196,23 @@ dependencies = [ "valuable", "valuable-serde", "xmtp_api_grpc", + "xmtp_content_types", "xmtp_cryptography", "xmtp_id", "xmtp_mls", "xmtp_proto", ] +[[package]] +name = "xmtp_content_types" +version = "0.1.0" +dependencies = [ + "prost", + "rand", + "thiserror 2.0.3", + "xmtp_proto", +] + [[package]] name = "xmtp_cryptography" version = "0.1.0" @@ -7318,6 +7329,7 @@ dependencies = [ "web-sys", "xmtp_api_grpc", "xmtp_api_http", + "xmtp_content_types", "xmtp_cryptography", "xmtp_id", "xmtp_proto", diff --git a/Cargo.toml b/Cargo.toml index 28432cadc..fc18939e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,7 @@ members = [ "xmtp_cryptography", "xmtp_api_grpc", "xmtp_api_http", + "xmtp_content_types", "xmtp_proto", "xmtp_user_preferences", "xmtp_v2", @@ -14,7 +15,8 @@ members = [ "bindings_node", "bindings_ffi", "xtask", - "xmtp_debug" + "xmtp_debug", + "xmtp_content_types" ] # Make the feature resolver explicit. diff --git a/examples/cli/Cargo.toml b/examples/cli/Cargo.toml index 9d837d9a1..8300c42e0 100644 --- a/examples/cli/Cargo.toml +++ b/examples/cli/Cargo.toml @@ -38,6 +38,7 @@ tracing-subscriber = { workspace = true, features = [ valuable = { version = "0.1", features = ["derive"] } valuable-serde = "0.1" xmtp_api_grpc = { path = "../../xmtp_api_grpc" } +xmtp_content_types = { path = "../../xmtp_content_types" } xmtp_cryptography = { path = "../../xmtp_cryptography" } xmtp_id = { path = "../../xmtp_id" } xmtp_mls = { path = "../../xmtp_mls" } diff --git a/examples/cli/cli-client.rs b/examples/cli/cli-client.rs index 9e28e9cc8..e85b0812a 100755 --- a/examples/cli/cli-client.rs +++ b/examples/cli/cli-client.rs @@ -32,6 +32,7 @@ use tracing_subscriber::{ use valuable::Valuable; use xmtp_api_grpc::grpc_api_helper::Client as ClientV3; use xmtp_api_grpc::replication_client::ClientV4; +use xmtp_content_types::{text::TextCodec, ContentCodec}; use xmtp_cryptography::{ signature::{RecoverableSignature, SignatureError}, utils::rng, @@ -47,7 +48,6 @@ use xmtp_mls::XmtpApi; use xmtp_mls::{ builder::ClientBuilderError, client::ClientError, - codecs::{text::TextCodec, ContentCodec}, groups::{device_sync::MessageHistoryUrls, GroupMetadataOptions}, identity::IdentityStrategy, storage::{ diff --git a/examples/cli/serializable.rs b/examples/cli/serializable.rs index cbc3190a6..c6ee793ce 100644 --- a/examples/cli/serializable.rs +++ b/examples/cli/serializable.rs @@ -1,12 +1,8 @@ use prost::Message; use serde::Serialize; use valuable::Valuable; -use xmtp_mls::{ - codecs::{text::TextCodec, ContentCodec}, - groups::MlsGroup, - storage::group_message::StoredGroupMessage, - XmtpApi, -}; +use xmtp_content_types::{text::TextCodec, ContentCodec}; +use xmtp_mls::{groups::MlsGroup, storage::group_message::StoredGroupMessage, XmtpApi}; use xmtp_proto::xmtp::mls::message_contents::EncodedContent; #[derive(Serialize, Debug, Valuable)] diff --git a/xmtp_content_types/Cargo.toml b/xmtp_content_types/Cargo.toml new file mode 100644 index 000000000..c23b21297 --- /dev/null +++ b/xmtp_content_types/Cargo.toml @@ -0,0 +1,18 @@ +[package] +edition = "2021" +name = "xmtp_content_types" +version.workspace = true +license.workspace = true + +[dependencies] +thiserror = { workspace = true } +prost = { workspace = true, features = ["prost-derive"] } +rand = { workspace = true } + +# XMTP/Local +xmtp_proto = { workspace = true, features = ["convert"] } + +# [dev-dependencies] +# xmtp_proto = { workspace = true, features = ["test-utils"] } + + diff --git a/xmtp_mls/src/codecs/group_updated.rs b/xmtp_content_types/src/group_updated.rs similarity index 98% rename from xmtp_mls/src/codecs/group_updated.rs rename to xmtp_content_types/src/group_updated.rs index 09ebea595..7aa797ee0 100644 --- a/xmtp_mls/src/codecs/group_updated.rs +++ b/xmtp_content_types/src/group_updated.rs @@ -52,7 +52,7 @@ pub(crate) mod tests { use xmtp_proto::xmtp::mls::message_contents::{group_updated::Inbox, GroupUpdated}; - use crate::utils::test::rand_string; + use crate::test_utils::rand_string; use super::*; diff --git a/xmtp_mls/src/codecs/mod.rs b/xmtp_content_types/src/lib.rs similarity index 72% rename from xmtp_mls/src/codecs/mod.rs rename to xmtp_content_types/src/lib.rs index dc44e7cf4..7eb1422db 100644 --- a/xmtp_mls/src/codecs/mod.rs +++ b/xmtp_content_types/src/lib.rs @@ -1,6 +1,18 @@ pub mod group_updated; pub mod membership_change; +#[cfg(test)] +mod test_utils; pub mod text; +pub enum ContentType { + GroupMembershipChange, + GroupUpdated, + Reaction, + ReadReceipt, + RemoteAttachment, + Reply, + Text, + TransactionReference, +} use thiserror::Error; diff --git a/xmtp_mls/src/codecs/membership_change.rs b/xmtp_content_types/src/membership_change.rs similarity index 98% rename from xmtp_mls/src/codecs/membership_change.rs rename to xmtp_content_types/src/membership_change.rs index e64f50df6..b83483806 100644 --- a/xmtp_mls/src/codecs/membership_change.rs +++ b/xmtp_content_types/src/membership_change.rs @@ -54,7 +54,7 @@ pub(crate) mod tests { use xmtp_proto::xmtp::mls::message_contents::MembershipChange; - use crate::utils::test::{rand_string, rand_vec}; + use crate::test_utils::{rand_string, rand_vec}; use super::*; diff --git a/xmtp_content_types/src/test_utils.rs b/xmtp_content_types/src/test_utils.rs new file mode 100644 index 000000000..dead0c7e6 --- /dev/null +++ b/xmtp_content_types/src/test_utils.rs @@ -0,0 +1,15 @@ +#[cfg(test)] +use rand::{ + distributions::{Alphanumeric, DistString}, + Rng, +}; + +#[cfg(test)] +pub(crate) fn rand_string() -> String { + Alphanumeric.sample_string(&mut rand::thread_rng(), 24) +} + +#[cfg(test)] +pub(crate) fn rand_vec() -> Vec { + rand::thread_rng().gen::<[u8; 24]>().to_vec() +} diff --git a/xmtp_mls/src/codecs/text.rs b/xmtp_content_types/src/text.rs similarity index 97% rename from xmtp_mls/src/codecs/text.rs rename to xmtp_content_types/src/text.rs index d016f1513..14ce87da0 100644 --- a/xmtp_mls/src/codecs/text.rs +++ b/xmtp_content_types/src/text.rs @@ -55,11 +55,11 @@ impl ContentCodec for TextCodec { #[cfg(test)] pub(crate) mod tests { + use crate::{text::TextCodec, ContentCodec}; + #[cfg(target_arch = "wasm32")] wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_dedicated_worker); - use crate::codecs::{text::TextCodec, ContentCodec}; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] #[cfg_attr(not(target_arch = "wasm32"), test)] fn can_encode_and_decode_text() { diff --git a/xmtp_mls/Cargo.toml b/xmtp_mls/Cargo.toml index 63aa3aba1..4a987341f 100644 --- a/xmtp_mls/Cargo.toml +++ b/xmtp_mls/Cargo.toml @@ -66,6 +66,7 @@ zeroize.workspace = true # XMTP/Local xmtp_cryptography = { workspace = true } +xmtp_content_types = { path = "../xmtp_content_types" } xmtp_id = { path = "../xmtp_id" } xmtp_proto = { workspace = true, features = ["convert"] } diff --git a/xmtp_mls/src/groups/mls_sync.rs b/xmtp_mls/src/groups/mls_sync.rs index e52b85547..abe8dc521 100644 --- a/xmtp_mls/src/groups/mls_sync.rs +++ b/xmtp_mls/src/groups/mls_sync.rs @@ -9,7 +9,6 @@ use super::{ GroupError, IntentError, MlsGroup, ScopedGroupClient, }; use crate::{ - codecs::{group_updated::GroupUpdatedCodec, ContentCodec}, configuration::{ GRPC_DATA_LIMIT, MAX_GROUP_SIZE, MAX_INTENT_PUBLISH_ATTEMPTS, MAX_PAST_EPOCHS, SYNC_UPDATE_INSTALLATIONS_INTERVAL_NS, @@ -59,6 +58,7 @@ use std::{ }; use thiserror::Error; use tracing::debug; +use xmtp_content_types::{group_updated::GroupUpdatedCodec, CodecError, ContentCodec}; use xmtp_id::{InboxId, InboxIdRef}; use xmtp_proto::xmtp::mls::{ api::v1::{ @@ -116,7 +116,7 @@ pub enum GroupMessageProcessingError { #[error(transparent)] Intent(#[from] IntentError), #[error(transparent)] - Codec(#[from] crate::codecs::CodecError), + Codec(#[from] CodecError), #[error("wrong credential type")] WrongCredentialType(#[from] BasicCredentialError), #[error(transparent)] diff --git a/xmtp_mls/src/groups/mod.rs b/xmtp_mls/src/groups/mod.rs index 143ca5f28..3f89cf8b2 100644 --- a/xmtp_mls/src/groups/mod.rs +++ b/xmtp_mls/src/groups/mod.rs @@ -1585,19 +1585,9 @@ pub(crate) mod tests { #[cfg(target_arch = "wasm32")] wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_dedicated_worker); - use diesel::connection::SimpleConnection; - use futures::future::join_all; - use openmls::prelude::Member; - use prost::Message; - use std::sync::Arc; - use xmtp_cryptography::utils::generate_local_wallet; - use xmtp_proto::xmtp::mls::api::v1::group_message::Version; - use xmtp_proto::xmtp::mls::message_contents::EncodedContent; - use crate::{ assert_err, builder::ClientBuilder, - codecs::{group_updated::GroupUpdatedCodec, ContentCodec}, groups::{ build_dm_protected_metadata_extension, build_mutable_metadata_extension_default, build_protected_metadata_extension, @@ -1619,6 +1609,15 @@ pub(crate) mod tests { xmtp_openmls_provider::XmtpOpenMlsProvider, InboxOwner, StreamHandle as _, }; + use diesel::connection::SimpleConnection; + use futures::future::join_all; + use openmls::prelude::Member; + use prost::Message; + use std::sync::Arc; + use xmtp_content_types::{group_updated::GroupUpdatedCodec, ContentCodec}; + use xmtp_cryptography::utils::generate_local_wallet; + use xmtp_proto::xmtp::mls::api::v1::group_message::Version; + use xmtp_proto::xmtp::mls::message_contents::EncodedContent; use super::{group_permissions::PolicySet, MlsGroup}; diff --git a/xmtp_mls/src/lib.rs b/xmtp_mls/src/lib.rs index 86095c223..510500d4d 100644 --- a/xmtp_mls/src/lib.rs +++ b/xmtp_mls/src/lib.rs @@ -4,7 +4,6 @@ pub mod api; pub mod builder; pub mod client; -pub mod codecs; pub mod configuration; pub mod groups; mod hpke; From 04b79c59a178b754ea22fbb1431cf390d98fcda0 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Sun, 24 Nov 2024 16:02:06 -0800 Subject: [PATCH 02/14] fix tests after moving content types to new crate --- Cargo.lock | 1 + xmtp_content_types/Cargo.toml | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1bd6b2300..f93c12545 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7210,6 +7210,7 @@ dependencies = [ "prost", "rand", "thiserror 2.0.3", + "tonic", "xmtp_proto", ] diff --git a/xmtp_content_types/Cargo.toml b/xmtp_content_types/Cargo.toml index c23b21297..5edbc7858 100644 --- a/xmtp_content_types/Cargo.toml +++ b/xmtp_content_types/Cargo.toml @@ -8,11 +8,8 @@ license.workspace = true thiserror = { workspace = true } prost = { workspace = true, features = ["prost-derive"] } rand = { workspace = true } +tonic = { version = "0.12", features = ["transport"] } # XMTP/Local xmtp_proto = { workspace = true, features = ["convert"] } -# [dev-dependencies] -# xmtp_proto = { workspace = true, features = ["test-utils"] } - - From 92a3019c7a09251e42139f6941ef4703c5103c32 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Sun, 24 Nov 2024 16:20:08 -0800 Subject: [PATCH 03/14] added reaction content type --- dev/gen_protos.sh | 2 +- xmtp_content_types/src/lib.rs | 1 + xmtp_content_types/src/reaction.rs | 83 ++ xmtp_proto/Cargo.toml | 3 +- xmtp_proto/src/gen/mod.rs | 6 + xmtp_proto/src/gen/xmtp.identity.api.v1.rs | 444 +++---- xmtp_proto/src/gen/xmtp.message_api.v1.rs | 464 ++++--- xmtp_proto/src/gen/xmtp.mls.api.v1.rs | 1163 ++++++++--------- xmtp_proto/src/gen/xmtp.reactions.rs | 96 ++ xmtp_proto/src/gen/xmtp.reactions.serde.rs | 161 +++ xmtp_proto/src/gen/xmtp.xmtpv4.message_api.rs | 56 +- xmtp_proto/src/gen/xmtp.xmtpv4.payer_api.rs | 10 +- 12 files changed, 1385 insertions(+), 1104 deletions(-) create mode 100644 xmtp_content_types/src/reaction.rs create mode 100644 xmtp_proto/src/gen/xmtp.reactions.rs create mode 100644 xmtp_proto/src/gen/xmtp.reactions.serde.rs diff --git a/dev/gen_protos.sh b/dev/gen_protos.sh index fabae5e81..7dd2312a4 100755 --- a/dev/gen_protos.sh +++ b/dev/gen_protos.sh @@ -6,7 +6,7 @@ if ! cargo install --list | grep "protoc-gen-prost-crate" > /dev/null; then fi fi -if ! buf generate https://github.com/xmtp/proto.git#branch=main,subdir=proto; then +if ! buf generate https://github.com/xmtp/proto.git#branch=cv/reaction-content-type,subdir=proto; then echo "Failed to generate protobuf definitions" exit 1 fi diff --git a/xmtp_content_types/src/lib.rs b/xmtp_content_types/src/lib.rs index 7eb1422db..6eccb27c7 100644 --- a/xmtp_content_types/src/lib.rs +++ b/xmtp_content_types/src/lib.rs @@ -1,5 +1,6 @@ pub mod group_updated; pub mod membership_change; +pub mod reaction; #[cfg(test)] mod test_utils; pub mod text; diff --git a/xmtp_content_types/src/reaction.rs b/xmtp_content_types/src/reaction.rs new file mode 100644 index 000000000..9fffc07f5 --- /dev/null +++ b/xmtp_content_types/src/reaction.rs @@ -0,0 +1,83 @@ +use std::collections::HashMap; + +use prost::Message; + +use xmtp_proto::xmtp::mls::message_contents::{ + ContentTypeId, EncodedContent +}; +use xmtp_proto::xmtp::reactions::Reaction; + +use super::{CodecError, ContentCodec}; + +pub struct ReactionCodec {} + +impl ReactionCodec { + const AUTHORITY_ID: &'static str = "xmtp.org"; + const TYPE_ID: &'static str = "reaction"; +} + +impl ContentCodec for ReactionCodec { + fn content_type() -> ContentTypeId { + ContentTypeId { + authority_id: ReactionCodec::AUTHORITY_ID.to_string(), + type_id: ReactionCodec::TYPE_ID.to_string(), + version_major: 1, + version_minor: 0, + } + } + + fn encode(data: Reaction) -> Result { + let mut buf = Vec::new(); + data.encode(&mut buf) + .map_err(|e| CodecError::Encode(e.to_string()))?; + + Ok(EncodedContent { + r#type: Some(ReactionCodec::content_type()), + parameters: HashMap::new(), + fallback: None, + compression: None, + content: buf, + }) + } + + fn decode(content: EncodedContent) -> Result { + let decoded = Reaction::decode(content.content.as_slice()) + .map_err(|e| CodecError::Decode(e.to_string()))?; + + Ok(decoded) + } +} + +#[cfg(test)] +pub(crate) mod tests { + #[cfg(target_arch = "wasm32")] + wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_dedicated_worker); + + use crate::test_utils::rand_string; + + use super::*; + + #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr(not(target_arch = "wasm32"), test)] + fn test_encode_decode() { + let new_reaction_data = Reaction { + reference: rand_string(), + reference_inbox_id: rand_string(), + action: "added".to_string(), + content: "👍".to_string(), + schema: "unicode".to_string(), + }; + + let encoded = ReactionCodec::encode(new_reaction_data).unwrap(); + assert_eq!( + encoded.clone().r#type.unwrap().type_id, + "reaction" + ); + assert!(!encoded.content.is_empty()); + + let decoded = ReactionCodec::decode(encoded).unwrap(); + assert_eq!(decoded.action, "added".to_string()); + assert_eq!(decoded.content, "👍".to_string()); + assert_eq!(decoded.schema, "unicode".to_string()); + } +} diff --git a/xmtp_proto/Cargo.toml b/xmtp_proto/Cargo.toml index bca40bd06..3b393642c 100644 --- a/xmtp_proto/Cargo.toml +++ b/xmtp_proto/Cargo.toml @@ -29,7 +29,7 @@ test-utils = [] # @@protoc_deletion_point(features) # This section is automatically generated by protoc-gen-prost-crate. # Changes in this area may be lost on regeneration. -proto_full = ["xmtp-identity","xmtp-identity-api-v1","xmtp-identity-associations","xmtp-keystore_api-v1","xmtp-message_api-v1","xmtp-message_contents","xmtp-mls-api-v1","xmtp-mls-database","xmtp-mls-message_contents","xmtp-mls_validation-v1","xmtp-xmtpv4-envelopes","xmtp-xmtpv4-message_api","xmtp-xmtpv4-payer_api"] +proto_full = ["xmtp-identity","xmtp-identity-api-v1","xmtp-identity-associations","xmtp-keystore_api-v1","xmtp-message_api-v1","xmtp-message_contents","xmtp-mls-api-v1","xmtp-mls-database","xmtp-mls-message_contents","xmtp-mls_validation-v1","xmtp-reactions","xmtp-xmtpv4-envelopes","xmtp-xmtpv4-message_api","xmtp-xmtpv4-payer_api"] "xmtp-identity" = [] "xmtp-identity-api-v1" = ["xmtp-identity","xmtp-identity-associations"] "xmtp-identity-associations" = ["xmtp-identity","xmtp-message_contents"] @@ -40,6 +40,7 @@ proto_full = ["xmtp-identity","xmtp-identity-api-v1","xmtp-identity-associations "xmtp-mls-database" = [] "xmtp-mls-message_contents" = [] "xmtp-mls_validation-v1" = ["xmtp-identity-api-v1","xmtp-identity-associations"] +"xmtp-reactions" = [] "xmtp-xmtpv4-envelopes" = ["xmtp-identity-associations","xmtp-mls-api-v1"] "xmtp-xmtpv4-message_api" = ["xmtp-xmtpv4-envelopes"] "xmtp-xmtpv4-payer_api" = ["xmtp-xmtpv4-envelopes"] diff --git a/xmtp_proto/src/gen/mod.rs b/xmtp_proto/src/gen/mod.rs index a85c48491..befa95406 100644 --- a/xmtp_proto/src/gen/mod.rs +++ b/xmtp_proto/src/gen/mod.rs @@ -72,6 +72,12 @@ pub mod xmtp { // @@protoc_insertion_point(xmtp.mls_validation.v1) } } + #[cfg(feature = "xmtp-reactions")] + // @@protoc_insertion_point(attribute:xmtp.reactions) + pub mod reactions { + include!("xmtp.reactions.rs"); + // @@protoc_insertion_point(xmtp.reactions) + } pub mod xmtpv4 { #[cfg(feature = "xmtp-xmtpv4-envelopes")] // @@protoc_insertion_point(attribute:xmtp.xmtpv4.envelopes) diff --git a/xmtp_proto/src/gen/xmtp.identity.api.v1.rs b/xmtp_proto/src/gen/xmtp.identity.api.v1.rs index 3eab51d74..f6304a8dd 100644 --- a/xmtp_proto/src/gen/xmtp.identity.api.v1.rs +++ b/xmtp_proto/src/gen/xmtp.identity.api.v1.rs @@ -141,7 +141,7 @@ pub mod get_inbox_ids_response { } /// Encoded file descriptor set for the `xmtp.identity.api.v1` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0x87, 0x36, 0x0a, 0x1e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2f, 0x61, 0x70, + 0x0a, 0xc5, 0x34, 0x0a, 0x1e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, @@ -323,7 +323,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6d, 0x74, 0x70, 0x5c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x17, 0x58, 0x6d, 0x74, 0x70, 0x3a, 0x3a, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x96, 0x1f, 0x0a, 0x07, 0x12, 0x05, + 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xd4, 0x1d, 0x0a, 0x07, 0x12, 0x05, 0x01, 0x00, 0x8a, 0x01, 0x01, 0x0a, 0x17, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x01, 0x00, 0x12, 0x1a, 0x0d, 0x20, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1d, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, @@ -332,30 +332,25 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x03, 0x07, 0x00, 0x38, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x09, 0x00, 0x3d, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x09, 0x00, 0x3d, 0x0a, 0x09, 0x0a, 0x01, 0x08, 0x12, 0x04, 0x0b, 0x00, 0x10, 0x02, 0x0a, 0x0b, 0x0a, 0x03, 0x08, 0x92, 0x08, 0x12, 0x04, 0x0b, 0x00, 0x10, - 0x02, 0x0a, 0x0c, 0x0a, 0x04, 0x08, 0x92, 0x08, 0x02, 0x12, 0x04, 0x0c, 0x02, 0x0f, 0x03, 0x0a, - 0x0c, 0x0a, 0x05, 0x08, 0x92, 0x08, 0x02, 0x01, 0x12, 0x03, 0x0d, 0x04, 0x18, 0x0a, 0x0c, 0x0a, - 0x05, 0x08, 0x92, 0x08, 0x02, 0x06, 0x12, 0x03, 0x0e, 0x04, 0x12, 0x0a, 0x26, 0x0a, 0x02, 0x06, - 0x00, 0x12, 0x04, 0x13, 0x00, 0x36, 0x01, 0x1a, 0x1a, 0x20, 0x52, 0x50, 0x43, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x4d, 0x4c, 0x53, 0x20, 0x41, - 0x50, 0x49, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x13, 0x08, 0x13, 0x0a, - 0x9d, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x16, 0x02, 0x1b, 0x03, 0x1a, 0x8e, - 0x01, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x58, 0x49, 0x44, 0x20, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x6c, - 0x6c, 0x65, 0x74, 0x2e, 0x20, 0x41, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x0a, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, - 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, - 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x16, 0x06, 0x1b, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x16, 0x1c, 0x38, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x16, 0x43, 0x60, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x00, 0x04, 0x12, 0x04, 0x17, 0x04, 0x1a, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, - 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x17, 0x04, 0x1a, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, - 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x18, 0x06, 0x32, 0x0a, 0x11, - 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x19, 0x06, - 0x0f, 0x0a, 0xc6, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x20, 0x02, 0x25, 0x03, + 0x02, 0x0a, 0x26, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x13, 0x00, 0x36, 0x01, 0x1a, 0x1a, 0x20, + 0x52, 0x50, 0x43, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x77, + 0x20, 0x4d, 0x4c, 0x53, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, + 0x12, 0x03, 0x13, 0x08, 0x13, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, + 0x16, 0x02, 0x1b, 0x03, 0x1a, 0x8e, 0x01, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x58, 0x49, 0x44, 0x20, + 0x6f, 0x72, 0x20, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x20, 0x41, 0x6e, 0x20, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x61, + 0x79, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, + 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x16, 0x06, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x16, 0x1c, + 0x38, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x16, 0x43, 0x60, 0x0a, + 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x17, 0x04, 0x1a, 0x06, 0x0a, 0x11, + 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x17, 0x04, 0x1a, + 0x06, 0x0a, 0xc6, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x20, 0x02, 0x25, 0x03, 0x1a, 0xb7, 0x01, 0x20, 0x55, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, @@ -372,208 +367,201 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x02, 0x12, 0x03, 0x20, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x20, 0x3d, 0x57, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x21, 0x04, 0x24, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x12, 0x04, 0x21, 0x04, 0x24, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, - 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x22, 0x06, 0x2f, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, - 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x23, 0x06, 0x0f, 0x0a, 0x39, 0x0a, 0x04, - 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x28, 0x02, 0x2d, 0x03, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x74, - 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x58, 0x49, 0x44, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x28, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, - 0x28, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x28, 0x2f, - 0x42, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x04, 0x29, 0x04, 0x2c, 0x06, - 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x29, - 0x04, 0x2c, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x04, 0x12, 0x03, 0x2a, 0x06, 0x28, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, - 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x2b, 0x06, 0x0f, 0x0a, 0x44, 0x0a, 0x04, 0x06, 0x00, 0x02, - 0x03, 0x12, 0x04, 0x30, 0x02, 0x35, 0x03, 0x1a, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x20, 0x61, 0x6e, 0x20, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x73, - 0x6d, 0x61, 0x72, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x77, 0x61, - 0x6c, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x30, 0x06, 0x29, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x30, 0x2a, 0x54, 0x0a, 0x0d, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x03, 0x03, 0x12, 0x04, 0x30, 0x5f, 0x8a, 0x01, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x03, 0x04, 0x12, 0x04, 0x31, 0x04, 0x34, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, - 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x31, 0x04, 0x34, 0x06, 0x0a, 0x11, 0x0a, 0x0a, - 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x32, 0x06, 0x42, 0x0a, - 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x33, - 0x06, 0x0f, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x38, 0x00, 0x3a, 0x01, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x38, 0x08, 0x32, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x00, 0x12, 0x03, 0x39, 0x02, 0x4d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, - 0x12, 0x03, 0x39, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x39, 0x0b, 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x39, 0x3e, - 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x39, 0x4b, 0x4c, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x3c, 0x00, 0x45, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x01, 0x01, 0x12, 0x03, 0x3c, 0x08, 0x3a, 0x0a, 0x60, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, - 0x03, 0x3f, 0x02, 0x18, 0x1a, 0x53, 0x20, 0x43, 0x41, 0x49, 0x50, 0x2d, 0x31, 0x30, 0x20, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x41, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x41, 0x49, 0x50, 0x73, 0x2f, 0x62, 0x6c, - 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x69, 0x6e, 0x2f, 0x43, 0x41, 0x49, 0x50, 0x73, 0x2f, 0x63, 0x61, - 0x69, 0x70, 0x2d, 0x31, 0x30, 0x2e, 0x6d, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x00, 0x05, 0x12, 0x03, 0x3f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x3f, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x3f, 0x16, 0x17, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x41, 0x02, 0x23, - 0x1a, 0x3a, 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x76, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x01, 0x04, 0x12, 0x03, 0x41, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x01, 0x05, 0x12, 0x03, 0x41, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, - 0x01, 0x12, 0x03, 0x41, 0x12, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, - 0x03, 0x41, 0x21, 0x22, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x43, 0x02, - 0x16, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, - 0x05, 0x12, 0x03, 0x43, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, - 0x03, 0x43, 0x08, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x43, - 0x14, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x44, 0x02, 0x11, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x05, 0x12, 0x03, 0x44, 0x02, 0x07, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x44, 0x08, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x03, 0x03, 0x12, 0x03, 0x44, 0x0f, 0x10, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, - 0x04, 0x47, 0x00, 0x4f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x47, 0x08, - 0x33, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x03, 0x00, 0x12, 0x04, 0x48, 0x02, 0x4c, 0x03, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x03, 0x00, 0x01, 0x12, 0x03, 0x48, 0x0a, 0x1c, 0x0a, 0x0d, 0x0a, - 0x06, 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x49, 0x04, 0x16, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x49, 0x04, 0x08, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x49, 0x09, 0x11, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x49, 0x14, 0x15, 0x0a, 0x0d, 0x0a, 0x06, - 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x12, 0x03, 0x4a, 0x04, 0x25, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x02, 0x03, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x4a, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x02, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x4a, 0x0d, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x02, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x4a, 0x14, 0x20, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x02, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x4a, 0x23, 0x24, 0x0a, 0x0d, 0x0a, 0x06, 0x04, - 0x02, 0x03, 0x00, 0x02, 0x02, 0x12, 0x03, 0x4b, 0x04, 0x1e, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, - 0x03, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x4b, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, - 0x03, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x4b, 0x0d, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, - 0x03, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x4b, 0x14, 0x19, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, - 0x03, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x4b, 0x1c, 0x1d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, - 0x02, 0x00, 0x12, 0x03, 0x4e, 0x02, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x04, - 0x12, 0x03, 0x4e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x4e, 0x0b, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x4e, 0x1e, - 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x4e, 0x2a, 0x2b, 0x0a, - 0x39, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x52, 0x00, 0x54, 0x01, 0x1a, 0x2d, 0x20, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, - 0x01, 0x12, 0x03, 0x52, 0x08, 0x24, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, - 0x53, 0x02, 0x40, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x53, 0x02, - 0x2b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x53, 0x2c, 0x3b, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x53, 0x3e, 0x3f, 0x0a, 0x3e, 0x0a, - 0x02, 0x04, 0x04, 0x12, 0x03, 0x57, 0x00, 0x28, 0x1a, 0x33, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x20, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x69, 0x73, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x57, 0x08, 0x25, 0x0a, 0x46, 0x0a, 0x02, 0x04, 0x05, 0x12, - 0x04, 0x5a, 0x00, 0x63, 0x01, 0x1a, 0x3a, 0x20, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x5a, 0x08, 0x21, 0x0a, 0x8f, 0x01, - 0x0a, 0x04, 0x04, 0x05, 0x03, 0x00, 0x12, 0x04, 0x5d, 0x02, 0x60, 0x03, 0x1a, 0x80, 0x01, 0x20, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, - 0x73, 0x74, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x0a, 0x20, 0x73, 0x65, 0x74, - 0x20, 0x74, 0x6f, 0x20, 0x30, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x03, 0x00, 0x01, 0x12, 0x03, 0x5d, 0x0a, 0x11, 0x0a, 0x0d, 0x0a, - 0x06, 0x04, 0x05, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x5e, 0x04, 0x18, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x05, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x5e, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x05, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5e, 0x0b, 0x13, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x05, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5e, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x06, - 0x04, 0x05, 0x03, 0x00, 0x02, 0x01, 0x12, 0x03, 0x5f, 0x04, 0x1b, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x05, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x5f, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x05, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x5f, 0x0b, 0x16, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x05, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5f, 0x19, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x05, 0x02, 0x00, 0x12, 0x03, 0x62, 0x02, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, - 0x04, 0x12, 0x03, 0x62, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x62, 0x0b, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x62, - 0x13, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x62, 0x1e, 0x1f, - 0x0a, 0x42, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x66, 0x00, 0x75, 0x01, 0x1a, 0x36, 0x20, 0x52, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x65, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x66, 0x08, 0x22, - 0x0a, 0x3c, 0x0a, 0x04, 0x04, 0x06, 0x03, 0x00, 0x12, 0x04, 0x68, 0x02, 0x6c, 0x03, 0x1a, 0x2e, - 0x20, 0x41, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, - 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x58, 0x49, 0x44, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x6f, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x06, 0x03, 0x00, 0x01, 0x12, 0x03, 0x68, 0x0a, 0x1b, 0x0a, 0x0d, 0x0a, 0x06, - 0x04, 0x06, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x69, 0x04, 0x1b, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x06, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x69, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x06, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x69, 0x0b, 0x16, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x06, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x69, 0x19, 0x1a, 0x0a, 0x0d, 0x0a, 0x06, 0x04, - 0x06, 0x03, 0x00, 0x02, 0x01, 0x12, 0x03, 0x6a, 0x04, 0x23, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, - 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x6a, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, - 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x6a, 0x0b, 0x1e, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, - 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x6a, 0x21, 0x22, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x06, - 0x03, 0x00, 0x02, 0x02, 0x12, 0x03, 0x6b, 0x04, 0x39, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, - 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x6b, 0x04, 0x2d, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, - 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x6b, 0x2e, 0x34, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, - 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x6b, 0x37, 0x38, 0x0a, 0x54, 0x0a, 0x04, 0x04, 0x06, 0x03, - 0x01, 0x12, 0x04, 0x6f, 0x02, 0x72, 0x03, 0x1a, 0x46, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, - 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2c, 0x20, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x03, 0x01, 0x01, 0x12, 0x03, 0x6f, 0x0a, 0x12, 0x0a, 0x0d, 0x0a, - 0x06, 0x04, 0x06, 0x03, 0x01, 0x02, 0x00, 0x12, 0x03, 0x70, 0x04, 0x18, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x06, 0x03, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x70, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x06, 0x03, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x70, 0x0b, 0x13, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x06, 0x03, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x70, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x06, - 0x04, 0x06, 0x03, 0x01, 0x02, 0x01, 0x12, 0x03, 0x71, 0x04, 0x2b, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x06, 0x03, 0x01, 0x02, 0x01, 0x04, 0x12, 0x03, 0x71, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x06, 0x03, 0x01, 0x02, 0x01, 0x06, 0x12, 0x03, 0x71, 0x0d, 0x1e, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x06, 0x03, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x71, 0x1f, 0x26, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x06, 0x03, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x71, 0x29, 0x2a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x06, 0x02, 0x00, 0x12, 0x03, 0x74, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, - 0x04, 0x12, 0x03, 0x74, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x74, 0x0b, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x74, - 0x14, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x74, 0x20, 0x21, - 0x0a, 0x42, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x78, 0x00, 0x7f, 0x01, 0x1a, 0x36, 0x20, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x58, 0x49, 0x44, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x78, 0x08, 0x1a, - 0x0a, 0x34, 0x0a, 0x04, 0x04, 0x07, 0x03, 0x00, 0x12, 0x04, 0x7a, 0x02, 0x7c, 0x03, 0x1a, 0x26, - 0x20, 0x41, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x03, 0x00, 0x01, 0x12, - 0x03, 0x7a, 0x0a, 0x11, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x07, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, - 0x7b, 0x04, 0x17, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x07, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, - 0x7b, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x07, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x7b, 0x0b, 0x12, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x07, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x7b, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x7e, 0x02, 0x20, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x04, 0x12, 0x03, 0x7e, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, 0x7e, 0x0b, 0x12, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7e, 0x13, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x7e, 0x1e, 0x1f, 0x0a, 0x42, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x06, - 0x82, 0x01, 0x00, 0x8a, 0x01, 0x01, 0x1a, 0x34, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x58, 0x49, 0x44, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, - 0x04, 0x08, 0x01, 0x12, 0x04, 0x82, 0x01, 0x08, 0x1b, 0x0a, 0x37, 0x0a, 0x04, 0x04, 0x08, 0x03, - 0x00, 0x12, 0x06, 0x84, 0x01, 0x02, 0x87, 0x01, 0x03, 0x1a, 0x27, 0x20, 0x41, 0x20, 0x73, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x03, 0x00, 0x01, 0x12, 0x04, 0x84, 0x01, 0x0a, - 0x12, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x08, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0x85, 0x01, 0x04, - 0x17, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0x85, 0x01, - 0x04, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x85, - 0x01, 0x0b, 0x12, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, - 0x85, 0x01, 0x15, 0x16, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, - 0x86, 0x01, 0x04, 0x21, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, 0x04, 0x12, - 0x04, 0x86, 0x01, 0x04, 0x0c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, 0x05, - 0x12, 0x04, 0x86, 0x01, 0x0d, 0x13, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, - 0x01, 0x12, 0x04, 0x86, 0x01, 0x14, 0x1c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, - 0x01, 0x03, 0x12, 0x04, 0x86, 0x01, 0x1f, 0x20, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, - 0x12, 0x04, 0x89, 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x04, 0x12, - 0x04, 0x89, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x04, - 0x89, 0x01, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x04, 0x89, - 0x01, 0x14, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x04, 0x89, 0x01, - 0x20, 0x21, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x04, 0x21, 0x04, 0x24, 0x06, 0x0a, 0x39, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, + 0x28, 0x02, 0x2d, 0x03, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x58, 0x49, 0x44, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x28, 0x06, 0x11, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x28, 0x12, 0x24, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x28, 0x2f, 0x42, 0x0a, 0x0d, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x02, 0x04, 0x12, 0x04, 0x29, 0x04, 0x2c, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, + 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x29, 0x04, 0x2c, 0x06, 0x0a, 0x44, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x30, 0x02, 0x35, 0x03, 0x1a, 0x36, 0x20, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x20, 0x61, 0x6e, 0x20, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x20, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x20, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x30, 0x06, + 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x30, 0x2a, 0x54, 0x0a, + 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x04, 0x30, 0x5f, 0x8a, 0x01, 0x0a, 0x0d, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, 0x31, 0x04, 0x34, 0x06, 0x0a, 0x11, 0x0a, + 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x31, 0x04, 0x34, 0x06, + 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x38, 0x00, 0x3a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, + 0x04, 0x00, 0x01, 0x12, 0x03, 0x38, 0x08, 0x32, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, + 0x12, 0x03, 0x39, 0x02, 0x4d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, + 0x39, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x39, 0x0b, + 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x39, 0x3e, 0x48, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x39, 0x4b, 0x4c, 0x0a, 0x0a, 0x0a, + 0x02, 0x04, 0x01, 0x12, 0x04, 0x3c, 0x00, 0x45, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, + 0x12, 0x03, 0x3c, 0x08, 0x3a, 0x0a, 0x60, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x3f, + 0x02, 0x18, 0x1a, 0x53, 0x20, 0x43, 0x41, 0x49, 0x50, 0x2d, 0x31, 0x30, 0x20, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x41, 0x67, 0x6e, + 0x6f, 0x73, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x41, 0x49, 0x50, 0x73, 0x2f, 0x62, 0x6c, 0x6f, 0x62, + 0x2f, 0x6d, 0x61, 0x69, 0x6e, 0x2f, 0x43, 0x41, 0x49, 0x50, 0x73, 0x2f, 0x63, 0x61, 0x69, 0x70, + 0x2d, 0x31, 0x30, 0x2e, 0x6d, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x3f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x3f, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3f, 0x16, + 0x17, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x41, 0x02, 0x23, 0x1a, 0x3a, + 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, + 0x02, 0x01, 0x04, 0x12, 0x03, 0x41, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, + 0x05, 0x12, 0x03, 0x41, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x41, 0x12, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x41, + 0x21, 0x22, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x43, 0x02, 0x16, 0x1a, + 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x05, 0x12, + 0x03, 0x43, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x43, + 0x08, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x43, 0x14, 0x15, + 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x44, 0x02, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x01, 0x02, 0x03, 0x05, 0x12, 0x03, 0x44, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x44, 0x08, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, + 0x03, 0x03, 0x12, 0x03, 0x44, 0x0f, 0x10, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x47, + 0x00, 0x4f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x47, 0x08, 0x33, 0x0a, + 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x03, 0x00, 0x12, 0x04, 0x48, 0x02, 0x4c, 0x03, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x02, 0x03, 0x00, 0x01, 0x12, 0x03, 0x48, 0x0a, 0x1c, 0x0a, 0x0d, 0x0a, 0x06, 0x04, + 0x02, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x49, 0x04, 0x16, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, + 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x49, 0x04, 0x08, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, + 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x49, 0x09, 0x11, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, + 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x49, 0x14, 0x15, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x02, + 0x03, 0x00, 0x02, 0x01, 0x12, 0x03, 0x4a, 0x04, 0x25, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, 0x03, + 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x4a, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, 0x03, + 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x4a, 0x0d, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, 0x03, + 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x4a, 0x14, 0x20, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, 0x03, + 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x4a, 0x23, 0x24, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x02, 0x03, + 0x00, 0x02, 0x02, 0x12, 0x03, 0x4b, 0x04, 0x1e, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, + 0x02, 0x02, 0x04, 0x12, 0x03, 0x4b, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, + 0x02, 0x02, 0x05, 0x12, 0x03, 0x4b, 0x0d, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, + 0x02, 0x02, 0x01, 0x12, 0x03, 0x4b, 0x14, 0x19, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, + 0x02, 0x02, 0x03, 0x12, 0x03, 0x4b, 0x1c, 0x1d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, + 0x12, 0x03, 0x4e, 0x02, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x04, 0x12, 0x03, + 0x4e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, 0x4e, 0x0b, + 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x4e, 0x1e, 0x27, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x4e, 0x2a, 0x2b, 0x0a, 0x39, 0x0a, + 0x02, 0x04, 0x03, 0x12, 0x04, 0x52, 0x00, 0x54, 0x01, 0x1a, 0x2d, 0x20, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, + 0x03, 0x52, 0x08, 0x24, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x53, 0x02, + 0x40, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x53, 0x02, 0x2b, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x53, 0x2c, 0x3b, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x53, 0x3e, 0x3f, 0x0a, 0x3e, 0x0a, 0x02, 0x04, + 0x04, 0x12, 0x03, 0x57, 0x00, 0x28, 0x1a, 0x33, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, + 0x04, 0x01, 0x12, 0x03, 0x57, 0x08, 0x25, 0x0a, 0x46, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, 0x5a, + 0x00, 0x63, 0x01, 0x1a, 0x3a, 0x20, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x0a, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x5a, 0x08, 0x21, 0x0a, 0x8f, 0x01, 0x0a, 0x04, + 0x04, 0x05, 0x03, 0x00, 0x12, 0x04, 0x5d, 0x02, 0x60, 0x03, 0x1a, 0x80, 0x01, 0x20, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, + 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x2e, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x20, + 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x0a, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, + 0x6f, 0x20, 0x30, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x05, 0x03, 0x00, 0x01, 0x12, 0x03, 0x5d, 0x0a, 0x11, 0x0a, 0x0d, 0x0a, 0x06, 0x04, + 0x05, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x5e, 0x04, 0x18, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x05, + 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x5e, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x05, + 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5e, 0x0b, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x05, + 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5e, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x05, + 0x03, 0x00, 0x02, 0x01, 0x12, 0x03, 0x5f, 0x04, 0x1b, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x05, 0x03, + 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x5f, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x05, 0x03, + 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x5f, 0x0b, 0x16, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x05, 0x03, + 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x5f, 0x19, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x05, 0x02, + 0x00, 0x12, 0x03, 0x62, 0x02, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x04, 0x12, + 0x03, 0x62, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x62, + 0x0b, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x62, 0x13, 0x1b, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x62, 0x1e, 0x1f, 0x0a, 0x42, + 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x66, 0x00, 0x75, 0x01, 0x1a, 0x36, 0x20, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x66, 0x08, 0x22, 0x0a, 0x3c, + 0x0a, 0x04, 0x04, 0x06, 0x03, 0x00, 0x12, 0x04, 0x68, 0x02, 0x6c, 0x03, 0x1a, 0x2e, 0x20, 0x41, + 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x69, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x58, 0x49, 0x44, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x6f, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x06, 0x03, 0x00, 0x01, 0x12, 0x03, 0x68, 0x0a, 0x1b, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x06, + 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x69, 0x04, 0x1b, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, + 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x69, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, + 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x69, 0x0b, 0x16, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, + 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x69, 0x19, 0x1a, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x06, 0x03, + 0x00, 0x02, 0x01, 0x12, 0x03, 0x6a, 0x04, 0x23, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, 0x00, + 0x02, 0x01, 0x05, 0x12, 0x03, 0x6a, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, 0x00, + 0x02, 0x01, 0x01, 0x12, 0x03, 0x6a, 0x0b, 0x1e, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, 0x00, + 0x02, 0x01, 0x03, 0x12, 0x03, 0x6a, 0x21, 0x22, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x06, 0x03, 0x00, + 0x02, 0x02, 0x12, 0x03, 0x6b, 0x04, 0x39, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, 0x00, 0x02, + 0x02, 0x06, 0x12, 0x03, 0x6b, 0x04, 0x2d, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, 0x00, 0x02, + 0x02, 0x01, 0x12, 0x03, 0x6b, 0x2e, 0x34, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, 0x00, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x6b, 0x37, 0x38, 0x0a, 0x54, 0x0a, 0x04, 0x04, 0x06, 0x03, 0x01, 0x12, + 0x04, 0x6f, 0x02, 0x72, 0x03, 0x1a, 0x46, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, + 0x67, 0x6c, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x06, 0x03, 0x01, 0x01, 0x12, 0x03, 0x6f, 0x0a, 0x12, 0x0a, 0x0d, 0x0a, 0x06, 0x04, + 0x06, 0x03, 0x01, 0x02, 0x00, 0x12, 0x03, 0x70, 0x04, 0x18, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, + 0x03, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x70, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, + 0x03, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x70, 0x0b, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, + 0x03, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x70, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x06, + 0x03, 0x01, 0x02, 0x01, 0x12, 0x03, 0x71, 0x04, 0x2b, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, + 0x01, 0x02, 0x01, 0x04, 0x12, 0x03, 0x71, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, + 0x01, 0x02, 0x01, 0x06, 0x12, 0x03, 0x71, 0x0d, 0x1e, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, + 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x71, 0x1f, 0x26, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x06, 0x03, + 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x71, 0x29, 0x2a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x06, 0x02, + 0x00, 0x12, 0x03, 0x74, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x04, 0x12, + 0x03, 0x74, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x03, 0x74, + 0x0b, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x74, 0x14, 0x1d, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x74, 0x20, 0x21, 0x0a, 0x42, + 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x78, 0x00, 0x7f, 0x01, 0x1a, 0x36, 0x20, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x58, 0x49, 0x44, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x78, 0x08, 0x1a, 0x0a, 0x34, + 0x0a, 0x04, 0x04, 0x07, 0x03, 0x00, 0x12, 0x04, 0x7a, 0x02, 0x7c, 0x03, 0x1a, 0x26, 0x20, 0x41, + 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x03, 0x00, 0x01, 0x12, 0x03, 0x7a, + 0x0a, 0x11, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x07, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x7b, 0x04, + 0x17, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x07, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x7b, 0x04, + 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x07, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7b, 0x0b, + 0x12, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x07, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x7b, 0x15, + 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x7e, 0x02, 0x20, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x04, 0x12, 0x03, 0x7e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, 0x7e, 0x0b, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x00, 0x01, 0x12, 0x03, 0x7e, 0x13, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, + 0x03, 0x12, 0x03, 0x7e, 0x1e, 0x1f, 0x0a, 0x42, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x06, 0x82, 0x01, + 0x00, 0x8a, 0x01, 0x01, 0x1a, 0x34, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x58, 0x49, 0x44, 0x73, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x08, + 0x01, 0x12, 0x04, 0x82, 0x01, 0x08, 0x1b, 0x0a, 0x37, 0x0a, 0x04, 0x04, 0x08, 0x03, 0x00, 0x12, + 0x06, 0x84, 0x01, 0x02, 0x87, 0x01, 0x03, 0x1a, 0x27, 0x20, 0x41, 0x20, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x03, 0x00, 0x01, 0x12, 0x04, 0x84, 0x01, 0x0a, 0x12, 0x0a, + 0x0e, 0x0a, 0x06, 0x04, 0x08, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0x85, 0x01, 0x04, 0x17, 0x0a, + 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0x85, 0x01, 0x04, 0x0a, + 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x85, 0x01, 0x0b, + 0x12, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0x85, 0x01, + 0x15, 0x16, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0x86, 0x01, + 0x04, 0x21, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x86, + 0x01, 0x04, 0x0c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, + 0x86, 0x01, 0x0d, 0x13, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, + 0x04, 0x86, 0x01, 0x14, 0x1c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x08, 0x03, 0x00, 0x02, 0x01, 0x03, + 0x12, 0x04, 0x86, 0x01, 0x1f, 0x20, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x04, + 0x89, 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x04, 0x12, 0x04, 0x89, + 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x04, 0x89, 0x01, + 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x04, 0x89, 0x01, 0x14, + 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x04, 0x89, 0x01, 0x20, 0x21, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("xmtp.identity.api.v1.serde.rs"); include!("xmtp.identity.api.v1.tonic.rs"); diff --git a/xmtp_proto/src/gen/xmtp.message_api.v1.rs b/xmtp_proto/src/gen/xmtp.message_api.v1.rs index cdc466411..cf725696d 100644 --- a/xmtp_proto/src/gen/xmtp.message_api.v1.rs +++ b/xmtp_proto/src/gen/xmtp.message_api.v1.rs @@ -280,7 +280,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x1e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1e, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1e, 0x16, 0x17, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, - 0x0a, 0xb7, 0x31, 0x0a, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, + 0x0a, 0xcf, 0x2f, 0x0a, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, @@ -422,29 +422,24 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x58, 0x6d, 0x74, 0x70, 0x5c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x58, 0x6d, 0x74, 0x70, 0x3a, 0x3a, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xc3, 0x1f, 0x0a, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xdb, 0x1d, 0x0a, 0x07, 0x12, 0x05, 0x01, 0x00, 0x90, 0x01, 0x01, 0x0a, 0x17, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x01, 0x00, 0x12, 0x1a, 0x0d, 0x20, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1c, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x38, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x07, 0x00, 0x41, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x07, 0x00, 0x41, 0x0a, 0x09, 0x0a, 0x01, 0x08, 0x12, 0x04, 0x09, 0x00, 0x0e, - 0x02, 0x0a, 0x0b, 0x0a, 0x03, 0x08, 0x92, 0x08, 0x12, 0x04, 0x09, 0x00, 0x0e, 0x02, 0x0a, 0x0c, - 0x0a, 0x04, 0x08, 0x92, 0x08, 0x02, 0x12, 0x04, 0x0a, 0x02, 0x0d, 0x03, 0x0a, 0x0c, 0x0a, 0x05, - 0x08, 0x92, 0x08, 0x02, 0x01, 0x12, 0x03, 0x0b, 0x04, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x08, 0x92, - 0x08, 0x02, 0x06, 0x12, 0x03, 0x0c, 0x04, 0x12, 0x0a, 0x11, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, - 0x11, 0x00, 0x39, 0x01, 0x1a, 0x05, 0x20, 0x52, 0x50, 0x43, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, - 0x00, 0x01, 0x12, 0x03, 0x11, 0x08, 0x12, 0x0a, 0x2f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, - 0x04, 0x13, 0x02, 0x18, 0x03, 0x1a, 0x21, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x13, 0x06, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, - 0x03, 0x13, 0x0e, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x13, - 0x27, 0x36, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x14, 0x04, 0x17, - 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, - 0x14, 0x04, 0x17, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x04, 0x12, 0x03, 0x15, 0x06, 0x21, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, - 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x16, 0x06, 0x0f, 0x0a, 0x4b, 0x0a, 0x04, 0x06, 0x00, + 0x02, 0x0a, 0x0b, 0x0a, 0x03, 0x08, 0x92, 0x08, 0x12, 0x04, 0x09, 0x00, 0x0e, 0x02, 0x0a, 0x11, + 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x11, 0x00, 0x39, 0x01, 0x1a, 0x05, 0x20, 0x52, 0x50, 0x43, + 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x11, 0x08, 0x12, 0x0a, 0x2f, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x13, 0x02, 0x18, 0x03, 0x1a, 0x21, 0x20, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x13, 0x06, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x13, 0x0e, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x13, 0x27, 0x36, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, + 0x04, 0x12, 0x04, 0x14, 0x04, 0x17, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, + 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x14, 0x04, 0x17, 0x06, 0x0a, 0x4b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x1a, 0x02, 0x1f, 0x03, 0x1a, 0x3d, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, @@ -455,227 +450,218 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x31, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1a, 0x32, 0x3a, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x1b, 0x04, 0x1e, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x1b, 0x04, 0x1e, - 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, - 0x03, 0x1c, 0x06, 0x23, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x07, 0x12, 0x03, 0x1d, 0x06, 0x0f, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, - 0x12, 0x03, 0x23, 0x02, 0x46, 0x1a, 0x8f, 0x01, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, - 0x66, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x62, 0x69, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6c, 0x69, 0x6e, 0x74, 0x3a, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x3a, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x52, 0x50, 0x43, - 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, - 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x23, 0x06, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, - 0x23, 0x11, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x23, 0x18, - 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x23, 0x33, 0x39, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x23, 0x3a, 0x42, 0x0a, 0x35, 0x0a, - 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x25, 0x02, 0x2a, 0x03, 0x1a, 0x27, 0x20, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x25, - 0x06, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x25, 0x13, 0x26, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x25, 0x31, 0x37, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x25, 0x38, 0x40, 0x0a, 0x0d, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, 0x26, 0x04, 0x29, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, - 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x26, 0x04, 0x29, 0x06, 0x0a, 0x11, - 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x27, 0x06, - 0x27, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, - 0x03, 0x28, 0x06, 0x0f, 0x0a, 0x2c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x2c, 0x02, - 0x31, 0x03, 0x1a, 0x1e, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x2c, 0x06, 0x0b, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x2c, 0x0c, 0x18, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x2c, 0x23, 0x30, 0x0a, 0x0d, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x2d, 0x04, 0x30, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, - 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x2d, 0x04, 0x30, 0x06, 0x0a, 0x11, - 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x2e, 0x06, - 0x1f, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, - 0x03, 0x2f, 0x06, 0x0f, 0x0a, 0x46, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x04, 0x33, 0x02, - 0x38, 0x03, 0x1a, 0x38, 0x20, 0x42, 0x61, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, - 0x20, 0x6f, 0x66, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, - 0x65, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x33, 0x06, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x05, 0x02, 0x12, 0x03, 0x33, 0x11, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, - 0x03, 0x12, 0x03, 0x33, 0x2d, 0x3f, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, - 0x04, 0x34, 0x04, 0x37, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x12, 0x04, 0x34, 0x04, 0x37, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x05, - 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x35, 0x06, 0x25, 0x0a, 0x11, 0x0a, 0x0a, 0x06, - 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x36, 0x06, 0x0f, 0x0a, 0x1c, - 0x0a, 0x02, 0x05, 0x00, 0x12, 0x04, 0x3c, 0x00, 0x40, 0x01, 0x1a, 0x10, 0x20, 0x53, 0x6f, 0x72, - 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, - 0x05, 0x00, 0x01, 0x12, 0x03, 0x3c, 0x05, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, - 0x12, 0x03, 0x3d, 0x02, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x3d, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x3d, 0x1f, - 0x20, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x03, 0x3e, 0x02, 0x1f, 0x0a, 0x0c, - 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3e, 0x02, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, - 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x3e, 0x1d, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, - 0x02, 0x02, 0x12, 0x03, 0x3f, 0x02, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x3f, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, - 0x3f, 0x1e, 0x1f, 0x0a, 0xa0, 0x01, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x45, 0x00, 0x48, 0x01, - 0x1a, 0x93, 0x01, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, - 0x64, 0x20, 0x6f, 0x66, 0x66, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x2d, - 0x77, 0x61, 0x6b, 0x75, 0x20, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, - 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x72, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, - 0x74, 0x79, 0x2e, 0x0a, 0x20, 0x42, 0x6f, 0x74, 0x68, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x64, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x45, - 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x46, 0x02, 0x13, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x46, 0x02, 0x07, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x46, 0x08, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x46, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x01, 0x12, 0x03, 0x47, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, - 0x03, 0x47, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x47, - 0x09, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x47, 0x1a, 0x1b, - 0x0a, 0x3e, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x4b, 0x00, 0x52, 0x01, 0x1a, 0x32, 0x20, 0x57, - 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x6f, 0x74, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x0a, - 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x4b, 0x08, 0x0e, 0x0a, 0xaf, 0x01, 0x0a, - 0x04, 0x04, 0x01, 0x08, 0x00, 0x12, 0x04, 0x4f, 0x02, 0x51, 0x03, 0x1a, 0xa0, 0x01, 0x20, 0x4d, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x20, 0x61, 0x20, 0x6f, 0x6e, 0x65, 0x2d, 0x6f, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, - 0x61, 0x73, 0x20, 0x49, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, - 0x79, 0x20, 0x77, 0x65, 0x0a, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, - 0x20, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x72, - 0x74, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, - 0x61, 0x79, 0x20, 0x77, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x20, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x08, 0x00, 0x01, 0x12, 0x03, 0x4f, 0x08, 0x0e, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x50, 0x04, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x00, 0x06, 0x12, 0x03, 0x50, 0x04, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x50, 0x10, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x50, 0x18, 0x19, 0x0a, 0x82, 0x01, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x56, 0x00, 0x5b, 0x01, - 0x1a, 0x76, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x2d, 0x77, - 0x61, 0x6b, 0x75, 0x20, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x20, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x75, 0x72, 0x20, 0x53, 0x6f, - 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x75, 0x6d, - 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, - 0x03, 0x56, 0x08, 0x12, 0x0a, 0x4b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x58, 0x02, - 0x13, 0x1a, 0x3e, 0x20, 0x4e, 0x6f, 0x74, 0x65, 0x3a, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, - 0x73, 0x20, 0x61, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x6c, - 0x65, 0x20, 0x67, 0x6f, 0x2d, 0x77, 0x61, 0x6b, 0x75, 0x27, 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, 0x03, 0x58, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x58, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x58, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x02, 0x02, 0x01, 0x12, 0x03, 0x59, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, - 0x06, 0x12, 0x03, 0x59, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, - 0x03, 0x59, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x59, - 0x12, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x5a, 0x02, 0x1e, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x06, 0x12, 0x03, 0x5a, 0x02, 0x0f, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, 0x12, 0x03, 0x5a, 0x10, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x02, 0x02, 0x02, 0x03, 0x12, 0x03, 0x5a, 0x1c, 0x1d, 0x0a, 0x3f, 0x0a, 0x02, 0x04, 0x03, 0x12, - 0x04, 0x5e, 0x00, 0x68, 0x01, 0x1a, 0x33, 0x20, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, - 0x20, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x69, 0x6e, - 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, - 0x01, 0x12, 0x03, 0x5e, 0x08, 0x10, 0x0a, 0x8f, 0x01, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, - 0x03, 0x62, 0x02, 0x1b, 0x1a, 0x81, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x70, 0x69, - 0x63, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x62, 0x65, - 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x2c, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x61, 0x73, 0x20, - 0x77, 0x65, 0x6c, 0x6c, 0x0a, 0x20, 0x69, 0x74, 0x20, 0x4d, 0x55, 0x53, 0x54, 0x20, 0x62, 0x65, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, - 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, - 0x05, 0x12, 0x03, 0x62, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, - 0x03, 0x62, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x62, - 0x19, 0x1a, 0x0a, 0x92, 0x01, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x01, 0x12, 0x03, 0x66, 0x02, 0x1a, - 0x1a, 0x84, 0x01, 0x20, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x0a, 0x20, - 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6c, 0x6c, 0x0a, 0x20, 0x69, - 0x74, 0x20, 0x4d, 0x55, 0x53, 0x54, 0x20, 0x62, 0x65, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, - 0x6c, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x76, - 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x05, - 0x12, 0x03, 0x66, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, - 0x66, 0x09, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x66, 0x18, - 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x02, 0x12, 0x03, 0x67, 0x02, 0x14, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x05, 0x12, 0x03, 0x67, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, 0x67, 0x08, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, - 0x02, 0x02, 0x03, 0x12, 0x03, 0x67, 0x12, 0x13, 0x0a, 0x15, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, - 0x6b, 0x00, 0x6d, 0x01, 0x1a, 0x09, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x0a, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x6b, 0x08, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x04, 0x02, 0x00, 0x12, 0x03, 0x6c, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, - 0x04, 0x12, 0x03, 0x6c, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x6c, 0x0b, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6c, - 0x14, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x6c, 0x20, 0x21, - 0x0a, 0x34, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x03, 0x70, 0x00, 0x1a, 0x1a, 0x29, 0x20, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x70, - 0x08, 0x17, 0x0a, 0x17, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x73, 0x00, 0x75, 0x01, 0x1a, 0x0b, - 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x06, 0x01, 0x12, 0x03, 0x73, 0x08, 0x18, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, - 0x03, 0x74, 0x02, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x04, 0x12, 0x03, 0x74, - 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, 0x74, 0x0b, 0x11, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x74, 0x12, 0x20, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x74, 0x23, 0x24, 0x0a, 0x19, 0x0a, 0x02, - 0x04, 0x07, 0x12, 0x03, 0x78, 0x00, 0x1e, 0x1a, 0x0e, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x41, 0x6c, 0x6c, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, - 0x78, 0x08, 0x1b, 0x0a, 0x14, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x05, 0x7b, 0x00, 0x80, 0x01, 0x01, - 0x1a, 0x07, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, - 0x12, 0x03, 0x7b, 0x08, 0x14, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x03, 0x7c, - 0x02, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x04, 0x12, 0x03, 0x7c, 0x02, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x05, 0x12, 0x03, 0x7c, 0x0b, 0x11, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7c, 0x12, 0x20, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x03, 0x7c, 0x23, 0x24, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, - 0x02, 0x01, 0x12, 0x03, 0x7d, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x05, - 0x12, 0x03, 0x7d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, 0x03, - 0x7d, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x03, 0x12, 0x03, 0x7d, 0x19, - 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x02, 0x12, 0x03, 0x7e, 0x02, 0x19, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x02, 0x05, 0x12, 0x03, 0x7e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x02, 0x01, 0x12, 0x03, 0x7e, 0x09, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, - 0x02, 0x02, 0x03, 0x12, 0x03, 0x7e, 0x17, 0x18, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x03, - 0x12, 0x03, 0x7f, 0x02, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x03, 0x06, 0x12, 0x03, - 0x7f, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x03, 0x01, 0x12, 0x03, 0x7f, 0x0d, - 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x03, 0x03, 0x12, 0x03, 0x7f, 0x1b, 0x1c, 0x0a, - 0x3f, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x06, 0x83, 0x01, 0x00, 0x86, 0x01, 0x01, 0x1a, 0x31, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2c, 0x20, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x73, 0x2c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x0a, - 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x04, 0x83, 0x01, 0x08, 0x15, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x04, 0x84, 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x09, 0x02, 0x00, 0x04, 0x12, 0x04, 0x84, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, - 0x02, 0x00, 0x06, 0x12, 0x04, 0x84, 0x01, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, - 0x00, 0x01, 0x12, 0x04, 0x84, 0x01, 0x14, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, - 0x03, 0x12, 0x04, 0x84, 0x01, 0x20, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, 0x12, - 0x04, 0x85, 0x01, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x06, 0x12, 0x04, - 0x85, 0x01, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, 0x04, 0x85, - 0x01, 0x0d, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, 0x12, 0x04, 0x85, 0x01, - 0x1b, 0x1c, 0x0a, 0x1a, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x06, 0x89, 0x01, 0x00, 0x8b, 0x01, 0x01, - 0x1a, 0x0c, 0x20, 0x42, 0x61, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x0a, 0x0a, 0x0b, - 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x04, 0x89, 0x01, 0x08, 0x19, 0x0a, 0x0c, 0x0a, 0x04, 0x04, - 0x0a, 0x02, 0x00, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x25, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, - 0x00, 0x04, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, - 0x06, 0x12, 0x04, 0x8a, 0x01, 0x0b, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, - 0x12, 0x04, 0x8a, 0x01, 0x18, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, - 0x04, 0x8a, 0x01, 0x23, 0x24, 0x0a, 0x44, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x06, 0x8e, 0x01, 0x00, - 0x90, 0x01, 0x01, 0x1a, 0x36, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, - 0x20, 0x6f, 0x66, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x0b, 0x01, 0x12, 0x04, 0x8e, 0x01, 0x08, 0x1a, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, - 0x12, 0x04, 0x8f, 0x01, 0x02, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x04, 0x12, - 0x04, 0x8f, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x04, - 0x8f, 0x01, 0x0b, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8f, - 0x01, 0x19, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8f, 0x01, - 0x25, 0x26, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x06, 0x0a, 0x9d, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x03, 0x23, 0x02, 0x46, 0x1a, + 0x8f, 0x01, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x6e, 0x65, 0x77, 0x20, + 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x79, 0x6f, + 0x75, 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x75, 0x73, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x62, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x0a, 0x20, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6c, 0x69, 0x6e, 0x74, 0x3a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x3a, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x52, 0x50, 0x43, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x23, 0x06, 0x10, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x23, 0x11, 0x17, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x23, 0x18, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x23, 0x33, 0x39, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x23, 0x3a, 0x42, 0x0a, 0x35, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, + 0x04, 0x25, 0x02, 0x2a, 0x03, 0x1a, 0x27, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, + 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x25, 0x06, 0x12, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x25, 0x13, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x03, 0x06, 0x12, 0x03, 0x25, 0x31, 0x37, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, + 0x03, 0x12, 0x03, 0x25, 0x38, 0x40, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, + 0x04, 0x26, 0x04, 0x29, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, + 0xbc, 0x22, 0x12, 0x04, 0x26, 0x04, 0x29, 0x06, 0x0a, 0x2c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, + 0x12, 0x04, 0x2c, 0x02, 0x31, 0x03, 0x1a, 0x1e, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, + 0x03, 0x2c, 0x06, 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x2c, + 0x0c, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x2c, 0x23, 0x30, + 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x2d, 0x04, 0x30, 0x06, 0x0a, + 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x2d, 0x04, + 0x30, 0x06, 0x0a, 0x46, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x04, 0x33, 0x02, 0x38, 0x03, + 0x1a, 0x38, 0x20, 0x42, 0x61, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, + 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x05, 0x01, 0x12, 0x03, 0x33, 0x06, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, + 0x02, 0x12, 0x03, 0x33, 0x11, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, 0x12, + 0x03, 0x33, 0x2d, 0x3f, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x04, 0x34, + 0x04, 0x37, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, + 0x12, 0x04, 0x34, 0x04, 0x37, 0x06, 0x0a, 0x1c, 0x0a, 0x02, 0x05, 0x00, 0x12, 0x04, 0x3c, 0x00, + 0x40, 0x01, 0x1a, 0x10, 0x20, 0x53, 0x6f, 0x72, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x3c, 0x05, 0x12, + 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x03, 0x3d, 0x02, 0x21, 0x0a, 0x0c, 0x0a, + 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3d, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x05, + 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x3d, 0x1f, 0x20, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, 0x02, + 0x01, 0x12, 0x03, 0x3e, 0x02, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x3e, 0x02, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x3e, + 0x1d, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x02, 0x12, 0x03, 0x3f, 0x02, 0x20, 0x0a, + 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x3f, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, + 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x3f, 0x1e, 0x1f, 0x0a, 0xa0, 0x01, 0x0a, 0x02, + 0x04, 0x00, 0x12, 0x04, 0x45, 0x00, 0x48, 0x01, 0x1a, 0x93, 0x01, 0x20, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x66, 0x66, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x2d, 0x77, 0x61, 0x6b, 0x75, 0x20, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, + 0x69, 0x6d, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x54, 0x6f, + 0x70, 0x69, 0x63, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x0a, 0x20, 0x42, 0x6f, 0x74, + 0x68, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0a, + 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x45, 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, + 0x02, 0x00, 0x12, 0x03, 0x46, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x46, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x46, 0x08, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x46, 0x11, + 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x47, 0x02, 0x1c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x47, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x47, 0x09, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x01, 0x03, 0x12, 0x03, 0x47, 0x1a, 0x1b, 0x0a, 0x3e, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, + 0x4b, 0x00, 0x52, 0x01, 0x1a, 0x32, 0x20, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6f, 0x66, + 0x20, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, + 0x03, 0x4b, 0x08, 0x0e, 0x0a, 0xaf, 0x01, 0x0a, 0x04, 0x04, 0x01, 0x08, 0x00, 0x12, 0x04, 0x4f, + 0x02, 0x51, 0x03, 0x1a, 0xa0, 0x01, 0x20, 0x4d, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x6f, 0x6e, 0x65, 0x2d, 0x6f, + 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x49, 0x20, 0x77, 0x6f, 0x75, + 0x6c, 0x64, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x79, 0x20, 0x77, 0x65, 0x0a, 0x20, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, + 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x61, 0x79, 0x20, 0x77, 0x65, 0x20, 0x63, 0x61, + 0x6e, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x08, 0x00, 0x01, 0x12, + 0x03, 0x4f, 0x08, 0x0e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x50, 0x04, + 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x50, 0x04, 0x0f, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x50, 0x10, 0x15, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x50, 0x18, 0x19, 0x0a, 0x82, 0x01, 0x0a, 0x02, + 0x04, 0x02, 0x12, 0x04, 0x56, 0x00, 0x5b, 0x01, 0x1a, 0x76, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x69, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x66, 0x66, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x2d, 0x77, 0x61, 0x6b, 0x75, 0x20, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2c, 0x20, 0x62, + 0x75, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, 0x74, + 0x6f, 0x20, 0x6f, 0x75, 0x72, 0x20, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, + 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x56, 0x08, 0x12, 0x0a, 0x4b, 0x0a, 0x04, + 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x58, 0x02, 0x13, 0x1a, 0x3e, 0x20, 0x4e, 0x6f, 0x74, 0x65, + 0x3a, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x67, 0x6f, 0x2d, 0x77, 0x61, 0x6b, + 0x75, 0x27, 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x69, 0x73, 0x20, + 0x61, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x00, 0x05, 0x12, 0x03, 0x58, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, + 0x12, 0x03, 0x58, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, + 0x58, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x59, 0x02, 0x14, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x06, 0x12, 0x03, 0x59, 0x02, 0x08, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x59, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x59, 0x12, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x12, 0x03, 0x5a, 0x02, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x06, + 0x12, 0x03, 0x5a, 0x02, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, 0x12, 0x03, + 0x5a, 0x10, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x03, 0x12, 0x03, 0x5a, 0x1c, + 0x1d, 0x0a, 0x3f, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x5e, 0x00, 0x68, 0x01, 0x1a, 0x33, 0x20, + 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x5e, 0x08, 0x10, 0x0a, 0x8f, + 0x01, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x62, 0x02, 0x1b, 0x1a, 0x81, 0x01, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, + 0x2c, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6c, 0x6c, 0x0a, 0x20, 0x69, 0x74, + 0x20, 0x4d, 0x55, 0x53, 0x54, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, + 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x69, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x2e, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x05, 0x12, 0x03, 0x62, 0x02, 0x08, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x62, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x62, 0x19, 0x1a, 0x0a, 0x92, 0x01, 0x0a, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x12, 0x03, 0x66, 0x02, 0x1a, 0x1a, 0x84, 0x01, 0x20, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x61, 0x73, + 0x20, 0x77, 0x65, 0x6c, 0x6c, 0x0a, 0x20, 0x69, 0x74, 0x20, 0x4d, 0x55, 0x53, 0x54, 0x20, 0x62, + 0x65, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x69, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x05, 0x12, 0x03, 0x66, 0x02, 0x08, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, 0x66, 0x09, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x66, 0x18, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, + 0x02, 0x12, 0x03, 0x67, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x05, 0x12, + 0x03, 0x67, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, 0x67, + 0x08, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x03, 0x12, 0x03, 0x67, 0x12, 0x13, + 0x0a, 0x15, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x6b, 0x00, 0x6d, 0x01, 0x1a, 0x09, 0x20, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, + 0x6b, 0x08, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x6c, 0x02, 0x22, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x04, 0x12, 0x03, 0x6c, 0x02, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x6c, 0x0b, 0x13, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6c, 0x14, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x6c, 0x20, 0x21, 0x0a, 0x34, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x03, + 0x70, 0x00, 0x1a, 0x1a, 0x29, 0x20, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x0a, 0x0a, 0x0a, + 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x70, 0x08, 0x17, 0x0a, 0x17, 0x0a, 0x02, 0x04, 0x06, + 0x12, 0x04, 0x73, 0x00, 0x75, 0x01, 0x1a, 0x0b, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x73, 0x08, 0x18, 0x0a, + 0x0b, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x74, 0x02, 0x25, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x06, 0x02, 0x00, 0x04, 0x12, 0x03, 0x74, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, + 0x02, 0x00, 0x05, 0x12, 0x03, 0x74, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x74, 0x23, 0x24, 0x0a, 0x19, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x03, 0x78, 0x00, 0x1e, 0x1a, + 0x0e, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x6c, 0x0a, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x78, 0x08, 0x1b, 0x0a, 0x14, 0x0a, 0x02, 0x04, + 0x08, 0x12, 0x05, 0x7b, 0x00, 0x80, 0x01, 0x01, 0x1a, 0x07, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x03, 0x7b, 0x08, 0x14, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x03, 0x7c, 0x02, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, + 0x02, 0x00, 0x04, 0x12, 0x03, 0x7c, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, + 0x05, 0x12, 0x03, 0x7c, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, + 0x03, 0x7c, 0x12, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x03, 0x7c, + 0x23, 0x24, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x01, 0x12, 0x03, 0x7d, 0x02, 0x1b, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x05, 0x12, 0x03, 0x7d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, 0x03, 0x7d, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x08, 0x02, 0x01, 0x03, 0x12, 0x03, 0x7d, 0x19, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, + 0x02, 0x12, 0x03, 0x7e, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x02, 0x05, 0x12, + 0x03, 0x7e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x02, 0x01, 0x12, 0x03, 0x7e, + 0x09, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x02, 0x03, 0x12, 0x03, 0x7e, 0x17, 0x18, + 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x03, 0x12, 0x03, 0x7f, 0x02, 0x1d, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x08, 0x02, 0x03, 0x06, 0x12, 0x03, 0x7f, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x08, 0x02, 0x03, 0x01, 0x12, 0x03, 0x7f, 0x0d, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, + 0x03, 0x03, 0x12, 0x03, 0x7f, 0x1b, 0x1c, 0x0a, 0x3f, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x06, 0x83, + 0x01, 0x00, 0x86, 0x01, 0x01, 0x1a, 0x31, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x2c, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, + 0x04, 0x83, 0x01, 0x08, 0x15, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x04, 0x84, + 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x04, 0x12, 0x04, 0x84, 0x01, + 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x04, 0x84, 0x01, 0x0b, + 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x04, 0x84, 0x01, 0x14, 0x1d, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, 0x84, 0x01, 0x20, 0x21, 0x0a, + 0x0c, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, 0x12, 0x04, 0x85, 0x01, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x09, 0x02, 0x01, 0x06, 0x12, 0x04, 0x85, 0x01, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, 0x04, 0x85, 0x01, 0x0d, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x09, 0x02, 0x01, 0x03, 0x12, 0x04, 0x85, 0x01, 0x1b, 0x1c, 0x0a, 0x1a, 0x0a, 0x02, 0x04, 0x0a, + 0x12, 0x06, 0x89, 0x01, 0x00, 0x8b, 0x01, 0x01, 0x1a, 0x0c, 0x20, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x04, 0x89, + 0x01, 0x08, 0x19, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x04, 0x8a, 0x01, 0x02, + 0x25, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8a, 0x01, 0x0b, 0x17, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8a, 0x01, 0x18, 0x20, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8a, 0x01, 0x23, 0x24, 0x0a, 0x44, 0x0a, + 0x02, 0x04, 0x0b, 0x12, 0x06, 0x8e, 0x01, 0x00, 0x90, 0x01, 0x01, 0x1a, 0x36, 0x20, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, + 0x67, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, 0x04, 0x8e, 0x01, 0x08, 0x1a, + 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x04, 0x8f, 0x01, 0x02, 0x27, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8f, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8f, 0x01, 0x0b, 0x18, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8f, 0x01, 0x19, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0b, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8f, 0x01, 0x25, 0x26, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, ]; include!("xmtp.message_api.v1.serde.rs"); include!("xmtp.message_api.v1.tonic.rs"); diff --git a/xmtp_proto/src/gen/xmtp.mls.api.v1.rs b/xmtp_proto/src/gen/xmtp.mls.api.v1.rs index 203e98980..8f771e5c0 100644 --- a/xmtp_proto/src/gen/xmtp.mls.api.v1.rs +++ b/xmtp_proto/src/gen/xmtp.mls.api.v1.rs @@ -390,7 +390,7 @@ impl SortDirection { } /// Encoded file descriptor set for the `xmtp.mls.api.v1` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xe1, 0x7a, 0x0a, 0x14, 0x6d, 0x6c, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x0a, 0x95, 0x77, 0x0a, 0x14, 0x6d, 0x6c, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, @@ -754,7 +754,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x6c, 0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x58, 0x6d, 0x74, 0x70, 0x5c, 0x4d, 0x6c, 0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x58, 0x6d, 0x74, 0x70, 0x3a, 0x3a, - 0x4d, 0x6c, 0x73, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x8d, 0x4d, 0x0a, + 0x4d, 0x6c, 0x73, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xc1, 0x49, 0x0a, 0x07, 0x12, 0x05, 0x01, 0x00, 0xce, 0x02, 0x01, 0x0a, 0x17, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x01, 0x00, 0x12, 0x1a, 0x0d, 0x20, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x18, 0x0a, 0x09, 0x0a, 0x02, 0x03, @@ -763,26 +763,21 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x38, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x09, 0x00, 0x3d, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x09, 0x00, 0x3d, 0x0a, 0x09, 0x0a, 0x01, 0x08, 0x12, 0x04, 0x0b, 0x00, 0x10, 0x02, 0x0a, 0x0b, 0x0a, 0x03, 0x08, 0x92, 0x08, 0x12, 0x04, - 0x0b, 0x00, 0x10, 0x02, 0x0a, 0x0c, 0x0a, 0x04, 0x08, 0x92, 0x08, 0x02, 0x12, 0x04, 0x0c, 0x02, - 0x0f, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x08, 0x92, 0x08, 0x02, 0x01, 0x12, 0x03, 0x0d, 0x04, 0x13, - 0x0a, 0x0c, 0x0a, 0x05, 0x08, 0x92, 0x08, 0x02, 0x06, 0x12, 0x03, 0x0e, 0x04, 0x12, 0x0a, 0x26, - 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x13, 0x00, 0x6f, 0x01, 0x1a, 0x1a, 0x20, 0x52, 0x50, 0x43, - 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x4d, 0x4c, - 0x53, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x13, - 0x08, 0x0e, 0x0a, 0x5f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x16, 0x02, 0x1b, 0x03, - 0x1a, 0x51, 0x20, 0x53, 0x65, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x4d, 0x4c, 0x53, 0x20, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x6f, 0x75, 0x6c, - 0x64, 0x20, 0x62, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x16, 0x06, - 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x16, 0x18, 0x30, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x16, 0x3b, 0x50, 0x0a, 0x0d, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x17, 0x04, 0x1a, 0x06, 0x0a, 0x11, 0x0a, 0x09, - 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x17, 0x04, 0x1a, 0x06, 0x0a, - 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x18, - 0x06, 0x29, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, - 0x12, 0x03, 0x19, 0x06, 0x0f, 0x0a, 0x30, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x1e, + 0x0b, 0x00, 0x10, 0x02, 0x0a, 0x26, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x13, 0x00, 0x6f, 0x01, + 0x1a, 0x1a, 0x20, 0x52, 0x50, 0x43, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6e, 0x65, 0x77, 0x20, 0x4d, 0x4c, 0x53, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, + 0x06, 0x00, 0x01, 0x12, 0x03, 0x13, 0x08, 0x0e, 0x0a, 0x5f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, + 0x12, 0x04, 0x16, 0x02, 0x1b, 0x03, 0x1a, 0x51, 0x20, 0x53, 0x65, 0x6e, 0x64, 0x20, 0x61, 0x20, + 0x4d, 0x4c, 0x53, 0x20, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62, 0x65, 0x69, 0x6e, + 0x67, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x0a, + 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x16, 0x06, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, + 0x12, 0x03, 0x16, 0x18, 0x30, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, + 0x16, 0x3b, 0x50, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x17, 0x04, + 0x1a, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, + 0x04, 0x17, 0x04, 0x1a, 0x06, 0x0a, 0x30, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x1e, 0x02, 0x23, 0x03, 0x1a, 0x22, 0x20, 0x53, 0x65, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, @@ -790,100 +785,81 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x1e, 0x1a, 0x34, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1e, 0x3f, 0x54, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x1f, 0x04, 0x22, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x1f, - 0x04, 0x22, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x04, 0x12, 0x03, 0x20, 0x06, 0x2b, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, - 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x21, 0x06, 0x0f, 0x0a, 0x54, 0x0a, 0x04, 0x06, 0x00, 0x02, - 0x02, 0x12, 0x04, 0x26, 0x02, 0x2b, 0x03, 0x1a, 0x46, 0x20, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x6f, 0x75, - 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, - 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x26, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x26, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x26, 0x41, 0x5d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x02, 0x04, 0x12, 0x04, 0x27, 0x04, 0x2a, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, - 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x27, 0x04, 0x2a, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, - 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x28, 0x06, 0x2b, 0x0a, 0x11, - 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x29, 0x06, - 0x0f, 0x0a, 0x50, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x2e, 0x02, 0x33, 0x03, 0x1a, - 0x42, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x4b, - 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, - 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x2e, 0x06, - 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x2e, 0x17, 0x2e, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x2e, 0x39, 0x4e, 0x0a, 0x0d, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, 0x2f, 0x04, 0x32, 0x06, 0x0a, 0x11, 0x0a, 0x09, - 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x2f, 0x04, 0x32, 0x06, 0x0a, - 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x30, - 0x06, 0x28, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, - 0x12, 0x03, 0x31, 0x06, 0x0f, 0x0a, 0x3f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x36, - 0x02, 0x3b, 0x03, 0x1a, 0x31, 0x20, 0x47, 0x65, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, - 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x73, 0x20, 0x62, 0x79, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, - 0x03, 0x36, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x36, - 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x36, 0x39, 0x51, - 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x37, 0x04, 0x3a, 0x06, 0x0a, - 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x37, 0x04, - 0x3a, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, - 0x12, 0x03, 0x38, 0x06, 0x28, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x07, 0x12, 0x03, 0x39, 0x06, 0x0f, 0x0a, 0x80, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, - 0x05, 0x12, 0x04, 0x3f, 0x02, 0x44, 0x03, 0x1a, 0x72, 0x20, 0x57, 0x6f, 0x75, 0x6c, 0x64, 0x20, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x72, - 0x6b, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x65, - 0x65, 0x6e, 0x20, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x3f, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x05, 0x02, 0x12, 0x03, 0x3f, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, - 0x12, 0x03, 0x3f, 0x3d, 0x52, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x04, - 0x40, 0x04, 0x43, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x12, 0x04, 0x40, 0x04, 0x43, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x05, 0x04, - 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x41, 0x06, 0x29, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, - 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x42, 0x06, 0x0f, 0x0a, 0xc6, 0x01, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x06, 0x12, 0x04, 0x49, 0x02, 0x4e, 0x03, 0x1a, 0xb7, 0x01, 0x20, - 0x55, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, - 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, - 0x61, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x0a, 0x20, 0x57, 0x6f, 0x75, 0x6c, 0x64, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, - 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x6c, - 0x6c, 0x65, 0x74, 0x0a, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2c, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x68, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x01, 0x12, - 0x03, 0x49, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x02, 0x12, 0x03, 0x49, - 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x49, 0x3d, 0x57, - 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x04, 0x12, 0x04, 0x4a, 0x04, 0x4d, 0x06, 0x0a, - 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x06, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x4a, 0x04, - 0x4d, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x06, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, - 0x12, 0x03, 0x4b, 0x06, 0x2a, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x06, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x07, 0x12, 0x03, 0x4c, 0x06, 0x0f, 0x0a, 0x2b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x07, - 0x12, 0x04, 0x51, 0x02, 0x56, 0x03, 0x1a, 0x1d, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, - 0x51, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x02, 0x12, 0x03, 0x51, 0x19, - 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x51, 0x3d, 0x57, 0x0a, - 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x04, 0x12, 0x04, 0x52, 0x04, 0x55, 0x06, 0x0a, 0x11, - 0x0a, 0x09, 0x06, 0x00, 0x02, 0x07, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x52, 0x04, 0x55, - 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x07, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, - 0x03, 0x53, 0x06, 0x2a, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x07, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x07, 0x12, 0x03, 0x54, 0x06, 0x0f, 0x0a, 0x2b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x08, 0x12, - 0x04, 0x59, 0x02, 0x5e, 0x03, 0x1a, 0x1d, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x64, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x59, - 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x02, 0x12, 0x03, 0x59, 0x1b, 0x36, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x59, 0x41, 0x5d, 0x0a, 0x0d, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x04, 0x12, 0x04, 0x5a, 0x04, 0x5d, 0x06, 0x0a, 0x11, 0x0a, - 0x09, 0x06, 0x00, 0x02, 0x08, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x5a, 0x04, 0x5d, 0x06, - 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x08, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, - 0x5b, 0x06, 0x2c, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x08, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x07, 0x12, 0x03, 0x5c, 0x06, 0x0f, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x09, 0x12, 0x04, + 0x04, 0x22, 0x06, 0x0a, 0x54, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x26, 0x02, 0x2b, + 0x03, 0x1a, 0x46, 0x20, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x6e, + 0x65, 0x77, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, + 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, + 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x02, 0x01, 0x12, 0x03, 0x26, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, + 0x12, 0x03, 0x26, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, + 0x26, 0x41, 0x5d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x04, 0x27, 0x04, + 0x2a, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, + 0x04, 0x27, 0x04, 0x2a, 0x06, 0x0a, 0x50, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x2e, + 0x02, 0x33, 0x03, 0x1a, 0x42, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x61, 0x20, 0x6e, + 0x65, 0x77, 0x20, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x77, + 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, + 0x12, 0x03, 0x2e, 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, + 0x2e, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x2e, 0x39, + 0x4e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, 0x2f, 0x04, 0x32, 0x06, + 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x2f, + 0x04, 0x32, 0x06, 0x0a, 0x3f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x36, 0x02, 0x3b, + 0x03, 0x1a, 0x31, 0x20, 0x47, 0x65, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, + 0x6f, 0x72, 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x20, 0x62, 0x79, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x36, + 0x06, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x36, 0x17, 0x2e, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x36, 0x39, 0x51, 0x0a, 0x0d, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x37, 0x04, 0x3a, 0x06, 0x0a, 0x11, 0x0a, + 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x37, 0x04, 0x3a, 0x06, + 0x0a, 0x80, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x04, 0x3f, 0x02, 0x44, 0x03, 0x1a, + 0x72, 0x20, 0x57, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, + 0x6c, 0x6c, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x20, + 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x68, + 0x61, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x3f, 0x06, + 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x02, 0x12, 0x03, 0x3f, 0x19, 0x32, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x3f, 0x3d, 0x52, 0x0a, 0x0d, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x04, 0x40, 0x04, 0x43, 0x06, 0x0a, 0x11, 0x0a, 0x09, + 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x40, 0x04, 0x43, 0x06, 0x0a, + 0xc6, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x06, 0x12, 0x04, 0x49, 0x02, 0x4e, 0x03, 0x1a, 0xb7, + 0x01, 0x20, 0x55, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x6f, + 0x66, 0x20, 0x61, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x0a, 0x20, 0x57, 0x6f, 0x75, 0x6c, + 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, + 0x79, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, + 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x0a, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2c, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x68, 0x61, + 0x70, 0x70, 0x65, 0x6e, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, + 0x01, 0x12, 0x03, 0x49, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x02, 0x12, + 0x03, 0x49, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x49, + 0x3d, 0x57, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x04, 0x12, 0x04, 0x4a, 0x04, 0x4d, + 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x06, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, + 0x4a, 0x04, 0x4d, 0x06, 0x0a, 0x2b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x07, 0x12, 0x04, 0x51, 0x02, + 0x56, 0x03, 0x1a, 0x1d, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x51, 0x06, 0x18, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x02, 0x12, 0x03, 0x51, 0x19, 0x32, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x51, 0x3d, 0x57, 0x0a, 0x0d, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x07, 0x04, 0x12, 0x04, 0x52, 0x04, 0x55, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, + 0x02, 0x07, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x52, 0x04, 0x55, 0x06, 0x0a, 0x2b, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x08, 0x12, 0x04, 0x59, 0x02, 0x5e, 0x03, 0x1a, 0x1d, 0x20, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x08, 0x01, 0x12, 0x03, 0x59, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, + 0x02, 0x12, 0x03, 0x59, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x03, 0x12, + 0x03, 0x59, 0x41, 0x5d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x04, 0x12, 0x04, 0x5a, + 0x04, 0x5d, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x08, 0x04, 0xb0, 0xca, 0xbc, 0x22, + 0x12, 0x04, 0x5a, 0x04, 0x5d, 0x06, 0x0a, 0x36, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x09, 0x12, 0x04, 0x61, 0x02, 0x66, 0x03, 0x1a, 0x28, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, @@ -892,487 +868,482 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x02, 0x09, 0x06, 0x12, 0x03, 0x61, 0x45, 0x4b, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, 0x03, 0x12, 0x03, 0x61, 0x4c, 0x58, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, 0x04, 0x12, 0x04, 0x62, 0x04, 0x65, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x09, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x12, 0x04, 0x62, 0x04, 0x65, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x09, - 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x63, 0x06, 0x2e, 0x0a, 0x11, 0x0a, 0x0a, 0x06, - 0x00, 0x02, 0x09, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x64, 0x06, 0x0f, 0x0a, 0x38, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0a, 0x12, 0x04, 0x69, 0x02, 0x6e, 0x03, 0x1a, 0x2a, 0x20, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, - 0x6f, 0x66, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, - 0x01, 0x12, 0x03, 0x69, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x02, 0x12, - 0x03, 0x69, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x06, 0x12, 0x03, 0x69, - 0x49, 0x4f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x03, 0x12, 0x03, 0x69, 0x50, 0x5e, - 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x04, 0x12, 0x04, 0x6a, 0x04, 0x6d, 0x06, 0x0a, - 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x0a, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x6a, 0x04, - 0x6d, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x0a, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, - 0x12, 0x03, 0x6b, 0x06, 0x30, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x0a, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x07, 0x12, 0x03, 0x6c, 0x06, 0x0f, 0x0a, 0x36, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, - 0x72, 0x00, 0x7f, 0x01, 0x1a, 0x2a, 0x20, 0x46, 0x75, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x70, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, - 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x0a, - 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x72, 0x08, 0x16, 0x0a, 0x36, 0x0a, 0x04, - 0x04, 0x00, 0x03, 0x00, 0x12, 0x04, 0x74, 0x02, 0x7a, 0x03, 0x1a, 0x28, 0x20, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x57, 0x65, - 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x03, 0x00, 0x01, 0x12, 0x03, 0x74, - 0x0a, 0x0c, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x75, 0x04, - 0x12, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x75, 0x04, - 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x75, 0x0b, - 0x0d, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x75, 0x10, - 0x11, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x12, 0x03, 0x76, 0x04, 0x1a, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x76, 0x04, 0x0a, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x76, 0x0b, 0x15, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x76, 0x18, 0x19, - 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x02, 0x12, 0x03, 0x77, 0x04, 0x1f, 0x0a, - 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x77, 0x04, 0x09, 0x0a, - 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x77, 0x0a, 0x1a, 0x0a, - 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x77, 0x1d, 0x1e, 0x0a, - 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x12, 0x03, 0x78, 0x04, 0x13, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x05, 0x12, 0x03, 0x78, 0x04, 0x09, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x78, 0x0a, 0x0e, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x78, 0x11, 0x12, 0x0a, 0x0d, - 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x12, 0x03, 0x79, 0x04, 0x1e, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, 0x79, 0x04, 0x09, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x79, 0x0a, 0x19, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x79, 0x1c, 0x1d, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x00, 0x08, 0x00, 0x12, 0x04, 0x7c, 0x02, 0x7e, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x08, 0x00, 0x01, 0x12, 0x03, 0x7c, 0x08, 0x0f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x00, 0x12, 0x03, 0x7d, 0x04, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x7d, 0x04, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7d, - 0x07, 0x09, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x7d, 0x0c, 0x0d, - 0x0a, 0x30, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x06, 0x82, 0x01, 0x00, 0x8d, 0x01, 0x01, 0x1a, 0x22, - 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x61, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x04, 0x82, 0x01, 0x08, 0x1b, 0x0a, - 0x3d, 0x0a, 0x04, 0x04, 0x01, 0x03, 0x00, 0x12, 0x06, 0x84, 0x01, 0x02, 0x88, 0x01, 0x03, 0x1a, - 0x2d, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x20, 0x6f, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x01, 0x03, 0x00, 0x01, 0x12, 0x04, 0x84, 0x01, 0x0a, 0x0c, 0x0a, 0x0e, 0x0a, - 0x06, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0x85, 0x01, 0x04, 0x1f, 0x0a, 0x0f, 0x0a, - 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0x85, 0x01, 0x04, 0x09, 0x0a, 0x0f, - 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x85, 0x01, 0x0a, 0x1a, 0x0a, - 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0x85, 0x01, 0x1d, 0x1e, - 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0x86, 0x01, 0x04, 0x13, - 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, 0x86, 0x01, 0x04, - 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0x86, 0x01, - 0x0a, 0x0e, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x04, 0x86, - 0x01, 0x11, 0x12, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x00, 0x02, 0x02, 0x12, 0x04, 0x87, - 0x01, 0x04, 0x1e, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x02, 0x05, 0x12, 0x04, - 0x87, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x02, 0x01, 0x12, - 0x04, 0x87, 0x01, 0x0a, 0x19, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x02, 0x03, - 0x12, 0x04, 0x87, 0x01, 0x1c, 0x1d, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x01, 0x08, 0x00, 0x12, 0x06, - 0x8a, 0x01, 0x02, 0x8c, 0x01, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x08, 0x00, 0x01, 0x12, - 0x04, 0x8a, 0x01, 0x08, 0x0f, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x04, 0x8b, - 0x01, 0x04, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8b, 0x01, - 0x04, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8b, 0x01, 0x07, - 0x09, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8b, 0x01, 0x0c, 0x0d, - 0x0a, 0x36, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x06, 0x90, 0x01, 0x00, 0x9d, 0x01, 0x01, 0x1a, 0x28, - 0x20, 0x46, 0x75, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, - 0x04, 0x90, 0x01, 0x08, 0x14, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x02, 0x03, 0x00, 0x12, 0x06, 0x92, - 0x01, 0x02, 0x98, 0x01, 0x03, 0x1a, 0x26, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, - 0x31, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x02, 0x03, 0x00, 0x01, 0x12, 0x04, 0x92, 0x01, 0x0a, 0x0c, 0x0a, 0x0e, 0x0a, 0x06, - 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0x93, 0x01, 0x04, 0x12, 0x0a, 0x0f, 0x0a, 0x07, - 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0x93, 0x01, 0x04, 0x0a, 0x0a, 0x0f, 0x0a, - 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x93, 0x01, 0x0b, 0x0d, 0x0a, 0x0f, - 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0x93, 0x01, 0x10, 0x11, 0x0a, - 0x0e, 0x0a, 0x06, 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0x94, 0x01, 0x04, 0x1a, 0x0a, - 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, 0x94, 0x01, 0x04, 0x0a, - 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0x94, 0x01, 0x0b, - 0x15, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x04, 0x94, 0x01, - 0x18, 0x19, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x02, 0x03, 0x00, 0x02, 0x02, 0x12, 0x04, 0x95, 0x01, - 0x04, 0x17, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x02, 0x05, 0x12, 0x04, 0x95, - 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x02, 0x01, 0x12, 0x04, - 0x95, 0x01, 0x0a, 0x12, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x02, 0x03, 0x12, - 0x04, 0x95, 0x01, 0x15, 0x16, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x02, 0x03, 0x00, 0x02, 0x03, 0x12, - 0x04, 0x96, 0x01, 0x04, 0x13, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x03, 0x05, - 0x12, 0x04, 0x96, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x03, - 0x01, 0x12, 0x04, 0x96, 0x01, 0x0a, 0x0e, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, - 0x03, 0x03, 0x12, 0x04, 0x96, 0x01, 0x11, 0x12, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x02, 0x03, 0x00, - 0x02, 0x04, 0x12, 0x04, 0x97, 0x01, 0x04, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, - 0x02, 0x04, 0x05, 0x12, 0x04, 0x97, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, - 0x00, 0x02, 0x04, 0x01, 0x12, 0x04, 0x97, 0x01, 0x0a, 0x15, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, - 0x03, 0x00, 0x02, 0x04, 0x03, 0x12, 0x04, 0x97, 0x01, 0x18, 0x19, 0x0a, 0x0e, 0x0a, 0x04, 0x04, - 0x02, 0x08, 0x00, 0x12, 0x06, 0x9a, 0x01, 0x02, 0x9c, 0x01, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x02, 0x08, 0x00, 0x01, 0x12, 0x04, 0x9a, 0x01, 0x08, 0x0f, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, - 0x02, 0x00, 0x12, 0x04, 0x9b, 0x01, 0x04, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, - 0x06, 0x12, 0x04, 0x9b, 0x01, 0x04, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, - 0x12, 0x04, 0x9b, 0x01, 0x07, 0x09, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, - 0x04, 0x9b, 0x01, 0x0c, 0x0d, 0x0a, 0x2e, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x06, 0xa0, 0x01, 0x00, - 0xaa, 0x01, 0x01, 0x1a, 0x20, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x04, 0xa0, 0x01, - 0x08, 0x19, 0x0a, 0x43, 0x0a, 0x04, 0x04, 0x03, 0x03, 0x00, 0x12, 0x06, 0xa2, 0x01, 0x02, 0xa5, - 0x01, 0x03, 0x1a, 0x33, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x20, 0x6f, - 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x20, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x03, 0x00, 0x01, - 0x12, 0x04, 0xa2, 0x01, 0x0a, 0x0c, 0x0a, 0x2f, 0x0a, 0x06, 0x04, 0x03, 0x03, 0x00, 0x02, 0x00, - 0x12, 0x04, 0xa3, 0x01, 0x04, 0x13, 0x22, 0x1f, 0x20, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x20, 0x4d, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x03, 0x03, 0x00, 0x02, - 0x00, 0x05, 0x12, 0x04, 0xa3, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x03, 0x03, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x04, 0xa3, 0x01, 0x0a, 0x0e, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x03, 0x03, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa3, 0x01, 0x11, 0x12, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x03, - 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0xa4, 0x01, 0x04, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x03, - 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, 0xa4, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, - 0x03, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa4, 0x01, 0x0a, 0x15, 0x0a, 0x0f, 0x0a, 0x07, - 0x04, 0x03, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa4, 0x01, 0x18, 0x19, 0x0a, 0x0e, 0x0a, - 0x04, 0x04, 0x03, 0x08, 0x00, 0x12, 0x06, 0xa7, 0x01, 0x02, 0xa9, 0x01, 0x03, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x03, 0x08, 0x00, 0x01, 0x12, 0x04, 0xa7, 0x01, 0x08, 0x0f, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x03, 0x02, 0x00, 0x12, 0x04, 0xa8, 0x01, 0x04, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, - 0x02, 0x00, 0x06, 0x12, 0x04, 0xa8, 0x01, 0x04, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xa8, 0x01, 0x07, 0x09, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xa8, 0x01, 0x0c, 0x0d, 0x0a, 0x2c, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x06, 0xad, - 0x01, 0x00, 0xaf, 0x01, 0x01, 0x1a, 0x1e, 0x20, 0x53, 0x65, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x62, - 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x4c, 0x53, 0x20, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x04, 0xad, 0x01, - 0x08, 0x20, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, 0xae, 0x01, 0x02, 0x2a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x04, 0x12, 0x04, 0xae, 0x01, 0x02, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x04, 0xae, 0x01, 0x0b, 0x1c, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0xae, 0x01, 0x1d, 0x25, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0xae, 0x01, 0x28, 0x29, 0x0a, 0x30, 0x0a, 0x02, - 0x04, 0x05, 0x12, 0x06, 0xb2, 0x01, 0x00, 0xb4, 0x01, 0x01, 0x1a, 0x22, 0x20, 0x53, 0x65, 0x6e, - 0x64, 0x20, 0x61, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x77, 0x65, 0x6c, - 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, - 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0xb2, 0x01, 0x08, 0x22, 0x0a, 0x0c, 0x0a, 0x04, 0x04, - 0x05, 0x02, 0x00, 0x12, 0x04, 0xb3, 0x01, 0x02, 0x2c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, - 0x00, 0x04, 0x12, 0x04, 0xb3, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, - 0x06, 0x12, 0x04, 0xb3, 0x01, 0x0b, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, - 0x12, 0x04, 0xb3, 0x01, 0x1f, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, - 0x04, 0xb3, 0x01, 0x2a, 0x2b, 0x0a, 0x9a, 0x01, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x06, 0xb7, 0x01, - 0x00, 0xbe, 0x01, 0x01, 0x1a, 0x28, 0x20, 0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, - 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0a, 0x22, 0x62, - 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, - 0x20, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x4d, 0x4c, 0x53, 0x20, - 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x0a, - 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, 0xb7, 0x01, 0x08, 0x18, 0x0a, - 0x97, 0x01, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x27, 0x1a, 0x88, - 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x27, 0x73, 0x20, 0x77, 0x61, - 0x6c, 0x6c, 0x65, 0x74, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x77, 0x6f, 0x75, - 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x20, - 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x0a, 0x20, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x69, 0x6e, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, - 0x00, 0x05, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, - 0x01, 0x12, 0x04, 0xbd, 0x01, 0x08, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, - 0x12, 0x04, 0xbd, 0x01, 0x25, 0x26, 0x0a, 0x2b, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x06, 0xc1, 0x01, - 0x00, 0xc5, 0x01, 0x01, 0x1a, 0x1d, 0x20, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, - 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x04, 0xc1, 0x01, 0x08, 0x23, - 0x0a, 0x5b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x04, 0xc3, 0x01, 0x02, 0x23, 0x1a, 0x4d, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x69, 0x6e, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x20, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc3, 0x01, 0x02, 0x12, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc3, 0x01, 0x13, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x07, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc3, 0x01, 0x21, 0x22, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x07, - 0x02, 0x01, 0x12, 0x04, 0xc4, 0x01, 0x02, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, - 0x05, 0x12, 0x04, 0xc4, 0x01, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x01, - 0x12, 0x04, 0xc4, 0x01, 0x07, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x03, 0x12, - 0x04, 0xc4, 0x01, 0x1f, 0x20, 0x0a, 0x3d, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x06, 0xc8, 0x01, 0x00, - 0xca, 0x01, 0x01, 0x1a, 0x2f, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x04, 0xc8, 0x01, 0x08, - 0x24, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x04, 0xc9, 0x01, 0x02, 0x1d, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x05, 0x12, 0x04, 0xc9, 0x01, 0x02, 0x07, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc9, 0x01, 0x08, 0x18, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc9, 0x01, 0x1b, 0x1c, 0x0a, 0x29, 0x0a, 0x02, - 0x04, 0x09, 0x12, 0x06, 0xcd, 0x01, 0x00, 0xd1, 0x01, 0x01, 0x1a, 0x1b, 0x20, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x04, - 0xcd, 0x01, 0x08, 0x1f, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x04, 0xcf, 0x01, - 0x02, 0x23, 0x1a, 0x2a, 0x20, 0x41, 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, - 0x61, 0x6c, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x20, 0x75, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x04, 0xcf, 0x01, 0x02, 0x12, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x04, 0xcf, 0x01, 0x13, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, 0xcf, 0x01, 0x21, 0x22, 0x0a, 0x0c, 0x0a, 0x04, 0x04, - 0x09, 0x02, 0x01, 0x12, 0x04, 0xd0, 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, - 0x01, 0x05, 0x12, 0x04, 0xd0, 0x01, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, - 0x01, 0x12, 0x04, 0xd0, 0x01, 0x07, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, - 0x12, 0x04, 0xd0, 0x01, 0x20, 0x21, 0x0a, 0x2e, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x06, 0xd4, 0x01, - 0x00, 0xd9, 0x01, 0x01, 0x1a, 0x20, 0x20, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x6e, 0x65, - 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x04, 0xd4, - 0x01, 0x08, 0x1f, 0x0a, 0xac, 0x01, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x04, 0xd8, 0x01, - 0x02, 0x27, 0x1a, 0x9d, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, - 0x20, 0x63, 0x61, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x20, - 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, - 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x61, 0x63, 0x68, 0x0a, - 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, - 0x79, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x04, 0x12, 0x04, 0xd8, 0x01, 0x02, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x05, 0x12, 0x04, 0xd8, 0x01, 0x0b, 0x10, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd8, 0x01, 0x11, 0x22, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xd8, 0x01, 0x25, 0x26, 0x0a, 0x39, - 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x06, 0xdc, 0x01, 0x00, 0xe6, 0x01, 0x01, 0x1a, 0x2b, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, - 0x20, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0b, 0x01, - 0x12, 0x04, 0xdc, 0x01, 0x08, 0x20, 0x0a, 0x2b, 0x0a, 0x04, 0x04, 0x0b, 0x03, 0x00, 0x12, 0x06, - 0xde, 0x01, 0x02, 0xe0, 0x01, 0x03, 0x1a, 0x1b, 0x20, 0x41, 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x69, + 0xbc, 0x22, 0x12, 0x04, 0x62, 0x04, 0x65, 0x06, 0x0a, 0x38, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0a, + 0x12, 0x04, 0x69, 0x02, 0x6e, 0x03, 0x1a, 0x2a, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x6e, 0x65, 0x77, + 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x01, 0x12, 0x03, 0x69, 0x06, 0x1e, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x02, 0x12, 0x03, 0x69, 0x1f, 0x3e, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x06, 0x12, 0x03, 0x69, 0x49, 0x4f, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x0a, 0x03, 0x12, 0x03, 0x69, 0x50, 0x5e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x0a, 0x04, 0x12, 0x04, 0x6a, 0x04, 0x6d, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, + 0x0a, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x6a, 0x04, 0x6d, 0x06, 0x0a, 0x36, 0x0a, 0x02, + 0x04, 0x00, 0x12, 0x04, 0x72, 0x00, 0x7f, 0x01, 0x1a, 0x2a, 0x20, 0x46, 0x75, 0x6c, 0x6c, 0x20, + 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, + 0x66, 0x20, 0x61, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x72, 0x08, 0x16, + 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x00, 0x03, 0x00, 0x12, 0x04, 0x74, 0x02, 0x7a, 0x03, 0x1a, 0x28, + 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x03, 0x00, + 0x01, 0x12, 0x03, 0x74, 0x0a, 0x0c, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x12, 0x03, 0x75, 0x04, 0x12, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x75, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, + 0x12, 0x03, 0x75, 0x0b, 0x0d, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x75, 0x10, 0x11, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x12, + 0x03, 0x76, 0x04, 0x1a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, + 0x03, 0x76, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x76, 0x0b, 0x15, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, + 0x03, 0x76, 0x18, 0x19, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x02, 0x12, 0x03, + 0x77, 0x04, 0x1f, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, + 0x77, 0x04, 0x09, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, + 0x77, 0x0a, 0x1a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, + 0x77, 0x1d, 0x1e, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x12, 0x03, 0x78, + 0x04, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x05, 0x12, 0x03, 0x78, + 0x04, 0x09, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x78, + 0x0a, 0x0e, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x78, + 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x12, 0x03, 0x79, 0x04, + 0x1e, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, 0x79, 0x04, + 0x09, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x79, 0x0a, + 0x19, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x79, 0x1c, + 0x1d, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, 0x08, 0x00, 0x12, 0x04, 0x7c, 0x02, 0x7e, 0x03, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, 0x01, 0x12, 0x03, 0x7c, 0x08, 0x0f, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x7d, 0x04, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x00, 0x06, 0x12, 0x03, 0x7d, 0x04, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, + 0x01, 0x12, 0x03, 0x7d, 0x07, 0x09, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, + 0x03, 0x7d, 0x0c, 0x0d, 0x0a, 0x30, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x06, 0x82, 0x01, 0x00, 0x8d, + 0x01, 0x01, 0x1a, 0x22, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x04, 0x82, + 0x01, 0x08, 0x1b, 0x0a, 0x3d, 0x0a, 0x04, 0x04, 0x01, 0x03, 0x00, 0x12, 0x06, 0x84, 0x01, 0x02, + 0x88, 0x01, 0x03, 0x1a, 0x2d, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x03, 0x00, 0x01, 0x12, 0x04, 0x84, 0x01, 0x0a, + 0x0c, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0x85, 0x01, 0x04, + 0x1f, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0x85, 0x01, + 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x85, + 0x01, 0x0a, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, + 0x85, 0x01, 0x1d, 0x1e, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, + 0x86, 0x01, 0x04, 0x13, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, + 0x04, 0x86, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x01, 0x01, + 0x12, 0x04, 0x86, 0x01, 0x0a, 0x0e, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, 0x01, + 0x03, 0x12, 0x04, 0x86, 0x01, 0x11, 0x12, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x00, 0x02, + 0x02, 0x12, 0x04, 0x87, 0x01, 0x04, 0x1e, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, 0x02, + 0x02, 0x05, 0x12, 0x04, 0x87, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x00, + 0x02, 0x02, 0x01, 0x12, 0x04, 0x87, 0x01, 0x0a, 0x19, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x01, 0x03, + 0x00, 0x02, 0x02, 0x03, 0x12, 0x04, 0x87, 0x01, 0x1c, 0x1d, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x01, + 0x08, 0x00, 0x12, 0x06, 0x8a, 0x01, 0x02, 0x8c, 0x01, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, + 0x08, 0x00, 0x01, 0x12, 0x04, 0x8a, 0x01, 0x08, 0x0f, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x01, 0x02, + 0x00, 0x12, 0x04, 0x8b, 0x01, 0x04, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, + 0x12, 0x04, 0x8b, 0x01, 0x04, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, + 0x04, 0x8b, 0x01, 0x07, 0x09, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x04, + 0x8b, 0x01, 0x0c, 0x0d, 0x0a, 0x36, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x06, 0x90, 0x01, 0x00, 0x9d, + 0x01, 0x01, 0x1a, 0x28, 0x20, 0x46, 0x75, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, + 0x04, 0x02, 0x01, 0x12, 0x04, 0x90, 0x01, 0x08, 0x14, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x02, 0x03, + 0x00, 0x12, 0x06, 0x92, 0x01, 0x02, 0x98, 0x01, 0x03, 0x1a, 0x26, 0x20, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x03, 0x00, 0x01, 0x12, 0x04, 0x92, 0x01, 0x0a, 0x0c, + 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0x93, 0x01, 0x04, 0x12, + 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0x93, 0x01, 0x04, + 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x93, 0x01, + 0x0b, 0x0d, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0x93, + 0x01, 0x10, 0x11, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0x94, + 0x01, 0x04, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, + 0x94, 0x01, 0x04, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, + 0x04, 0x94, 0x01, 0x0b, 0x15, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x01, 0x03, + 0x12, 0x04, 0x94, 0x01, 0x18, 0x19, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x02, 0x03, 0x00, 0x02, 0x02, + 0x12, 0x04, 0x95, 0x01, 0x04, 0x17, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x02, + 0x05, 0x12, 0x04, 0x95, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, + 0x02, 0x01, 0x12, 0x04, 0x95, 0x01, 0x0a, 0x12, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, + 0x02, 0x02, 0x03, 0x12, 0x04, 0x95, 0x01, 0x15, 0x16, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x02, 0x03, + 0x00, 0x02, 0x03, 0x12, 0x04, 0x96, 0x01, 0x04, 0x13, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, 0x03, + 0x00, 0x02, 0x03, 0x05, 0x12, 0x04, 0x96, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x02, + 0x03, 0x00, 0x02, 0x03, 0x01, 0x12, 0x04, 0x96, 0x01, 0x0a, 0x0e, 0x0a, 0x0f, 0x0a, 0x07, 0x04, + 0x02, 0x03, 0x00, 0x02, 0x03, 0x03, 0x12, 0x04, 0x96, 0x01, 0x11, 0x12, 0x0a, 0x0e, 0x0a, 0x06, + 0x04, 0x02, 0x03, 0x00, 0x02, 0x04, 0x12, 0x04, 0x97, 0x01, 0x04, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, + 0x04, 0x02, 0x03, 0x00, 0x02, 0x04, 0x05, 0x12, 0x04, 0x97, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, + 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x04, 0x01, 0x12, 0x04, 0x97, 0x01, 0x0a, 0x15, 0x0a, 0x0f, + 0x0a, 0x07, 0x04, 0x02, 0x03, 0x00, 0x02, 0x04, 0x03, 0x12, 0x04, 0x97, 0x01, 0x18, 0x19, 0x0a, + 0x0e, 0x0a, 0x04, 0x04, 0x02, 0x08, 0x00, 0x12, 0x06, 0x9a, 0x01, 0x02, 0x9c, 0x01, 0x03, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x00, 0x01, 0x12, 0x04, 0x9a, 0x01, 0x08, 0x0f, 0x0a, 0x0c, + 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x04, 0x9b, 0x01, 0x04, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9b, 0x01, 0x04, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x02, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9b, 0x01, 0x07, 0x09, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x00, 0x03, 0x12, 0x04, 0x9b, 0x01, 0x0c, 0x0d, 0x0a, 0x2e, 0x0a, 0x02, 0x04, 0x03, 0x12, + 0x06, 0xa0, 0x01, 0x00, 0xaa, 0x01, 0x01, 0x1a, 0x20, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, 0x01, + 0x12, 0x04, 0xa0, 0x01, 0x08, 0x19, 0x0a, 0x43, 0x0a, 0x04, 0x04, 0x03, 0x03, 0x00, 0x12, 0x06, + 0xa2, 0x01, 0x02, 0xa5, 0x01, 0x03, 0x1a, 0x33, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x31, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x03, 0x03, 0x00, 0x01, 0x12, 0x04, 0xa2, 0x01, 0x0a, 0x0c, 0x0a, 0x2f, 0x0a, 0x06, 0x04, 0x03, + 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xa3, 0x01, 0x04, 0x13, 0x22, 0x1f, 0x20, 0x53, 0x65, 0x72, + 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x4d, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, + 0x03, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0xa3, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, + 0x04, 0x03, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xa3, 0x01, 0x0a, 0x0e, 0x0a, 0x0f, 0x0a, + 0x07, 0x04, 0x03, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa3, 0x01, 0x11, 0x12, 0x0a, 0x0e, + 0x0a, 0x06, 0x04, 0x03, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0xa4, 0x01, 0x04, 0x1a, 0x0a, 0x0f, + 0x0a, 0x07, 0x04, 0x03, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, 0xa4, 0x01, 0x04, 0x09, 0x0a, + 0x0f, 0x0a, 0x07, 0x04, 0x03, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa4, 0x01, 0x0a, 0x15, + 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x03, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa4, 0x01, 0x18, + 0x19, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x03, 0x08, 0x00, 0x12, 0x06, 0xa7, 0x01, 0x02, 0xa9, 0x01, + 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x08, 0x00, 0x01, 0x12, 0x04, 0xa7, 0x01, 0x08, 0x0f, + 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x04, 0xa8, 0x01, 0x04, 0x0e, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x04, 0xa8, 0x01, 0x04, 0x06, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x04, 0xa8, 0x01, 0x07, 0x09, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa8, 0x01, 0x0c, 0x0d, 0x0a, 0x2c, 0x0a, 0x02, 0x04, + 0x04, 0x12, 0x06, 0xad, 0x01, 0x00, 0xaf, 0x01, 0x01, 0x1a, 0x1e, 0x20, 0x53, 0x65, 0x6e, 0x64, + 0x20, 0x61, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x4c, 0x53, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, + 0x12, 0x04, 0xad, 0x01, 0x08, 0x20, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, + 0xae, 0x01, 0x02, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x04, 0x12, 0x04, 0xae, + 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x04, 0xae, 0x01, + 0x0b, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0xae, 0x01, 0x1d, + 0x25, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0xae, 0x01, 0x28, 0x29, + 0x0a, 0x30, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0xb2, 0x01, 0x00, 0xb4, 0x01, 0x01, 0x1a, 0x22, + 0x20, 0x53, 0x65, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6f, 0x66, + 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0xb2, 0x01, 0x08, 0x22, 0x0a, + 0x0c, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x04, 0xb3, 0x01, 0x02, 0x2c, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x00, 0x04, 0x12, 0x04, 0xb3, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb3, 0x01, 0x0b, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb3, 0x01, 0x1f, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, + 0x02, 0x00, 0x03, 0x12, 0x04, 0xb3, 0x01, 0x2a, 0x2b, 0x0a, 0x9a, 0x01, 0x0a, 0x02, 0x04, 0x06, + 0x12, 0x06, 0xb7, 0x01, 0x00, 0xbe, 0x01, 0x01, 0x1a, 0x28, 0x20, 0x41, 0x20, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x4b, 0x65, 0x79, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x0a, 0x22, 0x62, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, + 0x62, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, + 0x4d, 0x4c, 0x53, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x77, 0x6f, + 0x75, 0x6c, 0x64, 0x0a, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, 0xb7, + 0x01, 0x08, 0x18, 0x0a, 0x97, 0x01, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x04, 0xbd, 0x01, + 0x02, 0x27, 0x1a, 0x88, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x27, + 0x73, 0x20, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x0a, 0x20, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, + 0x65, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x06, 0x02, 0x00, 0x05, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x07, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x04, 0xbd, 0x01, 0x08, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x06, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbd, 0x01, 0x25, 0x26, 0x0a, 0x2b, 0x0a, 0x02, 0x04, 0x07, + 0x12, 0x06, 0xc1, 0x01, 0x00, 0xc5, 0x01, 0x01, 0x1a, 0x1d, 0x20, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x04, + 0xc1, 0x01, 0x08, 0x23, 0x0a, 0x5b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x04, 0xc3, 0x01, + 0x02, 0x23, 0x1a, 0x4d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x65, + 0x65, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc3, 0x01, 0x02, 0x12, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc3, 0x01, 0x13, 0x1e, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc3, 0x01, 0x21, 0x22, 0x0a, 0x0c, + 0x0a, 0x04, 0x04, 0x07, 0x02, 0x01, 0x12, 0x04, 0xc4, 0x01, 0x02, 0x21, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x07, 0x02, 0x01, 0x05, 0x12, 0x04, 0xc4, 0x01, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x01, 0x01, 0x12, 0x04, 0xc4, 0x01, 0x07, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x01, 0x03, 0x12, 0x04, 0xc4, 0x01, 0x1f, 0x20, 0x0a, 0x3d, 0x0a, 0x02, 0x04, 0x08, 0x12, + 0x06, 0xc8, 0x01, 0x00, 0xca, 0x01, 0x01, 0x1a, 0x2f, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, + 0x04, 0xc8, 0x01, 0x08, 0x24, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x04, 0xc9, + 0x01, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x05, 0x12, 0x04, 0xc9, 0x01, + 0x02, 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc9, 0x01, 0x08, + 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc9, 0x01, 0x1b, 0x1c, + 0x0a, 0x29, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x06, 0xcd, 0x01, 0x00, 0xd1, 0x01, 0x01, 0x1a, 0x1b, + 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x6b, 0x65, + 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, + 0x09, 0x01, 0x12, 0x04, 0xcd, 0x01, 0x08, 0x1f, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, + 0x12, 0x04, 0xcf, 0x01, 0x02, 0x23, 0x1a, 0x2a, 0x20, 0x41, 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x03, 0x00, 0x01, 0x12, 0x04, 0xde, 0x01, - 0x0a, 0x14, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0b, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xdf, 0x01, - 0x04, 0x29, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0b, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0xdf, - 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0b, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, - 0xdf, 0x01, 0x0a, 0x24, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0b, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, - 0x04, 0xdf, 0x01, 0x27, 0x28, 0x0a, 0xcf, 0x01, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x04, - 0xe5, 0x01, 0x02, 0x27, 0x1a, 0xc0, 0x01, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x6f, 0x6e, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x20, - 0x70, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, - 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x72, 0x65, - 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x69, 0x73, 0x0a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x69, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x20, 0x73, 0x70, 0x6f, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x61, 0x72, 0x72, 0x61, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x04, - 0x12, 0x04, 0xe5, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, - 0x04, 0xe5, 0x01, 0x0b, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x04, - 0xe5, 0x01, 0x16, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, 0x04, 0xe5, - 0x01, 0x25, 0x26, 0x0a, 0x26, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x06, 0xe9, 0x01, 0x00, 0xee, 0x01, - 0x01, 0x1a, 0x18, 0x20, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x0c, 0x01, 0x12, 0x04, 0xe9, 0x01, 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, - 0x12, 0x04, 0xea, 0x01, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x05, 0x12, - 0x04, 0xea, 0x01, 0x02, 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x04, - 0xea, 0x01, 0x08, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x04, 0xea, - 0x01, 0x1b, 0x1c, 0x0a, 0x97, 0x01, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x01, 0x12, 0x04, 0xed, 0x01, - 0x02, 0x37, 0x1a, 0x88, 0x01, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x77, - 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, - 0x6f, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, - 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x20, 0x28, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6f, 0x6d, - 0x65, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, - 0x72, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x29, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0c, 0x02, 0x01, 0x06, 0x12, 0x04, 0xed, 0x01, 0x02, 0x21, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0c, 0x02, 0x01, 0x01, 0x12, 0x04, 0xed, 0x01, 0x22, 0x32, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0c, 0x02, 0x01, 0x03, 0x12, 0x04, 0xed, 0x01, 0x35, 0x36, 0x0a, 0x48, 0x0a, 0x02, 0x04, 0x0d, - 0x12, 0x06, 0xf1, 0x01, 0x00, 0xf4, 0x01, 0x01, 0x1a, 0x3a, 0x20, 0x47, 0x65, 0x74, 0x20, 0x61, - 0x6c, 0x6c, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, - 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x73, 0x69, 0x6e, 0x63, 0x65, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, - 0x69, 0x6d, 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0d, 0x01, 0x12, 0x04, 0xf1, 0x01, 0x08, - 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x12, 0x04, 0xf2, 0x01, 0x02, 0x28, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x04, 0x12, 0x04, 0xf2, 0x01, 0x02, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x05, 0x12, 0x04, 0xf2, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xf2, 0x01, 0x12, 0x23, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xf2, 0x01, 0x26, 0x27, 0x0a, 0x0c, 0x0a, 0x04, 0x04, - 0x0d, 0x02, 0x01, 0x12, 0x04, 0xf3, 0x01, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, - 0x01, 0x05, 0x12, 0x04, 0xf3, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, - 0x01, 0x12, 0x04, 0xf3, 0x01, 0x09, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, - 0x12, 0x04, 0xf3, 0x01, 0x19, 0x1a, 0x0a, 0x5b, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x06, 0xf7, 0x01, - 0x00, 0x94, 0x02, 0x01, 0x1a, 0x4d, 0x20, 0x55, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, - 0x65, 0x74, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, - 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, - 0x66, 0x20, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x04, 0xf7, 0x01, 0x08, 0x22, - 0x0a, 0x51, 0x0a, 0x04, 0x04, 0x0e, 0x03, 0x00, 0x12, 0x06, 0xf9, 0x01, 0x02, 0xfc, 0x01, 0x03, - 0x1a, 0x41, 0x20, 0x41, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x77, 0x61, 0x73, 0x20, 0x73, 0x65, - 0x65, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, - 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x6f, 0x64, - 0x65, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x03, 0x00, 0x01, 0x12, 0x04, 0xf9, 0x01, - 0x0a, 0x1f, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xfa, 0x01, - 0x04, 0x1f, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0xfa, - 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, - 0xfa, 0x01, 0x0a, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, - 0x04, 0xfa, 0x01, 0x1d, 0x1e, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x01, 0x12, - 0x04, 0xfb, 0x01, 0x04, 0x22, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x01, 0x05, - 0x12, 0x04, 0xfb, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x01, - 0x01, 0x12, 0x04, 0xfb, 0x01, 0x0a, 0x1d, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, 0x02, - 0x01, 0x03, 0x12, 0x04, 0xfb, 0x01, 0x20, 0x21, 0x0a, 0x2d, 0x0a, 0x04, 0x04, 0x0e, 0x03, 0x01, - 0x12, 0x06, 0xff, 0x01, 0x02, 0x81, 0x02, 0x03, 0x1a, 0x1d, 0x20, 0x41, 0x6e, 0x20, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x03, 0x01, 0x01, - 0x12, 0x04, 0xff, 0x01, 0x0a, 0x23, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x01, 0x02, 0x00, - 0x12, 0x04, 0x80, 0x02, 0x04, 0x1f, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x01, 0x02, 0x00, - 0x05, 0x12, 0x04, 0x80, 0x02, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x01, 0x02, - 0x00, 0x01, 0x12, 0x04, 0x80, 0x02, 0x0a, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x01, - 0x02, 0x00, 0x03, 0x12, 0x04, 0x80, 0x02, 0x1d, 0x1e, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x0e, 0x03, - 0x02, 0x12, 0x06, 0x84, 0x02, 0x02, 0x8a, 0x02, 0x03, 0x1a, 0x28, 0x20, 0x41, 0x20, 0x77, 0x72, - 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x6c, 0x6c, - 0x65, 0x74, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x03, 0x02, 0x01, 0x12, 0x04, 0x84, 0x02, - 0x0a, 0x10, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x00, 0x12, 0x04, 0x85, 0x02, - 0x04, 0x1c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x00, 0x05, 0x12, 0x04, 0x85, - 0x02, 0x04, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x00, 0x01, 0x12, 0x04, - 0x85, 0x02, 0x0b, 0x17, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x00, 0x03, 0x12, - 0x04, 0x85, 0x02, 0x1a, 0x1b, 0x0a, 0x10, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x02, 0x08, 0x00, 0x12, - 0x06, 0x86, 0x02, 0x04, 0x89, 0x02, 0x05, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x08, - 0x00, 0x01, 0x12, 0x04, 0x86, 0x02, 0x0a, 0x0e, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x02, - 0x02, 0x01, 0x12, 0x04, 0x87, 0x02, 0x06, 0x31, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, - 0x02, 0x01, 0x06, 0x12, 0x04, 0x87, 0x02, 0x06, 0x1b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, - 0x02, 0x02, 0x01, 0x01, 0x12, 0x04, 0x87, 0x02, 0x1c, 0x2c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, - 0x03, 0x02, 0x02, 0x01, 0x03, 0x12, 0x04, 0x87, 0x02, 0x2f, 0x30, 0x0a, 0x0e, 0x0a, 0x06, 0x04, - 0x0e, 0x03, 0x02, 0x02, 0x02, 0x12, 0x04, 0x88, 0x02, 0x06, 0x39, 0x0a, 0x0f, 0x0a, 0x07, 0x04, - 0x0e, 0x03, 0x02, 0x02, 0x02, 0x06, 0x12, 0x04, 0x88, 0x02, 0x06, 0x1f, 0x0a, 0x0f, 0x0a, 0x07, - 0x04, 0x0e, 0x03, 0x02, 0x02, 0x02, 0x01, 0x12, 0x04, 0x88, 0x02, 0x20, 0x34, 0x0a, 0x0f, 0x0a, - 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x02, 0x03, 0x12, 0x04, 0x88, 0x02, 0x37, 0x38, 0x0a, 0x3f, - 0x0a, 0x04, 0x04, 0x0e, 0x03, 0x03, 0x12, 0x06, 0x8d, 0x02, 0x02, 0x8f, 0x02, 0x03, 0x1a, 0x2f, - 0x20, 0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, - 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x03, 0x03, 0x01, 0x12, 0x04, 0x8d, 0x02, 0x0a, 0x17, 0x0a, 0x0e, - 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x12, 0x04, 0x8e, 0x02, 0x04, 0x20, 0x0a, 0x0f, - 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8e, 0x02, 0x04, 0x0c, 0x0a, - 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8e, 0x02, 0x0d, 0x13, - 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8e, 0x02, 0x14, - 0x1b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8e, 0x02, - 0x1e, 0x1f, 0x0a, 0x68, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, 0x93, 0x02, 0x02, 0x25, - 0x1a, 0x5a, 0x20, 0x41, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x20, 0x28, 0x6f, 0x72, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x20, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x0a, 0x20, 0x6f, 0x66, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0e, 0x02, 0x00, 0x04, 0x12, 0x04, 0x93, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0e, 0x02, 0x00, 0x06, 0x12, 0x04, 0x93, 0x02, 0x0b, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, - 0x02, 0x00, 0x01, 0x12, 0x04, 0x93, 0x02, 0x19, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, - 0x00, 0x03, 0x12, 0x04, 0x93, 0x02, 0x23, 0x24, 0x0a, 0x2a, 0x0a, 0x02, 0x05, 0x00, 0x12, 0x06, - 0x97, 0x02, 0x00, 0x9b, 0x02, 0x01, 0x1a, 0x1c, 0x20, 0x53, 0x6f, 0x72, 0x74, 0x20, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x04, 0x97, 0x02, 0x05, - 0x12, 0x0a, 0x0c, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x04, 0x98, 0x02, 0x02, 0x21, 0x0a, - 0x0d, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x98, 0x02, 0x02, 0x1c, 0x0a, 0x0d, - 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, 0x04, 0x98, 0x02, 0x1f, 0x20, 0x0a, 0x0c, 0x0a, - 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x04, 0x99, 0x02, 0x02, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x05, - 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0x99, 0x02, 0x02, 0x1a, 0x0a, 0x0d, 0x0a, 0x05, 0x05, 0x00, - 0x02, 0x01, 0x02, 0x12, 0x04, 0x99, 0x02, 0x1d, 0x1e, 0x0a, 0x0c, 0x0a, 0x04, 0x05, 0x00, 0x02, - 0x02, 0x12, 0x04, 0x9a, 0x02, 0x02, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x01, - 0x12, 0x04, 0x9a, 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, 0x12, - 0x04, 0x9a, 0x02, 0x1e, 0x1f, 0x0a, 0x2d, 0x0a, 0x02, 0x04, 0x0f, 0x12, 0x06, 0x9e, 0x02, 0x00, - 0xa2, 0x02, 0x01, 0x1a, 0x1f, 0x20, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0f, 0x01, 0x12, 0x04, 0x9e, 0x02, 0x08, - 0x12, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x00, 0x12, 0x04, 0x9f, 0x02, 0x02, 0x1e, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9f, 0x02, 0x02, 0x0f, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9f, 0x02, 0x10, 0x19, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0f, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9f, 0x02, 0x1c, 0x1d, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x0f, 0x02, 0x01, 0x12, 0x04, 0xa0, 0x02, 0x02, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, - 0x02, 0x01, 0x05, 0x12, 0x04, 0xa0, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, - 0x01, 0x01, 0x12, 0x04, 0xa0, 0x02, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, - 0x03, 0x12, 0x04, 0xa0, 0x02, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x02, 0x12, - 0x04, 0xa1, 0x02, 0x02, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x02, 0x05, 0x12, 0x04, - 0xa1, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x02, 0x01, 0x12, 0x04, 0xa1, - 0x02, 0x09, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x02, 0x03, 0x12, 0x04, 0xa1, 0x02, - 0x15, 0x16, 0x0a, 0x31, 0x0a, 0x02, 0x04, 0x10, 0x12, 0x06, 0xa5, 0x02, 0x00, 0xa8, 0x02, 0x01, - 0x1a, 0x23, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x71, 0x75, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x10, 0x01, 0x12, 0x04, 0xa5, 0x02, - 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x00, 0x12, 0x04, 0xa6, 0x02, 0x02, 0x15, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x05, 0x12, 0x04, 0xa6, 0x02, 0x02, 0x07, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x01, 0x12, 0x04, 0xa6, 0x02, 0x08, 0x10, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa6, 0x02, 0x13, 0x14, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x10, 0x02, 0x01, 0x12, 0x04, 0xa7, 0x02, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x10, 0x02, 0x01, 0x06, 0x12, 0x04, 0xa7, 0x02, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, - 0x02, 0x01, 0x01, 0x12, 0x04, 0xa7, 0x02, 0x0d, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, - 0x01, 0x03, 0x12, 0x04, 0xa7, 0x02, 0x1b, 0x1c, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x11, 0x12, 0x06, - 0xab, 0x02, 0x00, 0xae, 0x02, 0x01, 0x1a, 0x24, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, - 0x04, 0x11, 0x01, 0x12, 0x04, 0xab, 0x02, 0x08, 0x22, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x11, 0x02, - 0x00, 0x12, 0x04, 0xac, 0x02, 0x02, 0x25, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x04, - 0x12, 0x04, 0xac, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x06, 0x12, - 0x04, 0xac, 0x02, 0x0b, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x01, 0x12, 0x04, - 0xac, 0x02, 0x18, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x03, 0x12, 0x04, 0xac, - 0x02, 0x23, 0x24, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x11, 0x02, 0x01, 0x12, 0x04, 0xad, 0x02, 0x02, - 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x06, 0x12, 0x04, 0xad, 0x02, 0x02, 0x0c, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x01, 0x12, 0x04, 0xad, 0x02, 0x0d, 0x18, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x03, 0x12, 0x04, 0xad, 0x02, 0x1b, 0x1c, 0x0a, 0x33, - 0x0a, 0x02, 0x04, 0x12, 0x12, 0x06, 0xb1, 0x02, 0x00, 0xb4, 0x02, 0x01, 0x1a, 0x25, 0x20, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, - 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, - 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x12, 0x01, 0x12, 0x04, 0xb1, 0x02, 0x08, 0x23, - 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x00, 0x12, 0x04, 0xb2, 0x02, 0x02, 0x1d, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, 0x05, 0x12, 0x04, 0xb2, 0x02, 0x02, 0x07, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x12, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb2, 0x02, 0x08, 0x18, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x12, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb2, 0x02, 0x1b, 0x1c, 0x0a, 0x0c, 0x0a, 0x04, 0x04, - 0x12, 0x02, 0x01, 0x12, 0x04, 0xb3, 0x02, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, - 0x01, 0x06, 0x12, 0x04, 0xb3, 0x02, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, - 0x01, 0x12, 0x04, 0xb3, 0x02, 0x0d, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x03, - 0x12, 0x04, 0xb3, 0x02, 0x1b, 0x1c, 0x0a, 0x34, 0x0a, 0x02, 0x04, 0x13, 0x12, 0x06, 0xb7, 0x02, - 0x00, 0xba, 0x02, 0x01, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, - 0x04, 0x13, 0x01, 0x12, 0x04, 0xb7, 0x02, 0x08, 0x24, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x13, 0x02, - 0x00, 0x12, 0x04, 0xb8, 0x02, 0x02, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, 0x04, - 0x12, 0x04, 0xb8, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, 0x06, 0x12, - 0x04, 0xb8, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, 0x01, 0x12, 0x04, - 0xb8, 0x02, 0x1a, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb8, - 0x02, 0x25, 0x26, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x13, 0x02, 0x01, 0x12, 0x04, 0xb9, 0x02, 0x02, - 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, 0x06, 0x12, 0x04, 0xb9, 0x02, 0x02, 0x0c, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, 0x01, 0x12, 0x04, 0xb9, 0x02, 0x0d, 0x18, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, 0x03, 0x12, 0x04, 0xb9, 0x02, 0x1b, 0x1c, 0x0a, 0x39, - 0x0a, 0x02, 0x04, 0x14, 0x12, 0x06, 0xbd, 0x02, 0x00, 0xc4, 0x02, 0x01, 0x1a, 0x2b, 0x20, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x14, 0x01, - 0x12, 0x04, 0xbd, 0x02, 0x08, 0x25, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x14, 0x03, 0x00, 0x12, 0x06, - 0xbf, 0x02, 0x02, 0xc2, 0x02, 0x03, 0x1a, 0x15, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x14, 0x03, 0x00, 0x01, 0x12, 0x04, 0xbf, 0x02, 0x0a, 0x10, 0x0a, 0x0e, 0x0a, 0x06, - 0x04, 0x14, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xc0, 0x02, 0x04, 0x17, 0x0a, 0x0f, 0x0a, 0x07, - 0x04, 0x14, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0xc0, 0x02, 0x04, 0x09, 0x0a, 0x0f, 0x0a, - 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc0, 0x02, 0x0a, 0x12, 0x0a, 0x0f, - 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc0, 0x02, 0x15, 0x16, 0x0a, - 0x0e, 0x0a, 0x06, 0x04, 0x14, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0xc1, 0x02, 0x04, 0x19, 0x0a, - 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, 0xc1, 0x02, 0x04, 0x0a, - 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0xc1, 0x02, 0x0b, - 0x14, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x04, 0xc1, 0x02, - 0x17, 0x18, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x14, 0x02, 0x00, 0x12, 0x04, 0xc3, 0x02, 0x02, 0x1e, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x04, 0x12, 0x04, 0xc3, 0x02, 0x02, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc3, 0x02, 0x0b, 0x11, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc3, 0x02, 0x12, 0x19, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x14, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc3, 0x02, 0x1c, 0x1d, 0x0a, 0x3b, 0x0a, 0x02, - 0x04, 0x15, 0x12, 0x06, 0xc7, 0x02, 0x00, 0xce, 0x02, 0x01, 0x1a, 0x2d, 0x20, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x15, 0x01, - 0x12, 0x04, 0xc7, 0x02, 0x08, 0x27, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x15, 0x03, 0x00, 0x12, 0x06, - 0xc9, 0x02, 0x02, 0xcc, 0x02, 0x03, 0x1a, 0x15, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x15, 0x03, 0x00, 0x01, 0x12, 0x04, 0xc9, 0x02, 0x0a, 0x10, 0x0a, 0x0e, 0x0a, 0x06, - 0x04, 0x15, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xca, 0x02, 0x04, 0x1f, 0x0a, 0x0f, 0x0a, 0x07, - 0x04, 0x15, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0xca, 0x02, 0x04, 0x09, 0x0a, 0x0f, 0x0a, - 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xca, 0x02, 0x0a, 0x1a, 0x0a, 0x0f, - 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0xca, 0x02, 0x1d, 0x1e, 0x0a, - 0x0e, 0x0a, 0x06, 0x04, 0x15, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0xcb, 0x02, 0x04, 0x19, 0x0a, - 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, 0xcb, 0x02, 0x04, 0x0a, - 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0xcb, 0x02, 0x0b, - 0x14, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x04, 0xcb, 0x02, - 0x17, 0x18, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x15, 0x02, 0x00, 0x12, 0x04, 0xcd, 0x02, 0x02, 0x1e, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x04, 0x12, 0x04, 0xcd, 0x02, 0x02, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x06, 0x12, 0x04, 0xcd, 0x02, 0x0b, 0x11, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x01, 0x12, 0x04, 0xcd, 0x02, 0x12, 0x19, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x15, 0x02, 0x00, 0x03, 0x12, 0x04, 0xcd, 0x02, 0x1c, 0x1d, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x04, 0xcf, 0x01, 0x02, + 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x04, 0xcf, 0x01, 0x13, 0x1e, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, 0xcf, 0x01, 0x21, 0x22, 0x0a, + 0x0c, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, 0x12, 0x04, 0xd0, 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x09, 0x02, 0x01, 0x05, 0x12, 0x04, 0xd0, 0x01, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, 0x04, 0xd0, 0x01, 0x07, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x09, 0x02, 0x01, 0x03, 0x12, 0x04, 0xd0, 0x01, 0x20, 0x21, 0x0a, 0x2e, 0x0a, 0x02, 0x04, 0x0a, + 0x12, 0x06, 0xd4, 0x01, 0x00, 0xd9, 0x01, 0x01, 0x1a, 0x20, 0x20, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x6b, 0x65, 0x79, + 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, + 0x01, 0x12, 0x04, 0xd4, 0x01, 0x08, 0x1f, 0x0a, 0xac, 0x01, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, + 0x12, 0x04, 0xd8, 0x01, 0x02, 0x27, 0x1a, 0x9d, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, + 0x6c, 0x6c, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x20, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x2c, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x20, 0x77, 0x69, 0x6c, + 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6b, 0x65, 0x79, + 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, + 0x68, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, + 0x61, 0x63, 0x68, 0x0a, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x04, 0x12, + 0x04, 0xd8, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x05, 0x12, 0x04, + 0xd8, 0x01, 0x0b, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd8, + 0x01, 0x11, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xd8, 0x01, + 0x25, 0x26, 0x0a, 0x39, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x06, 0xdc, 0x01, 0x00, 0xe6, 0x01, 0x01, + 0x1a, 0x2b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x20, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x0b, 0x01, 0x12, 0x04, 0xdc, 0x01, 0x08, 0x20, 0x0a, 0x2b, 0x0a, 0x04, 0x04, 0x0b, + 0x03, 0x00, 0x12, 0x06, 0xde, 0x01, 0x02, 0xe0, 0x01, 0x03, 0x1a, 0x1b, 0x20, 0x41, 0x6e, 0x20, + 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x03, 0x00, 0x01, + 0x12, 0x04, 0xde, 0x01, 0x0a, 0x14, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0b, 0x03, 0x00, 0x02, 0x00, + 0x12, 0x04, 0xdf, 0x01, 0x04, 0x29, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0b, 0x03, 0x00, 0x02, 0x00, + 0x05, 0x12, 0x04, 0xdf, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0b, 0x03, 0x00, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xdf, 0x01, 0x0a, 0x24, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0b, 0x03, 0x00, + 0x02, 0x00, 0x03, 0x12, 0x04, 0xdf, 0x01, 0x27, 0x28, 0x0a, 0xcf, 0x01, 0x0a, 0x04, 0x04, 0x0b, + 0x02, 0x00, 0x12, 0x04, 0xe5, 0x01, 0x02, 0x27, 0x1a, 0xc0, 0x01, 0x20, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x20, 0x70, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x0a, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x61, + 0x6e, 0x79, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6b, 0x65, 0x79, + 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x69, 0x73, 0x0a, 0x20, 0x6c, 0x65, + 0x66, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x72, 0x65, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x70, 0x6f, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0b, 0x02, 0x00, 0x04, 0x12, 0x04, 0xe5, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, + 0x02, 0x00, 0x06, 0x12, 0x04, 0xe5, 0x01, 0x0b, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xe5, 0x01, 0x16, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, + 0x03, 0x12, 0x04, 0xe5, 0x01, 0x25, 0x26, 0x0a, 0x26, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x06, 0xe9, + 0x01, 0x00, 0xee, 0x01, 0x01, 0x1a, 0x18, 0x20, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x20, 0x61, + 0x6e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, + 0x0b, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x04, 0xe9, 0x01, 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x04, + 0x04, 0x0c, 0x02, 0x00, 0x12, 0x04, 0xea, 0x01, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, + 0x02, 0x00, 0x05, 0x12, 0x04, 0xea, 0x01, 0x02, 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xea, 0x01, 0x08, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, + 0x03, 0x12, 0x04, 0xea, 0x01, 0x1b, 0x1c, 0x0a, 0x97, 0x01, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x01, + 0x12, 0x04, 0xed, 0x01, 0x02, 0x37, 0x1a, 0x88, 0x01, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x72, 0x65, + 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, + 0x65, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x61, 0x20, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x20, 0x62, 0x65, + 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x20, 0x28, 0x61, 0x6e, 0x64, + 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x74, + 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x29, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x06, 0x12, 0x04, 0xed, 0x01, 0x02, 0x21, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x01, 0x12, 0x04, 0xed, 0x01, 0x22, 0x32, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x03, 0x12, 0x04, 0xed, 0x01, 0x35, 0x36, 0x0a, 0x48, + 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x06, 0xf1, 0x01, 0x00, 0xf4, 0x01, 0x01, 0x1a, 0x3a, 0x20, 0x47, + 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x73, + 0x69, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0d, 0x01, 0x12, + 0x04, 0xf1, 0x01, 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x12, 0x04, 0xf2, + 0x01, 0x02, 0x28, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x04, 0x12, 0x04, 0xf2, 0x01, + 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x05, 0x12, 0x04, 0xf2, 0x01, 0x0b, + 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xf2, 0x01, 0x12, 0x23, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xf2, 0x01, 0x26, 0x27, 0x0a, + 0x0c, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x01, 0x12, 0x04, 0xf3, 0x01, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0d, 0x02, 0x01, 0x05, 0x12, 0x04, 0xf3, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0d, 0x02, 0x01, 0x01, 0x12, 0x04, 0xf3, 0x01, 0x09, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0d, 0x02, 0x01, 0x03, 0x12, 0x04, 0xf3, 0x01, 0x19, 0x1a, 0x0a, 0x5b, 0x0a, 0x02, 0x04, 0x0e, + 0x12, 0x06, 0xf7, 0x01, 0x00, 0x94, 0x02, 0x01, 0x1a, 0x4d, 0x20, 0x55, 0x73, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x6f, + 0x72, 0x20, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x6c, 0x69, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x20, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x04, + 0xf7, 0x01, 0x08, 0x22, 0x0a, 0x51, 0x0a, 0x04, 0x04, 0x0e, 0x03, 0x00, 0x12, 0x06, 0xf9, 0x01, + 0x02, 0xfc, 0x01, 0x03, 0x1a, 0x41, 0x20, 0x41, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x77, 0x61, + 0x73, 0x20, 0x73, 0x65, 0x65, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x03, 0x00, 0x01, + 0x12, 0x04, 0xf9, 0x01, 0x0a, 0x1f, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x00, + 0x12, 0x04, 0xfa, 0x01, 0x04, 0x1f, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, 0x02, 0x00, + 0x05, 0x12, 0x04, 0xfa, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xfa, 0x01, 0x0a, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x00, + 0x02, 0x00, 0x03, 0x12, 0x04, 0xfa, 0x01, 0x1d, 0x1e, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, + 0x00, 0x02, 0x01, 0x12, 0x04, 0xfb, 0x01, 0x04, 0x22, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, + 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, 0xfb, 0x01, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, + 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0xfb, 0x01, 0x0a, 0x1d, 0x0a, 0x0f, 0x0a, 0x07, 0x04, + 0x0e, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x04, 0xfb, 0x01, 0x20, 0x21, 0x0a, 0x2d, 0x0a, 0x04, + 0x04, 0x0e, 0x03, 0x01, 0x12, 0x06, 0xff, 0x01, 0x02, 0x81, 0x02, 0x03, 0x1a, 0x1d, 0x20, 0x41, + 0x6e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, + 0x61, 0x73, 0x20, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0e, 0x03, 0x01, 0x01, 0x12, 0x04, 0xff, 0x01, 0x0a, 0x23, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, + 0x03, 0x01, 0x02, 0x00, 0x12, 0x04, 0x80, 0x02, 0x04, 0x1f, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, + 0x03, 0x01, 0x02, 0x00, 0x05, 0x12, 0x04, 0x80, 0x02, 0x04, 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, + 0x0e, 0x03, 0x01, 0x02, 0x00, 0x01, 0x12, 0x04, 0x80, 0x02, 0x0a, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, + 0x04, 0x0e, 0x03, 0x01, 0x02, 0x00, 0x03, 0x12, 0x04, 0x80, 0x02, 0x1d, 0x1e, 0x0a, 0x38, 0x0a, + 0x04, 0x04, 0x0e, 0x03, 0x02, 0x12, 0x06, 0x84, 0x02, 0x02, 0x8a, 0x02, 0x03, 0x1a, 0x28, 0x20, + 0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, + 0x79, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x03, 0x02, 0x01, + 0x12, 0x04, 0x84, 0x02, 0x0a, 0x10, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x00, + 0x12, 0x04, 0x85, 0x02, 0x04, 0x1c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x00, + 0x05, 0x12, 0x04, 0x85, 0x02, 0x04, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, + 0x00, 0x01, 0x12, 0x04, 0x85, 0x02, 0x0b, 0x17, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, + 0x02, 0x00, 0x03, 0x12, 0x04, 0x85, 0x02, 0x1a, 0x1b, 0x0a, 0x10, 0x0a, 0x06, 0x04, 0x0e, 0x03, + 0x02, 0x08, 0x00, 0x12, 0x06, 0x86, 0x02, 0x04, 0x89, 0x02, 0x05, 0x0a, 0x0f, 0x0a, 0x07, 0x04, + 0x0e, 0x03, 0x02, 0x08, 0x00, 0x01, 0x12, 0x04, 0x86, 0x02, 0x0a, 0x0e, 0x0a, 0x0e, 0x0a, 0x06, + 0x04, 0x0e, 0x03, 0x02, 0x02, 0x01, 0x12, 0x04, 0x87, 0x02, 0x06, 0x31, 0x0a, 0x0f, 0x0a, 0x07, + 0x04, 0x0e, 0x03, 0x02, 0x02, 0x01, 0x06, 0x12, 0x04, 0x87, 0x02, 0x06, 0x1b, 0x0a, 0x0f, 0x0a, + 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x01, 0x01, 0x12, 0x04, 0x87, 0x02, 0x1c, 0x2c, 0x0a, 0x0f, + 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x01, 0x03, 0x12, 0x04, 0x87, 0x02, 0x2f, 0x30, 0x0a, + 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x02, 0x12, 0x04, 0x88, 0x02, 0x06, 0x39, 0x0a, + 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x02, 0x06, 0x12, 0x04, 0x88, 0x02, 0x06, 0x1f, + 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x02, 0x01, 0x12, 0x04, 0x88, 0x02, 0x20, + 0x34, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x02, 0x02, 0x02, 0x03, 0x12, 0x04, 0x88, 0x02, + 0x37, 0x38, 0x0a, 0x3f, 0x0a, 0x04, 0x04, 0x0e, 0x03, 0x03, 0x12, 0x06, 0x8d, 0x02, 0x02, 0x8f, + 0x02, 0x03, 0x1a, 0x2f, 0x20, 0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x77, 0x61, 0x6c, 0x6c, + 0x65, 0x74, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x03, 0x03, 0x01, 0x12, 0x04, 0x8d, 0x02, + 0x0a, 0x17, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x12, 0x04, 0x8e, 0x02, + 0x04, 0x20, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8e, + 0x02, 0x04, 0x0c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x06, 0x12, 0x04, + 0x8e, 0x02, 0x0d, 0x13, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x01, 0x12, + 0x04, 0x8e, 0x02, 0x14, 0x1b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0e, 0x03, 0x03, 0x02, 0x00, 0x03, + 0x12, 0x04, 0x8e, 0x02, 0x1e, 0x1f, 0x0a, 0x68, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, + 0x93, 0x02, 0x02, 0x25, 0x1a, 0x5a, 0x20, 0x41, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x28, 0x6f, 0x72, 0x20, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, + 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x0a, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x04, 0x12, 0x04, 0x93, 0x02, 0x02, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x06, 0x12, 0x04, 0x93, 0x02, 0x0b, 0x18, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, 0x12, 0x04, 0x93, 0x02, 0x19, 0x20, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x04, 0x93, 0x02, 0x23, 0x24, 0x0a, 0x2a, 0x0a, 0x02, + 0x05, 0x00, 0x12, 0x06, 0x97, 0x02, 0x00, 0x9b, 0x02, 0x01, 0x1a, 0x1c, 0x20, 0x53, 0x6f, 0x72, + 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, + 0x04, 0x97, 0x02, 0x05, 0x12, 0x0a, 0x0c, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x04, 0x98, + 0x02, 0x02, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x98, 0x02, + 0x02, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, 0x04, 0x98, 0x02, 0x1f, + 0x20, 0x0a, 0x0c, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x04, 0x99, 0x02, 0x02, 0x1f, 0x0a, + 0x0d, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x04, 0x99, 0x02, 0x02, 0x1a, 0x0a, 0x0d, + 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x04, 0x99, 0x02, 0x1d, 0x1e, 0x0a, 0x0c, 0x0a, + 0x04, 0x05, 0x00, 0x02, 0x02, 0x12, 0x04, 0x9a, 0x02, 0x02, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x05, + 0x00, 0x02, 0x02, 0x01, 0x12, 0x04, 0x9a, 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x05, 0x00, + 0x02, 0x02, 0x02, 0x12, 0x04, 0x9a, 0x02, 0x1e, 0x1f, 0x0a, 0x2d, 0x0a, 0x02, 0x04, 0x0f, 0x12, + 0x06, 0x9e, 0x02, 0x00, 0xa2, 0x02, 0x01, 0x1a, 0x1f, 0x20, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0f, 0x01, 0x12, + 0x04, 0x9e, 0x02, 0x08, 0x12, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x00, 0x12, 0x04, 0x9f, + 0x02, 0x02, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9f, 0x02, + 0x02, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9f, 0x02, 0x10, + 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9f, 0x02, 0x1c, 0x1d, + 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x01, 0x12, 0x04, 0xa0, 0x02, 0x02, 0x13, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x05, 0x12, 0x04, 0xa0, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0f, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa0, 0x02, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0f, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa0, 0x02, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x04, 0x04, + 0x0f, 0x02, 0x02, 0x12, 0x04, 0xa1, 0x02, 0x02, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, + 0x02, 0x05, 0x12, 0x04, 0xa1, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x02, + 0x01, 0x12, 0x04, 0xa1, 0x02, 0x09, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x02, 0x03, + 0x12, 0x04, 0xa1, 0x02, 0x15, 0x16, 0x0a, 0x31, 0x0a, 0x02, 0x04, 0x10, 0x12, 0x06, 0xa5, 0x02, + 0x00, 0xa8, 0x02, 0x01, 0x1a, 0x23, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x10, 0x01, + 0x12, 0x04, 0xa5, 0x02, 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x00, 0x12, 0x04, + 0xa6, 0x02, 0x02, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x05, 0x12, 0x04, 0xa6, + 0x02, 0x02, 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x01, 0x12, 0x04, 0xa6, 0x02, + 0x08, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa6, 0x02, 0x13, + 0x14, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x01, 0x12, 0x04, 0xa7, 0x02, 0x02, 0x1d, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x06, 0x12, 0x04, 0xa7, 0x02, 0x02, 0x0c, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa7, 0x02, 0x0d, 0x18, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x10, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa7, 0x02, 0x1b, 0x1c, 0x0a, 0x32, 0x0a, 0x02, + 0x04, 0x11, 0x12, 0x06, 0xab, 0x02, 0x00, 0xae, 0x02, 0x01, 0x1a, 0x24, 0x20, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x0a, + 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x11, 0x01, 0x12, 0x04, 0xab, 0x02, 0x08, 0x22, 0x0a, 0x0c, 0x0a, + 0x04, 0x04, 0x11, 0x02, 0x00, 0x12, 0x04, 0xac, 0x02, 0x02, 0x25, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x11, 0x02, 0x00, 0x04, 0x12, 0x04, 0xac, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, + 0x02, 0x00, 0x06, 0x12, 0x04, 0xac, 0x02, 0x0b, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xac, 0x02, 0x18, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, + 0x03, 0x12, 0x04, 0xac, 0x02, 0x23, 0x24, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x11, 0x02, 0x01, 0x12, + 0x04, 0xad, 0x02, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x06, 0x12, 0x04, + 0xad, 0x02, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x01, 0x12, 0x04, 0xad, + 0x02, 0x0d, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x03, 0x12, 0x04, 0xad, 0x02, + 0x1b, 0x1c, 0x0a, 0x33, 0x0a, 0x02, 0x04, 0x12, 0x12, 0x06, 0xb1, 0x02, 0x00, 0xb4, 0x02, 0x01, + 0x1a, 0x25, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, + 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x71, + 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x12, 0x01, 0x12, 0x04, + 0xb1, 0x02, 0x08, 0x23, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x00, 0x12, 0x04, 0xb2, 0x02, + 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, 0x05, 0x12, 0x04, 0xb2, 0x02, 0x02, + 0x07, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb2, 0x02, 0x08, 0x18, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb2, 0x02, 0x1b, 0x1c, 0x0a, + 0x0c, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x01, 0x12, 0x04, 0xb3, 0x02, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x12, 0x02, 0x01, 0x06, 0x12, 0x04, 0xb3, 0x02, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x12, 0x02, 0x01, 0x01, 0x12, 0x04, 0xb3, 0x02, 0x0d, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x12, 0x02, 0x01, 0x03, 0x12, 0x04, 0xb3, 0x02, 0x1b, 0x1c, 0x0a, 0x34, 0x0a, 0x02, 0x04, 0x13, + 0x12, 0x06, 0xb7, 0x02, 0x00, 0xba, 0x02, 0x01, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x0a, + 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x13, 0x01, 0x12, 0x04, 0xb7, 0x02, 0x08, 0x24, 0x0a, 0x0c, 0x0a, + 0x04, 0x04, 0x13, 0x02, 0x00, 0x12, 0x04, 0xb8, 0x02, 0x02, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x13, 0x02, 0x00, 0x04, 0x12, 0x04, 0xb8, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, + 0x02, 0x00, 0x06, 0x12, 0x04, 0xb8, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xb8, 0x02, 0x1a, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, + 0x03, 0x12, 0x04, 0xb8, 0x02, 0x25, 0x26, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x13, 0x02, 0x01, 0x12, + 0x04, 0xb9, 0x02, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, 0x06, 0x12, 0x04, + 0xb9, 0x02, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, 0x01, 0x12, 0x04, 0xb9, + 0x02, 0x0d, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, 0x03, 0x12, 0x04, 0xb9, 0x02, + 0x1b, 0x1c, 0x0a, 0x39, 0x0a, 0x02, 0x04, 0x14, 0x12, 0x06, 0xbd, 0x02, 0x00, 0xc4, 0x02, 0x01, + 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x14, 0x01, 0x12, 0x04, 0xbd, 0x02, 0x08, 0x25, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x14, + 0x03, 0x00, 0x12, 0x06, 0xbf, 0x02, 0x02, 0xc2, 0x02, 0x03, 0x1a, 0x15, 0x20, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x03, 0x00, 0x01, 0x12, 0x04, 0xbf, 0x02, 0x0a, 0x10, + 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x14, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xc0, 0x02, 0x04, 0x17, + 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0xc0, 0x02, 0x04, + 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc0, 0x02, + 0x0a, 0x12, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc0, + 0x02, 0x15, 0x16, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x14, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0xc1, + 0x02, 0x04, 0x19, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, + 0xc1, 0x02, 0x04, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, + 0x04, 0xc1, 0x02, 0x0b, 0x14, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x14, 0x03, 0x00, 0x02, 0x01, 0x03, + 0x12, 0x04, 0xc1, 0x02, 0x17, 0x18, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x14, 0x02, 0x00, 0x12, 0x04, + 0xc3, 0x02, 0x02, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x04, 0x12, 0x04, 0xc3, + 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc3, 0x02, + 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc3, 0x02, 0x12, + 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc3, 0x02, 0x1c, 0x1d, + 0x0a, 0x3b, 0x0a, 0x02, 0x04, 0x15, 0x12, 0x06, 0xc7, 0x02, 0x00, 0xce, 0x02, 0x01, 0x1a, 0x2d, + 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x65, 0x6c, 0x63, + 0x6f, 0x6d, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x15, 0x01, 0x12, 0x04, 0xc7, 0x02, 0x08, 0x27, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x15, + 0x03, 0x00, 0x12, 0x06, 0xc9, 0x02, 0x02, 0xcc, 0x02, 0x03, 0x1a, 0x15, 0x20, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x03, 0x00, 0x01, 0x12, 0x04, 0xc9, 0x02, 0x0a, 0x10, + 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x15, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xca, 0x02, 0x04, 0x1f, + 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, 0xca, 0x02, 0x04, + 0x09, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xca, 0x02, + 0x0a, 0x1a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0xca, + 0x02, 0x1d, 0x1e, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x15, 0x03, 0x00, 0x02, 0x01, 0x12, 0x04, 0xcb, + 0x02, 0x04, 0x19, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x04, + 0xcb, 0x02, 0x04, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, + 0x04, 0xcb, 0x02, 0x0b, 0x14, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x15, 0x03, 0x00, 0x02, 0x01, 0x03, + 0x12, 0x04, 0xcb, 0x02, 0x17, 0x18, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x15, 0x02, 0x00, 0x12, 0x04, + 0xcd, 0x02, 0x02, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x04, 0x12, 0x04, 0xcd, + 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x06, 0x12, 0x04, 0xcd, 0x02, + 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x01, 0x12, 0x04, 0xcd, 0x02, 0x12, + 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x03, 0x12, 0x04, 0xcd, 0x02, 0x1c, 0x1d, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("xmtp.mls.api.v1.serde.rs"); include!("xmtp.mls.api.v1.tonic.rs"); diff --git a/xmtp_proto/src/gen/xmtp.reactions.rs b/xmtp_proto/src/gen/xmtp.reactions.rs new file mode 100644 index 000000000..af460c41b --- /dev/null +++ b/xmtp_proto/src/gen/xmtp.reactions.rs @@ -0,0 +1,96 @@ +// @generated +// This file is @generated by prost-build. +/// Reaction message type +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Reaction { + /// The message ID being reacted to + #[prost(string, tag="1")] + pub reference: ::prost::alloc::string::String, + /// The inbox ID of the user who sent the message being reacted to + /// Optional for group messages + #[prost(string, tag="2")] + pub reference_inbox_id: ::prost::alloc::string::String, + /// The action of the reaction (e.g., "added" or "removed") + #[prost(string, tag="3")] + pub action: ::prost::alloc::string::String, + /// The content of the reaction + #[prost(string, tag="4")] + pub content: ::prost::alloc::string::String, + /// The schema of the reaction content (e.g., "unicode", "shortcode", "custom") + #[prost(string, tag="5")] + pub schema: ::prost::alloc::string::String, +} +/// Encoded file descriptor set for the `xmtp.reactions` package +pub const FILE_DESCRIPTOR_SET: &[u8] = &[ + 0x0a, 0xb4, 0x08, 0x0a, 0x2d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, + 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x62, 0x6f, 0x78, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0xa3, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x6d, + 0x74, 0x70, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x52, 0x65, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x6d, 0x74, 0x70, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x58, 0x52, 0x58, 0xaa, 0x02, 0x0e, 0x58, 0x6d, 0x74, + 0x70, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xca, 0x02, 0x0e, 0x58, 0x6d, + 0x74, 0x70, 0x5c, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xe2, 0x02, 0x1a, 0x58, + 0x6d, 0x74, 0x70, 0x5c, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x58, 0x6d, 0x74, 0x70, + 0x3a, 0x3a, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0xa1, 0x05, 0x0a, 0x06, + 0x12, 0x04, 0x00, 0x00, 0x18, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, + 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x17, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, + 0x03, 0x04, 0x00, 0x3c, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x04, 0x00, 0x3c, 0x0a, + 0x23, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x08, 0x00, 0x18, 0x01, 0x1a, 0x17, 0x20, 0x52, 0x65, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x08, 0x08, 0x10, + 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0a, 0x02, 0x17, 0x1a, 0x21, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x49, 0x44, 0x20, 0x62, + 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0a, 0x02, 0x08, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0a, 0x15, 0x16, 0x0a, 0x6a, 0x0a, 0x04, 0x04, 0x00, + 0x02, 0x01, 0x12, 0x03, 0x0e, 0x02, 0x20, 0x1a, 0x5d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6e, + 0x62, 0x6f, 0x78, 0x20, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x20, 0x77, 0x68, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, + 0x61, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x0a, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, + 0x03, 0x0e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0e, + 0x09, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0e, 0x1e, 0x1f, + 0x0a, 0x46, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x11, 0x02, 0x14, 0x1a, 0x39, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, + 0x2c, 0x20, 0x22, 0x61, 0x64, 0x64, 0x65, 0x64, 0x22, 0x20, 0x6f, 0x72, 0x20, 0x22, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x29, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, + 0x05, 0x12, 0x03, 0x11, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, + 0x03, 0x11, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x11, + 0x12, 0x13, 0x0a, 0x2b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x14, 0x02, 0x15, 0x1a, + 0x1e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x05, 0x12, 0x03, 0x14, 0x02, 0x08, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x14, 0x09, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x14, 0x13, 0x14, 0x0a, 0x5a, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x04, 0x12, 0x03, 0x17, 0x02, 0x14, 0x1a, 0x4d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x28, 0x65, 0x2e, 0x67, + 0x2e, 0x2c, 0x20, 0x22, 0x75, 0x6e, 0x69, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x20, 0x22, 0x73, + 0x68, 0x6f, 0x72, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x20, 0x22, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x22, 0x29, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, + 0x17, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x17, 0x09, + 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x17, 0x12, 0x13, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +]; +include!("xmtp.reactions.serde.rs"); +// @@protoc_insertion_point(module) \ No newline at end of file diff --git a/xmtp_proto/src/gen/xmtp.reactions.serde.rs b/xmtp_proto/src/gen/xmtp.reactions.serde.rs new file mode 100644 index 000000000..2b7142eb9 --- /dev/null +++ b/xmtp_proto/src/gen/xmtp.reactions.serde.rs @@ -0,0 +1,161 @@ +// @generated +impl serde::Serialize for Reaction { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.reference.is_empty() { + len += 1; + } + if !self.reference_inbox_id.is_empty() { + len += 1; + } + if !self.action.is_empty() { + len += 1; + } + if !self.content.is_empty() { + len += 1; + } + if !self.schema.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("xmtp.reactions.Reaction", len)?; + if !self.reference.is_empty() { + struct_ser.serialize_field("reference", &self.reference)?; + } + if !self.reference_inbox_id.is_empty() { + struct_ser.serialize_field("referenceInboxId", &self.reference_inbox_id)?; + } + if !self.action.is_empty() { + struct_ser.serialize_field("action", &self.action)?; + } + if !self.content.is_empty() { + struct_ser.serialize_field("content", &self.content)?; + } + if !self.schema.is_empty() { + struct_ser.serialize_field("schema", &self.schema)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for Reaction { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "reference", + "reference_inbox_id", + "referenceInboxId", + "action", + "content", + "schema", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Reference, + ReferenceInboxId, + Action, + Content, + Schema, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "reference" => Ok(GeneratedField::Reference), + "referenceInboxId" | "reference_inbox_id" => Ok(GeneratedField::ReferenceInboxId), + "action" => Ok(GeneratedField::Action), + "content" => Ok(GeneratedField::Content), + "schema" => Ok(GeneratedField::Schema), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = Reaction; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct xmtp.reactions.Reaction") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut reference__ = None; + let mut reference_inbox_id__ = None; + let mut action__ = None; + let mut content__ = None; + let mut schema__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Reference => { + if reference__.is_some() { + return Err(serde::de::Error::duplicate_field("reference")); + } + reference__ = Some(map_.next_value()?); + } + GeneratedField::ReferenceInboxId => { + if reference_inbox_id__.is_some() { + return Err(serde::de::Error::duplicate_field("referenceInboxId")); + } + reference_inbox_id__ = Some(map_.next_value()?); + } + GeneratedField::Action => { + if action__.is_some() { + return Err(serde::de::Error::duplicate_field("action")); + } + action__ = Some(map_.next_value()?); + } + GeneratedField::Content => { + if content__.is_some() { + return Err(serde::de::Error::duplicate_field("content")); + } + content__ = Some(map_.next_value()?); + } + GeneratedField::Schema => { + if schema__.is_some() { + return Err(serde::de::Error::duplicate_field("schema")); + } + schema__ = Some(map_.next_value()?); + } + } + } + Ok(Reaction { + reference: reference__.unwrap_or_default(), + reference_inbox_id: reference_inbox_id__.unwrap_or_default(), + action: action__.unwrap_or_default(), + content: content__.unwrap_or_default(), + schema: schema__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("xmtp.reactions.Reaction", FIELDS, GeneratedVisitor) + } +} diff --git a/xmtp_proto/src/gen/xmtp.xmtpv4.message_api.rs b/xmtp_proto/src/gen/xmtp.xmtpv4.message_api.rs index d503be4c0..6b2e40280 100644 --- a/xmtp_proto/src/gen/xmtp.xmtpv4.message_api.rs +++ b/xmtp_proto/src/gen/xmtp.xmtpv4.message_api.rs @@ -139,7 +139,7 @@ impl Misbehavior { } /// Encoded file descriptor set for the `xmtp.xmtpv4.message_api` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xf2, 0x2a, 0x0a, 0x24, 0x78, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x2f, 0x6d, 0x65, 0x73, 0x73, + 0x0a, 0xda, 0x29, 0x0a, 0x24, 0x78, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, @@ -295,7 +295,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x5c, 0x58, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x5c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x70, 0x69, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x58, 0x6d, 0x74, 0x70, 0x3a, 0x3a, 0x58, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x3a, 0x3a, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x70, 0x69, 0x4a, 0xa1, 0x17, 0x0a, 0x06, 0x12, 0x04, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x70, 0x69, 0x4a, 0x89, 0x16, 0x0a, 0x06, 0x12, 0x04, 0x01, 0x00, 0x76, 0x01, 0x0a, 0x23, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x01, 0x00, 0x12, 0x1a, 0x19, 0x20, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x58, 0x4d, 0x54, 0x50, 0x20, 0x56, 0x34, 0x0a, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, @@ -452,37 +452,27 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x58, 0x44, 0x5e, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x59, 0x04, 0x5c, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x59, 0x04, 0x5c, 0x06, 0x0a, - 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x5a, - 0x06, 0x29, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, - 0x12, 0x03, 0x5b, 0x06, 0x0f, 0x0a, 0x1f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x60, - 0x02, 0x65, 0x03, 0x1a, 0x11, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x65, 0x6e, 0x76, 0x65, - 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, - 0x03, 0x60, 0x06, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x60, - 0x15, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x60, 0x35, 0x4b, - 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x61, 0x04, 0x64, 0x06, 0x0a, - 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x61, 0x04, - 0x64, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, - 0x12, 0x03, 0x62, 0x06, 0x25, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, - 0xbc, 0x22, 0x07, 0x12, 0x03, 0x63, 0x06, 0x0f, 0x0a, 0x20, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, - 0x12, 0x04, 0x68, 0x02, 0x6d, 0x03, 0x1a, 0x12, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x02, 0x01, 0x12, 0x03, 0x68, 0x06, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, - 0x02, 0x12, 0x03, 0x68, 0x1c, 0x38, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, - 0x03, 0x68, 0x43, 0x60, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x04, 0x69, - 0x04, 0x6c, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x12, 0x04, 0x69, 0x04, 0x6c, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, - 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x6a, 0x06, 0x2d, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, - 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x6b, 0x06, 0x0f, 0x0a, 0x1d, 0x0a, 0x04, - 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x70, 0x02, 0x75, 0x03, 0x1a, 0x0f, 0x20, 0x47, 0x65, 0x74, - 0x20, 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x20, 0x69, 0x64, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x70, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x03, 0x02, 0x12, 0x03, 0x70, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, - 0x12, 0x03, 0x70, 0x2f, 0x42, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, - 0x71, 0x04, 0x74, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x12, 0x04, 0x71, 0x04, 0x74, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, - 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x72, 0x06, 0x23, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, - 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x73, 0x06, 0x0f, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x60, 0x02, 0x65, 0x03, 0x1a, 0x11, 0x20, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x60, 0x06, 0x14, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x60, 0x15, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x60, 0x35, 0x4b, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x01, 0x04, 0x12, 0x04, 0x61, 0x04, 0x64, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, + 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x61, 0x04, 0x64, 0x06, 0x0a, 0x20, 0x0a, 0x04, + 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x68, 0x02, 0x6d, 0x03, 0x1a, 0x12, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x20, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x68, 0x06, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x68, 0x1c, 0x38, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x02, 0x03, 0x12, 0x03, 0x68, 0x43, 0x60, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, + 0x04, 0x12, 0x04, 0x69, 0x04, 0x6c, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, 0x04, + 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x69, 0x04, 0x6c, 0x06, 0x0a, 0x1d, 0x0a, 0x04, 0x06, 0x00, + 0x02, 0x03, 0x12, 0x04, 0x70, 0x02, 0x75, 0x03, 0x1a, 0x0f, 0x20, 0x47, 0x65, 0x74, 0x20, 0x69, + 0x6e, 0x62, 0x6f, 0x78, 0x20, 0x69, 0x64, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x03, 0x01, 0x12, 0x03, 0x70, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, + 0x12, 0x03, 0x70, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, + 0x70, 0x2f, 0x42, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, 0x71, 0x04, + 0x74, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, + 0x04, 0x71, 0x04, 0x74, 0x06, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("xmtp.xmtpv4.message_api.serde.rs"); include!("xmtp.xmtpv4.message_api.tonic.rs"); diff --git a/xmtp_proto/src/gen/xmtp.xmtpv4.payer_api.rs b/xmtp_proto/src/gen/xmtp.xmtpv4.payer_api.rs index 10249099d..ac0df5bbf 100644 --- a/xmtp_proto/src/gen/xmtp.xmtpv4.payer_api.rs +++ b/xmtp_proto/src/gen/xmtp.xmtpv4.payer_api.rs @@ -14,7 +14,7 @@ pub struct PublishClientEnvelopesResponse { } /// Encoded file descriptor set for the `xmtp.xmtpv4.payer_api` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xfa, 0x09, 0x0a, 0x20, 0x78, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x2f, 0x70, 0x61, 0x79, 0x65, + 0x0a, 0xd4, 0x09, 0x0a, 0x20, 0x78, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x2f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x2e, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x1a, 0x1c, 0x67, 0x6f, @@ -61,7 +61,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x74, 0x70, 0x5c, 0x58, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x5c, 0x50, 0x61, 0x79, 0x65, 0x72, 0x41, 0x70, 0x69, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x58, 0x6d, 0x74, 0x70, 0x3a, 0x3a, 0x58, 0x6d, 0x74, 0x70, 0x76, 0x34, 0x3a, 0x3a, 0x50, - 0x61, 0x79, 0x65, 0x72, 0x41, 0x70, 0x69, 0x4a, 0xfb, 0x03, 0x0a, 0x06, 0x12, 0x04, 0x01, 0x00, + 0x61, 0x79, 0x65, 0x72, 0x41, 0x70, 0x69, 0x4a, 0xd5, 0x03, 0x0a, 0x06, 0x12, 0x04, 0x01, 0x00, 0x1b, 0x01, 0x0a, 0x15, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x01, 0x00, 0x12, 0x1a, 0x0b, 0x20, 0x50, 0x61, 0x79, 0x65, 0x72, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x03, 0x00, 0x1e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x05, 0x00, 0x26, 0x0a, 0x09, @@ -90,10 +90,8 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x15, 0x1d, 0x3a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x15, 0x45, 0x63, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x16, 0x04, 0x19, 0x06, 0x0a, 0x11, 0x0a, 0x09, - 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x16, 0x04, 0x19, 0x06, 0x0a, - 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x17, - 0x06, 0x34, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, - 0x12, 0x03, 0x18, 0x06, 0x0f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x16, 0x04, 0x19, 0x06, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("xmtp.xmtpv4.payer_api.serde.rs"); include!("xmtp.xmtpv4.payer_api.tonic.rs"); From ffee7f711f9fe632ba276e5d49b88ca8603d4a8f Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Sun, 24 Nov 2024 17:13:08 -0800 Subject: [PATCH 04/14] use enums for reaction action and schema --- xmtp_content_types/src/reaction.rs | 21 +- xmtp_proto/src/gen/xmtp.reactions.rs | 234 +++++++++++++++------ xmtp_proto/src/gen/xmtp.reactions.serde.rs | 171 ++++++++++++++- 3 files changed, 340 insertions(+), 86 deletions(-) diff --git a/xmtp_content_types/src/reaction.rs b/xmtp_content_types/src/reaction.rs index 9fffc07f5..512e32444 100644 --- a/xmtp_content_types/src/reaction.rs +++ b/xmtp_content_types/src/reaction.rs @@ -2,9 +2,7 @@ use std::collections::HashMap; use prost::Message; -use xmtp_proto::xmtp::mls::message_contents::{ - ContentTypeId, EncodedContent -}; +use xmtp_proto::xmtp::mls::message_contents::{ContentTypeId, EncodedContent}; use xmtp_proto::xmtp::reactions::Reaction; use super::{CodecError, ContentCodec}; @@ -52,7 +50,9 @@ impl ContentCodec for ReactionCodec { pub(crate) mod tests { #[cfg(target_arch = "wasm32")] wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_dedicated_worker); - + + use xmtp_proto::xmtp::reactions::{ReactionAction, ReactionSchema}; + use crate::test_utils::rand_string; use super::*; @@ -63,21 +63,18 @@ pub(crate) mod tests { let new_reaction_data = Reaction { reference: rand_string(), reference_inbox_id: rand_string(), - action: "added".to_string(), + action: ReactionAction::ActionAdded as i32, content: "👍".to_string(), - schema: "unicode".to_string(), + schema: ReactionSchema::SchemaUnicode as i32, }; let encoded = ReactionCodec::encode(new_reaction_data).unwrap(); - assert_eq!( - encoded.clone().r#type.unwrap().type_id, - "reaction" - ); + assert_eq!(encoded.clone().r#type.unwrap().type_id, "reaction"); assert!(!encoded.content.is_empty()); let decoded = ReactionCodec::decode(encoded).unwrap(); - assert_eq!(decoded.action, "added".to_string()); + assert_eq!(decoded.action, ReactionAction::ActionAdded as i32); assert_eq!(decoded.content, "👍".to_string()); - assert_eq!(decoded.schema, "unicode".to_string()); + assert_eq!(decoded.schema, ReactionSchema::SchemaUnicode as i32); } } diff --git a/xmtp_proto/src/gen/xmtp.reactions.rs b/xmtp_proto/src/gen/xmtp.reactions.rs index af460c41b..174935afd 100644 --- a/xmtp_proto/src/gen/xmtp.reactions.rs +++ b/xmtp_proto/src/gen/xmtp.reactions.rs @@ -11,86 +11,188 @@ pub struct Reaction { /// Optional for group messages #[prost(string, tag="2")] pub reference_inbox_id: ::prost::alloc::string::String, - /// The action of the reaction (e.g., "added" or "removed") - #[prost(string, tag="3")] - pub action: ::prost::alloc::string::String, + /// The action of the reaction (added or removed) + #[prost(enumeration="ReactionAction", tag="3")] + pub action: i32, /// The content of the reaction #[prost(string, tag="4")] pub content: ::prost::alloc::string::String, - /// The schema of the reaction content (e.g., "unicode", "shortcode", "custom") - #[prost(string, tag="5")] - pub schema: ::prost::alloc::string::String, + /// The schema of the reaction content + #[prost(enumeration="ReactionSchema", tag="5")] + pub schema: i32, +} +/// Action enum to represent reaction states +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ReactionAction { + ActionUnspecified = 0, + ActionAdded = 1, + ActionRemoved = 2, +} +impl ReactionAction { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + ReactionAction::ActionUnspecified => "ACTION_UNSPECIFIED", + ReactionAction::ActionAdded => "ACTION_ADDED", + ReactionAction::ActionRemoved => "ACTION_REMOVED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ACTION_UNSPECIFIED" => Some(Self::ActionUnspecified), + "ACTION_ADDED" => Some(Self::ActionAdded), + "ACTION_REMOVED" => Some(Self::ActionRemoved), + _ => None, + } + } +} +/// Schema enum to represent reaction content types +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ReactionSchema { + SchemaUnspecified = 0, + SchemaUnicode = 1, + SchemaShortcode = 2, + SchemaCustom = 3, +} +impl ReactionSchema { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + ReactionSchema::SchemaUnspecified => "SCHEMA_UNSPECIFIED", + ReactionSchema::SchemaUnicode => "SCHEMA_UNICODE", + ReactionSchema::SchemaShortcode => "SCHEMA_SHORTCODE", + ReactionSchema::SchemaCustom => "SCHEMA_CUSTOM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "SCHEMA_UNSPECIFIED" => Some(Self::SchemaUnspecified), + "SCHEMA_UNICODE" => Some(Self::SchemaUnicode), + "SCHEMA_SHORTCODE" => Some(Self::SchemaShortcode), + "SCHEMA_CUSTOM" => Some(Self::SchemaCustom), + _ => None, + } + } } /// Encoded file descriptor set for the `xmtp.reactions` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xb4, 0x08, 0x0a, 0x2d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x0a, 0xa6, 0x0d, 0x0a, 0x2d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x6e, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x78, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x78, 0x6d, + 0x74, 0x70, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0xa3, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x6d, - 0x74, 0x70, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x52, 0x65, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x6d, 0x74, 0x70, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x58, 0x52, 0x58, 0xaa, 0x02, 0x0e, 0x58, 0x6d, 0x74, - 0x70, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xca, 0x02, 0x0e, 0x58, 0x6d, - 0x74, 0x70, 0x5c, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xe2, 0x02, 0x1a, 0x58, - 0x6d, 0x74, 0x70, 0x5c, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x58, 0x6d, 0x74, 0x70, - 0x3a, 0x3a, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0xa1, 0x05, 0x0a, 0x06, - 0x12, 0x04, 0x00, 0x00, 0x18, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, - 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x17, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, - 0x03, 0x04, 0x00, 0x3c, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x04, 0x00, 0x3c, 0x0a, - 0x23, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x08, 0x00, 0x18, 0x01, 0x1a, 0x17, 0x20, 0x52, 0x65, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x08, 0x08, 0x10, - 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0a, 0x02, 0x17, 0x1a, 0x21, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x49, 0x44, 0x20, 0x62, - 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0a, 0x02, 0x08, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0a, 0x15, 0x16, 0x0a, 0x6a, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x01, 0x12, 0x03, 0x0e, 0x02, 0x20, 0x1a, 0x5d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6e, - 0x62, 0x6f, 0x78, 0x20, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x72, 0x20, 0x77, 0x68, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, - 0x61, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x0a, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, - 0x03, 0x0e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0e, - 0x09, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0e, 0x1e, 0x1f, - 0x0a, 0x46, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x11, 0x02, 0x14, 0x1a, 0x39, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, - 0x2c, 0x20, 0x22, 0x61, 0x64, 0x64, 0x65, 0x64, 0x22, 0x20, 0x6f, 0x72, 0x20, 0x22, 0x72, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x29, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, - 0x05, 0x12, 0x03, 0x11, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, - 0x03, 0x11, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x11, - 0x12, 0x13, 0x0a, 0x2b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x14, 0x02, 0x15, 0x1a, - 0x1e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x05, 0x12, 0x03, 0x14, 0x02, 0x08, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x14, 0x09, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x14, 0x13, 0x14, 0x0a, 0x5a, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x04, 0x12, 0x03, 0x17, 0x02, 0x14, 0x1a, 0x4d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x28, 0x65, 0x2e, 0x67, - 0x2e, 0x2c, 0x20, 0x22, 0x75, 0x6e, 0x69, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x20, 0x22, 0x73, - 0x68, 0x6f, 0x72, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x20, 0x22, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x22, 0x29, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, - 0x17, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x17, 0x09, - 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x17, 0x12, 0x13, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, + 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, + 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, + 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2a, 0x4e, 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x10, 0x0a, 0x0c, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x4f, + 0x56, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x65, 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x48, 0x45, 0x4d, + 0x41, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x12, 0x0a, 0x0e, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x43, 0x4f, 0x44, + 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x53, 0x48, + 0x4f, 0x52, 0x54, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x43, 0x48, + 0x45, 0x4d, 0x41, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x03, 0x42, 0xa3, 0x01, 0x0a, + 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x78, 0x6d, 0x74, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x67, + 0x6f, 0x2f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x58, 0x52, + 0x58, 0xaa, 0x02, 0x0e, 0x58, 0x6d, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0xca, 0x02, 0x0e, 0x58, 0x6d, 0x74, 0x70, 0x5c, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0xe2, 0x02, 0x1a, 0x58, 0x6d, 0x74, 0x70, 0x5c, 0x52, 0x65, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x0f, 0x58, 0x6d, 0x74, 0x70, 0x3a, 0x3a, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x4a, 0x9c, 0x08, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x27, 0x01, 0x0a, 0x08, 0x0a, + 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, + 0x17, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x04, 0x00, 0x3c, 0x0a, 0x09, 0x0a, 0x02, 0x08, + 0x0b, 0x12, 0x03, 0x04, 0x00, 0x3c, 0x0a, 0x36, 0x0a, 0x02, 0x05, 0x00, 0x12, 0x04, 0x08, 0x00, + 0x0c, 0x01, 0x1a, 0x2a, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x75, 0x6d, + 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x0a, 0x0a, 0x0a, + 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x08, 0x05, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, + 0x02, 0x00, 0x12, 0x03, 0x09, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, + 0x12, 0x03, 0x09, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, + 0x09, 0x17, 0x18, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0a, 0x02, 0x13, + 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0a, 0x02, 0x0e, 0x0a, 0x0c, + 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x0a, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, + 0x05, 0x00, 0x02, 0x02, 0x12, 0x03, 0x0b, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, + 0x02, 0x01, 0x12, 0x03, 0x0b, 0x02, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, + 0x12, 0x03, 0x0b, 0x13, 0x14, 0x0a, 0x3d, 0x0a, 0x02, 0x05, 0x01, 0x12, 0x04, 0x0f, 0x00, 0x14, + 0x01, 0x1a, 0x31, 0x20, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x20, + 0x74, 0x6f, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x01, 0x01, 0x12, 0x03, 0x0f, 0x05, 0x13, + 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x01, 0x02, 0x00, 0x12, 0x03, 0x10, 0x02, 0x19, 0x0a, 0x0c, 0x0a, + 0x05, 0x05, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x10, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x05, + 0x01, 0x02, 0x00, 0x02, 0x12, 0x03, 0x10, 0x17, 0x18, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x01, 0x02, + 0x01, 0x12, 0x03, 0x11, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x01, 0x01, 0x12, + 0x03, 0x11, 0x02, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x01, 0x02, 0x12, 0x03, 0x11, + 0x13, 0x14, 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x01, 0x02, 0x02, 0x12, 0x03, 0x12, 0x02, 0x17, 0x0a, + 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x12, 0x02, 0x12, 0x0a, 0x0c, 0x0a, + 0x05, 0x05, 0x01, 0x02, 0x02, 0x02, 0x12, 0x03, 0x12, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x05, + 0x01, 0x02, 0x03, 0x12, 0x03, 0x13, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x03, + 0x01, 0x12, 0x03, 0x13, 0x02, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x01, 0x02, 0x03, 0x02, 0x12, + 0x03, 0x13, 0x12, 0x13, 0x0a, 0x23, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x17, 0x00, 0x27, 0x01, + 0x1a, 0x17, 0x20, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, + 0x12, 0x03, 0x17, 0x08, 0x10, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x19, + 0x02, 0x17, 0x1a, 0x21, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x20, 0x49, 0x44, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x65, + 0x64, 0x20, 0x74, 0x6f, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, + 0x19, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x19, 0x09, + 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x19, 0x15, 0x16, 0x0a, + 0x6a, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x1d, 0x02, 0x20, 0x1a, 0x5d, 0x20, 0x54, + 0x68, 0x65, 0x20, 0x69, 0x6e, 0x62, 0x6f, 0x78, 0x20, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x77, 0x68, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x74, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x62, 0x65, 0x69, + 0x6e, 0x67, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x0a, 0x20, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x1d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x01, 0x01, 0x12, 0x03, 0x1d, 0x09, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, + 0x12, 0x03, 0x1d, 0x1e, 0x1f, 0x0a, 0x3c, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x20, + 0x02, 0x1c, 0x1a, 0x2f, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x28, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x64, 0x29, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x20, 0x02, + 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x20, 0x11, 0x17, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x20, 0x1a, 0x1b, 0x0a, 0x2b, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x23, 0x02, 0x15, 0x1a, 0x1e, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x03, 0x05, 0x12, 0x03, 0x23, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, + 0x01, 0x12, 0x03, 0x23, 0x09, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, + 0x03, 0x23, 0x13, 0x14, 0x0a, 0x31, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x04, 0x12, 0x03, 0x26, 0x02, + 0x1c, 0x1a, 0x24, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x06, + 0x12, 0x03, 0x26, 0x02, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, + 0x26, 0x11, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x26, 0x1a, + 0x1b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("xmtp.reactions.serde.rs"); // @@protoc_insertion_point(module) \ No newline at end of file diff --git a/xmtp_proto/src/gen/xmtp.reactions.serde.rs b/xmtp_proto/src/gen/xmtp.reactions.serde.rs index 2b7142eb9..c494c569e 100644 --- a/xmtp_proto/src/gen/xmtp.reactions.serde.rs +++ b/xmtp_proto/src/gen/xmtp.reactions.serde.rs @@ -13,13 +13,13 @@ impl serde::Serialize for Reaction { if !self.reference_inbox_id.is_empty() { len += 1; } - if !self.action.is_empty() { + if self.action != 0 { len += 1; } if !self.content.is_empty() { len += 1; } - if !self.schema.is_empty() { + if self.schema != 0 { len += 1; } let mut struct_ser = serializer.serialize_struct("xmtp.reactions.Reaction", len)?; @@ -29,14 +29,18 @@ impl serde::Serialize for Reaction { if !self.reference_inbox_id.is_empty() { struct_ser.serialize_field("referenceInboxId", &self.reference_inbox_id)?; } - if !self.action.is_empty() { - struct_ser.serialize_field("action", &self.action)?; + if self.action != 0 { + let v = ReactionAction::try_from(self.action) + .map_err(|_| serde::ser::Error::custom(format!("Invalid variant {}", self.action)))?; + struct_ser.serialize_field("action", &v)?; } if !self.content.is_empty() { struct_ser.serialize_field("content", &self.content)?; } - if !self.schema.is_empty() { - struct_ser.serialize_field("schema", &self.schema)?; + if self.schema != 0 { + let v = ReactionSchema::try_from(self.schema) + .map_err(|_| serde::ser::Error::custom(format!("Invalid variant {}", self.schema)))?; + struct_ser.serialize_field("schema", &v)?; } struct_ser.end() } @@ -131,7 +135,7 @@ impl<'de> serde::Deserialize<'de> for Reaction { if action__.is_some() { return Err(serde::de::Error::duplicate_field("action")); } - action__ = Some(map_.next_value()?); + action__ = Some(map_.next_value::()? as i32); } GeneratedField::Content => { if content__.is_some() { @@ -143,7 +147,7 @@ impl<'de> serde::Deserialize<'de> for Reaction { if schema__.is_some() { return Err(serde::de::Error::duplicate_field("schema")); } - schema__ = Some(map_.next_value()?); + schema__ = Some(map_.next_value::()? as i32); } } } @@ -159,3 +163,154 @@ impl<'de> serde::Deserialize<'de> for Reaction { deserializer.deserialize_struct("xmtp.reactions.Reaction", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for ReactionAction { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + let variant = match self { + Self::ActionUnspecified => "ACTION_UNSPECIFIED", + Self::ActionAdded => "ACTION_ADDED", + Self::ActionRemoved => "ACTION_REMOVED", + }; + serializer.serialize_str(variant) + } +} +impl<'de> serde::Deserialize<'de> for ReactionAction { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "ACTION_UNSPECIFIED", + "ACTION_ADDED", + "ACTION_REMOVED", + ]; + + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ReactionAction; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + fn visit_i64(self, v: i64) -> std::result::Result + where + E: serde::de::Error, + { + i32::try_from(v) + .ok() + .and_then(|x| x.try_into().ok()) + .ok_or_else(|| { + serde::de::Error::invalid_value(serde::de::Unexpected::Signed(v), &self) + }) + } + + fn visit_u64(self, v: u64) -> std::result::Result + where + E: serde::de::Error, + { + i32::try_from(v) + .ok() + .and_then(|x| x.try_into().ok()) + .ok_or_else(|| { + serde::de::Error::invalid_value(serde::de::Unexpected::Unsigned(v), &self) + }) + } + + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "ACTION_UNSPECIFIED" => Ok(ReactionAction::ActionUnspecified), + "ACTION_ADDED" => Ok(ReactionAction::ActionAdded), + "ACTION_REMOVED" => Ok(ReactionAction::ActionRemoved), + _ => Err(serde::de::Error::unknown_variant(value, FIELDS)), + } + } + } + deserializer.deserialize_any(GeneratedVisitor) + } +} +impl serde::Serialize for ReactionSchema { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + let variant = match self { + Self::SchemaUnspecified => "SCHEMA_UNSPECIFIED", + Self::SchemaUnicode => "SCHEMA_UNICODE", + Self::SchemaShortcode => "SCHEMA_SHORTCODE", + Self::SchemaCustom => "SCHEMA_CUSTOM", + }; + serializer.serialize_str(variant) + } +} +impl<'de> serde::Deserialize<'de> for ReactionSchema { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "SCHEMA_UNSPECIFIED", + "SCHEMA_UNICODE", + "SCHEMA_SHORTCODE", + "SCHEMA_CUSTOM", + ]; + + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = ReactionSchema; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + fn visit_i64(self, v: i64) -> std::result::Result + where + E: serde::de::Error, + { + i32::try_from(v) + .ok() + .and_then(|x| x.try_into().ok()) + .ok_or_else(|| { + serde::de::Error::invalid_value(serde::de::Unexpected::Signed(v), &self) + }) + } + + fn visit_u64(self, v: u64) -> std::result::Result + where + E: serde::de::Error, + { + i32::try_from(v) + .ok() + .and_then(|x| x.try_into().ok()) + .ok_or_else(|| { + serde::de::Error::invalid_value(serde::de::Unexpected::Unsigned(v), &self) + }) + } + + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "SCHEMA_UNSPECIFIED" => Ok(ReactionSchema::SchemaUnspecified), + "SCHEMA_UNICODE" => Ok(ReactionSchema::SchemaUnicode), + "SCHEMA_SHORTCODE" => Ok(ReactionSchema::SchemaShortcode), + "SCHEMA_CUSTOM" => Ok(ReactionSchema::SchemaCustom), + _ => Err(serde::de::Error::unknown_variant(value, FIELDS)), + } + } + } + deserializer.deserialize_any(GeneratedVisitor) + } +} From 7238b75a023a39734553621650e3c93ff1f5b052 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Mon, 25 Nov 2024 15:13:05 -0800 Subject: [PATCH 05/14] if external msg is reaction, save it's parent msg id to the db --- xmtp_content_types/src/reaction.rs | 2 +- .../down.sql | 4 ++++ .../up.sql | 4 ++++ xmtp_mls/src/groups/mls_sync.rs | 22 ++++++++++++++++--- xmtp_mls/src/groups/mod.rs | 1 + .../storage/encrypted_store/group_message.rs | 2 ++ .../src/storage/encrypted_store/schema.rs | 1 + 7 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 xmtp_mls/migrations/2024-11-25-011800_create_group_message_parent_id/down.sql create mode 100644 xmtp_mls/migrations/2024-11-25-011800_create_group_message_parent_id/up.sql diff --git a/xmtp_content_types/src/reaction.rs b/xmtp_content_types/src/reaction.rs index 512e32444..68696523e 100644 --- a/xmtp_content_types/src/reaction.rs +++ b/xmtp_content_types/src/reaction.rs @@ -11,7 +11,7 @@ pub struct ReactionCodec {} impl ReactionCodec { const AUTHORITY_ID: &'static str = "xmtp.org"; - const TYPE_ID: &'static str = "reaction"; + pub const TYPE_ID: &'static str = "reaction"; } impl ContentCodec for ReactionCodec { diff --git a/xmtp_mls/migrations/2024-11-25-011800_create_group_message_parent_id/down.sql b/xmtp_mls/migrations/2024-11-25-011800_create_group_message_parent_id/down.sql new file mode 100644 index 000000000..3811fff36 --- /dev/null +++ b/xmtp_mls/migrations/2024-11-25-011800_create_group_message_parent_id/down.sql @@ -0,0 +1,4 @@ +-- This file should undo anything in `up.sql` + +ALTER TABLE group_messages +DROP COLUMN parent_id; diff --git a/xmtp_mls/migrations/2024-11-25-011800_create_group_message_parent_id/up.sql b/xmtp_mls/migrations/2024-11-25-011800_create_group_message_parent_id/up.sql new file mode 100644 index 000000000..d12c34bdc --- /dev/null +++ b/xmtp_mls/migrations/2024-11-25-011800_create_group_message_parent_id/up.sql @@ -0,0 +1,4 @@ +-- Your SQL goes here + +ALTER TABLE group_messages +ADD COLUMN parent_id BINARY; diff --git a/xmtp_mls/src/groups/mls_sync.rs b/xmtp_mls/src/groups/mls_sync.rs index abe8dc521..c18bb23bf 100644 --- a/xmtp_mls/src/groups/mls_sync.rs +++ b/xmtp_mls/src/groups/mls_sync.rs @@ -58,7 +58,7 @@ use std::{ }; use thiserror::Error; use tracing::debug; -use xmtp_content_types::{group_updated::GroupUpdatedCodec, CodecError, ContentCodec}; +use xmtp_content_types::{group_updated::GroupUpdatedCodec, reaction::ReactionCodec, CodecError, ContentCodec}; use xmtp_id::{InboxId, InboxIdRef}; use xmtp_proto::xmtp::mls::{ api::v1::{ @@ -69,8 +69,7 @@ use xmtp_proto::xmtp::mls::{ GroupMessage, WelcomeMessageInput, }, message_contents::{ - plaintext_envelope::{v2::MessageType, Content, V1, V2}, - GroupUpdated, PlaintextEnvelope, + plaintext_envelope::{v2::MessageType, Content, V1, V2}, EncodedContent, GroupUpdated, PlaintextEnvelope }, }; @@ -532,6 +531,19 @@ where })) => { let message_id = calculate_message_id(&self.group_id, &content, &idempotency_key); + let encoded_content = EncodedContent::decode(content.as_slice())?; + let encoded_content_clone = encoded_content.clone(); + let parent_id = match encoded_content.r#type { + Some(content_type) => { + if content_type.type_id == ReactionCodec::TYPE_ID { + let reaction = ReactionCodec::decode(encoded_content_clone)?; + Some(reaction.reference.into_bytes()) + } else { + None + } + } + _ => None, + }; StoredGroupMessage { id: message_id, group_id: self.group_id.clone(), @@ -541,6 +553,7 @@ where sender_installation_id, sender_inbox_id, delivery_status: DeliveryStatus::Published, + parent_id, } .store_or_ignore(provider.conn_ref())? } @@ -569,6 +582,7 @@ where sender_installation_id, sender_inbox_id: sender_inbox_id.clone(), delivery_status: DeliveryStatus::Published, + parent_id: None, } .store_or_ignore(provider.conn_ref())?; @@ -598,6 +612,7 @@ where sender_installation_id, sender_inbox_id, delivery_status: DeliveryStatus::Published, + parent_id: None, } .store_or_ignore(provider.conn_ref())?; @@ -908,6 +923,7 @@ where sender_installation_id, sender_inbox_id, delivery_status: DeliveryStatus::Published, + parent_id: None, }; msg.store_or_ignore(conn)?; diff --git a/xmtp_mls/src/groups/mod.rs b/xmtp_mls/src/groups/mod.rs index 3f89cf8b2..4cc17d08a 100644 --- a/xmtp_mls/src/groups/mod.rs +++ b/xmtp_mls/src/groups/mod.rs @@ -690,6 +690,7 @@ impl MlsGroup { sender_installation_id: self.context().installation_public_key(), sender_inbox_id: self.context().inbox_id().to_string(), delivery_status: DeliveryStatus::Unpublished, + parent_id: None, }; group_message.store(conn)?; diff --git a/xmtp_mls/src/storage/encrypted_store/group_message.rs b/xmtp_mls/src/storage/encrypted_store/group_message.rs index 7976a030c..7c5a12733 100644 --- a/xmtp_mls/src/storage/encrypted_store/group_message.rs +++ b/xmtp_mls/src/storage/encrypted_store/group_message.rs @@ -38,6 +38,8 @@ pub struct StoredGroupMessage { pub sender_inbox_id: String, /// We optimistically store messages before sending. pub delivery_status: DeliveryStatus, + /// The ID of the parent message if this message is a reaction. + pub parent_id: Option>, } #[derive(Clone, Debug, PartialEq)] diff --git a/xmtp_mls/src/storage/encrypted_store/schema.rs b/xmtp_mls/src/storage/encrypted_store/schema.rs index 5a6e3385b..0d3dd06a9 100644 --- a/xmtp_mls/src/storage/encrypted_store/schema.rs +++ b/xmtp_mls/src/storage/encrypted_store/schema.rs @@ -41,6 +41,7 @@ diesel::table! { sender_installation_id -> Binary, sender_inbox_id -> Text, delivery_status -> Integer, + parent_id -> Nullable, } } From 0ca23e267e386d3469b5c139e4cc34dae1d3f34c Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Mon, 25 Nov 2024 16:29:08 -0800 Subject: [PATCH 06/14] add missing parent_id --- xmtp_mls/src/storage/encrypted_store/group_message.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/xmtp_mls/src/storage/encrypted_store/group_message.rs b/xmtp_mls/src/storage/encrypted_store/group_message.rs index 7c5a12733..f50bea17e 100644 --- a/xmtp_mls/src/storage/encrypted_store/group_message.rs +++ b/xmtp_mls/src/storage/encrypted_store/group_message.rs @@ -306,6 +306,7 @@ pub(crate) mod tests { sender_inbox_id: "0x0".to_string(), kind: kind.unwrap_or(GroupMessageKind::Application), delivery_status: DeliveryStatus::Unpublished, + parent_id: None, } } From d7bfea5c07af5af4fba03bdc8f4f61be182ebf30 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Mon, 25 Nov 2024 16:36:09 -0800 Subject: [PATCH 07/14] save parent id when preparing message if we have a reaction --- xmtp_mls/src/groups/mod.rs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/xmtp_mls/src/groups/mod.rs b/xmtp_mls/src/groups/mod.rs index 4cc17d08a..6530fa9af 100644 --- a/xmtp_mls/src/groups/mod.rs +++ b/xmtp_mls/src/groups/mod.rs @@ -34,6 +34,7 @@ use openmls_traits::OpenMlsProvider; use prost::Message; use thiserror::Error; use tokio::sync::Mutex; +use xmtp_content_types::{reaction::ReactionCodec, ContentCodec}; use self::device_sync::DeviceSyncError; pub use self::group_permissions::PreconfiguredPolicies; @@ -66,8 +67,7 @@ use xmtp_proto::xmtp::mls::{ GroupMessage, }, message_contents::{ - plaintext_envelope::{Content, V1}, - PlaintextEnvelope, + plaintext_envelope::{Content, V1}, EncodedContent, PlaintextEnvelope }, }; @@ -679,6 +679,21 @@ impl MlsGroup { let intent_data: Vec = SendMessageIntentData::new(encoded_envelope).into(); self.queue_intent_with_conn(conn, IntentKind::SendMessage, intent_data)?; + + // Check if the message has a parent_id + let encoded_content = EncodedContent::decode(message).unwrap(); + let encoded_content_clone = encoded_content.clone(); + let parent_id = match encoded_content.r#type { + Some(content_type) => { + if content_type.type_id == ReactionCodec::TYPE_ID { + let reaction = ReactionCodec::decode(encoded_content_clone).unwrap(); + Some(reaction.reference.into_bytes()) + } else { + None + } + } + _ => None, + }; // store this unpublished message locally before sending let message_id = calculate_message_id(&self.group_id, message, &now.to_string()); let group_message = StoredGroupMessage { @@ -690,7 +705,7 @@ impl MlsGroup { sender_installation_id: self.context().installation_public_key(), sender_inbox_id: self.context().inbox_id().to_string(), delivery_status: DeliveryStatus::Unpublished, - parent_id: None, + parent_id, }; group_message.store(conn)?; From 8aecd31af664bd9716481331c19d6b8fed1dc5f0 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Tue, 26 Nov 2024 09:48:45 -0800 Subject: [PATCH 08/14] added test for send and receive reaction --- Cargo.lock | 1 + bindings_ffi/Cargo.toml | 1 + bindings_ffi/src/mls.rs | 142 +++++++++++++++++++++++++++++++++++-- xmtp_mls/src/groups/mod.rs | 3 +- 4 files changed, 141 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f93c12545..95906d0ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7390,6 +7390,7 @@ dependencies = [ "futures", "log", "parking_lot 0.12.3", + "prost", "rand", "thiserror 2.0.3", "thread-id", diff --git a/bindings_ffi/Cargo.toml b/bindings_ffi/Cargo.toml index 00ba44467..a23572f3f 100644 --- a/bindings_ffi/Cargo.toml +++ b/bindings_ffi/Cargo.toml @@ -11,6 +11,7 @@ crate-type = ["lib", "cdylib", "staticlib"] futures.workspace = true log = { version = "0.4", features = ["std"] } parking_lot.workspace = true +prost = { workspace = true, features = ["prost-derive"] } thiserror.workspace = true thread-id = "5.0.0" tokio = { workspace = true, features = ["macros"] } diff --git a/bindings_ffi/src/mls.rs b/bindings_ffi/src/mls.rs index 1dc95f2a7..12faa3c3d 100644 --- a/bindings_ffi/src/mls.rs +++ b/bindings_ffi/src/mls.rs @@ -16,6 +16,7 @@ use xmtp_id::{ }, InboxId, }; +use prost::Message; use xmtp_mls::groups::scoped_client::LocalScopedGroupClient; use xmtp_mls::storage::group::ConversationType; use xmtp_mls::storage::group_message::MsgQueryArgs; @@ -47,6 +48,7 @@ use xmtp_mls::{ AbortHandle, GenericStreamHandle, StreamHandle, }; use xmtp_proto::xmtp::mls::message_contents::DeviceSyncKind; +use xmtp_proto::xmtp::reactions::Reaction; pub type RustXmtpClient = MlsClient; /// It returns a new client of the specified `inbox_id`. @@ -1229,6 +1231,16 @@ impl FfiConversation { Ok(message_id) } + pub async fn send_reaction( + &self, + reaction: FfiReaction, + ) -> Result, GenericError> { + let reaction_proto: Reaction = reaction.into(); + let mut buf = Vec::new(); + reaction_proto.encode(&mut buf).unwrap(); + self.send(buf).await + } + /// send a message without immediately publishing to the delivery service. pub fn send_optimistic(&self, content_bytes: Vec) -> Result, GenericError> { let id = self @@ -1635,6 +1647,63 @@ impl From for FfiMessage { } } +#[derive(uniffi::Record, Clone, Default)] +pub struct FfiReaction { + pub reference: String, + pub reference_inbox_id: String, + pub action: FfiReactionAction, + pub content: String, + pub schema: FfiReactionSchema, +} + +impl From for Reaction { + fn from(reaction: FfiReaction) -> Self { + Reaction { + reference: reaction.reference, + reference_inbox_id: reaction.reference_inbox_id, + action: reaction.action.into(), + content: reaction.content, + schema: reaction.schema.into(), + } + } +} + +#[derive(uniffi::Enum, Clone, Default)] +pub enum FfiReactionAction { + Unknown, + #[default] Added, + Removed, +} + +impl From for i32 { + fn from(action: FfiReactionAction) -> Self { + match action { + FfiReactionAction::Unknown => 0, + FfiReactionAction::Added => 1, + FfiReactionAction::Removed => 2, + } + } +} + +#[derive(uniffi::Enum, Clone, Default)] +pub enum FfiReactionSchema { + Unknown, + #[default] Unicode, + Shortcode, + Custom, +} + +impl From for i32 { + fn from(schema: FfiReactionSchema) -> Self { + match schema { + FfiReactionSchema::Unknown => 0, + FfiReactionSchema::Unicode => 1, + FfiReactionSchema::Shortcode => 2, + FfiReactionSchema::Custom => 3, + } + } +} + #[derive(uniffi::Record)] pub struct FfiConsent { pub entity_type: FfiConsentEntityType, @@ -1801,14 +1870,12 @@ impl FfiGroupPermissions { mod tests { use super::{create_client, FfiConsentCallback, FfiMessage, FfiMessageCallback, FfiXmtpClient}; use crate::{ - get_inbox_id_for_address, inbox_owner::SigningError, logger::FfiLogger, FfiConsent, - FfiConsentEntityType, FfiConsentState, FfiConversation, FfiConversationCallback, - FfiConversationMessageKind, FfiCreateGroupOptions, FfiGroupPermissionsOptions, - FfiInboxOwner, FfiListConversationsOptions, FfiListMessagesOptions, FfiMetadataField, - FfiPermissionPolicy, FfiPermissionPolicySet, FfiPermissionUpdateType, FfiSubscribeError, + get_inbox_id_for_address, inbox_owner::SigningError, logger::FfiLogger, FfiConsent, FfiConsentEntityType, FfiConsentState, FfiConversation, FfiConversationCallback, FfiConversationMessageKind, FfiCreateGroupOptions, FfiGroupPermissionsOptions, FfiInboxOwner, FfiListConversationsOptions, FfiListMessagesOptions, FfiMetadataField, FfiPermissionPolicy, FfiPermissionPolicySet, FfiPermissionUpdateType, FfiReaction, FfiReactionAction, FfiReactionSchema, FfiSubscribeError }; use ethers::utils::hex; + use prost::Message; use rand::distributions::{Alphanumeric, DistString}; + use xmtp_proto::xmtp::reactions::{Reaction, ReactionAction, ReactionSchema}; use std::{ env, sync::{ @@ -4374,4 +4441,69 @@ mod tests { "Hello in group" ); } + + #[tokio::test(flavor = "multi_thread", worker_threads = 5)] + async fn test_can_send_and_receive_reaction() { + // Create two test clients + let alix = new_test_client().await; + let bo = new_test_client().await; + + // Create a conversation between them + let alix_conversation = alix + .conversations() + .create_group( + vec![bo.account_address.clone()], + FfiCreateGroupOptions::default(), + ) + .await + .unwrap(); + + // Send initial message to react to + alix_conversation + .send("Hello world".as_bytes().to_vec()) + .await + .unwrap(); + + // Have Bo sync to get the conversation and message + bo.conversations().sync().await.unwrap(); + let bo_conversation = bo.conversation(alix_conversation.id()).unwrap(); + bo_conversation.sync().await.unwrap(); + + // Get the message to react to + let messages = bo_conversation + .find_messages(FfiListMessagesOptions::default()) + .unwrap(); + let message_to_react_to = &messages[0]; + + // Create and send reaction + let reaction = FfiReaction { + reference: hex::encode(message_to_react_to.id.clone()), + reference_inbox_id: alix.inbox_id(), + action: FfiReactionAction::Added, + content: "👍".to_string(), + schema: FfiReactionSchema::Unicode, + }; + + bo_conversation.send_reaction(reaction).await.unwrap(); + + // Have Alix sync to get the reaction + alix_conversation.sync().await.unwrap(); + + // Get reactions for the original message + let messages = alix_conversation + .find_messages(FfiListMessagesOptions::default()) + .unwrap(); + + // Verify reaction details + assert_eq!(messages.len(), 2); + let received_reaction = &messages[1]; + let message_content = received_reaction.content.clone(); + let slice: &[u8] = message_content.as_slice(); + let reaction = Reaction::decode(slice).unwrap(); + assert_eq!(reaction.content, "👍"); + assert_eq!(reaction.action, ReactionAction::ActionAdded as i32); + assert_eq!(reaction.reference_inbox_id, alix.inbox_id()); + assert_eq!(reaction.reference, hex::encode(message_to_react_to.id.clone())); + assert_eq!(reaction.schema, ReactionSchema::SchemaUnicode as i32); + } } diff --git a/xmtp_mls/src/groups/mod.rs b/xmtp_mls/src/groups/mod.rs index 6530fa9af..fd3efd6c2 100644 --- a/xmtp_mls/src/groups/mod.rs +++ b/xmtp_mls/src/groups/mod.rs @@ -686,7 +686,8 @@ impl MlsGroup { let parent_id = match encoded_content.r#type { Some(content_type) => { if content_type.type_id == ReactionCodec::TYPE_ID { - let reaction = ReactionCodec::decode(encoded_content_clone).unwrap(); + let reaction + = ReactionCodec::decode(encoded_content_clone).unwrap(); Some(reaction.reference.into_bytes()) } else { None From bb86700cd98a535bd8a597e443b348b77c9e700a Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Tue, 26 Nov 2024 18:40:29 -0800 Subject: [PATCH 09/14] fixed test for sending reaction content type --- Cargo.lock | 1 + bindings_ffi/Cargo.toml | 1 + bindings_ffi/src/mls.rs | 29 +++++++++++++++++++++-------- xmtp_mls/src/groups/mod.rs | 13 ++++++++++++- 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 95906d0ba..1db423672 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7398,6 +7398,7 @@ dependencies = [ "uniffi", "uuid 1.11.0", "xmtp_api_grpc", + "xmtp_content_types", "xmtp_cryptography", "xmtp_id", "xmtp_mls", diff --git a/bindings_ffi/Cargo.toml b/bindings_ffi/Cargo.toml index a23572f3f..dfa4527d6 100644 --- a/bindings_ffi/Cargo.toml +++ b/bindings_ffi/Cargo.toml @@ -21,6 +21,7 @@ xmtp_cryptography = { path = "../xmtp_cryptography" } xmtp_id = { path = "../xmtp_id" } xmtp_mls = { path = "../xmtp_mls" } xmtp_proto = { path = "../xmtp_proto", features = ["proto_full"] } +xmtp_content_types = { path = "../xmtp_content_types" } xmtp_user_preferences = { path = "../xmtp_user_preferences" } xmtp_v2 = { path = "../xmtp_v2" } diff --git a/bindings_ffi/src/mls.rs b/bindings_ffi/src/mls.rs index 12faa3c3d..6b6f6eb61 100644 --- a/bindings_ffi/src/mls.rs +++ b/bindings_ffi/src/mls.rs @@ -1875,7 +1875,8 @@ mod tests { use ethers::utils::hex; use prost::Message; use rand::distributions::{Alphanumeric, DistString}; - use xmtp_proto::xmtp::reactions::{Reaction, ReactionAction, ReactionSchema}; + use xmtp_content_types::{reaction::ReactionCodec, text::TextCodec, ContentCodec}; + use xmtp_proto::xmtp::{mls::message_contents::EncodedContent, reactions::{Reaction, ReactionAction, ReactionSchema}}; use std::{ env, sync::{ @@ -4457,10 +4458,14 @@ mod tests { ) .await .unwrap(); - // Send initial message to react to + let mut buf = Vec::new(); + TextCodec::encode("Hello world".to_string()) + .unwrap() + .encode(&mut buf) + .unwrap(); alix_conversation - .send("Hello world".as_bytes().to_vec()) + .send(buf) .await .unwrap(); @@ -4476,7 +4481,7 @@ mod tests { let message_to_react_to = &messages[0]; // Create and send reaction - let reaction = FfiReaction { + let ffi_reaction = FfiReaction { reference: hex::encode(message_to_react_to.id.clone()), reference_inbox_id: alix.inbox_id(), action: FfiReactionAction::Added, @@ -4484,7 +4489,13 @@ mod tests { schema: FfiReactionSchema::Unicode, }; - bo_conversation.send_reaction(reaction).await.unwrap(); + + let reaction_sent: Reaction = ffi_reaction.into(); + let mut buf = Vec::new(); + ReactionCodec::encode(reaction_sent).unwrap().encode(&mut buf).unwrap(); + + bo_conversation.send(buf).await.unwrap(); + // Have Alix sync to get the reaction alix_conversation.sync().await.unwrap(); @@ -4495,11 +4506,13 @@ mod tests { .unwrap(); // Verify reaction details - assert_eq!(messages.len(), 2); - let received_reaction = &messages[1]; + assert_eq!(messages.len(), 3); + let received_reaction = &messages[2]; let message_content = received_reaction.content.clone(); let slice: &[u8] = message_content.as_slice(); - let reaction = Reaction::decode(slice).unwrap(); + let encoded_content = EncodedContent::decode(slice).unwrap(); + let reaction = Reaction::decode(encoded_content.content.as_slice()).unwrap(); + println!("Encoded content: {:?}", encoded_content); assert_eq!(reaction.content, "👍"); assert_eq!(reaction.action, ReactionAction::ActionAdded as i32); assert_eq!(reaction.reference_inbox_id, alix.inbox_id()); diff --git a/xmtp_mls/src/groups/mod.rs b/xmtp_mls/src/groups/mod.rs index fd3efd6c2..b3dc7e380 100644 --- a/xmtp_mls/src/groups/mod.rs +++ b/xmtp_mls/src/groups/mod.rs @@ -681,7 +681,18 @@ impl MlsGroup { // Check if the message has a parent_id - let encoded_content = EncodedContent::decode(message).unwrap(); + // let encoded_content = EncodedContent::decode(message).unwrap(); + let encoded_content = match EncodedContent::decode(message) { + Ok(encoded_content) => { + // Use the encoded_content struct + println!("Decoded successfully"); + Some(encoded_content) + }, + Err(e) => { + println!("Failed to decode: {}", e); + None + } + }.unwrap(); let encoded_content_clone = encoded_content.clone(); let parent_id = match encoded_content.r#type { Some(content_type) => { From de25ac9c6e91abdfbe7715d2636759ebd6067e74 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Wed, 27 Nov 2024 14:22:06 -0800 Subject: [PATCH 10/14] format and code cleanup --- bindings_ffi/src/mls.rs | 48 ++++++++++++++++----------------- xmtp_mls/src/groups/mls_sync.rs | 7 +++-- xmtp_mls/src/groups/mod.rs | 12 ++++----- 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/bindings_ffi/src/mls.rs b/bindings_ffi/src/mls.rs index 6b6f6eb61..71a33fe14 100644 --- a/bindings_ffi/src/mls.rs +++ b/bindings_ffi/src/mls.rs @@ -16,7 +16,6 @@ use xmtp_id::{ }, InboxId, }; -use prost::Message; use xmtp_mls::groups::scoped_client::LocalScopedGroupClient; use xmtp_mls::storage::group::ConversationType; use xmtp_mls::storage::group_message::MsgQueryArgs; @@ -1231,16 +1230,6 @@ impl FfiConversation { Ok(message_id) } - pub async fn send_reaction( - &self, - reaction: FfiReaction, - ) -> Result, GenericError> { - let reaction_proto: Reaction = reaction.into(); - let mut buf = Vec::new(); - reaction_proto.encode(&mut buf).unwrap(); - self.send(buf).await - } - /// send a message without immediately publishing to the delivery service. pub fn send_optimistic(&self, content_bytes: Vec) -> Result, GenericError> { let id = self @@ -1671,7 +1660,8 @@ impl From for Reaction { #[derive(uniffi::Enum, Clone, Default)] pub enum FfiReactionAction { Unknown, - #[default] Added, + #[default] + Added, Removed, } @@ -1688,7 +1678,8 @@ impl From for i32 { #[derive(uniffi::Enum, Clone, Default)] pub enum FfiReactionSchema { Unknown, - #[default] Unicode, + #[default] + Unicode, Shortcode, Custom, } @@ -1870,13 +1861,16 @@ impl FfiGroupPermissions { mod tests { use super::{create_client, FfiConsentCallback, FfiMessage, FfiMessageCallback, FfiXmtpClient}; use crate::{ - get_inbox_id_for_address, inbox_owner::SigningError, logger::FfiLogger, FfiConsent, FfiConsentEntityType, FfiConsentState, FfiConversation, FfiConversationCallback, FfiConversationMessageKind, FfiCreateGroupOptions, FfiGroupPermissionsOptions, FfiInboxOwner, FfiListConversationsOptions, FfiListMessagesOptions, FfiMetadataField, FfiPermissionPolicy, FfiPermissionPolicySet, FfiPermissionUpdateType, FfiReaction, FfiReactionAction, FfiReactionSchema, FfiSubscribeError + get_inbox_id_for_address, inbox_owner::SigningError, logger::FfiLogger, FfiConsent, + FfiConsentEntityType, FfiConsentState, FfiConversation, FfiConversationCallback, + FfiConversationMessageKind, FfiCreateGroupOptions, FfiGroupPermissionsOptions, + FfiInboxOwner, FfiListConversationsOptions, FfiListMessagesOptions, FfiMetadataField, + FfiPermissionPolicy, FfiPermissionPolicySet, FfiPermissionUpdateType, FfiReaction, + FfiReactionAction, FfiReactionSchema, FfiSubscribeError, }; use ethers::utils::hex; use prost::Message; use rand::distributions::{Alphanumeric, DistString}; - use xmtp_content_types::{reaction::ReactionCodec, text::TextCodec, ContentCodec}; - use xmtp_proto::xmtp::{mls::message_contents::EncodedContent, reactions::{Reaction, ReactionAction, ReactionSchema}}; use std::{ env, sync::{ @@ -1886,6 +1880,7 @@ mod tests { time::{Duration, Instant}, }; use tokio::{sync::Notify, time::error::Elapsed}; + use xmtp_content_types::{reaction::ReactionCodec, text::TextCodec, ContentCodec}; use xmtp_cryptography::{signature::RecoverableSignature, utils::rng}; use xmtp_id::associations::{ generate_inbox_id, @@ -1896,6 +1891,10 @@ mod tests { storage::EncryptionKey, InboxOwner, }; + use xmtp_proto::xmtp::{ + mls::message_contents::EncodedContent, + reactions::{Reaction, ReactionAction, ReactionSchema}, + }; const HISTORY_SYNC_URL: &str = "http://localhost:5558"; @@ -4464,10 +4463,7 @@ mod tests { .unwrap() .encode(&mut buf) .unwrap(); - alix_conversation - .send(buf) - .await - .unwrap(); + alix_conversation.send(buf).await.unwrap(); // Have Bo sync to get the conversation and message bo.conversations().sync().await.unwrap(); @@ -4489,14 +4485,15 @@ mod tests { schema: FfiReactionSchema::Unicode, }; - let reaction_sent: Reaction = ffi_reaction.into(); let mut buf = Vec::new(); - ReactionCodec::encode(reaction_sent).unwrap().encode(&mut buf).unwrap(); + ReactionCodec::encode(reaction_sent) + .unwrap() + .encode(&mut buf) + .unwrap(); bo_conversation.send(buf).await.unwrap(); - // Have Alix sync to get the reaction alix_conversation.sync().await.unwrap(); @@ -4516,7 +4513,10 @@ mod tests { assert_eq!(reaction.content, "👍"); assert_eq!(reaction.action, ReactionAction::ActionAdded as i32); assert_eq!(reaction.reference_inbox_id, alix.inbox_id()); - assert_eq!(reaction.reference, hex::encode(message_to_react_to.id.clone())); + assert_eq!( + reaction.reference, + hex::encode(message_to_react_to.id.clone()) + ); assert_eq!(reaction.schema, ReactionSchema::SchemaUnicode as i32); } } diff --git a/xmtp_mls/src/groups/mls_sync.rs b/xmtp_mls/src/groups/mls_sync.rs index c18bb23bf..72b78a4ab 100644 --- a/xmtp_mls/src/groups/mls_sync.rs +++ b/xmtp_mls/src/groups/mls_sync.rs @@ -58,7 +58,9 @@ use std::{ }; use thiserror::Error; use tracing::debug; -use xmtp_content_types::{group_updated::GroupUpdatedCodec, reaction::ReactionCodec, CodecError, ContentCodec}; +use xmtp_content_types::{ + group_updated::GroupUpdatedCodec, reaction::ReactionCodec, CodecError, ContentCodec, +}; use xmtp_id::{InboxId, InboxIdRef}; use xmtp_proto::xmtp::mls::{ api::v1::{ @@ -69,7 +71,8 @@ use xmtp_proto::xmtp::mls::{ GroupMessage, WelcomeMessageInput, }, message_contents::{ - plaintext_envelope::{v2::MessageType, Content, V1, V2}, EncodedContent, GroupUpdated, PlaintextEnvelope + plaintext_envelope::{v2::MessageType, Content, V1, V2}, + EncodedContent, GroupUpdated, PlaintextEnvelope, }, }; diff --git a/xmtp_mls/src/groups/mod.rs b/xmtp_mls/src/groups/mod.rs index b3dc7e380..24ab237b9 100644 --- a/xmtp_mls/src/groups/mod.rs +++ b/xmtp_mls/src/groups/mod.rs @@ -67,7 +67,8 @@ use xmtp_proto::xmtp::mls::{ GroupMessage, }, message_contents::{ - plaintext_envelope::{Content, V1}, EncodedContent, PlaintextEnvelope + plaintext_envelope::{Content, V1}, + EncodedContent, PlaintextEnvelope, }, }; @@ -679,7 +680,6 @@ impl MlsGroup { let intent_data: Vec = SendMessageIntentData::new(encoded_envelope).into(); self.queue_intent_with_conn(conn, IntentKind::SendMessage, intent_data)?; - // Check if the message has a parent_id // let encoded_content = EncodedContent::decode(message).unwrap(); let encoded_content = match EncodedContent::decode(message) { @@ -687,18 +687,18 @@ impl MlsGroup { // Use the encoded_content struct println!("Decoded successfully"); Some(encoded_content) - }, + } Err(e) => { println!("Failed to decode: {}", e); None } - }.unwrap(); + } + .unwrap(); let encoded_content_clone = encoded_content.clone(); let parent_id = match encoded_content.r#type { Some(content_type) => { if content_type.type_id == ReactionCodec::TYPE_ID { - let reaction - = ReactionCodec::decode(encoded_content_clone).unwrap(); + let reaction = ReactionCodec::decode(encoded_content_clone).unwrap(); Some(reaction.reference.into_bytes()) } else { None From 980bb373eca12ed11a5bd70f5a8a28107a1328b9 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Wed, 27 Nov 2024 15:46:28 -0800 Subject: [PATCH 11/14] add helper function and fix tests --- xmtp_mls/src/groups/mls_sync.rs | 23 +++-------- xmtp_mls/src/groups/mod.rs | 72 ++++++++++++++++++++------------- 2 files changed, 50 insertions(+), 45 deletions(-) diff --git a/xmtp_mls/src/groups/mls_sync.rs b/xmtp_mls/src/groups/mls_sync.rs index 72b78a4ab..ea74b2ca6 100644 --- a/xmtp_mls/src/groups/mls_sync.rs +++ b/xmtp_mls/src/groups/mls_sync.rs @@ -58,9 +58,7 @@ use std::{ }; use thiserror::Error; use tracing::debug; -use xmtp_content_types::{ - group_updated::GroupUpdatedCodec, reaction::ReactionCodec, CodecError, ContentCodec, -}; +use xmtp_content_types::{group_updated::GroupUpdatedCodec, CodecError, ContentCodec}; use xmtp_id::{InboxId, InboxIdRef}; use xmtp_proto::xmtp::mls::{ api::v1::{ @@ -72,7 +70,7 @@ use xmtp_proto::xmtp::mls::{ }, message_contents::{ plaintext_envelope::{v2::MessageType, Content, V1, V2}, - EncodedContent, GroupUpdated, PlaintextEnvelope, + GroupUpdated, PlaintextEnvelope, }, }; @@ -534,19 +532,8 @@ where })) => { let message_id = calculate_message_id(&self.group_id, &content, &idempotency_key); - let encoded_content = EncodedContent::decode(content.as_slice())?; - let encoded_content_clone = encoded_content.clone(); - let parent_id = match encoded_content.r#type { - Some(content_type) => { - if content_type.type_id == ReactionCodec::TYPE_ID { - let reaction = ReactionCodec::decode(encoded_content_clone)?; - Some(reaction.reference.into_bytes()) - } else { - None - } - } - _ => None, - }; + let queryable_content_fields = + Self::extract_queryable_content_fields(&content); StoredGroupMessage { id: message_id, group_id: self.group_id.clone(), @@ -556,7 +543,7 @@ where sender_installation_id, sender_inbox_id, delivery_status: DeliveryStatus::Published, - parent_id, + parent_id: queryable_content_fields.parent_id, } .store_or_ignore(provider.conn_ref())? } diff --git a/xmtp_mls/src/groups/mod.rs b/xmtp_mls/src/groups/mod.rs index 24ab237b9..cf2ecfa2f 100644 --- a/xmtp_mls/src/groups/mod.rs +++ b/xmtp_mls/src/groups/mod.rs @@ -293,6 +293,12 @@ pub enum UpdateAdminListType { RemoveSuper, } +/// Fields extracted from content of a message that should be stored in the DB +pub struct QueryableContentFields { + pub parent_id: Option>, + pub is_readable: Option, +} + /// Represents a group, which can contain anywhere from 1 to MAX_GROUP_SIZE inboxes. /// /// This is a wrapper around OpenMLS's `MlsGroup` that handles our application-level configuration @@ -680,32 +686,8 @@ impl MlsGroup { let intent_data: Vec = SendMessageIntentData::new(encoded_envelope).into(); self.queue_intent_with_conn(conn, IntentKind::SendMessage, intent_data)?; - // Check if the message has a parent_id - // let encoded_content = EncodedContent::decode(message).unwrap(); - let encoded_content = match EncodedContent::decode(message) { - Ok(encoded_content) => { - // Use the encoded_content struct - println!("Decoded successfully"); - Some(encoded_content) - } - Err(e) => { - println!("Failed to decode: {}", e); - None - } - } - .unwrap(); - let encoded_content_clone = encoded_content.clone(); - let parent_id = match encoded_content.r#type { - Some(content_type) => { - if content_type.type_id == ReactionCodec::TYPE_ID { - let reaction = ReactionCodec::decode(encoded_content_clone).unwrap(); - Some(reaction.reference.into_bytes()) - } else { - None - } - } - _ => None, - }; + // Check if the message queryable content fields + let queryable_content_fields = Self::extract_queryable_content_fields(message); // store this unpublished message locally before sending let message_id = calculate_message_id(&self.group_id, message, &now.to_string()); let group_message = StoredGroupMessage { @@ -717,13 +699,49 @@ impl MlsGroup { sender_installation_id: self.context().installation_public_key(), sender_inbox_id: self.context().inbox_id().to_string(), delivery_status: DeliveryStatus::Unpublished, - parent_id, + parent_id: queryable_content_fields.parent_id, }; group_message.store(conn)?; Ok(message_id) } + /// Helper function to extract queryable content fields from a message + fn extract_queryable_content_fields(message: &[u8]) -> QueryableContentFields { + // Attempt to decode the message as EncodedContent + let encoded_content = match EncodedContent::decode(message) { + Ok(content) => content, + Err(e) => { + tracing::debug!("Failed to decode message as EncodedContent: {}", e); + return QueryableContentFields { + parent_id: None, + is_readable: None, + }; + } + }; + let encoded_content_clone = encoded_content.clone(); + + // Check if it's a reaction message + let parent_id = match encoded_content.r#type { + Some(content_type) if content_type.type_id == ReactionCodec::TYPE_ID => { + // Attempt to decode as reaction + match ReactionCodec::decode(encoded_content_clone) { + Ok(reaction) => Some(reaction.reference.into_bytes()), + Err(e) => { + tracing::debug!("Failed to decode reaction: {}", e); + None + } + } + } + _ => None, + }; + + QueryableContentFields { + parent_id, + is_readable: None, + } + } + fn into_envelope(encoded_msg: &[u8], idempotency_key: i64) -> PlaintextEnvelope { PlaintextEnvelope { content: Some(Content::V1(V1 { From eb912285f809a85e2c77949579501a26f41cba73 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Wed, 27 Nov 2024 16:55:03 -0800 Subject: [PATCH 12/14] demonstrates find_messages_with_reactions FFI function --- bindings_ffi/src/mls.rs | 78 ++++++++++++++++++- xmtp_mls/src/groups/mod.rs | 30 ++++++- .../storage/encrypted_store/group_message.rs | 73 ++++++++++++++++- 3 files changed, 174 insertions(+), 7 deletions(-) diff --git a/bindings_ffi/src/mls.rs b/bindings_ffi/src/mls.rs index 71a33fe14..50e0b2e92 100644 --- a/bindings_ffi/src/mls.rs +++ b/bindings_ffi/src/mls.rs @@ -20,6 +20,7 @@ use xmtp_mls::groups::scoped_client::LocalScopedGroupClient; use xmtp_mls::storage::group::ConversationType; use xmtp_mls::storage::group_message::MsgQueryArgs; use xmtp_mls::storage::group_message::SortDirection; +use xmtp_mls::storage::group_message::StoredGroupMessageWithReactions; use xmtp_mls::{ api::ApiClientWrapper, builder::ClientBuilder, @@ -1281,6 +1282,35 @@ impl FfiConversation { Ok(messages) } + pub async fn find_messages_with_reactions( + &self, + opts: FfiListMessagesOptions, + ) -> Result, GenericError> { + let delivery_status = opts.delivery_status.map(|status| status.into()); + let direction = opts.direction.map(|dir| dir.into()); + let kind = match self.conversation_type()? { + FfiConversationType::Group => None, + FfiConversationType::Dm => Some(GroupMessageKind::Application), + FfiConversationType::Sync => None, + }; + + let messages: Vec = self + .inner + .find_messages_with_reactions( + &MsgQueryArgs::default() + .maybe_sent_before_ns(opts.sent_before_ns) + .maybe_sent_after_ns(opts.sent_after_ns) + .maybe_kind(kind) + .maybe_delivery_status(delivery_status) + .maybe_limit(opts.limit) + .maybe_direction(direction), + )? + .into_iter() + .map(|msg| msg.into()) + .collect(); + Ok(messages) + } + pub async fn process_streamed_conversation_message( &self, envelope_bytes: Vec, @@ -1622,6 +1652,12 @@ pub struct FfiMessage { pub delivery_status: FfiDeliveryStatus, } +#[derive(uniffi::Record)] +pub struct FfiMessageWithReactions { + pub message: FfiMessage, + pub reactions: Vec, +} + impl From for FfiMessage { fn from(msg: StoredGroupMessage) -> Self { Self { @@ -1636,6 +1672,19 @@ impl From for FfiMessage { } } +impl From for FfiMessageWithReactions { + fn from(msg_with_reactions: StoredGroupMessageWithReactions) -> Self { + Self { + message: msg_with_reactions.message.into(), + reactions: msg_with_reactions + .reactions + .into_iter() + .map(|reaction| reaction.into()) + .collect(), + } + } +} + #[derive(uniffi::Record, Clone, Default)] pub struct FfiReaction { pub reference: String, @@ -1864,9 +1913,10 @@ mod tests { get_inbox_id_for_address, inbox_owner::SigningError, logger::FfiLogger, FfiConsent, FfiConsentEntityType, FfiConsentState, FfiConversation, FfiConversationCallback, FfiConversationMessageKind, FfiCreateGroupOptions, FfiGroupPermissionsOptions, - FfiInboxOwner, FfiListConversationsOptions, FfiListMessagesOptions, FfiMetadataField, - FfiPermissionPolicy, FfiPermissionPolicySet, FfiPermissionUpdateType, FfiReaction, - FfiReactionAction, FfiReactionSchema, FfiSubscribeError, + FfiInboxOwner, FfiListConversationsOptions, FfiListMessagesOptions, + FfiMessageWithReactions, FfiMetadataField, FfiPermissionPolicy, FfiPermissionPolicySet, + FfiPermissionUpdateType, FfiReaction, FfiReactionAction, FfiReactionSchema, + FfiSubscribeError, }; use ethers::utils::hex; use prost::Message; @@ -4509,7 +4559,27 @@ mod tests { let slice: &[u8] = message_content.as_slice(); let encoded_content = EncodedContent::decode(slice).unwrap(); let reaction = Reaction::decode(encoded_content.content.as_slice()).unwrap(); - println!("Encoded content: {:?}", encoded_content); + assert_eq!(reaction.content, "👍"); + assert_eq!(reaction.action, ReactionAction::ActionAdded as i32); + assert_eq!(reaction.reference_inbox_id, alix.inbox_id()); + assert_eq!( + reaction.reference, + hex::encode(message_to_react_to.id.clone()) + ); + assert_eq!(reaction.schema, ReactionSchema::SchemaUnicode as i32); + + // Test find_messages_with_reactions query + let messages_with_reactions: Vec = alix_conversation + .find_messages_with_reactions(FfiListMessagesOptions::default()) + .await + .unwrap(); + assert_eq!(messages_with_reactions.len(), 2); + let message_with_reactions = &messages_with_reactions[1]; + assert_eq!(message_with_reactions.reactions.len(), 1); + let message_content = message_with_reactions.reactions[0].content.clone(); + let slice: &[u8] = message_content.as_slice(); + let encoded_content = EncodedContent::decode(slice).unwrap(); + let reaction = Reaction::decode(encoded_content.content.as_slice()).unwrap(); assert_eq!(reaction.content, "👍"); assert_eq!(reaction.action, ReactionAction::ActionAdded as i32); assert_eq!(reaction.reference_inbox_id, alix.inbox_id()); diff --git a/xmtp_mls/src/groups/mod.rs b/xmtp_mls/src/groups/mod.rs index cf2ecfa2f..15d5f3e92 100644 --- a/xmtp_mls/src/groups/mod.rs +++ b/xmtp_mls/src/groups/mod.rs @@ -90,7 +90,10 @@ use crate::{ db_connection::DbConnection, group::{ConversationType, GroupMembershipState, StoredGroup}, group_intent::IntentKind, - group_message::{DeliveryStatus, GroupMessageKind, MsgQueryArgs, StoredGroupMessage}, + group_message::{ + DeliveryStatus, GroupMessageKind, MsgQueryArgs, StoredGroupMessage, + StoredGroupMessageWithReactions, + }, sql_key_store, }, subscriptions::{LocalEventError, LocalEvents}, @@ -726,7 +729,19 @@ impl MlsGroup { Some(content_type) if content_type.type_id == ReactionCodec::TYPE_ID => { // Attempt to decode as reaction match ReactionCodec::decode(encoded_content_clone) { - Ok(reaction) => Some(reaction.reference.into_bytes()), + Ok(reaction) => { + // Decode hex string into bytes + match hex::decode(&reaction.reference) { + Ok(bytes) => Some(bytes), + Err(e) => { + tracing::debug!( + "Failed to decode reaction reference as hex: {}", + e + ); + None + } + } + } Err(e) => { tracing::debug!("Failed to decode reaction: {}", e); None @@ -762,6 +777,17 @@ impl MlsGroup { Ok(messages) } + /// Query the database for stored messages. Optionally filtered by time, kind, delivery_status + /// and limit + pub fn find_messages_with_reactions( + &self, + args: &MsgQueryArgs, + ) -> Result, GroupError> { + let conn = self.context().store().conn()?; + let messages = conn.get_group_messages_with_reactions(&self.group_id, args)?; + Ok(messages) + } + /// /// Add members to the group by account address /// diff --git a/xmtp_mls/src/storage/encrypted_store/group_message.rs b/xmtp_mls/src/storage/encrypted_store/group_message.rs index f50bea17e..20091776e 100644 --- a/xmtp_mls/src/storage/encrypted_store/group_message.rs +++ b/xmtp_mls/src/storage/encrypted_store/group_message.rs @@ -15,6 +15,12 @@ use super::{ }; use crate::{impl_fetch, impl_store, impl_store_or_ignore, StorageError}; +pub struct StoredGroupMessageWithReactions { + pub message: StoredGroupMessage, + // Messages who's parent_id matches this message's id + pub reactions: Vec, +} + #[derive( Debug, Clone, Serialize, Deserialize, Insertable, Identifiable, Queryable, Eq, PartialEq, )] @@ -116,7 +122,7 @@ impl_fetch!(StoredGroupMessage, group_messages, Vec); impl_store!(StoredGroupMessage, group_messages); impl_store_or_ignore!(StoredGroupMessage, group_messages); -#[derive(Default)] +#[derive(Default, Clone)] pub struct MsgQueryArgs { sent_after_ns: Option, sent_before_ns: Option, @@ -124,6 +130,7 @@ pub struct MsgQueryArgs { delivery_status: Option, limit: Option, direction: Option, + include_reactions: Option, } impl MsgQueryArgs { @@ -194,6 +201,10 @@ impl DbConnection { let mut query = dsl::group_messages .filter(dsl::group_id.eq(group_id)) .into_boxed(); + // Add filter for reactions based on include_reactions flag + if args.include_reactions == Some(false) { + query = query.filter(dsl::parent_id.is_null()); + } if let Some(sent_after) = args.sent_after_ns { query = query.filter(dsl::sent_at_ns.gt(sent_after)); @@ -223,6 +234,66 @@ impl DbConnection { Ok(self.raw_query(|conn| query.load::(conn))?) } + /// Query for group messages with their reactions + #[allow(clippy::too_many_arguments)] + pub fn get_group_messages_with_reactions( + &self, + group_id: &[u8], + args: &MsgQueryArgs, + ) -> Result, StorageError> { + // First get all the main messages + let mut modified_args = args.clone(); + modified_args.include_reactions = Some(false); // Force include_reactions to false for main query + let messages = self.get_group_messages(group_id, &modified_args)?; + + // Then get all reactions for these messages in a single query + let message_ids: Vec<&[u8]> = messages.iter().map(|m| m.id.as_slice()).collect(); + + let mut reactions_query = dsl::group_messages + .filter(dsl::group_id.eq(group_id)) + .filter(dsl::parent_id.is_not_null()) + .filter(dsl::parent_id.eq_any(message_ids)) + .into_boxed(); + + // Apply the same sorting as the main messages + reactions_query = match args.direction.as_ref().unwrap_or(&SortDirection::Ascending) { + SortDirection::Ascending => reactions_query.order(dsl::sent_at_ns.asc()), + SortDirection::Descending => reactions_query.order(dsl::sent_at_ns.desc()), + }; + + let reactions: Vec = + self.raw_query(|conn| reactions_query.load(conn))?; + + // Group reactions by parent message id + let mut reactions_by_parent: std::collections::HashMap, Vec> = + std::collections::HashMap::new(); + + for reaction in reactions { + if let Some(parent_id) = &reaction.parent_id { + reactions_by_parent + .entry(parent_id.clone()) + .or_default() + .push(reaction); + } + } + + // Combine messages with their reactions + let messages_with_reactions: Vec = messages + .into_iter() + .map(|message| { + let message_clone = message.clone(); + StoredGroupMessageWithReactions { + message, + reactions: reactions_by_parent + .remove(&message_clone.id) + .unwrap_or_default(), + } + }) + .collect(); + + Ok(messages_with_reactions) + } + /// Get a particular group message pub fn get_group_message>( &self, From 863a997a594083765d1cb8bb314a56019ca5ac96 Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Tue, 3 Dec 2024 04:06:16 -0800 Subject: [PATCH 13/14] add encode and decode functions for ffireaction --- bindings_ffi/src/mls.rs | 102 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 95 insertions(+), 7 deletions(-) diff --git a/bindings_ffi/src/mls.rs b/bindings_ffi/src/mls.rs index 50e0b2e92..e2e0c78d8 100644 --- a/bindings_ffi/src/mls.rs +++ b/bindings_ffi/src/mls.rs @@ -2,9 +2,12 @@ pub use crate::inbox_owner::SigningError; use crate::logger::init_logger; use crate::logger::FfiLogger; use crate::{FfiSubscribeError, GenericError}; +use prost::Message; use std::{collections::HashMap, convert::TryInto, sync::Arc}; use tokio::sync::Mutex; use xmtp_api_grpc::grpc_api_helper::Client as TonicApiClient; +use xmtp_content_types::reaction::ReactionCodec; +use xmtp_content_types::ContentCodec; use xmtp_id::associations::verify_signed_with_public_context; use xmtp_id::scw_verifier::RemoteSignatureVerifier; use xmtp_id::{ @@ -48,6 +51,7 @@ use xmtp_mls::{ AbortHandle, GenericStreamHandle, StreamHandle, }; use xmtp_proto::xmtp::mls::message_contents::DeviceSyncKind; +use xmtp_proto::xmtp::mls::message_contents::EncodedContent; use xmtp_proto::xmtp::reactions::Reaction; pub type RustXmtpClient = MlsClient; @@ -1706,6 +1710,57 @@ impl From for Reaction { } } +impl From for FfiReaction { + fn from(reaction: Reaction) -> Self { + FfiReaction { + reference: reaction.reference, + reference_inbox_id: reaction.reference_inbox_id, + action: match reaction.action { + 1 => FfiReactionAction::Added, + 2 => FfiReactionAction::Removed, + _ => FfiReactionAction::Unknown, + }, + content: reaction.content, + schema: match reaction.schema { + 1 => FfiReactionSchema::Unicode, + 2 => FfiReactionSchema::Shortcode, + 3 => FfiReactionSchema::Custom, + _ => FfiReactionSchema::Unknown, + }, + } + } +} + +#[uniffi::export] +pub fn encode_reaction(reaction: FfiReaction) -> Result, GenericError> { + // Convert FfiReaction to Reaction + let reaction: Reaction = reaction.into(); + + // Use ReactionCodec to encode the reaction + let encoded = ReactionCodec::encode(reaction) + .map_err(|e| GenericError::Generic { err: e.to_string() })?; + + // Encode the EncodedContent to bytes + let mut buf = Vec::new(); + encoded + .encode(&mut buf) + .map_err(|e| GenericError::Generic { err: e.to_string() })?; + + Ok(buf) +} + +#[uniffi::export] +pub fn decode_reaction(bytes: Vec) -> Result { + // Decode bytes into EncodedContent + let encoded_content = EncodedContent::decode(bytes.as_slice()) + .map_err(|e| GenericError::Generic { err: e.to_string() })?; + + // Use ReactionCodec to decode into Reaction and convert to FfiReaction + ReactionCodec::decode(encoded_content) + .map(Into::into) + .map_err(|e| GenericError::Generic { err: e.to_string() }) +} + #[derive(uniffi::Enum, Clone, Default)] pub enum FfiReactionAction { Unknown, @@ -1910,13 +1965,13 @@ impl FfiGroupPermissions { mod tests { use super::{create_client, FfiConsentCallback, FfiMessage, FfiMessageCallback, FfiXmtpClient}; use crate::{ - get_inbox_id_for_address, inbox_owner::SigningError, logger::FfiLogger, FfiConsent, - FfiConsentEntityType, FfiConsentState, FfiConversation, FfiConversationCallback, - FfiConversationMessageKind, FfiCreateGroupOptions, FfiGroupPermissionsOptions, - FfiInboxOwner, FfiListConversationsOptions, FfiListMessagesOptions, - FfiMessageWithReactions, FfiMetadataField, FfiPermissionPolicy, FfiPermissionPolicySet, - FfiPermissionUpdateType, FfiReaction, FfiReactionAction, FfiReactionSchema, - FfiSubscribeError, + decode_reaction, encode_reaction, get_inbox_id_for_address, inbox_owner::SigningError, + logger::FfiLogger, FfiConsent, FfiConsentEntityType, FfiConsentState, FfiConversation, + FfiConversationCallback, FfiConversationMessageKind, FfiCreateGroupOptions, + FfiGroupPermissionsOptions, FfiInboxOwner, FfiListConversationsOptions, + FfiListMessagesOptions, FfiMessageWithReactions, FfiMetadataField, FfiPermissionPolicy, + FfiPermissionPolicySet, FfiPermissionUpdateType, FfiReaction, FfiReactionAction, + FfiReactionSchema, FfiSubscribeError, }; use ethers::utils::hex; use prost::Message; @@ -4589,4 +4644,37 @@ mod tests { ); assert_eq!(reaction.schema, ReactionSchema::SchemaUnicode as i32); } + + #[tokio::test] + async fn test_reaction_encode_decode() { + // Create a test reaction + let original_reaction = FfiReaction { + reference: "123abc".to_string(), + reference_inbox_id: "test_inbox_id".to_string(), + action: FfiReactionAction::Added, + content: "👍".to_string(), + schema: FfiReactionSchema::Unicode, + }; + + // Encode the reaction + let encoded_bytes = encode_reaction(original_reaction.clone()) + .expect("Should encode reaction successfully"); + + // Decode the reaction + let decoded_reaction = + decode_reaction(encoded_bytes).expect("Should decode reaction successfully"); + + // Verify the decoded reaction matches the original + assert_eq!(decoded_reaction.reference, original_reaction.reference); + assert_eq!( + decoded_reaction.reference_inbox_id, + original_reaction.reference_inbox_id + ); + assert!(matches!(decoded_reaction.action, FfiReactionAction::Added)); + assert_eq!(decoded_reaction.content, original_reaction.content); + assert!(matches!( + decoded_reaction.schema, + FfiReactionSchema::Unicode + )); + } } From 5305d972da84c040d7d50ed158a28050a3f249cc Mon Sep 17 00:00:00 2001 From: cameronvoell Date: Tue, 3 Dec 2024 08:29:56 -0800 Subject: [PATCH 14/14] simplify test --- bindings_ffi/src/mls.rs | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/bindings_ffi/src/mls.rs b/bindings_ffi/src/mls.rs index e2e0c78d8..1df6b02ab 100644 --- a/bindings_ffi/src/mls.rs +++ b/bindings_ffi/src/mls.rs @@ -1761,7 +1761,7 @@ pub fn decode_reaction(bytes: Vec) -> Result { .map_err(|e| GenericError::Generic { err: e.to_string() }) } -#[derive(uniffi::Enum, Clone, Default)] +#[derive(uniffi::Enum, Clone, Default, PartialEq, Debug)] pub enum FfiReactionAction { Unknown, #[default] @@ -1779,7 +1779,7 @@ impl From for i32 { } } -#[derive(uniffi::Enum, Clone, Default)] +#[derive(uniffi::Enum, Clone, Default, PartialEq, Debug)] pub enum FfiReactionSchema { Unknown, #[default] @@ -4589,15 +4589,8 @@ mod tests { content: "👍".to_string(), schema: FfiReactionSchema::Unicode, }; - - let reaction_sent: Reaction = ffi_reaction.into(); - let mut buf = Vec::new(); - ReactionCodec::encode(reaction_sent) - .unwrap() - .encode(&mut buf) - .unwrap(); - - bo_conversation.send(buf).await.unwrap(); + let bytes_to_send = encode_reaction(ffi_reaction).unwrap(); + bo_conversation.send(bytes_to_send).await.unwrap(); // Have Alix sync to get the reaction alix_conversation.sync().await.unwrap(); @@ -4611,17 +4604,15 @@ mod tests { assert_eq!(messages.len(), 3); let received_reaction = &messages[2]; let message_content = received_reaction.content.clone(); - let slice: &[u8] = message_content.as_slice(); - let encoded_content = EncodedContent::decode(slice).unwrap(); - let reaction = Reaction::decode(encoded_content.content.as_slice()).unwrap(); + let reaction = decode_reaction(message_content).unwrap(); assert_eq!(reaction.content, "👍"); - assert_eq!(reaction.action, ReactionAction::ActionAdded as i32); + assert_eq!(reaction.action, FfiReactionAction::Added); assert_eq!(reaction.reference_inbox_id, alix.inbox_id()); assert_eq!( reaction.reference, hex::encode(message_to_react_to.id.clone()) ); - assert_eq!(reaction.schema, ReactionSchema::SchemaUnicode as i32); + assert_eq!(reaction.schema, FfiReactionSchema::Unicode); // Test find_messages_with_reactions query let messages_with_reactions: Vec = alix_conversation