From 643070b08b90ab9f47a68cd4cf627a03ddf6062d Mon Sep 17 00:00:00 2001 From: imabdulbasit Date: Fri, 22 Nov 2024 17:41:03 +0000 Subject: [PATCH] deploy: 970d3c3d5ea3b726cb40c70483d3bc4667a74a17 --- hotshot_query_service/all.html | 2 +- .../availability/struct.BlockQueryData.html | 6 +- .../availability/struct.LeafQueryData.html | 6 +- .../availability/struct.PayloadMetadata.html | 6 +- .../availability/struct.PayloadQueryData.html | 6 +- .../struct.VidCommonMetadata.html | 6 +- .../struct.VidCommonQueryData.html | 6 +- .../fetching/struct.FetchingDataSource.html | 6 +- .../data_source/sql/index.html | 4 +- .../sql/macro.include_migrations.html | 28 +- .../data_source/sql/sidebar-items.js | 2 +- .../data_source/sql/testing/index.html | 2 +- .../data_source/sql/type.Config.html | 16 + .../data_source/sql/type.SqlDataSource.html | 37 +- .../storage/pruning/trait.PruneStorage.html | 2 +- .../pruning/trait.PrunedHeightStorage.html | 2 +- .../storage/pruning/trait.PrunerConfig.html | 2 +- .../syntax_helpers/constant.BINARY_TYPE.html | 11 + .../db/syntax_helpers/constant.MAX_FN.html | 11 + .../storage/sql/db/syntax_helpers/index.html | 11 + .../storage/sql/fn.build_where_in.html | 7 + .../storage/sql/fn.default_migrations.html | 2 +- .../data_source/storage/sql/index.html | 4 +- .../storage/sql/macro.include_migrations.html | 28 +- .../data_source/storage/sql/sidebar-items.js | 2 +- .../storage/sql/struct.Config.html | 44 +- .../storage/sql/struct.Pruner.html | 2 +- .../storage/sql/struct.QueryBuilder.html | 14 +- .../data_source/storage/sql/struct.Read.html | 2 +- .../storage/sql/struct.SqlStorage.html | 23 +- .../storage/sql/struct.Sqlite.html | 21 +- .../storage/sql/struct.Transaction.html | 55 +- .../data_source/storage/sql/struct.Write.html | 2 +- .../syntax_helpers/constant.BINARY_TYPE.html | 1 + .../sql/syntax_helpers/constant.MAX_FN.html | 1 + .../storage/sql/syntax_helpers/index.html | 1 + .../sql/syntax_helpers/sidebar-items.js | 1 + .../storage/sql/testing/index.html | 2 +- .../struct.TestMerkleTreeMigration.html | 2 +- .../storage/sql/testing/struct.TmpDb.html | 2 +- .../storage/sql/trait.FixedLengthParams.html | 18 +- .../data_source/storage/sql/trait.Params.html | 130 ++-- .../storage/sql/trait.TransactionMode.html | 2 +- .../sql/transaction/fn.build_where_in.html | 11 + .../data_source/storage/sql/type.Db.html | 22 +- .../storage/trait.ExplorerStorage.html | 2 +- .../trait.MerklizedStateHeightStorage.html | 2 +- .../storage/trait.MerklizedStateStorage.html | 2 +- .../trait.UpdateAvailabilityStorage.html | 2 +- .../data_source/trait.Transaction.html | 2 +- .../trait.VersionedDataSource.html | 4 +- hotshot_query_service/enum.QueryError.html | 2 +- .../explorer/struct.BlockDetail.html | 4 +- .../explorer/struct.BlockSummary.html | 4 +- hotshot_query_service/index.html | 2 +- .../macro.include_migrations.html | 28 +- .../trait.UpdateStateData.html | 2 +- .../status/trait.HasMetrics.html | 2 +- .../consensus/trait.DataSourceLifeCycle.html | 2 +- search-index.js | 4 +- .../hotshot_query_service-desc-0-.js | 2 +- .../data_source/sql.rs.html | 40 +- .../data_source/storage/sql.rs.html | 620 ++++++++++++++---- .../data_source/storage/sql/db.rs.html | 52 +- .../data_source/storage/sql/queries.rs.html | 4 +- .../storage/sql/queries/availability.rs.html | 20 +- .../storage/sql/queries/explorer.rs.html | 34 +- .../storage/sql/queries/node.rs.html | 4 +- .../storage/sql/queries/state.rs.html | 320 +++++++-- .../storage/sql/transaction.rs.html | 302 +++------ .../fetching/provider/query_service.rs.html | 4 + trait.impl/core/clone/trait.Clone.js | 4 +- trait.impl/core/convert/trait.From.js | 4 +- trait.impl/core/fmt/trait.Debug.js | 4 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 4 +- .../panic/unwind_safe/trait.UnwindSafe.js | 4 +- .../sqlx_core/from_row/trait.FromRow.js | 4 +- .../data_source/sql/type.SqlDataSource.js | 4 +- .../data_source/storage/sql/struct.Config.js | 9 + .../data_source/storage/sql/struct.Sqlite.js | 9 + .../sqlx_postgres/database/struct.Postgres.js | 9 - 81 files changed, 1374 insertions(+), 718 deletions(-) create mode 100644 hotshot_query_service/data_source/sql/type.Config.html create mode 100644 hotshot_query_service/data_source/storage/sql/db/syntax_helpers/constant.BINARY_TYPE.html create mode 100644 hotshot_query_service/data_source/storage/sql/db/syntax_helpers/constant.MAX_FN.html create mode 100644 hotshot_query_service/data_source/storage/sql/db/syntax_helpers/index.html create mode 100644 hotshot_query_service/data_source/storage/sql/fn.build_where_in.html create mode 100644 hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.BINARY_TYPE.html create mode 100644 hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.MAX_FN.html create mode 100644 hotshot_query_service/data_source/storage/sql/syntax_helpers/index.html create mode 100644 hotshot_query_service/data_source/storage/sql/syntax_helpers/sidebar-items.js create mode 100644 hotshot_query_service/data_source/storage/sql/transaction/fn.build_where_in.html create mode 100644 type.impl/hotshot_query_service/data_source/storage/sql/struct.Config.js create mode 100644 type.impl/hotshot_query_service/data_source/storage/sql/struct.Sqlite.js delete mode 100644 type.impl/sqlx_postgres/database/struct.Postgres.js diff --git a/hotshot_query_service/all.html b/hotshot_query_service/all.html index e587d3bf8..282dbd7ab 100644 --- a/hotshot_query_service/all.html +++ b/hotshot_query_service/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Enums

Traits

Macros

Functions

Type Aliases

Constants

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

Traits

Macros

Functions

Type Aliases

Constants

\ No newline at end of file diff --git a/hotshot_query_service/availability/struct.BlockQueryData.html b/hotshot_query_service/availability/struct.BlockQueryData.html index 5e035c19e..9e0bbe7b7 100644 --- a/hotshot_query_service/availability/struct.BlockQueryData.html +++ b/hotshot_query_service/availability/struct.BlockQueryData.html @@ -1,4 +1,4 @@ -BlockQueryData in hotshot_query_service::availability - Rust
pub struct BlockQueryData<Types: NodeType> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType> BlockQueryData<Types>

source

pub fn new(header: Header<Types>, payload: Payload<Types>) -> Self
where +BlockQueryData in hotshot_query_service::availability - Rust
pub struct BlockQueryData<Types: NodeType> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType> BlockQueryData<Types>

source

pub fn new(header: Header<Types>, payload: Payload<Types>) -> Self
where Payload<Types>: QueryablePayload<Types>,

source

pub async fn genesis( validated_state: &Types::ValidatedState, instance_state: &Types::InstanceState, @@ -15,9 +15,9 @@ ) -> impl '_ + Iterator<Item = (TransactionIndex<Types>, Transaction<Types>)>

Trait Implementations§

source§

impl<Types: Clone + NodeType> Clone for BlockQueryData<Types>

source§

fn clone(&self) -> BlockQueryData<Types>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types: Debug + NodeType> Debug for BlockQueryData<Types>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de, Types: NodeType> Deserialize<'de> for BlockQueryData<Types>

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<Types: NodeType> From<BlockQueryData<Types>> for BlockSummaryQueryData<Types>
where Payload<Types>: QueryablePayload<Types>,

source§

fn from(value: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<Types> From<BlockQueryData<Types>> for PayloadMetadata<Types>
where - Types: NodeType,

source§

fn from(block: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<Types: NodeType> From<BlockQueryData<Types>> for PayloadQueryData<Types>

source§

fn from(block: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for BlockQueryData<Types>
where + Types: NodeType,

source§

fn from(block: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<Types: NodeType> From<BlockQueryData<Types>> for PayloadQueryData<Types>

source§

fn from(block: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockQueryData<Types>
where Types: NodeType, - Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: NodeType> HeightIndexed for BlockQueryData<Types>

source§

fn height(&self) -> u64

source§

impl<Types: PartialEq + NodeType> PartialEq for BlockQueryData<Types>

source§

fn eq(&self, other: &BlockQueryData<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: NodeType> HeightIndexed for BlockQueryData<Types>

source§

fn height(&self) -> u64

source§

impl<Types: PartialEq + NodeType> PartialEq for BlockQueryData<Types>

source§

fn eq(&self, other: &BlockQueryData<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<Types: NodeType> Serialize for BlockQueryData<Types>

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<Types: NodeType> TryFrom<BlockQueryData<Types>> for BlockDetail<Types>
where BlockQueryData<Types>: HeightIndexed, diff --git a/hotshot_query_service/availability/struct.LeafQueryData.html b/hotshot_query_service/availability/struct.LeafQueryData.html index 80b2e0a73..102fa2655 100644 --- a/hotshot_query_service/availability/struct.LeafQueryData.html +++ b/hotshot_query_service/availability/struct.LeafQueryData.html @@ -1,4 +1,4 @@ -LeafQueryData in hotshot_query_service::availability - Rust
pub struct LeafQueryData<Types: NodeType> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType> LeafQueryData<Types>

source

pub fn new( +LeafQueryData in hotshot_query_service::availability - Rust
pub struct LeafQueryData<Types: NodeType> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType> LeafQueryData<Types>

source

pub fn new( leaf: Leaf<Types>, qc: QuorumCertificate<Types>, ) -> Result<Self, InconsistentLeafError<Types>>

Collect information about a Leaf.

@@ -9,8 +9,8 @@
§Errors
validated_state: &Types::ValidatedState, instance_state: &Types::InstanceState, ) -> Self

source

pub fn leaf(&self) -> &Leaf<Types>

source

pub fn qc(&self) -> &QuorumCertificate<Types>

source

pub fn header(&self) -> &Header<Types>

source

pub fn hash(&self) -> LeafHash<Types>

source

pub fn block_hash(&self) -> BlockHash<Types>

source

pub fn payload_hash(&self) -> VidCommitment

Trait Implementations§

source§

impl<Types: Clone + NodeType> Clone for LeafQueryData<Types>

source§

fn clone(&self) -> LeafQueryData<Types>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types: Debug + NodeType> Debug for LeafQueryData<Types>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de, Types: NodeType> Deserialize<'de> for LeafQueryData<Types>

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<Types: NodeType> From<LeafQueryData<Types>> for BlockInfo<Types>

source§

fn from(leaf: LeafQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for LeafQueryData<Types>
where - Types: NodeType,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: NodeType> HeightIndexed for LeafQueryData<Types>

source§

fn height(&self) -> u64

source§

impl<Types: PartialEq + NodeType> PartialEq for LeafQueryData<Types>

source§

fn eq(&self, other: &LeafQueryData<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<Types: NodeType> From<LeafQueryData<Types>> for BlockInfo<Types>

source§

fn from(leaf: LeafQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for LeafQueryData<Types>
where + Types: NodeType,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: NodeType> HeightIndexed for LeafQueryData<Types>

source§

fn height(&self) -> u64

source§

impl<Types: PartialEq + NodeType> PartialEq for LeafQueryData<Types>

source§

fn eq(&self, other: &LeafQueryData<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<Types: NodeType> Serialize for LeafQueryData<Types>

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<Types: Eq + NodeType> Eq for LeafQueryData<Types>

source§

impl<Types: NodeType> StructuralPartialEq for LeafQueryData<Types>

Auto Trait Implementations§

§

impl<Types> Freeze for LeafQueryData<Types>
where <Types as NodeType>::View: Freeze, diff --git a/hotshot_query_service/availability/struct.PayloadMetadata.html b/hotshot_query_service/availability/struct.PayloadMetadata.html index 29b094cc5..054dfd66b 100644 --- a/hotshot_query_service/availability/struct.PayloadMetadata.html +++ b/hotshot_query_service/availability/struct.PayloadMetadata.html @@ -1,4 +1,4 @@ -PayloadMetadata in hotshot_query_service::availability - Rust
pub struct PayloadMetadata<Types>
where +PayloadMetadata in hotshot_query_service::availability - Rust
pub struct PayloadMetadata<Types>
where Types: NodeType,
{ pub height: u64, pub block_hash: BlockHash<Types>, @@ -11,8 +11,8 @@

Fields§

§height: u64§block_hash: BlockHash<Types>§hash: VidCommitment§size: u64§num_transactions: u64

Trait Implementations§

source§

impl<Types> Clone for PayloadMetadata<Types>
where Types: NodeType + Clone,

source§

fn clone(&self) -> PayloadMetadata<Types>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types> Debug for PayloadMetadata<Types>
where Types: NodeType + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types> From<BlockQueryData<Types>> for PayloadMetadata<Types>
where - Types: NodeType,

source§

fn from(block: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for PayloadMetadata<Types>
where - Types: NodeType,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types> HeightIndexed for PayloadMetadata<Types>
where + Types: NodeType,

source§

fn from(block: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for PayloadMetadata<Types>
where + Types: NodeType,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types> HeightIndexed for PayloadMetadata<Types>
where Types: NodeType,

source§

fn height(&self) -> u64

source§

impl<Types> PartialEq for PayloadMetadata<Types>
where Types: NodeType + PartialEq,

source§

fn eq(&self, other: &PayloadMetadata<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<Types> Copy for PayloadMetadata<Types>
where diff --git a/hotshot_query_service/availability/struct.PayloadQueryData.html b/hotshot_query_service/availability/struct.PayloadQueryData.html index ec3f4bc55..d28014cf6 100644 --- a/hotshot_query_service/availability/struct.PayloadQueryData.html +++ b/hotshot_query_service/availability/struct.PayloadQueryData.html @@ -1,11 +1,11 @@ -PayloadQueryData in hotshot_query_service::availability - Rust
pub struct PayloadQueryData<Types: NodeType> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType> PayloadQueryData<Types>

source

pub async fn genesis( +PayloadQueryData in hotshot_query_service::availability - Rust
pub struct PayloadQueryData<Types: NodeType> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType> PayloadQueryData<Types>

source

pub async fn genesis( validated_state: &Types::ValidatedState, instance_state: &Types::InstanceState, ) -> Self
where Payload<Types>: QueryablePayload<Types>,

source

pub fn hash(&self) -> VidCommitment

source

pub fn block_hash(&self) -> BlockHash<Types>

source

pub fn size(&self) -> u64

source

pub fn data(&self) -> &Payload<Types>

Trait Implementations§

source§

impl<Types: Clone + NodeType> Clone for PayloadQueryData<Types>

source§

fn clone(&self) -> PayloadQueryData<Types>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types: Debug + NodeType> Debug for PayloadQueryData<Types>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de, Types: NodeType> Deserialize<'de> for PayloadQueryData<Types>

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<Types: NodeType> From<BlockQueryData<Types>> for PayloadQueryData<Types>

source§

fn from(block: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for PayloadQueryData<Types>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

source§

impl<Types: NodeType> From<BlockQueryData<Types>> for PayloadQueryData<Types>

source§

fn from(block: BlockQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for PayloadQueryData<Types>
where Types: NodeType, - Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: NodeType> HeightIndexed for PayloadQueryData<Types>

source§

fn height(&self) -> u64

source§

impl<Types: PartialEq + NodeType> PartialEq for PayloadQueryData<Types>

source§

fn eq(&self, other: &PayloadQueryData<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: NodeType> HeightIndexed for PayloadQueryData<Types>

source§

fn height(&self) -> u64

source§

impl<Types: PartialEq + NodeType> PartialEq for PayloadQueryData<Types>

source§

fn eq(&self, other: &PayloadQueryData<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<Types: NodeType> Serialize for PayloadQueryData<Types>

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<Types: Eq + NodeType> Eq for PayloadQueryData<Types>

source§

impl<Types: NodeType> StructuralPartialEq for PayloadQueryData<Types>

Auto Trait Implementations§

§

impl<Types> Freeze for PayloadQueryData<Types>
where <Types as NodeType>::BlockPayload: Freeze,

§

impl<Types> RefUnwindSafe for PayloadQueryData<Types>
where diff --git a/hotshot_query_service/availability/struct.VidCommonMetadata.html b/hotshot_query_service/availability/struct.VidCommonMetadata.html index de769cab4..b20f04b33 100644 --- a/hotshot_query_service/availability/struct.VidCommonMetadata.html +++ b/hotshot_query_service/availability/struct.VidCommonMetadata.html @@ -1,4 +1,4 @@ -VidCommonMetadata in hotshot_query_service::availability - Rust
pub struct VidCommonMetadata<Types>
where +VidCommonMetadata in hotshot_query_service::availability - Rust
pub struct VidCommonMetadata<Types>
where Types: NodeType,
{ pub height: u64, pub block_hash: BlockHash<Types>, @@ -9,9 +9,9 @@

Fields§

§height: u64§block_hash: BlockHash<Types>§payload_hash: VidCommitment

Trait Implementations§

source§

impl<Types> Clone for VidCommonMetadata<Types>
where Types: NodeType + Clone,

source§

fn clone(&self) -> VidCommonMetadata<Types>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types> Debug for VidCommonMetadata<Types>
where Types: NodeType + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Types> From<VidCommonQueryData<Types>> for VidCommonMetadata<Types>
where - Types: NodeType,

source§

fn from(common: VidCommonQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for VidCommonMetadata<Types>
where + Types: NodeType,

source§

fn from(common: VidCommonQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for VidCommonMetadata<Types>
where Types: NodeType, - Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types> HeightIndexed for VidCommonMetadata<Types>
where + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types> HeightIndexed for VidCommonMetadata<Types>
where Types: NodeType,

source§

fn height(&self) -> u64

source§

impl<Types> PartialEq for VidCommonMetadata<Types>
where Types: NodeType + PartialEq,

source§

fn eq(&self, other: &VidCommonMetadata<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<Types> Copy for VidCommonMetadata<Types>
where diff --git a/hotshot_query_service/availability/struct.VidCommonQueryData.html b/hotshot_query_service/availability/struct.VidCommonQueryData.html index 9714dd1c8..da397c3af 100644 --- a/hotshot_query_service/availability/struct.VidCommonQueryData.html +++ b/hotshot_query_service/availability/struct.VidCommonQueryData.html @@ -1,11 +1,11 @@ -VidCommonQueryData in hotshot_query_service::availability - Rust
pub struct VidCommonQueryData<Types: NodeType> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType> VidCommonQueryData<Types>

source

pub fn new(header: Header<Types>, common: VidCommon) -> Self

source

pub async fn genesis( +VidCommonQueryData in hotshot_query_service::availability - Rust
pub struct VidCommonQueryData<Types: NodeType> { /* private fields */ }

Implementations§

source§

impl<Types: NodeType> VidCommonQueryData<Types>

source

pub fn new(header: Header<Types>, common: VidCommon) -> Self

source

pub async fn genesis( validated_state: &Types::ValidatedState, instance_state: &Types::InstanceState, ) -> Self

source

pub fn block_hash(&self) -> BlockHash<Types>

source

pub fn payload_hash(&self) -> VidCommitment

source

pub fn common(&self) -> &VidCommon

Trait Implementations§

source§

impl<Types: Clone + NodeType> Clone for VidCommonQueryData<Types>

source§

fn clone(&self) -> VidCommonQueryData<Types>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Types: Debug + NodeType> Debug for VidCommonQueryData<Types>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de, Types: NodeType> Deserialize<'de> for VidCommonQueryData<Types>

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<Types> From<VidCommonQueryData<Types>> for VidCommonMetadata<Types>
where - Types: NodeType,

source§

fn from(common: VidCommonQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for VidCommonQueryData<Types>
where + Types: NodeType,

source§

fn from(common: VidCommonQueryData<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for VidCommonQueryData<Types>
where Types: NodeType, - Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: NodeType> HeightIndexed for VidCommonQueryData<Types>

source§

fn height(&self) -> u64

source§

impl<Types: PartialEq + NodeType> PartialEq for VidCommonQueryData<Types>

source§

fn eq(&self, other: &VidCommonQueryData<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: NodeType> HeightIndexed for VidCommonQueryData<Types>

source§

fn height(&self) -> u64

source§

impl<Types: PartialEq + NodeType> PartialEq for VidCommonQueryData<Types>

source§

fn eq(&self, other: &VidCommonQueryData<Types>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<Types: NodeType> Serialize for VidCommonQueryData<Types>

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<Types: Eq + NodeType> Eq for VidCommonQueryData<Types>

source§

impl<Types: NodeType> StructuralPartialEq for VidCommonQueryData<Types>

Auto Trait Implementations§

§

impl<Types> Freeze for VidCommonQueryData<Types>

§

impl<Types> RefUnwindSafe for VidCommonQueryData<Types>

§

impl<Types> Send for VidCommonQueryData<Types>

§

impl<Types> Sync for VidCommonQueryData<Types>

§

impl<Types> Unpin for VidCommonQueryData<Types>

§

impl<Types> UnwindSafe for VidCommonQueryData<Types>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( diff --git a/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.html b/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.html index 65a269bdc..c6f5f8740 100644 --- a/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.html +++ b/hotshot_query_service/data_source/fetching/struct.FetchingDataSource.html @@ -56,11 +56,11 @@ AtomicStore::commit_version, the version of this FileSystemDataSource must be advanced, either by commit or, if there are no outstanding changes, skip_version.

-

source§

impl<Types, P: AvailabilityProvider<Types>> FetchingDataSource<Types, SqlStorage, P>
where +

source§

impl<Types, P: AvailabilityProvider<Types>> FetchingDataSource<Types, SqlStorage, P>
where Types: NodeType, Header<Types>: QueryableHeader<Types>, - Payload<Types>: QueryablePayload<Types>,

source

pub async fn connect( - config: Config, + Payload<Types>: QueryablePayload<Types>,

source

pub async fn connect( + config: Config, provider: P, ) -> Result<Builder<Types, P>, Error>

Connect to a remote database.

This function returns a fetching::Builder which can be used to set options on the diff --git a/hotshot_query_service/data_source/sql/index.html b/hotshot_query_service/data_source/sql/index.html index d4f92606b..cab893742 100644 --- a/hotshot_query_service/data_source/sql/index.html +++ b/hotshot_query_service/data_source/sql/index.html @@ -1,3 +1,3 @@ -hotshot_query_service::data_source::sql - Rust

Module hotshot_query_service::data_source::sql

source ·

Re-exports§

Modules§

Macros§

Structs§

  • The Error type, a wrapper around a dynamic error type.
  • Represents a schema migration to be run on the database, +hotshot_query_service::data_source::sql - Rust

    Module hotshot_query_service::data_source::sql

    source ·

    Re-exports§

    Modules§

    Macros§

    • Embed migrations from the given directory into the current binary for PostgreSQL or SQLite.

    Structs§

    • The Error type, a wrapper around a dynamic error type.
    • Represents a schema migration to be run on the database, this struct is used by the embed_migrations! macro to gather migration files -and shouldn’t be needed by the user

    Type Aliases§

    • A data source for the APIs provided in this crate, backed by a remote PostgreSQL database.
    \ No newline at end of file +and shouldn’t be needed by the user

Type Aliases§

\ No newline at end of file diff --git a/hotshot_query_service/data_source/sql/macro.include_migrations.html b/hotshot_query_service/data_source/sql/macro.include_migrations.html index 928b73bb6..444595ab5 100644 --- a/hotshot_query_service/data_source/sql/macro.include_migrations.html +++ b/hotshot_query_service/data_source/sql/macro.include_migrations.html @@ -1,6 +1,6 @@ -include_migrations in hotshot_query_service::data_source::sql - Rust
macro_rules! include_migrations {
+include_migrations in hotshot_query_service::data_source::sql - Rust
macro_rules! include_migrations {
     ($dir:tt) => { ... };
-}
Expand description

Embed migrations from the given directory into the current binary.

+}
Expand description

Embed migrations from the given directory into the current binary for PostgreSQL or SQLite.

The macro invocation include_migrations!(path) evaluates to an expression of type impl Iterator<Item = Migration>. Each migration must be a text file which is an immediate child of path, and there must be no non-migration files in path. The migration files must have names of the form V${version}__${name}.sql, where version is a positive integer indicating how the @@ -10,14 +10,24 @@ invoking crate by using environment variable expansions and the CARGO_MANIFEST_DIR environment variable.

As an example, this is the invocation used to load the default migrations from the -hotshot-query-service crate. The migrations are located in a directory called migrations at -the root of the crate.

+hotshot-query-service crate. The migrations are located in a directory called migrations at

+
    +
  • PostgreSQL migrations are in /migrations/postgres.
  • +
  • SQLite migrations are in /migrations/sqlite.
  • +
-
let mut migrations: Vec<Migration> =
-    include_migrations!("$CARGO_MANIFEST_DIR/migrations").collect();
-migrations.sort();
-assert_eq!(migrations[0].version(), 10);
-assert_eq!(migrations[0].name(), "init_schema");
+
// For PostgreSQL
+#[cfg(not(feature = "embedded-db"))]
+ let mut migrations: Vec<Migration> =
+    include_migrations!("$CARGO_MANIFEST_DIR/migrations/postgres").collect();
+// For SQLite
+#[cfg(feature = "embedded-db")]
+let mut migrations: Vec<Migration> =
+    include_migrations!("$CARGO_MANIFEST_DIR/migrations/sqlite").collect();
+    
+    migrations.sort();
+    assert_eq!(migrations[0].version(), 10);
+    assert_eq!(migrations[0].name(), "init_schema");

Note that a similar macro is available from Refinery: embed_migrations. This macro differs in that it evaluates to an iterator of migrations, making it an diff --git a/hotshot_query_service/data_source/sql/sidebar-items.js b/hotshot_query_service/data_source/sql/sidebar-items.js index 28a09231f..6665b3d60 100644 --- a/hotshot_query_service/data_source/sql/sidebar-items.js +++ b/hotshot_query_service/data_source/sql/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"macro":["include_migrations"],"mod":["testing"],"struct":["Error","Migration"],"type":["Builder","SqlDataSource"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"macro":["include_migrations"],"mod":["testing"],"struct":["Error","Migration"],"type":["Builder","Config","SqlDataSource"]}; \ No newline at end of file diff --git a/hotshot_query_service/data_source/sql/testing/index.html b/hotshot_query_service/data_source/sql/testing/index.html index bddd5c23d..93f935aa0 100644 --- a/hotshot_query_service/data_source/sql/testing/index.html +++ b/hotshot_query_service/data_source/sql/testing/index.html @@ -1 +1 @@ -hotshot_query_service::data_source::sql::testing - Rust

Module hotshot_query_service::data_source::sql::testing

source ·

Re-exports§

  • pub use sql::testing::TmpDb;
\ No newline at end of file +hotshot_query_service::data_source::sql::testing - Rust

Module hotshot_query_service::data_source::sql::testing

source ·

Re-exports§

  • pub use sql::testing::TmpDb;
\ No newline at end of file diff --git a/hotshot_query_service/data_source/sql/type.Config.html b/hotshot_query_service/data_source/sql/type.Config.html new file mode 100644 index 000000000..e1b4f24fa --- /dev/null +++ b/hotshot_query_service/data_source/sql/type.Config.html @@ -0,0 +1,16 @@ +Config in hotshot_query_service::data_source::sql - Rust

Type Alias hotshot_query_service::data_source::sql::Config

source ·
pub type Config = Config;

Aliased Type§

struct Config { /* private fields */ }

Implementations§

source§

impl Config

source

pub async fn connect<Types, P: AvailabilityProvider<Types>>( + self, + provider: P, +) -> Result<SqlDataSource<Types, P>, Error>
where + Types: NodeType, + Header<Types>: QueryableHeader<Types>, + Payload<Types>: QueryablePayload<Types>,

Connect to the database with this config.

+
source

pub async fn builder<Types, P: AvailabilityProvider<Types>>( + self, + provider: P, +) -> Result<Builder<Types, P>, Error>
where + Types: NodeType, + Header<Types>: QueryableHeader<Types>, + Payload<Types>: QueryablePayload<Types>,

Connect to the database, setting options on the underlying FetchingDataSource using the +fetching::Builder interface.

+
\ No newline at end of file diff --git a/hotshot_query_service/data_source/sql/type.SqlDataSource.html b/hotshot_query_service/data_source/sql/type.SqlDataSource.html index b237cca9e..43821817b 100644 --- a/hotshot_query_service/data_source/sql/type.SqlDataSource.html +++ b/hotshot_query_service/data_source/sql/type.SqlDataSource.html @@ -1,4 +1,4 @@ -SqlDataSource in hotshot_query_service::data_source::sql - Rust

Type Alias hotshot_query_service::data_source::sql::SqlDataSource

source ·
pub type SqlDataSource<Types, P> = FetchingDataSource<Types, SqlStorage, P>;
Expand description

A data source for the APIs provided in this crate, backed by a remote PostgreSQL database.

+SqlDataSource in hotshot_query_service::data_source::sql - Rust

Type Alias hotshot_query_service::data_source::sql::SqlDataSource

source ·
pub type SqlDataSource<Types, P> = FetchingDataSource<Types, SqlStorage, P>;
Expand description

A data source for the APIs provided in this crate, backed by a remote PostgreSQL database.

§Administration

This data source will automatically connect to and perform queries on a remote SQL database. However, administration of the database, such as initialization, resetting, and backups, is @@ -9,11 +9,13 @@

§Schema

All the objects created and used by SqlDataSource are grouped under a schema for easy management. By default, the schema is named hotshot, and is created the first time a SqlDataSource is constructed. The name of the schema can be configured by setting -Config::schema.

+[Config::schema].

§Initialization

-

When creating a SqlDataSource, the caller can use Config to specify the host, user, and -database to connect to. As such, SqlDataSource is not very opinionated about how the -Postgres instance is set up. The administrator must simply ensure that there is a database +

When creating a PostgreSQL SqlDataSource, the caller can use Config to specify the host, user, and +database for the connection. If the embedded-db feature is enabled, the caller can instead specify the +file path for an SQLite database. +As such, SqlDataSource is not very opinionated about how the +database instance is set up. The administrator must simply ensure that there is a database dedicated to the SqlDataSource and a user with appropriate permissions (all on SCHEMA and all on DATABASE) over that database.

Here is an example of how a sufficient database could be initialized. When using the standard @@ -25,13 +27,20 @@

§Initi GRANT ALL ON SCHEMA public TO hotshot_user; GRANT ALL ON DATABASE hotshot_query_service TO hotshot_user WITH GRANT OPTION;

-

One could then connect to this database with the following Config:

+

For SQLite, simply provide the file path, and the file will be created if it does not already exist.

+

One could then connect to this database with the following Config for postgres:

-
Config::default()
+
#[cfg(not(feature= "embedded-db"))]
+Config::default()
     .host("postgres.database.hostname")
     .database("hotshot_query_service")
     .user("hotshot_user")
     .password("password")
+

Or, if the embedded-db feature is enabled, configure it as follows for SQLite:

+ +
#[cfg(feature= "embedded-db")]
+Config::default()
+    .db_path("temp.db".into())

§Resetting

In general, resetting the database when necessary is left up to the administrator. However, for convenience, we do provide a reset_schema option which can be used to @@ -157,29 +166,29 @@

§Composition Ok(app) }

-

Aliased Type§

struct SqlDataSource<Types, P> { /* private fields */ }

Implementations§

source§

impl<Types, P: AvailabilityProvider<Types>> SqlDataSource<Types, P>
where +

Aliased Type§

struct SqlDataSource<Types, P> { /* private fields */ }

Implementations§

source§

impl<Types, P: AvailabilityProvider<Types>> SqlDataSource<Types, P>
where Types: NodeType, Header<Types>: QueryableHeader<Types>, - Payload<Types>: QueryablePayload<Types>,

source

pub async fn connect( - config: Config, + Payload<Types>: QueryablePayload<Types>,

source

pub async fn connect( + config: Config, provider: P, ) -> Result<Builder<Types, P>, Error>

Connect to a remote database.

This function returns a fetching::Builder which can be used to set options on the underlying FetchingDataSource, before constructing the SqlDataSource with build. For a convenient constructor that uses the default fetching options, see Config::connect.

-

Trait Implementations§

source§

impl<P: AvailabilityProvider<MockTypes> + Default> DataSourceLifeCycle for SqlDataSource<MockTypes, P>

source§

type Storage = TmpDb

Backing storage for the data source. Read more
source§

fn create<'async_trait>( +

Trait Implementations§

source§

impl<P: AvailabilityProvider<MockTypes> + Default> DataSourceLifeCycle for SqlDataSource<MockTypes, P>

source§

type Storage = TmpDb

Backing storage for the data source. Read more
source§

fn create<'async_trait>( _node_id: usize, ) -> Pin<Box<dyn Future<Output = Self::Storage> + Send + 'async_trait>>
where - Self: 'async_trait,

source§

fn connect<'life0, 'async_trait>( + Self: 'async_trait,

source§

fn connect<'life0, 'async_trait>( tmp_db: &'life0 Self::Storage, ) -> Pin<Box<dyn Future<Output = Self> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

source§

fn reset<'life0, 'async_trait>( + 'life0: 'async_trait,

source§

fn reset<'life0, 'async_trait>( tmp_db: &'life0 Self::Storage, ) -> Pin<Box<dyn Future<Output = Self> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

source§

fn handle_event<'life0, 'life1, 'async_trait>( + 'life0: 'async_trait,

source§

fn handle_event<'life0, 'life1, 'async_trait>( &'life0 self, event: &'life1 Event<MockTypes>, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where diff --git a/hotshot_query_service/data_source/storage/pruning/trait.PruneStorage.html b/hotshot_query_service/data_source/storage/pruning/trait.PruneStorage.html index d18a3a2b9..38e3940a6 100644 --- a/hotshot_query_service/data_source/storage/pruning/trait.PruneStorage.html +++ b/hotshot_query_service/data_source/storage/pruning/trait.PruneStorage.html @@ -24,6 +24,6 @@ ) -> Pin<Box<dyn Future<Output = Result<Option<u64>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait, - 'life1: 'async_trait,

Implementors§

Implementors§

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/pruning/trait.PrunedHeightStorage.html b/hotshot_query_service/data_source/storage/pruning/trait.PrunedHeightStorage.html index 9dba0fd0d..128f80a2c 100644 --- a/hotshot_query_service/data_source/storage/pruning/trait.PrunedHeightStorage.html +++ b/hotshot_query_service/data_source/storage/pruning/trait.PrunedHeightStorage.html @@ -9,5 +9,5 @@ &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<Option<u64>>> + Send + 'async_trait>>
where Self: Send + 'async_trait, - 'life0: 'async_trait,

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a> PrunedHeightStorage for hotshot_query_service::data_source::storage::no_storage::Transaction<'a>

source§

impl<Mode: TransactionMode> PrunedHeightStorage for hotshot_query_service::data_source::storage::sql::Transaction<Mode>

source§

impl<T> PrunedHeightStorage for hotshot_query_service::data_source::storage::fail_storage::Transaction<T>
where + 'life0: 'async_trait,

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a> PrunedHeightStorage for hotshot_query_service::data_source::storage::no_storage::Transaction<'a>

source§

impl<Mode: TransactionMode> PrunedHeightStorage for hotshot_query_service::data_source::storage::sql::Transaction<Mode>

source§

impl<T> PrunedHeightStorage for hotshot_query_service::data_source::storage::fail_storage::Transaction<T>

source§

impl<T: Revert> PrunedHeightStorage for hotshot_query_service::data_source::storage::fs::Transaction<T>

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/pruning/trait.PrunerConfig.html b/hotshot_query_service/data_source/storage/pruning/trait.PrunerConfig.html index d2bb8d5a6..4894e1a9d 100644 --- a/hotshot_query_service/data_source/storage/pruning/trait.PrunerConfig.html +++ b/hotshot_query_service/data_source/storage/pruning/trait.PrunerConfig.html @@ -2,6 +2,6 @@ // Provided methods fn set_pruning_config(&mut self, _cfg: PrunerCfg) { ... } fn get_pruning_config(&self) -> Option<PrunerCfg> { ... } -}

Provided Methods§

source

fn set_pruning_config(&mut self, _cfg: PrunerCfg)

source

fn get_pruning_config(&self) -> Option<PrunerCfg>

Implementors§

source§

impl PrunerConfig for NoStorage

source§

impl PrunerConfig for SqlStorage

source§

impl<S> PrunerConfig for FailStorage<S>
where +}

Provided Methods§

Implementors§

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/constant.BINARY_TYPE.html b/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/constant.BINARY_TYPE.html new file mode 100644 index 000000000..0e309a288 --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/constant.BINARY_TYPE.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../../../hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.BINARY_TYPE.html...

+ + + \ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/constant.MAX_FN.html b/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/constant.MAX_FN.html new file mode 100644 index 000000000..c6d2bbdcb --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/constant.MAX_FN.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../../../hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.MAX_FN.html...

+ + + \ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/index.html b/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/index.html new file mode 100644 index 000000000..7b1185baa --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/db/syntax_helpers/index.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../../../hotshot_query_service/data_source/storage/sql/syntax_helpers/index.html...

+ + + \ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/fn.build_where_in.html b/hotshot_query_service/data_source/storage/sql/fn.build_where_in.html new file mode 100644 index 000000000..b073cb16f --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/fn.build_where_in.html @@ -0,0 +1,7 @@ +build_where_in in hotshot_query_service::data_source::storage::sql - Rust
pub fn build_where_in<'a, I>(
+    query: &'a str,
+    column: &'a str,
+    values: I,
+) -> QueryResult<(QueryBuilder<'a>, String)>
where + I: IntoIterator, + I::Item: 'a + Encode<'a, Db> + Type<Db>,
\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/fn.default_migrations.html b/hotshot_query_service/data_source/storage/sql/fn.default_migrations.html index cf86fbe50..330c35b7f 100644 --- a/hotshot_query_service/data_source/storage/sql/fn.default_migrations.html +++ b/hotshot_query_service/data_source/storage/sql/fn.default_migrations.html @@ -1,2 +1,2 @@ -default_migrations in hotshot_query_service::data_source::storage::sql - Rust
pub fn default_migrations() -> Vec<Migration>
Expand description

The migrations requied to build the default schema for this version of SqlStorage.

+default_migrations in hotshot_query_service::data_source::storage::sql - Rust
pub fn default_migrations() -> Vec<Migration>
Expand description

The migrations requied to build the default schema for this version of SqlStorage.

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/index.html b/hotshot_query_service/data_source/storage/sql/index.html index 31ec25999..10362bd8e 100644 --- a/hotshot_query_service/data_source/storage/sql/index.html +++ b/hotshot_query_service/data_source/storage/sql/index.html @@ -1,4 +1,4 @@ -hotshot_query_service::data_source::storage::sql - Rust

Module hotshot_query_service::data_source::storage::sql

source ·

Re-exports§

  • pub extern crate sqlx;

Modules§

Macros§

Structs§

  • Postgres client config.
  • The Error type, a wrapper around a dynamic error type.
  • Represents a schema migration to be run on the database, +hotshot_query_service::data_source::storage::sql - Rust

    Module hotshot_query_service::data_source::storage::sql

    source ·

    Re-exports§

    • pub extern crate sqlx;

    Modules§

    Macros§

    • Embed the contents of a directory in your crate.
    • Embed migrations from the given directory into the current binary for PostgreSQL or SQLite.

    Structs§

    • The Error type, a wrapper around a dynamic error type.
    • Represents a schema migration to be run on the database, this struct is used by the embed_migrations! macro to gather migration files and shouldn’t be needed by the user
    • Helper type for programatically constructing queries.
    • Marker type indicating a transaction with read-only access to the database.
    • Storage for the APIs provided in this crate, backed by a remote PostgreSQL database.
    • Sqlite database driver.
    • An atomic SQL transaction.
    • Marker type indicating a transaction with read-write access to the database.

    Traits§

    • A database driver.
    • A type that contains or can provide a database -connection to use for executing queries against the database.
    • A collection of parameters with a statically known length.
    • A collection of parameters which can be bound to a SQL query.
    • Trait for marker types indicating what type of access a transaction has to the database.

    Functions§

    Type Aliases§

    \ No newline at end of file +connection to use for executing queries against the database.
  • A collection of parameters with a statically known length.
  • A collection of parameters which can be bound to a SQL query.
  • Trait for marker types indicating what type of access a transaction has to the database.

Functions§

Type Aliases§

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/macro.include_migrations.html b/hotshot_query_service/data_source/storage/sql/macro.include_migrations.html index 84b412dd8..06361557a 100644 --- a/hotshot_query_service/data_source/storage/sql/macro.include_migrations.html +++ b/hotshot_query_service/data_source/storage/sql/macro.include_migrations.html @@ -1,6 +1,6 @@ -include_migrations in hotshot_query_service::data_source::storage::sql - Rust
macro_rules! include_migrations {
+include_migrations in hotshot_query_service::data_source::storage::sql - Rust
macro_rules! include_migrations {
     ($dir:tt) => { ... };
-}
Expand description

Embed migrations from the given directory into the current binary.

+}
Expand description

Embed migrations from the given directory into the current binary for PostgreSQL or SQLite.

The macro invocation include_migrations!(path) evaluates to an expression of type impl Iterator<Item = Migration>. Each migration must be a text file which is an immediate child of path, and there must be no non-migration files in path. The migration files must have names of the form V${version}__${name}.sql, where version is a positive integer indicating how the @@ -10,14 +10,24 @@ invoking crate by using environment variable expansions and the CARGO_MANIFEST_DIR environment variable.

As an example, this is the invocation used to load the default migrations from the -hotshot-query-service crate. The migrations are located in a directory called migrations at -the root of the crate.

+hotshot-query-service crate. The migrations are located in a directory called migrations at

+
    +
  • PostgreSQL migrations are in /migrations/postgres.
  • +
  • SQLite migrations are in /migrations/sqlite.
  • +
-
let mut migrations: Vec<Migration> =
-    include_migrations!("$CARGO_MANIFEST_DIR/migrations").collect();
-migrations.sort();
-assert_eq!(migrations[0].version(), 10);
-assert_eq!(migrations[0].name(), "init_schema");
+
// For PostgreSQL
+#[cfg(not(feature = "embedded-db"))]
+ let mut migrations: Vec<Migration> =
+    include_migrations!("$CARGO_MANIFEST_DIR/migrations/postgres").collect();
+// For SQLite
+#[cfg(feature = "embedded-db")]
+let mut migrations: Vec<Migration> =
+    include_migrations!("$CARGO_MANIFEST_DIR/migrations/sqlite").collect();
+    
+    migrations.sort();
+    assert_eq!(migrations[0].version(), 10);
+    assert_eq!(migrations[0].name(), "init_schema");

Note that a similar macro is available from Refinery: embed_migrations. This macro differs in that it evaluates to an iterator of migrations, making it an diff --git a/hotshot_query_service/data_source/storage/sql/sidebar-items.js b/hotshot_query_service/data_source/storage/sql/sidebar-items.js index 879ce5937..012e75c51 100644 --- a/hotshot_query_service/data_source/storage/sql/sidebar-items.js +++ b/hotshot_query_service/data_source/storage/sql/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"externcrate":["sqlx"],"fn":["default_migrations","query","query_as"],"macro":["include_dir","include_migrations"],"mod":["testing"],"struct":["Config","Error","Migration","Pruner","QueryBuilder","Read","SqlStorage","Sqlite","Transaction","Write"],"trait":["Database","Executor","FixedLengthParams","Params","TransactionMode"],"type":["Db","Query","QueryAs"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"externcrate":["sqlx"],"fn":["build_where_in","default_migrations","query","query_as"],"macro":["include_dir","include_migrations"],"mod":["syntax_helpers","testing"],"struct":["Config","Error","Migration","Pruner","QueryBuilder","Read","SqlStorage","Sqlite","Transaction","Write"],"trait":["Database","Executor","FixedLengthParams","Params","TransactionMode"],"type":["Db","Query","QueryAs"]}; \ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/struct.Config.html b/hotshot_query_service/data_source/storage/sql/struct.Config.html index 95a8c6222..159b4861f 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.Config.html +++ b/hotshot_query_service/data_source/storage/sql/struct.Config.html @@ -1,12 +1,11 @@ -Config in hotshot_query_service::data_source::storage::sql - Rust

Struct hotshot_query_service::data_source::storage::sql::Config

source ·
pub struct Config { /* private fields */ }
Expand description

Postgres client config.

-

Implementations§

source§

impl Config

source

pub async fn connect<Types, P: AvailabilityProvider<Types>>( +Config in hotshot_query_service::data_source::storage::sql - Rust

Struct hotshot_query_service::data_source::storage::sql::Config

source ·
pub struct Config { /* private fields */ }

Implementations§

source§

impl Config

source

pub async fn connect<Types, P: AvailabilityProvider<Types>>( self, provider: P, ) -> Result<SqlDataSource<Types, P>, Error>
where Types: NodeType, Header<Types>: QueryableHeader<Types>, Payload<Types>: QueryablePayload<Types>,

Connect to the database with this config.

-
source

pub async fn builder<Types, P: AvailabilityProvider<Types>>( +

source

pub async fn builder<Types, P: AvailabilityProvider<Types>>( self, provider: P, ) -> Result<Builder<Types, P>, Error>
where @@ -14,55 +13,44 @@ Header<Types>: QueryableHeader<Types>, Payload<Types>: QueryablePayload<Types>,

Connect to the database, setting options on the underlying FetchingDataSource using the fetching::Builder interface.

-

source§

impl Config

source

pub fn host(self, host: impl Into<String>) -> Self

Set the hostname of the database server.

-

The default is localhost.

-
source

pub fn port(self, port: u16) -> Self

Set the port on which to connect to the database.

-

The default is 5432, the default Postgres port.

-
source

pub fn user(self, user: &str) -> Self

Set the DB user to connect as.

-
source

pub fn password(self, password: &str) -> Self

Set a password for connecting to the database.

-
source

pub fn database(self, database: &str) -> Self

Set the name of the database to connect to.

-
source

pub fn tls(self) -> Self

Use TLS for an encrypted connection to the database.

-

Note that an encrypted connection may be established even if this option is not set, as long -as both the client and server support it. This option merely causes connection to fail if an -encrypted stream cannot be established.

-
source

pub fn schema(self, schema: impl Into<String>) -> Self

Set the name of the schema to use for queries.

-

The default schema is named hotshot and is created via the default migrations.

-
source

pub fn reset_schema(self) -> Self

Reset the schema on connection.

+
source§

impl Config

source

pub fn busy_timeout(self, timeout: Duration) -> Self

source

pub fn db_path(self, path: PathBuf) -> Self

source§

impl Config

source

pub fn pool(self, pool: Pool<Db>) -> Self

Sets the database connection pool +This allows reusing an existing connection pool when building a new SqlStorage instance.

+
source

pub fn reset_schema(self) -> Self

Reset the schema on connection.

When this Config is used to connect a SqlDataSource, if this option is set, the relevant -schema will first be dropped and then recreated, yielding a completely +schema will first be dropped and then recreated, yielding a completely fresh instance of the query service.

This is a particularly useful capability for development and staging environments. Still, it must be used with extreme caution, as using this will irrevocably delete any data pertaining to the query service in the database.

-
source

pub fn migrations(self, migrations: impl IntoIterator<Item = Migration>) -> Self

Add custom migrations to run when connecting to the database.

-
source

pub fn no_migrations(self) -> Self

Skip all migrations when connecting to the database.

-
source

pub fn pruner_cfg(self, cfg: PrunerCfg) -> Result<Self, Error>

Enable pruning with a given configuration.

+
source

pub fn migrations(self, migrations: impl IntoIterator<Item = Migration>) -> Self

Add custom migrations to run when connecting to the database.

+
source

pub fn no_migrations(self) -> Self

Skip all migrations when connecting to the database.

+
source

pub fn pruner_cfg(self, cfg: PrunerCfg) -> Result<Self, Error>

Enable pruning with a given configuration.

If archive was previously specified, this will override it.

-
source

pub fn archive(self) -> Self

Disable pruning and reconstruct previously pruned data.

+
source

pub fn archive(self) -> Self

Disable pruning and reconstruct previously pruned data.

While running without pruning is the default behavior, the default will not try to reconstruct data that was pruned in a previous run where pruning was enabled. This option instructs the service to run without pruning and reconstruct all previously pruned data by fetching from peers.

If pruner_cfg was previously specified, this will override it.

-
source

pub fn idle_connection_timeout(self, timeout: Duration) -> Self

Set the maximum idle time of a connection.

+
source

pub fn idle_connection_timeout(self, timeout: Duration) -> Self

Set the maximum idle time of a connection.

Any connection which has been open and unused longer than this duration will be automatically closed to reduce load on the server.

-
source

pub fn connection_timeout(self, timeout: Duration) -> Self

Set the maximum lifetime of a connection.

+
source

pub fn connection_timeout(self, timeout: Duration) -> Self

Set the maximum lifetime of a connection.

Any connection which has been open longer than this duration will be automatically closed (and, if needed, replaced), even if it is otherwise healthy. It is good practice to refresh even healthy connections once in a while (e.g. daily) in case of resource leaks in the server implementation.

-
source

pub fn min_connections(self, min: u32) -> Self

Set the minimum number of connections to maintain at any time.

+
source

pub fn min_connections(self, min: u32) -> Self

Set the minimum number of connections to maintain at any time.

The data source will, to the best of its ability, maintain at least min open connections at all times. This can be used to reduce the latency hit of opening new connections when at least this many simultaneous connections are frequently needed.

-
source

pub fn max_connections(self, max: u32) -> Self

Set the maximum number of connections to maintain at any time.

+
source

pub fn max_connections(self, max: u32) -> Self

Set the maximum number of connections to maintain at any time.

Once max connections are in use simultaneously, further attempts to acquire a connection (or begin a transaction) will block until one of the existing connections is released.

-
source

pub fn slow_statement_threshold(self, threshold: Duration) -> Self

Log at WARN level any time a SQL statement takes longer than threshold.

+
source

pub fn slow_statement_threshold(self, threshold: Duration) -> Self

Log at WARN level any time a SQL statement takes longer than threshold.

The default threshold is 1s.

-

Trait Implementations§

source§

impl Clone for Config

source§

fn clone(&self) -> Config

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Config

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Config

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<PgConnectOptions> for Config

source§

fn from(db_opt: PgConnectOptions) -> Self

Converts to this type from the input type.
source§

impl FromStr for Config

source§

type Err = <PgConnectOptions as FromStr>::Err

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more

Auto Trait Implementations§

§

impl Freeze for Config

§

impl !RefUnwindSafe for Config

§

impl Send for Config

§

impl Sync for Config

§

impl Unpin for Config

§

impl !UnwindSafe for Config

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for Config

source§

fn clone(&self) -> Config

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Default for Config

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<SqliteConnectOptions> for Config

source§

fn from(db_opt: SqliteConnectOptions) -> Self

Converts to this type from the input type.
source§

impl FromStr for Config

source§

type Err = <SqliteConnectOptions as FromStr>::Err

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more

Auto Trait Implementations§

§

impl Freeze for Config

§

impl !RefUnwindSafe for Config

§

impl Send for Config

§

impl Sync for Config

§

impl Unpin for Config

§

impl !UnwindSafe for Config

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/hotshot_query_service/data_source/storage/sql/struct.Pruner.html b/hotshot_query_service/data_source/storage/sql/struct.Pruner.html index 58e73f66a..bcfd57c51 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.Pruner.html +++ b/hotshot_query_service/data_source/storage/sql/struct.Pruner.html @@ -1,4 +1,4 @@ -Pruner in hotshot_query_service::data_source::storage::sql - Rust

Struct hotshot_query_service::data_source::storage::sql::Pruner

source ·
pub struct Pruner { /* private fields */ }

Trait Implementations§

source§

impl Debug for Pruner

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Pruner

source§

fn default() -> Pruner

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Pruner

§

impl RefUnwindSafe for Pruner

§

impl Send for Pruner

§

impl Sync for Pruner

§

impl Unpin for Pruner

§

impl UnwindSafe for Pruner

Blanket Implementations§

source§

impl<T> Any for T
where +Pruner in hotshot_query_service::data_source::storage::sql - Rust

Struct hotshot_query_service::data_source::storage::sql::Pruner

source ·
pub struct Pruner { /* private fields */ }

Trait Implementations§

source§

impl Debug for Pruner

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Pruner

source§

fn default() -> Pruner

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Pruner

§

impl RefUnwindSafe for Pruner

§

impl Send for Pruner

§

impl Sync for Pruner

§

impl Unpin for Pruner

§

impl UnwindSafe for Pruner

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/hotshot_query_service/data_source/storage/sql/struct.QueryBuilder.html b/hotshot_query_service/data_source/storage/sql/struct.QueryBuilder.html index 06754e0f7..51329ab43 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.QueryBuilder.html +++ b/hotshot_query_service/data_source/storage/sql/struct.QueryBuilder.html @@ -1,4 +1,4 @@ -QueryBuilder in hotshot_query_service::data_source::storage::sql - Rust
pub struct QueryBuilder<'q> { /* private fields */ }
Expand description

Helper type for programatically constructing queries.

+QueryBuilder in hotshot_query_service::data_source::storage::sql - Rust
pub struct QueryBuilder<'q> { /* private fields */ }
Expand description

Helper type for programatically constructing queries.

This type can be used to bind arguments of various types, similar to Query or QueryAs. With QueryBuilder, though, the arguments are bound first and the SQL statement is given last. Each time an argument is bound, a SQL fragment is returned as a string which can be used @@ -24,22 +24,22 @@

§Example

.await?; Ok(results) }
-

Implementations§

source§

impl<'q> QueryBuilder<'q>

source

pub fn bind<T>(&mut self, arg: T) -> QueryResult<String>
where +

Implementations§

source§

impl<'q> QueryBuilder<'q>

source

pub fn bind<T>(&mut self, arg: T) -> QueryResult<String>
where T: 'q + Encode<'q, Db> + Type<Db>,

Add an argument and return its name as a formal parameter in a SQL prepared statement.

-
source

pub fn query(self, sql: &'q str) -> Query<'q>

Finalize the query with a constructed SQL statement.

-
source

pub fn query_as<T>(self, sql: &'q str) -> QueryAs<'q, T>
where +

source

pub fn query(self, sql: &'q str) -> Query<'q>

Finalize the query with a constructed SQL statement.

+
source

pub fn query_as<T>(self, sql: &'q str) -> QueryAs<'q, T>
where T: for<'r> FromRow<'r, <Db as Database>::Row>,

Finalize the query with a constructed SQL statement and a specified output type.

-
source§

impl<'q> QueryBuilder<'q>

source

pub fn header_where_clause<Types: NodeType>( +

source§

impl<'q> QueryBuilder<'q>

source

pub fn header_where_clause<Types: NodeType>( &mut self, id: BlockId<Types>, ) -> QueryResult<String>

Construct a SQL WHERE clause which filters for a header exactly matching id.

-
source

pub fn bounds_to_where_clause<R>( +

source

pub fn bounds_to_where_clause<R>( &mut self, range: R, column: &str, ) -> QueryResult<String>
where R: RangeBounds<usize>,

Convert range bounds to a SQL WHERE clause constraining a given column.

-

Trait Implementations§

source§

impl<'q> Debug for QueryBuilder<'q>

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'q> Default for QueryBuilder<'q>

source§

fn default() -> QueryBuilder<'q>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'q> Freeze for QueryBuilder<'q>

§

impl<'q> !RefUnwindSafe for QueryBuilder<'q>

§

impl<'q> Send for QueryBuilder<'q>

§

impl<'q> Sync for QueryBuilder<'q>

§

impl<'q> Unpin for QueryBuilder<'q>

§

impl<'q> !UnwindSafe for QueryBuilder<'q>

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl<'q> Debug for QueryBuilder<'q>

source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'q> Default for QueryBuilder<'q>

source§

fn default() -> QueryBuilder<'q>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'q> Freeze for QueryBuilder<'q>

§

impl<'q> RefUnwindSafe for QueryBuilder<'q>

§

impl<'q> Send for QueryBuilder<'q>

§

impl<'q> Sync for QueryBuilder<'q>

§

impl<'q> Unpin for QueryBuilder<'q>

§

impl<'q> UnwindSafe for QueryBuilder<'q>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/hotshot_query_service/data_source/storage/sql/struct.Read.html b/hotshot_query_service/data_source/storage/sql/struct.Read.html index 92e1e80bd..a6b1bc274 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.Read.html +++ b/hotshot_query_service/data_source/storage/sql/struct.Read.html @@ -1,5 +1,5 @@ Read in hotshot_query_service::data_source::storage::sql - Rust

Struct hotshot_query_service::data_source::storage::sql::Read

source ·
pub struct Read;
Expand description

Marker type indicating a transaction with read-only access to the database.

-

Trait Implementations§

source§

impl Clone for Read

source§

fn clone(&self) -> Read

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Read

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Read

source§

fn default() -> Read

Returns the “default value” for a type. Read more
source§

impl TransactionMode for Read

source§

async fn begin(conn: &mut <Db as Database>::Connection) -> Result<()>

source§

fn display() -> &'static str

source§

impl Copy for Read

Auto Trait Implementations§

§

impl Freeze for Read

§

impl RefUnwindSafe for Read

§

impl Send for Read

§

impl Sync for Read

§

impl Unpin for Read

§

impl UnwindSafe for Read

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for Read

source§

fn clone(&self) -> Read

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Read

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Read

source§

fn default() -> Read

Returns the “default value” for a type. Read more
source§

impl TransactionMode for Read

source§

async fn begin(conn: &mut <Db as Database>::Connection) -> Result<()>

source§

fn display() -> &'static str

source§

impl Copy for Read

Auto Trait Implementations§

§

impl Freeze for Read

§

impl RefUnwindSafe for Read

§

impl Send for Read

§

impl Sync for Read

§

impl Unpin for Read

§

impl UnwindSafe for Read

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/hotshot_query_service/data_source/storage/sql/struct.SqlStorage.html b/hotshot_query_service/data_source/storage/sql/struct.SqlStorage.html index de45ec01e..ae6db1243 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.SqlStorage.html +++ b/hotshot_query_service/data_source/storage/sql/struct.SqlStorage.html @@ -1,6 +1,6 @@ -SqlStorage in hotshot_query_service::data_source::storage::sql - Rust
pub struct SqlStorage { /* private fields */ }
Expand description

Storage for the APIs provided in this crate, backed by a remote PostgreSQL database.

-

Implementations§

source§

impl SqlStorage

source

pub async fn connect(config: Config) -> Result<Self, Error>

Connect to a remote database.

-

Trait Implementations§

source§

impl Debug for SqlStorage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl HasMetrics for SqlStorage

source§

impl PruneStorage for SqlStorage

source§

fn prune<'life0, 'life1, 'async_trait>( +SqlStorage in hotshot_query_service::data_source::storage::sql - Rust
pub struct SqlStorage { /* private fields */ }
Expand description

Storage for the APIs provided in this crate, backed by a remote PostgreSQL database.

+

Implementations§

source§

impl SqlStorage

source

pub fn pool(&self) -> Pool<Db>

source

pub async fn connect(config: Config) -> Result<Self, Error>

Connect to a remote database.

+

Trait Implementations§

source§

impl Clone for SqlStorage

source§

fn clone(&self) -> SqlStorage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SqlStorage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl HasMetrics for SqlStorage

source§

impl PruneStorage for SqlStorage

source§

fn prune<'life0, 'life1, 'async_trait>( &'life0 self, pruner: &'life1 mut Pruner, ) -> Pin<Box<dyn Future<Output = Result<Option<u64>>> + Send + 'async_trait>>
where @@ -10,15 +10,15 @@ This is because a vacuum operation may be necessary to reclaim more space. PostgreSQL already performs auto vacuuming, so we are not including it here as running a vacuum operation can be resource-intensive.

-

source§

type Pruner = Pruner

source§

fn get_disk_usage<'life0, 'async_trait>( +

source§

type Pruner = Pruner

source§

fn get_disk_usage<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

source§

impl PrunerConfig for SqlStorage

source§

impl VersionedDataSource for SqlStorage

source§

type Transaction<'a> = Transaction<Write> + 'life0: 'async_trait,

source§

impl PrunerConfig for SqlStorage

source§

impl VersionedDataSource for SqlStorage

source§

type Transaction<'a> = Transaction<Write> where - Self: 'a

A transaction which can read and modify the data source.
source§

type ReadOnly<'a> = Transaction<Read> + Self: 'a

A transaction which can read and modify the data source.
source§

type ReadOnly<'a> = Transaction<Read> where - Self: 'a

source§

async fn write(&self) -> Result<Transaction<Write>>

Start an atomic transaction on the data source.
source§

async fn read(&self) -> Result<Transaction<Read>>

Start a read-only transaction on the data source. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + Self: 'a

source§

async fn write(&self) -> Result<Transaction<Write>>

Start an atomic transaction on the data source.
source§

async fn read(&self) -> Result<Transaction<Read>>

Start a read-only transaction on the data source. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where @@ -30,14 +30,16 @@ tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

§

fn deserialize( &self, deserializer: &mut D, -) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where +) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
source§

impl<T> DynClone for T
where + T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where @@ -128,7 +130,8 @@ builds.

§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release -builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where +builds.

source§

impl<T> ToOwned for T
where + T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where diff --git a/hotshot_query_service/data_source/storage/sql/struct.Sqlite.html b/hotshot_query_service/data_source/storage/sql/struct.Sqlite.html index 630aaa6db..e1a054a0a 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.Sqlite.html +++ b/hotshot_query_service/data_source/storage/sql/struct.Sqlite.html @@ -1,4 +1,4 @@ -Sqlite in hotshot_query_service::data_source::storage::sql - Rust

Struct hotshot_query_service::data_source::storage::sql::Sqlite

pub struct Sqlite;
Expand description

Sqlite database driver.

+Sqlite in hotshot_query_service::data_source::storage::sql - Rust

Struct hotshot_query_service::data_source::storage::sql::Sqlite

pub struct Sqlite;
Expand description

Sqlite database driver.

Trait Implementations§

§

impl Database for Sqlite

§

type Connection = SqliteConnection

The concrete Connection implementation for this database.
§

type TransactionManager = SqliteTransactionManager

The concrete TransactionManager implementation for this database.
§

type Row = SqliteRow

The concrete Row implementation for this database.
§

type QueryResult = SqliteQueryResult

The concrete QueryResult implementation for this database.
§

type Column = SqliteColumn

The concrete Column implementation for this database.
§

type TypeInfo = SqliteTypeInfo

The concrete TypeInfo implementation for this database.
§

type Value = SqliteValue

The concrete type used to hold an owned copy of the not-yet-decoded value that was received from the database.
§

type ValueRef<'r> = SqliteValueRef<'r>

The concrete type used to hold a reference to the not-yet-decoded value that has just been received from the database.
§

type Arguments<'q> = SqliteArguments<'q>

The concrete Arguments implementation for this database.
§

type ArgumentBuffer<'q> = Vec<SqliteArgumentValue<'q>>

The concrete type used as a buffer for arguments while encoding.
§

type Statement<'q> = SqliteStatement<'q>

The concrete Statement implementation for this database.
§

const NAME: &'static str = "SQLite"

The display name for this database driver.
§

const URL_SCHEMES: &'static [&'static str] = _

The schemes for database URLs that should match this driver.
§

impl Debug for Sqlite

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Decode<'_, Sqlite> for Box<[u8]>

§

fn decode( @@ -78,7 +78,24 @@ self, buf: &mut <DB as Database>::ArgumentBuffer<'q>, ) -> Result<IsNull, Box<dyn Error + Sync + Send>>
where - Self: Sized,

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

§

fn size_hint(&self) -> usize

§

impl MigrateDatabase for Sqlite

Writes the value of self into buf in the expected format for the database.
§

fn produces(&self) -> Option<<DB as Database>::TypeInfo>

§

fn size_hint(&self) -> usize

source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockDetail<Types>
where + Types: NodeType, + Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>, + Payload<Types>: QueryablePayload<Types>, + BalanceAmount<Types>: Into<MonetaryValue>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockQueryData<Types>
where + Types: NodeType, + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockSummary<Types>
where + Types: NodeType, + Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>, + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for LeafQueryData<Types>
where + Types: NodeType,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for PayloadMetadata<Types>
where + Types: NodeType,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for PayloadQueryData<Types>
where + Types: NodeType, + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for VidCommonMetadata<Types>
where + Types: NodeType, + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for VidCommonQueryData<Types>
where + Types: NodeType, + Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

§

impl MigrateDatabase for Sqlite

§

fn create_database( url: &str, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

§

fn database_exists( url: &str, diff --git a/hotshot_query_service/data_source/storage/sql/struct.Transaction.html b/hotshot_query_service/data_source/storage/sql/struct.Transaction.html index b93d3aebb..23051607d 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.Transaction.html +++ b/hotshot_query_service/data_source/storage/sql/struct.Transaction.html @@ -1,5 +1,5 @@ -Transaction in hotshot_query_service::data_source::storage::sql - Rust
pub struct Transaction<Mode> { /* private fields */ }
Expand description

An atomic SQL transaction.

-

Implementations§

source§

impl<Mode> Transaction<Mode>

source

pub async fn load_header<Types: NodeType>( +Transaction in hotshot_query_service::data_source::storage::sql - Rust
pub struct Transaction<Mode> { /* private fields */ }
Expand description

An atomic SQL transaction.

+

Implementations§

source§

impl<Mode> Transaction<Mode>

source

pub async fn load_header<Types: NodeType>( &mut self, id: impl Into<BlockId<Types>> + Send, ) -> QueryResult<Header<Types>>

Load a header from storage.

@@ -12,27 +12,8 @@

This more ergonomic interface is useful as loading headers is important for many SQL storage functions, not just the AvailabilityStorage interface.

-
source§

impl Transaction<Write>

Low-level, general database queries and mutation.

-
source

pub async fn execute_one<'q, E>(&mut self, statement: E) -> Result<()>
where - E: 'q + Execute<'q, Db>,

Execute a statement that is expected to modify exactly one row.

-

Returns an error if the database is not modified.

-
source

pub async fn execute_one_with_retries<'q>( - &mut self, - statement: &'q str, - params: impl Params<'q> + Clone, -) -> Result<()>

Execute a statement that is expected to modify exactly one row.

-

Returns an error if the database is not modified. Retries several times before failing.

-
source

pub async fn execute_many<'q, E>(&mut self, statement: E) -> Result<u64>
where - E: 'q + Execute<'q, Db>,

Execute a statement that is expected to modify at least one row.

-

Returns an error if the database is not modified.

-
source

pub async fn execute_many_with_retries<'q, 'p>( - &mut self, - statement: &'q str, - params: impl Params<'p> + Clone, -) -> Result<u64>
where - 'p: 'q,

Execute a statement that is expected to modify at least one row.

-

Returns an error if the database is not modified. Retries several times before failing.

-
source

pub async fn upsert<'p, const N: usize, R>( +

source§

impl Transaction<Write>

Low-level, general database queries and mutation.

+
source

pub async fn upsert<'p, const N: usize, R>( &mut self, table: &str, columns: [&str; N], @@ -120,7 +101,7 @@ hash: TransactionHash<Types>, ) -> Pin<Box<dyn Future<Output = QueryResult<TransactionQueryData<Types>>> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

source§

impl<Mode: Debug> Debug for Transaction<Mode>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Mode> Deref for Transaction<Mode>

source§

type Target = Transaction<'static, Postgres>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<Mode> DerefMut for Transaction<Mode>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<Mode, Types> ExplorerStorage<Types> for Transaction<Mode>
where + 'life0: 'async_trait,

source§

impl<Mode: Debug> Debug for Transaction<Mode>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Mode> Deref for Transaction<Mode>

source§

type Target = Transaction<'static, Sqlite>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<Mode> DerefMut for Transaction<Mode>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<Mode, Types> ExplorerStorage<Types> for Transaction<Mode>
where Mode: TransactionMode, Types: NodeType, Payload<Types>: QueryablePayload<Types>, @@ -140,41 +121,41 @@ Self: 'async_trait, 'life0: 'async_trait,

get_block_detail is a method that retrieves the details of a specific block from the blockchain. The block is identified by the given -BlockIdentifier.
source§

fn get_transaction_summaries<'life0, 'async_trait>( +BlockIdentifier.

source§

fn get_transaction_summaries<'life0, 'async_trait>( &'life0 mut self, request: GetTransactionSummariesRequest<Types>, ) -> Pin<Box<dyn Future<Output = Result<Vec<TransactionSummary<Types>>, GetTransactionSummariesError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_transaction_summaries is a method that retrieves a list of transaction summaries from the blockchain. The list is generated from -the given GetTransactionSummariesRequest.
source§

fn get_transaction_detail<'life0, 'async_trait>( +the given GetTransactionSummariesRequest.

source§

fn get_transaction_detail<'life0, 'async_trait>( &'life0 mut self, request: TransactionIdentifier<Types>, ) -> Pin<Box<dyn Future<Output = Result<TransactionDetailResponse<Types>, GetTransactionDetailError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_transaction_detail is a method that retrieves the details of a specific transaction from the blockchain. The transaction is identified -by the given TransactionIdentifier.
source§

fn get_explorer_summary<'life0, 'async_trait>( +by the given TransactionIdentifier.

source§

fn get_explorer_summary<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<ExplorerSummary<Types>, GetExplorerSummaryError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_explorer_summary is a method that retrieves a summary overview of the blockchain. This is useful for displaying information that -indicates the overall status of the block chain.
source§

fn get_search_results<'life0, 'async_trait>( +indicates the overall status of the block chain.

source§

fn get_search_results<'life0, 'async_trait>( &'life0 mut self, search_query: TaggedBase64, ) -> Pin<Box<dyn Future<Output = Result<SearchResult<Types>, GetSearchResultsError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

get_search_results is a method that retrieves the results of a search query against the blockchain. The results are generated from the given -query string.
source§

impl<Mode: TransactionMode> MerklizedStateHeightStorage for Transaction<Mode>

source§

fn get_last_state_height<'life0, 'async_trait>( +query string.

source§

impl<Mode: TransactionMode> MerklizedStateHeightStorage for Transaction<Mode>

source§

fn get_last_state_height<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

source§

impl<Mode, Types, State, const ARITY: usize> MerklizedStateStorage<Types, State, ARITY> for Transaction<Mode>
where + 'life0: 'async_trait,

source§

impl<Mode, Types, State, const ARITY: usize> MerklizedStateStorage<Types, State, ARITY> for Transaction<Mode>
where Mode: TransactionMode, Types: NodeType, - State: MerklizedState<Types, ARITY> + 'static,

source§

fn get_path<'life0, 'async_trait>( + State: MerklizedState<Types, ARITY> + 'static,

source§

fn get_path<'life0, 'async_trait>( &'life0 mut self, snapshot: Snapshot<Types, State, ARITY>, key: State::Key, @@ -214,26 +195,26 @@ limit: usize, ) -> Pin<Box<dyn Future<Output = QueryResult<TimeWindowQueryData<Header<Types>>>> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

source§

impl<Mode: TransactionMode> PrunedHeightStorage for Transaction<Mode>

source§

fn load_pruned_height<'life0, 'async_trait>( + 'life0: 'async_trait,

source§

impl<Mode: TransactionMode> PrunedHeightStorage for Transaction<Mode>

source§

fn load_pruned_height<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<Option<u64>>> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

source§

impl<Mode: TransactionMode> Transaction for Transaction<Mode>

source§

async fn commit(self) -> Result<()>

source§

fn revert(self) -> impl Future + Send

source§

impl<Types: NodeType> UpdateAggregatesStorage<Types> for Transaction<Write>

source§

async fn update_aggregates( + 'life0: 'async_trait,

source§

impl<Mode: TransactionMode> Transaction for Transaction<Mode>

source§

async fn commit(self) -> Result<()>

source§

fn revert(self) -> impl Future + Send

source§

impl<Types: NodeType> UpdateAggregatesStorage<Types> for Transaction<Write>

source§

async fn update_aggregates( &mut self, blocks: &[PayloadMetadata<Types>], -) -> Result<()>

Update aggregate statistics based on a new block.
source§

impl<Types> UpdateAvailabilityStorage<Types> for Transaction<Write>
where +) -> Result<()>

Update aggregate statistics based on a new block.
source§

impl<Types> UpdateAvailabilityStorage<Types> for Transaction<Write>
where Types: NodeType, Payload<Types>: QueryablePayload<Types>, - Header<Types>: QueryableHeader<Types>,

source§

async fn insert_leaf(&mut self, leaf: LeafQueryData<Types>) -> Result<()>

source§

async fn insert_block(&mut self, block: BlockQueryData<Types>) -> Result<()>

source§

async fn insert_vid( + Header<Types>: QueryableHeader<Types>,

source§

async fn insert_leaf(&mut self, leaf: LeafQueryData<Types>) -> Result<()>

source§

async fn insert_block(&mut self, block: BlockQueryData<Types>) -> Result<()>

source§

async fn insert_vid( &mut self, common: VidCommonQueryData<Types>, share: Option<VidShare>, -) -> Result<()>

source§

impl<Types: NodeType, State: MerklizedState<Types, ARITY>, const ARITY: usize> UpdateStateData<Types, State, ARITY> for Transaction<Write>

source§

fn set_last_state_height<'life0, 'async_trait>( +) -> Result<()>

source§

impl<Types: NodeType, State: MerklizedState<Types, ARITY>, const ARITY: usize> UpdateStateData<Types, State, ARITY> for Transaction<Write>

source§

fn set_last_state_height<'life0, 'async_trait>( &'life0 mut self, height: usize, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

source§

fn insert_merkle_nodes<'life0, 'async_trait>( + 'life0: 'async_trait,

source§

fn insert_merkle_nodes<'life0, 'async_trait>( &'life0 mut self, proof: MerkleProof<State::Entry, State::Key, State::T, ARITY>, traversal_path: Vec<usize>, diff --git a/hotshot_query_service/data_source/storage/sql/struct.Write.html b/hotshot_query_service/data_source/storage/sql/struct.Write.html index 904232610..75e3ff262 100644 --- a/hotshot_query_service/data_source/storage/sql/struct.Write.html +++ b/hotshot_query_service/data_source/storage/sql/struct.Write.html @@ -1,5 +1,5 @@ Write in hotshot_query_service::data_source::storage::sql - Rust

Struct hotshot_query_service::data_source::storage::sql::Write

source ·
pub struct Write;
Expand description

Marker type indicating a transaction with read-write access to the database.

-

Trait Implementations§

source§

impl Clone for Write

source§

fn clone(&self) -> Write

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Write

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Write

source§

fn default() -> Write

Returns the “default value” for a type. Read more
source§

impl TransactionMode for Write

source§

async fn begin(conn: &mut <Db as Database>::Connection) -> Result<()>

source§

fn display() -> &'static str

source§

impl Copy for Write

Auto Trait Implementations§

§

impl Freeze for Write

§

impl RefUnwindSafe for Write

§

impl Send for Write

§

impl Sync for Write

§

impl Unpin for Write

§

impl UnwindSafe for Write

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for Write

source§

fn clone(&self) -> Write

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Write

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Write

source§

fn default() -> Write

Returns the “default value” for a type. Read more
source§

impl TransactionMode for Write

source§

async fn begin(conn: &mut <Db as Database>::Connection) -> Result<()>

source§

fn display() -> &'static str

source§

impl Copy for Write

Auto Trait Implementations§

§

impl Freeze for Write

§

impl RefUnwindSafe for Write

§

impl Send for Write

§

impl Sync for Write

§

impl Unpin for Write

§

impl UnwindSafe for Write

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.BINARY_TYPE.html b/hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.BINARY_TYPE.html new file mode 100644 index 000000000..10d6239a3 --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.BINARY_TYPE.html @@ -0,0 +1 @@ +BINARY_TYPE in hotshot_query_service::data_source::storage::sql::syntax_helpers - Rust
pub const BINARY_TYPE: &str = "BLOB";
\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.MAX_FN.html b/hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.MAX_FN.html new file mode 100644 index 000000000..18a258ebd --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/syntax_helpers/constant.MAX_FN.html @@ -0,0 +1 @@ +MAX_FN in hotshot_query_service::data_source::storage::sql::syntax_helpers - Rust
pub const MAX_FN: &str = "MAX";
\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/syntax_helpers/index.html b/hotshot_query_service/data_source/storage/sql/syntax_helpers/index.html new file mode 100644 index 000000000..ea7148291 --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/syntax_helpers/index.html @@ -0,0 +1 @@ +hotshot_query_service::data_source::storage::sql::syntax_helpers - Rust
\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/syntax_helpers/sidebar-items.js b/hotshot_query_service/data_source/storage/sql/syntax_helpers/sidebar-items.js new file mode 100644 index 000000000..c8504a7c5 --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/syntax_helpers/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"constant":["BINARY_TYPE","MAX_FN"]}; \ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/testing/index.html b/hotshot_query_service/data_source/storage/sql/testing/index.html index df1a2b062..3a7b256c7 100644 --- a/hotshot_query_service/data_source/storage/sql/testing/index.html +++ b/hotshot_query_service/data_source/storage/sql/testing/index.html @@ -1 +1 @@ -hotshot_query_service::data_source::storage::sql::testing - Rust
\ No newline at end of file +hotshot_query_service::data_source::storage::sql::testing - Rust
\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/testing/struct.TestMerkleTreeMigration.html b/hotshot_query_service/data_source/storage/sql/testing/struct.TestMerkleTreeMigration.html index 24977f7ca..456b30d0a 100644 --- a/hotshot_query_service/data_source/storage/sql/testing/struct.TestMerkleTreeMigration.html +++ b/hotshot_query_service/data_source/storage/sql/testing/struct.TestMerkleTreeMigration.html @@ -1,4 +1,4 @@ -TestMerkleTreeMigration in hotshot_query_service::data_source::storage::sql::testing - Rust
pub struct TestMerkleTreeMigration;

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +TestMerkleTreeMigration in hotshot_query_service::data_source::storage::sql::testing - Rust
pub struct TestMerkleTreeMigration;

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/hotshot_query_service/data_source/storage/sql/testing/struct.TmpDb.html b/hotshot_query_service/data_source/storage/sql/testing/struct.TmpDb.html index 5800d3835..ffa182473 100644 --- a/hotshot_query_service/data_source/storage/sql/testing/struct.TmpDb.html +++ b/hotshot_query_service/data_source/storage/sql/testing/struct.TmpDb.html @@ -1,4 +1,4 @@ -TmpDb in hotshot_query_service::data_source::storage::sql::testing - Rust

Struct hotshot_query_service::data_source::storage::sql::testing::TmpDb

source ·
pub struct TmpDb { /* private fields */ }

Implementations§

source§

impl TmpDb

source

pub async fn init() -> Self

source

pub async fn persistent() -> Self

source

pub fn host(&self) -> String

source

pub fn port(&self) -> u16

source

pub fn config(&self) -> Config

source

pub fn stop(&mut self)

source

pub async fn start(&mut self)

Trait Implementations§

source§

impl Debug for TmpDb

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Drop for TmpDb

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for TmpDb

§

impl RefUnwindSafe for TmpDb

§

impl Send for TmpDb

§

impl Sync for TmpDb

§

impl Unpin for TmpDb

§

impl UnwindSafe for TmpDb

Blanket Implementations§

source§

impl<T> Any for T
where +TmpDb in hotshot_query_service::data_source::storage::sql::testing - Rust

Struct hotshot_query_service::data_source::storage::sql::testing::TmpDb

source ·
pub struct TmpDb { /* private fields */ }

Implementations§

source§

impl TmpDb

source

pub async fn init() -> Self

source

pub async fn persistent() -> Self

source

pub fn path(&self) -> PathBuf

source

pub fn config(&self) -> Config

Trait Implementations§

source§

impl Debug for TmpDb

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Drop for TmpDb

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for TmpDb

§

impl RefUnwindSafe for TmpDb

§

impl Send for TmpDb

§

impl Sync for TmpDb

§

impl Unpin for TmpDb

§

impl UnwindSafe for TmpDb

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/hotshot_query_service/data_source/storage/sql/trait.FixedLengthParams.html b/hotshot_query_service/data_source/storage/sql/trait.FixedLengthParams.html index 0c4a9c359..4a58d5a95 100644 --- a/hotshot_query_service/data_source/storage/sql/trait.FixedLengthParams.html +++ b/hotshot_query_service/data_source/storage/sql/trait.FixedLengthParams.html @@ -1,35 +1,35 @@ -FixedLengthParams in hotshot_query_service::data_source::storage::sql - Rust
pub trait FixedLengthParams<'p, const N: usize>: Params<'p> { }
Expand description

A collection of parameters with a statically known length.

+FixedLengthParams in hotshot_query_service::data_source::storage::sql - Rust
pub trait FixedLengthParams<'p, const N: usize>: Params<'p> { }
Expand description

A collection of parameters with a statically known length.

This is a simple trick for enforcing at compile time that a list of parameters has a certain length, such as matching the length of a list of column names. This can prevent easy mistakes like leaving out a parameter. It is implemented for tuples up to length 8.

-

Implementations on Foreign Types§

source§

impl<'p, T1, T2> FixedLengthParams<'p, 2> for (T1, T2)
where +

Implementations on Foreign Types§

source§

impl<'p, T1, T2> FixedLengthParams<'p, 2> for (T1, T2)
where T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T2: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3> FixedLengthParams<'p, 3> for (T1, T2, T3)
where + T2: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3> FixedLengthParams<'p, 3> for (T1, T2, T3)
where T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T3: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4> FixedLengthParams<'p, 4> for (T1, T2, T3, T4)
where + T3: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4> FixedLengthParams<'p, 4> for (T1, T2, T3, T4)
where T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T4: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4, T5> FixedLengthParams<'p, 5> for (T1, T2, T3, T4, T5)
where + T4: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4, T5> FixedLengthParams<'p, 5> for (T1, T2, T3, T4, T5)
where T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, T4: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T5: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4, T5, T6> FixedLengthParams<'p, 6> for (T1, T2, T3, T4, T5, T6)
where + T5: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4, T5, T6> FixedLengthParams<'p, 6> for (T1, T2, T3, T4, T5, T6)
where T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, T4: 'p + for<'q> Encode<'q, Db> + Type<Db>, T5: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T6: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4, T5, T6, T7> FixedLengthParams<'p, 7> for (T1, T2, T3, T4, T5, T6, T7)
where + T6: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4, T5, T6, T7> FixedLengthParams<'p, 7> for (T1, T2, T3, T4, T5, T6, T7)
where T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, T4: 'p + for<'q> Encode<'q, Db> + Type<Db>, T5: 'p + for<'q> Encode<'q, Db> + Type<Db>, T6: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T7: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4, T5, T6, T7, T8> FixedLengthParams<'p, 8> for (T1, T2, T3, T4, T5, T6, T7, T8)
where + T7: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T1, T2, T3, T4, T5, T6, T7, T8> FixedLengthParams<'p, 8> for (T1, T2, T3, T4, T5, T6, T7, T8)
where T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, @@ -37,5 +37,5 @@ T5: 'p + for<'q> Encode<'q, Db> + Type<Db>, T6: 'p + for<'q> Encode<'q, Db> + Type<Db>, T7: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T8: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T> FixedLengthParams<'p, 1> for (T,)
where + T8: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

impl<'p, T> FixedLengthParams<'p, 1> for (T,)
where T: 'p + for<'q> Encode<'q, Db> + Type<Db>,

Implementors§

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/trait.Params.html b/hotshot_query_service/data_source/storage/sql/trait.Params.html index 65f21a17a..13a487385 100644 --- a/hotshot_query_service/data_source/storage/sql/trait.Params.html +++ b/hotshot_query_service/data_source/storage/sql/trait.Params.html @@ -1,7 +1,10 @@ -Params in hotshot_query_service::data_source::storage::sql - Rust

Trait hotshot_query_service::data_source::storage::sql::Params

source ·
pub trait Params<'p> {
+Params in hotshot_query_service::data_source::storage::sql - Rust

Trait hotshot_query_service::data_source::storage::sql::Params

source ·
pub trait Params<'p> {
     // Required method
-    fn bind<'q>(self, q: Query<'q>) -> Query<'q>
-       where 'p: 'q;
+    fn bind<'q, 'r>(
+        self,
+        q: &'q mut Separated<'r, 'p, Db, &'static str>,
+    ) -> &'q mut Separated<'r, 'p, Db, &'static str>
+       where 'p: 'r;
 }
Expand description

A collection of parameters which can be bound to a SQL query.

This trait allows us to carry around hetergenous lists of parameters (e.g. tuples) and bind them to a query at the last moment before executing. This means we can manipulate the parameters @@ -26,51 +29,76 @@

§Lifetimes

of the query we’re binding to ('q) may be different than the lifetime of the parameters ('p) as long as the parameters outlive the duration of the query (the 'p: 'q) bound on the bind function.

-

Required Methods§

source

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

Implementations on Foreign Types§

source§

impl<'p, T1, T2> Params<'p> for (T1, T2)
where - T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T2: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

source§

impl<'p, T1, T2, T3> Params<'p> for (T1, T2, T3)
where - T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T3: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

source§

impl<'p, T1, T2, T3, T4> Params<'p> for (T1, T2, T3, T4)
where - T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T4: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

source§

impl<'p, T1, T2, T3, T4, T5> Params<'p> for (T1, T2, T3, T4, T5)
where - T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T4: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T5: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

source§

impl<'p, T1, T2, T3, T4, T5, T6> Params<'p> for (T1, T2, T3, T4, T5, T6)
where - T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T4: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T5: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T6: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

source§

impl<'p, T1, T2, T3, T4, T5, T6, T7> Params<'p> for (T1, T2, T3, T4, T5, T6, T7)
where - T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T4: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T5: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T6: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T7: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

source§

impl<'p, T1, T2, T3, T4, T5, T6, T7, T8> Params<'p> for (T1, T2, T3, T4, T5, T6, T7, T8)
where - T1: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T2: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T3: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T4: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T5: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T6: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T7: 'p + for<'q> Encode<'q, Db> + Type<Db>, - T8: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

source§

impl<'p, T> Params<'p> for (T,)
where - T: 'p + for<'q> Encode<'q, Db> + Type<Db>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

source§

impl<'p, T> Params<'p> for Vec<T>
where - T: Params<'p>,

source§

fn bind<'q>(self, q: Query<'q>) -> Query<'q>
where - 'p: 'q,

Implementors§

\ No newline at end of file +

Required Methods§

source

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

Implementations on Foreign Types§

source§

impl<'p, T1, T2> Params<'p> for (T1, T2)
where + T1: 'p + Encode<'p, Db> + Type<Db>, + T2: 'p + Encode<'p, Db> + Type<Db>,

source§

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

source§

impl<'p, T1, T2, T3> Params<'p> for (T1, T2, T3)
where + T1: 'p + Encode<'p, Db> + Type<Db>, + T2: 'p + Encode<'p, Db> + Type<Db>, + T3: 'p + Encode<'p, Db> + Type<Db>,

source§

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

source§

impl<'p, T1, T2, T3, T4> Params<'p> for (T1, T2, T3, T4)
where + T1: 'p + Encode<'p, Db> + Type<Db>, + T2: 'p + Encode<'p, Db> + Type<Db>, + T3: 'p + Encode<'p, Db> + Type<Db>, + T4: 'p + Encode<'p, Db> + Type<Db>,

source§

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

source§

impl<'p, T1, T2, T3, T4, T5> Params<'p> for (T1, T2, T3, T4, T5)
where + T1: 'p + Encode<'p, Db> + Type<Db>, + T2: 'p + Encode<'p, Db> + Type<Db>, + T3: 'p + Encode<'p, Db> + Type<Db>, + T4: 'p + Encode<'p, Db> + Type<Db>, + T5: 'p + Encode<'p, Db> + Type<Db>,

source§

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

source§

impl<'p, T1, T2, T3, T4, T5, T6> Params<'p> for (T1, T2, T3, T4, T5, T6)
where + T1: 'p + Encode<'p, Db> + Type<Db>, + T2: 'p + Encode<'p, Db> + Type<Db>, + T3: 'p + Encode<'p, Db> + Type<Db>, + T4: 'p + Encode<'p, Db> + Type<Db>, + T5: 'p + Encode<'p, Db> + Type<Db>, + T6: 'p + Encode<'p, Db> + Type<Db>,

source§

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

source§

impl<'p, T1, T2, T3, T4, T5, T6, T7> Params<'p> for (T1, T2, T3, T4, T5, T6, T7)
where + T1: 'p + Encode<'p, Db> + Type<Db>, + T2: 'p + Encode<'p, Db> + Type<Db>, + T3: 'p + Encode<'p, Db> + Type<Db>, + T4: 'p + Encode<'p, Db> + Type<Db>, + T5: 'p + Encode<'p, Db> + Type<Db>, + T6: 'p + Encode<'p, Db> + Type<Db>, + T7: 'p + Encode<'p, Db> + Type<Db>,

source§

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

source§

impl<'p, T1, T2, T3, T4, T5, T6, T7, T8> Params<'p> for (T1, T2, T3, T4, T5, T6, T7, T8)
where + T1: 'p + Encode<'p, Db> + Type<Db>, + T2: 'p + Encode<'p, Db> + Type<Db>, + T3: 'p + Encode<'p, Db> + Type<Db>, + T4: 'p + Encode<'p, Db> + Type<Db>, + T5: 'p + Encode<'p, Db> + Type<Db>, + T6: 'p + Encode<'p, Db> + Type<Db>, + T7: 'p + Encode<'p, Db> + Type<Db>, + T8: 'p + Encode<'p, Db> + Type<Db>,

source§

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

source§

impl<'p, T> Params<'p> for (T,)
where + T: 'p + Encode<'p, Db> + Type<Db>,

source§

fn bind<'q, 'r>( + self, + q: &'q mut Separated<'r, 'p, Db, &'static str>, +) -> &'q mut Separated<'r, 'p, Db, &'static str>
where + 'p: 'r,

Implementors§

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/trait.TransactionMode.html b/hotshot_query_service/data_source/storage/sql/trait.TransactionMode.html index 1e32065d8..95a23f393 100644 --- a/hotshot_query_service/data_source/storage/sql/trait.TransactionMode.html +++ b/hotshot_query_service/data_source/storage/sql/trait.TransactionMode.html @@ -7,4 +7,4 @@ }
Expand description

Trait for marker types indicating what type of access a transaction has to the database.

Required Methods§

source

fn begin( conn: &mut <Db as Database>::Connection, -) -> impl Future<Output = Result<()>> + Send

source

fn display() -> &'static str

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file +) -> impl Future<Output = Result<()>> + Send

source

fn display() -> &'static str

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/transaction/fn.build_where_in.html b/hotshot_query_service/data_source/storage/sql/transaction/fn.build_where_in.html new file mode 100644 index 000000000..b6c626876 --- /dev/null +++ b/hotshot_query_service/data_source/storage/sql/transaction/fn.build_where_in.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../../hotshot_query_service/data_source/storage/sql/fn.build_where_in.html...

+ + + \ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/sql/type.Db.html b/hotshot_query_service/data_source/storage/sql/type.Db.html index 8320f4465..6612eb443 100644 --- a/hotshot_query_service/data_source/storage/sql/type.Db.html +++ b/hotshot_query_service/data_source/storage/sql/type.Db.html @@ -1,14 +1,17 @@ -Db in hotshot_query_service::data_source::storage::sql - Rust

Type Alias hotshot_query_service::data_source::storage::sql::Db

source ·
pub type Db = Postgres;
Expand description

The concrete database backing a SQL data source.

-

Currently only Postgres is supported. In the future we can support SQLite as well by making this -an enum with variants for each (we’ll then need to create enums and trait implementations for -all the associated types as well; it will be messy).

-

The reason for taking this approach over sqlx’s Any database is that we can support SQL types +Db in hotshot_query_service::data_source::storage::sql - Rust

Type Alias hotshot_query_service::data_source::storage::sql::Db

source ·
pub type Db = Sqlite;
Expand description

The underlying database type for a SQL data source.

+

Currently, only PostgreSQL and SQLite are supported, with selection based on the “embedded-db” feature flag.

+
    +
  • When the “embedded-db” feature is enabled, SQLite is used.
  • +
  • When it’s disabled, PostgreSQL is used.
  • +
+

§Design Choice

+

The reason for taking this approach over sqlx’s Any database is that we can support SQL types which are implemented for the two backends we care about (Postgres and SQLite) but not for any SQL database, such as MySQL. Crucially, JSON types fall in this category.

The reason for taking this approach rather than writing all of our code to be generic over the -Database implementation is that sqlx does not have the necessary trait bounds on all of the -associated types (e.g. Database::Connection does not implement Executor for all possible -databases, the Executor impl lives on each concrete connection type) and Rust does not provide +Database implementation is that sqlx does not have the necessary trait bounds on all of the +associated types (e.g. Database::Connection does not implement Executor for all possible +databases, the Executor impl lives on each concrete connection type) and Rust does not provide a good way of encapsulating a collection of trait bounds on associated types. Thus, our function signatures become untenably messy with bounds like

@@ -18,5 +21,4 @@ for<'q> DB::Arguments<'q>: IntoArguments<'q, DB>, for<'a> i64: Type<DB> + Encode<'a, DB>, {}
-

etc.

-

Aliased Type§

struct Db;
\ No newline at end of file +

Aliased Type§

struct Db;
\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/trait.ExplorerStorage.html b/hotshot_query_service/data_source/storage/trait.ExplorerStorage.html index 24e85c686..24d86a57f 100644 --- a/hotshot_query_service/data_source/storage/trait.ExplorerStorage.html +++ b/hotshot_query_service/data_source/storage/trait.ExplorerStorage.html @@ -94,7 +94,7 @@ 'life0: 'async_trait,

get_search_results is a method that retrieves the results of a search query against the blockchain. The results are generated from the given query string.

-

Implementors§

source§

impl<Mode, Types> ExplorerStorage<Types> for Transaction<Mode>
where +

Implementors§

source§

impl<Mode, Types> ExplorerStorage<Types> for Transaction<Mode>
where Mode: TransactionMode, Types: NodeType, Payload<Types>: QueryablePayload<Types>, diff --git a/hotshot_query_service/data_source/storage/trait.MerklizedStateHeightStorage.html b/hotshot_query_service/data_source/storage/trait.MerklizedStateHeightStorage.html index 466000ab5..e67a6a887 100644 --- a/hotshot_query_service/data_source/storage/trait.MerklizedStateHeightStorage.html +++ b/hotshot_query_service/data_source/storage/trait.MerklizedStateHeightStorage.html @@ -9,4 +9,4 @@ &'life0 mut self, ) -> Pin<Box<dyn Future<Output = QueryResult<usize>> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

Implementors§

\ No newline at end of file + 'life0: 'async_trait,

Implementors§

source§

impl<Mode: TransactionMode> MerklizedStateHeightStorage for Transaction<Mode>

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/trait.MerklizedStateStorage.html b/hotshot_query_service/data_source/storage/trait.MerklizedStateStorage.html index 8443c07fc..1d6a85ac9 100644 --- a/hotshot_query_service/data_source/storage/trait.MerklizedStateStorage.html +++ b/hotshot_query_service/data_source/storage/trait.MerklizedStateStorage.html @@ -17,7 +17,7 @@ key: State::Key, ) -> Pin<Box<dyn Future<Output = QueryResult<MerkleProof<State::Entry, State::Key, State::T, ARITY>>> + Send + 'async_trait>>
where Self: 'async_trait, - 'life0: 'async_trait,

Implementors§

source§

impl<Mode, Types, State, const ARITY: usize> MerklizedStateStorage<Types, State, ARITY> for Transaction<Mode>
where + 'life0: 'async_trait,

Implementors§

source§

impl<Mode, Types, State, const ARITY: usize> MerklizedStateStorage<Types, State, ARITY> for Transaction<Mode>
where Mode: TransactionMode, Types: NodeType, State: MerklizedState<Types, ARITY> + 'static,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/storage/trait.UpdateAvailabilityStorage.html b/hotshot_query_service/data_source/storage/trait.UpdateAvailabilityStorage.html index 597d29133..d3cb33e7c 100644 --- a/hotshot_query_service/data_source/storage/trait.UpdateAvailabilityStorage.html +++ b/hotshot_query_service/data_source/storage/trait.UpdateAvailabilityStorage.html @@ -28,7 +28,7 @@ T: UpdateAvailabilityStorage<MockTypes> + Send + Sync,
source§

impl<'a, Types: NodeType> UpdateAvailabilityStorage<Types> for hotshot_query_service::data_source::storage::fs::Transaction<RwLockWriteGuard<'a, FileSystemStorageInner<Types>>>
where Payload<Types>: QueryablePayload<Types>, Header<Types>: QueryableHeader<Types>,

source§

impl<'a, Types: NodeType> UpdateAvailabilityStorage<Types> for hotshot_query_service::data_source::storage::no_storage::Transaction<'a>
where - Payload<Types>: QueryablePayload<Types>,

source§

impl<Types> UpdateAvailabilityStorage<Types> for hotshot_query_service::data_source::storage::sql::Transaction<Write>
where + Payload<Types>: QueryablePayload<Types>,

source§

impl<Types> UpdateAvailabilityStorage<Types> for hotshot_query_service::data_source::storage::sql::Transaction<Write>
where Types: NodeType, Payload<Types>: QueryablePayload<Types>, Header<Types>: QueryableHeader<Types>,

source§

impl<Types, T> UpdateAvailabilityStorage<Types> for hotshot_query_service::data_source::storage::fail_storage::Transaction<T>
where diff --git a/hotshot_query_service/data_source/trait.Transaction.html b/hotshot_query_service/data_source/trait.Transaction.html index e028d38e4..08c8e8244 100644 --- a/hotshot_query_service/data_source/trait.Transaction.html +++ b/hotshot_query_service/data_source/trait.Transaction.html @@ -13,5 +13,5 @@ Types: NodeType, Payload<Types>: QueryablePayload<Types>,

source§

impl<'a, Types> Transaction for hotshot_query_service::data_source::storage::fs::Transaction<RwLockWriteGuard<'a, FileSystemStorageInner<Types>>>
where Types: NodeType, - Payload<Types>: QueryablePayload<Types>,

source§

impl<Mode: TransactionMode> Transaction for hotshot_query_service::data_source::storage::sql::Transaction<Mode>

source§

impl<T> Transaction for hotshot_query_service::data_source::storage::fail_storage::Transaction<T>
where + Payload<Types>: QueryablePayload<Types>,

source§

impl<Mode: TransactionMode> Transaction for hotshot_query_service::data_source::storage::sql::Transaction<Mode>

source§

impl<T> Transaction for hotshot_query_service::data_source::storage::fail_storage::Transaction<T>
where T: Transaction,

\ No newline at end of file diff --git a/hotshot_query_service/data_source/trait.VersionedDataSource.html b/hotshot_query_service/data_source/trait.VersionedDataSource.html index ad1357f01..ece0c1e07 100644 --- a/hotshot_query_service/data_source/trait.VersionedDataSource.html +++ b/hotshot_query_service/data_source/trait.VersionedDataSource.html @@ -41,9 +41,9 @@ where Self: 'a
source§

type ReadOnly<'a> = Transaction<'a> where - Self: 'a

source§

impl VersionedDataSource for SqlStorage

source§

type Transaction<'a> = Transaction<Write> + Self: 'a

source§

impl VersionedDataSource for SqlStorage

source§

type Transaction<'a> = Transaction<Write> where - Self: 'a

source§

type ReadOnly<'a> = Transaction<Read> + Self: 'a

source§

type ReadOnly<'a> = Transaction<Read> where Self: 'a

source§

impl<D, U> VersionedDataSource for ExtensibleDataSource<D, U>
where D: VersionedDataSource + Send, diff --git a/hotshot_query_service/enum.QueryError.html b/hotshot_query_service/enum.QueryError.html index 7a6ede82d..fcb5a6f6f 100644 --- a/hotshot_query_service/enum.QueryError.html +++ b/hotshot_query_service/enum.QueryError.html @@ -13,7 +13,7 @@ Self: Debug + Display,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
source§

impl ErrorCompat for QueryError

source§

fn backtrace(&self) -> Option<&Backtrace>

Returns a Backtrace that may be printed.
§

fn iter_chain(&self) -> ChainCompat<'_, '_>
where Self: AsErrorSource,

Returns an iterator for traversing the chain of errors, starting with the current error -and continuing with recursive calls to Error::source. Read more
source§

impl From<Error> for QueryError

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for Error

source§

fn from(original: QueryError) -> Error

Converts to this type from the input type.
source§

impl From<QueryError> for Error

source§

fn from(original: QueryError) -> Error

Converts to this type from the input type.
source§

impl From<QueryError> for GetBlockDetailError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetBlockSummariesError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetExplorerSummaryError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetSearchResultsError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetTransactionDetailError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetTransactionSummariesError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<TimestampConversionError> for QueryError

source§

fn from(value: TimestampConversionError) -> Self

Converts to this type from the input type.
source§

impl<__T0> IntoError<QueryError> for ErrorSnafu<__T0>
where +and continuing with recursive calls to Error::source. Read more

source§

impl From<Error> for QueryError

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for Error

source§

fn from(original: QueryError) -> Error

Converts to this type from the input type.
source§

impl From<QueryError> for Error

source§

fn from(original: QueryError) -> Error

Converts to this type from the input type.
source§

impl From<QueryError> for GetBlockDetailError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetBlockSummariesError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetExplorerSummaryError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetSearchResultsError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetTransactionDetailError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<QueryError> for GetTransactionSummariesError

source§

fn from(value: QueryError) -> Self

Converts to this type from the input type.
source§

impl From<TimestampConversionError> for QueryError

source§

fn from(value: TimestampConversionError) -> Self

Converts to this type from the input type.
source§

impl<__T0> IntoError<QueryError> for ErrorSnafu<__T0>
where QueryError: Error + ErrorCompat, __T0: Into<String>,

source§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> QueryError

Combine the information to produce the error
source§

impl IntoError<QueryError> for MissingSnafu
where QueryError: Error + ErrorCompat,

source§

type Source = NoneError

The underlying error
source§

fn into_error(self, error: Self::Source) -> QueryError

Combine the information to produce the error
source§

impl IntoError<QueryError> for NotFoundSnafu
where diff --git a/hotshot_query_service/explorer/struct.BlockDetail.html b/hotshot_query_service/explorer/struct.BlockDetail.html index 3bba5f1ae..3b1e3b020 100644 --- a/hotshot_query_service/explorer/struct.BlockDetail.html +++ b/hotshot_query_service/explorer/struct.BlockDetail.html @@ -1,4 +1,4 @@ -BlockDetail in hotshot_query_service::explorer - Rust

Struct hotshot_query_service::explorer::BlockDetail

source ·
pub struct BlockDetail<Types: NodeType>
where +BlockDetail in hotshot_query_service::explorer - Rust

Struct hotshot_query_service::explorer::BlockDetail

source ·
pub struct BlockDetail<Types: NodeType>
where Header<Types>: ExplorerHeader<Types>,
{ pub hash: BlockHash<Types>, pub height: u64, @@ -14,7 +14,7 @@ Header<Types>: ExplorerHeader<Types>,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de, Types: NodeType> Deserialize<'de> for BlockDetail<Types>
where Header<Types>: ExplorerHeader<Types>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<Types: NodeType> From<BlockDetail<Types>> for BlockDetailResponse<Types>
where - Header<Types>: ExplorerHeader<Types>,

source§

fn from(block_detail: BlockDetail<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for BlockDetail<Types>
where + Header<Types>: ExplorerHeader<Types>,

source§

fn from(block_detail: BlockDetail<Types>) -> Self

Converts to this type from the input type.
source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockDetail<Types>
where Types: NodeType, Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>, Payload<Types>: QueryablePayload<Types>, diff --git a/hotshot_query_service/explorer/struct.BlockSummary.html b/hotshot_query_service/explorer/struct.BlockSummary.html index 0925b2669..8163d6179 100644 --- a/hotshot_query_service/explorer/struct.BlockSummary.html +++ b/hotshot_query_service/explorer/struct.BlockSummary.html @@ -1,4 +1,4 @@ -BlockSummary in hotshot_query_service::explorer - Rust

Struct hotshot_query_service::explorer::BlockSummary

source ·
pub struct BlockSummary<Types: NodeType>
where +BlockSummary in hotshot_query_service::explorer - Rust

Struct hotshot_query_service::explorer::BlockSummary

source ·
pub struct BlockSummary<Types: NodeType>
where Header<Types>: ExplorerHeader<Types>,
{ pub hash: BlockHash<Types>, pub height: u64, @@ -12,7 +12,7 @@

Fields§

§hash: BlockHash<Types>§height: u64§proposer_id: ProposerId<Types>§num_transactions: u64§size: u64§time: Timestamp

Trait Implementations§

source§

impl<Types: Debug + NodeType> Debug for BlockSummary<Types>
where Header<Types>: ExplorerHeader<Types>,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de, Types: NodeType> Deserialize<'de> for BlockSummary<Types>
where Header<Types>: ExplorerHeader<Types>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for BlockSummary<Types>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockSummary<Types>
where Types: NodeType, Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>, Payload<Types>: QueryablePayload<Types>,

source§

fn from_row(row: &'r <Db as Database>::Row) -> Result<Self>

source§

impl<Types: PartialEq + NodeType> PartialEq for BlockSummary<Types>
where diff --git a/hotshot_query_service/index.html b/hotshot_query_service/index.html index a8ba72bb0..34f8d37fe 100644 --- a/hotshot_query_service/index.html +++ b/hotshot_query_service/index.html @@ -291,6 +291,6 @@

§Composition which you can add additional data to the same persistent store and synchronize the entire store together. Refer to the documentation for you specific data source for information on how to achieve this.

-

Modules§

Macros§

Structs§

  • Read-only wrapper for API state which does not require locking.
  • SNAFU context selector for the QueryError::Error variant
  • This is the consensus-internal analogous concept to a block, and it contains the block proper, +

    Modules§

    Macros§

    Structs§

    • Read-only wrapper for API state which does not require locking.
    • SNAFU context selector for the QueryError::Error variant
    • This is the consensus-internal analogous concept to a block, and it contains the block proper, as well as the hash of its parent Leaf. NOTE: State is constrained to implementing BlockContents, is TypeMap::BlockPayload
    • SNAFU context selector for the QueryError::Missing variant
    • SNAFU context selector for the QueryError::NotFound variant

    Enums§

    Traits§

    • A reference to a T which can be resolved into a whole T.

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/hotshot_query_service/macro.include_migrations.html b/hotshot_query_service/macro.include_migrations.html index df3fb27a2..8c1193458 100644 --- a/hotshot_query_service/macro.include_migrations.html +++ b/hotshot_query_service/macro.include_migrations.html @@ -1,6 +1,6 @@ -include_migrations in hotshot_query_service - Rust

    Macro hotshot_query_service::include_migrations

    source ·
    macro_rules! include_migrations {
    +include_migrations in hotshot_query_service - Rust

    Macro hotshot_query_service::include_migrations

    source ·
    macro_rules! include_migrations {
         ($dir:tt) => { ... };
    -}
    Expand description

    Embed migrations from the given directory into the current binary.

    +}
    Expand description

    Embed migrations from the given directory into the current binary for PostgreSQL or SQLite.

    The macro invocation include_migrations!(path) evaluates to an expression of type impl Iterator<Item = Migration>. Each migration must be a text file which is an immediate child of path, and there must be no non-migration files in path. The migration files must have names of the form V${version}__${name}.sql, where version is a positive integer indicating how the @@ -10,14 +10,24 @@ invoking crate by using environment variable expansions and the CARGO_MANIFEST_DIR environment variable.

    As an example, this is the invocation used to load the default migrations from the -hotshot-query-service crate. The migrations are located in a directory called migrations at -the root of the crate.

    +hotshot-query-service crate. The migrations are located in a directory called migrations at

    +
      +
    • PostgreSQL migrations are in /migrations/postgres.
    • +
    • SQLite migrations are in /migrations/sqlite.
    • +
    -
    let mut migrations: Vec<Migration> =
    -    include_migrations!("$CARGO_MANIFEST_DIR/migrations").collect();
    -migrations.sort();
    -assert_eq!(migrations[0].version(), 10);
    -assert_eq!(migrations[0].name(), "init_schema");
    +
    // For PostgreSQL
    +#[cfg(not(feature = "embedded-db"))]
    + let mut migrations: Vec<Migration> =
    +    include_migrations!("$CARGO_MANIFEST_DIR/migrations/postgres").collect();
    +// For SQLite
    +#[cfg(feature = "embedded-db")]
    +let mut migrations: Vec<Migration> =
    +    include_migrations!("$CARGO_MANIFEST_DIR/migrations/sqlite").collect();
    +    
    +    migrations.sort();
    +    assert_eq!(migrations[0].version(), 10);
    +    assert_eq!(migrations[0].name(), "init_schema");

    Note that a similar macro is available from Refinery: embed_migrations. This macro differs in that it evaluates to an iterator of migrations, making it an diff --git a/hotshot_query_service/merklized_state/trait.UpdateStateData.html b/hotshot_query_service/merklized_state/trait.UpdateStateData.html index 062fd0c66..32b2cada1 100644 --- a/hotshot_query_service/merklized_state/trait.UpdateStateData.html +++ b/hotshot_query_service/merklized_state/trait.UpdateStateData.html @@ -31,4 +31,4 @@ D: UpdateStateData<Types, State, ARITY> + Send + Sync, U: Send + Sync, State: MerklizedState<Types, ARITY>, - Types: NodeType,

    source§

    impl<Types: NodeType, State: MerklizedState<Types, ARITY>, const ARITY: usize> UpdateStateData<Types, State, ARITY> for Transaction<Write>

    \ No newline at end of file + Types: NodeType,
    source§

    impl<Types: NodeType, State: MerklizedState<Types, ARITY>, const ARITY: usize> UpdateStateData<Types, State, ARITY> for Transaction<Write>

    \ No newline at end of file diff --git a/hotshot_query_service/status/trait.HasMetrics.html b/hotshot_query_service/status/trait.HasMetrics.html index da1886b3a..0089b7ca7 100644 --- a/hotshot_query_service/status/trait.HasMetrics.html +++ b/hotshot_query_service/status/trait.HasMetrics.html @@ -1,7 +1,7 @@ HasMetrics in hotshot_query_service::status - Rust

    Trait hotshot_query_service::status::HasMetrics

    source ·
    pub trait HasMetrics {
         // Required method
         fn metrics(&self) -> &PrometheusMetrics;
    -}

    Required Methods§

    Implementors§

    source§

    impl HasMetrics for DataSource

    source§

    impl HasMetrics for NoStorage

    source§

    impl HasMetrics for SqlStorage

    source§

    impl HasMetrics for MetricsDataSource

    source§

    impl<D, U> HasMetrics for ExtensibleDataSource<D, U>
    where +}

    Required Methods§

    Implementors§

    source§

    impl HasMetrics for DataSource

    source§

    impl HasMetrics for NoStorage

    source§

    impl HasMetrics for SqlStorage

    source§

    impl HasMetrics for MetricsDataSource

    source§

    impl<D, U> HasMetrics for ExtensibleDataSource<D, U>
    where D: HasMetrics,

    source§

    impl<S> HasMetrics for FailStorage<S>
    where S: HasMetrics,

    source§

    impl<Types> HasMetrics for FileSystemStorage<Types>
    where Types: NodeType, diff --git a/hotshot_query_service/testing/consensus/trait.DataSourceLifeCycle.html b/hotshot_query_service/testing/consensus/trait.DataSourceLifeCycle.html index b6ce81c10..e981d3dfa 100644 --- a/hotshot_query_service/testing/consensus/trait.DataSourceLifeCycle.html +++ b/hotshot_query_service/testing/consensus/trait.DataSourceLifeCycle.html @@ -62,4 +62,4 @@ 'life0: 'async_trait,

    Setup runs after setting up the network but before starting a test.

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file + U: Clone + Default + Send + Sync + 'static,
    source§

    impl<P: AvailabilityProvider<MockTypes> + Default> DataSourceLifeCycle for FileSystemDataSource<MockTypes, P>

    source§

    impl<P: AvailabilityProvider<MockTypes> + Default> DataSourceLifeCycle for SqlDataSource<MockTypes, P>

    \ No newline at end of file diff --git a/search-index.js b/search-index.js index 96d19241d..13e064d06 100644 --- a/search-index.js +++ b/search-index.js @@ -1,4 +1,4 @@ -var searchIndex = new Map(JSON.parse('[["hotshot_query_service",{"t":"FPPPGPFPIFPIPFPPFPFIGIKIPIIIINNNNNNNNNNNNNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNQQQQQNNNNNNNNNNNNNNNNNNNNNNNCOCCONNNNNNNNNNONHNNNNNCNNOCCNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNCNNNNNNNNNNNOOOOOOOOKIGFFRFPFGGPFPFPFPPRFPFRIGFRFPPFPFRFRPKKPFPPFIIIIRFFKFRFRNNNNNNNNNNNNNNNNNNNNNNOMNNNNNNNNONNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNMMNNMMMMMMMMMMMNNNNNNNONNNNNNNNNNNOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMOONNNNNNNNNNNNNNNNNNNNNNNNNOOMNONONNNNNNNNNNNNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNONOOONNNNNNNNNNNNOOONNNONNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOEFEEFREKRKKNNNNNCNNNNNNNNNNNNNMNNNNNNNNNNNNNNCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNCNNNNMNNNMNCCCNNNNNNNNNMNNNNMNHHKFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIENNNNNNNNNHHHHHHHHHIEFFIENNNNQNCEHKKKEEKKEKEKKMMMCCMMMMMMMMMMMMMMMMMMMMMMMMMMCMCCMMMPFGPPPPPPPPPPPPPPPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFKFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNGPPPPPPGGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOKKRFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRRRFRKRIFKKFTKFIIFRFRFFRFRKRTRRFNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQQNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNHNHNNNNNNNNNNNNNDNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIRPFFGIPFFFPPPGFGPPPKKFFFKFPPPFPGPPGPFPGPGPGPGPFPPPPPFPPPPPPFRRPIRPPPPPPPFFPPPFGPPFFGIPFFFGPPPPPPPIRPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOMMOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOMMMMMMOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMOOOMOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKFKEENNNNNNNNNNNNNNNNNCCMMNNNNNNFFKFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFKRFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPRPRRGPRKKKFPPGRKNNONNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNMMNMNNNMMNNNNNNNNNNNMNMNNNNNMNNNNNNNNNNNNOOOOFFFFFFGPPPFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOEEPFGPPFKFPFPFPFPFFPFGNNNNNNNNNNONNNNOMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOONNNMNNNNNNNNNNNOONNNNNONOMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOOOOOOOOOGKPFPKKNONNNNMNNNNNNNNNNNHNNNNNNNNNNNNONNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNOOFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCHHKIFISRKNNMMNNNNNNNNNMNNNNNNNNMNNNNNNNNNNIIIIIIFIIIIFFNNNOONNNNNNONNNNNNNNNNNNNONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNOHNNNNONNNONONNNONNONNNNONNNNNNNNNNOOONNNKM","n":["ApiState","Availability","Custom","Err","Error","","ErrorSnafu","Explorer","Header","Leaf","MerklizedState","Metadata","Missing","MissingSnafu","Node","NotFound","NotFoundSnafu","Ok","Options","Payload","QueryError","QueryResult","Resolvable","SignatureKey","Status","Transaction","VidCommitment","VidCommon","VidShare","__clone_box","","","","","","","as_error","","as_error_source","","","","availability","","backtrace","","block_header","block_header_mut","block_payload","borrow","","","","","","","","borrow_mut","","","","","","","","build","","","catch_all","cause","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","commit","","commitment","","create_random_transaction","data_source","default","deref","","","","","","","","","deref_mut","","","","","","","","description","","deserialize","","","","","","","","","","","drop","","","","","","","","eq","equivalent","","","","explorer","extends_upgrade","fail","","","fetching","fill_block_payload","fill_block_payload_unchecked","fmt","","","","","","","","","","from","","","","","","","","","","","","","","","","","","","from_fd","from_filelike","from_into_filelike","from_into_socketlike","from_quorum_proposal","from_socketlike","genesis","get_hash","hash","height","include_migrations","init","","","","","","","","instantiate_availability_tests","instantiate_data_source_tests","instantiate_node_tests","instantiate_persistence_tests","instantiate_status_tests","internal","into","","","","","","","","into_error","","","justify_qc","layout_raw","","","","","","","","load","","merklized_state","message","metrics","node","","parent_commitment","payload_commitment","pointer_metadata","","","","","","","","port","read","run_standalone_service","serialize","","","source","","status","","","","task","testing","to_owned","","","","","","","to_string","","","try_from","","","","","","","","try_into","","","","","","","","try_resolve","","type_id","","","","","","","","types","unfill_block_payload","upgrade_certificate","view_number","vzip","","","","","","","","message","source","","","","","status","message","AvailabilityDataSource","BlockHash","BlockId","BlockInfo","BlockQueryData","BlockRange","BlockSummaryQueryData","Custom","CustomSnafu","Error","Fetch","FetchBlock","FetchBlockSnafu","FetchLeaf","FetchLeafSnafu","FetchTransaction","FetchTransactionSnafu","Hash","","InclusionProof","InconsistentLeafError","InvalidTransactionIndex","InvalidTransactionIndexSnafu","Iter","LeafHash","LeafId","LeafQueryData","LeafRange","Limits","Number","","Options","PayloadHash","PayloadMetadata","PayloadMetadataRange","PayloadQueryData","PayloadRange","Pending","QueryableHeader","QueryablePayload","RangeLimit","RangeLimitSnafu","Ready","Request","RequestSnafu","Timestamp","TransactionHash","TransactionInclusionProof","TransactionIndex","","TransactionQueryData","TransactionSummaryQueryData","UpdateAvailabilityData","VidCommonMetadata","VidCommonMetadataRange","VidCommonQueryData","VidCommonRange","__clone_box","","","","","","","","","","","","","","","","","","","","","","api_path","append","as_error","","as_error_source","","","","backtrace","","block","block_hash","","","","","","block_height","borrow","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","build","","","","","","by_hash","","cause","","clone","","","","","","","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","cmp","","common","compare","","context","data","default","define_api","deref","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","description","","deserialize","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","drop","","","","","","","","","","","","","","","","","","","","","","","","enumerate","","","eq","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","extensions","fail","","","","","","fetch_timeout","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_row","","","","","","genesis","","","","get_block","get_block_range","get_hash","","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","hash","","","","","","","","header","","","height","","","","","","","","","","","index","","init","","","","","","","","","","","","","","","","","","","","","","","","internal","into","","","","","","","","","","","","","","","","","","","","","","","","into_error","","","","","","","into_future","is_empty","","","is_pending","iter","large_object_range_limit","","layout_raw","","","","","","","","","","","","","","","","","","","","","","","","leaf","","","len","","limit","map","message","metadata","new","","","","nth","","nth_transaction","","nth_transaction_with_proof","","num_transactions","","","partial_cmp","","payload","payload_hash","","","","pointer_metadata","","","","","","","","","","","","","","","","","","","","","","","","proof","","","qc","qc_leaf","resolve","resource","","","serialize","","","","","","","","","size","","","","small_object_range_limit","","source","","status","","subscribe_blocks","","subscribe_leaves","","subscribe_payload_metadata","","subscribe_payloads","","subscribe_vid_common","","subscribe_vid_common_metadata","","timestamp","to_owned","","","","","","","","","","","","","","","","","","","","","","to_string","","","","transaction","","","","transaction_by_hash","","","transaction_by_hash_with_proof","","transaction_with_proof","try_from","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","try_resolve","type_id","","","","","","","","","","","","","","","","","","","","","","","","until","vid_common","vid_share","vzip","","","","","","","","","","","","","","","","","","","","","","","","with_context","with_timeout","from","height","index","limit","message","resource","","","source","status","until","AvailabilityProvider","ExtensibleDataSource","FetchingDataSource","FileSystemDataSource","MetricsDataSource","ReadOnly","SqlDataSource","Transaction","","UpdateDataSource","VersionedDataSource","__clone_box","","append","as_mut","as_ref","availability_tests","block_height","","","borrow","","borrow_mut","","clone","","clone_into","","clone_to_uninit","","commit","connect","","count_transactions_in_range","create","","default","deref","","deref_mut","","deserialize","","drop","","fetching","fmt","","from","","fs","get_block","get_block_detail","get_block_range","get_block_summaries","get_explorer_summary","get_header_window","get_last_state_height","get_leaf","get_leaf_range","get_path","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_search_results","get_transaction","get_transaction_detail","get_transaction_summaries","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","handle_event","","init","","inner","inner_mut","insert_merkle_nodes","into","","layout_raw","","metrics","","new","node_tests","payload_size_in_range","persistence_tests","pointer_metadata","","populate_metrics","","read","","reset","","revert","set_last_state_height","sql","status_tests","storage","sync_status","to_owned","","try_from","","try_into","","type_id","","update","","vid_share","vzip","","write","","test_range","test_update","AvailabilityProvider","Builder","FetchingDataSource","Pruner","__clone_box","","append","as_ref","block_height","","borrow","","","borrow_mut","","","build","builder","clone","","clone_into","","clone_to_uninit","","connect","count_transactions_in_range","create","create_with_store","deref","","","deref_mut","","","deserialize","","","disable_aggregator","disable_proactive_fetching","drop","","","fmt","","from","","","get_block","get_block_detail","get_block_range","get_block_summaries","get_explorer_summary","get_header_window","get_last_state_height","get_leaf","get_leaf_range","get_path","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_search_results","get_transaction","get_transaction_detail","get_transaction_summaries","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","init","","","into","","","layout_raw","","","metrics","new","open","open_with_store","payload_size_in_range","pointer_metadata","","","populate_metrics","read","skip_version","sync_status","to_owned","","try_from","","","try_into","","","type_id","","","update","vid_share","vzip","","","with_active_fetch_delay","with_aggregator_chunk_size","with_chunk_fetch_delay","with_major_scan_interval","with_major_scan_offset","with_max_retry_interval","with_min_retry_interval","with_minor_scan_interval","with_proactive_range_chunk_size","with_range_chunk_size","with_rate_limit","with_retry_multiplier","with_retry_randomization_factor","with_retry_timeout","write","FileSystemDataSource","Transaction","connect","create","","create_with_store","handle_event","open","open_with_store","reset","skip_version","test_counters","test_sync_status","test_timestamp_window","test_vid_monotonicity","test_vid_recovery","test_vid_shares","test_drop_tx","test_reset","test_revert","Builder","Config","Error","Migration","SqlDataSource","Transaction","connect","","create","handle_event","include_migrations","reset","testing","TmpDb","test_metrics","AggregatesStorage","AvailabilityStorage","ExplorerStorage","FailStorage","FileSystemStorage","MerklizedStateHeightStorage","MerklizedStateStorage","NoStorage","NodeStorage","SqlStorage","UpdateAggregatesStorage","UpdateAvailabilityStorage","aggregates_height","block_height","count_transactions_in_range","fail_storage","fs","get_block","get_block_detail","get_block_range","get_block_summaries","get_explorer_summary","get_header","get_header_window","get_last_state_height","get_leaf","get_leaf_range","get_path","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_search_results","get_transaction","get_transaction_detail","get_transaction_summaries","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","insert_block","insert_leaf","insert_vid","no_storage","payload_size_in_range","pruning","sql","sync_status","update_aggregates","vid_share","Any","FailStorage","FailableAction","GetBlock","GetBlockRange","GetHeader","GetHeaderRange","GetLeaf","GetLeafRange","GetPayload","GetPayloadMetadata","GetPayloadMetadataRange","GetPayloadRange","GetTransaction","GetVidCommon","GetVidCommonMetadata","GetVidCommonMetadataRange","GetVidCommonRange","Transaction","__clone_box","","aggregates_height","block_height","borrow","","","borrow_mut","","","clone","","clone_into","","clone_to_uninit","","commit","count_transactions_in_range","deref","","","deref_mut","","","deserialize","","","drop","","","eq","equivalent","","","","fail","fail_begins_read_only","fail_begins_writable","fail_commits","fail_one_begin_read_only","fail_one_begin_writable","fail_one_commit","fail_one_read","fail_one_write","fail_reads","fail_writes","fmt","","","from","","","","","from_fd","from_filelike","from_into_filelike","from_into_socketlike","from_socketlike","get_block","get_block_range","get_disk_usage","get_header","get_header_window","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_pruning_config","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","init","","","insert_block","insert_leaf","insert_vid","into","","","layout_raw","","","load_pruned_height","metrics","pass","pass_begins_read_only","pass_begins_writable","pass_commits","pass_reads","pass_writes","payload_size_in_range","pointer_metadata","","","prune","read","revert","set_pruning_config","sync_status","to_owned","","try_from","","","try_into","","","type_id","","","update_aggregates","vid_share","vzip","","","write","FileSystemStorage","FileSystemStorageInner","Revert","Transaction","aggregates_height","block_height","borrow","","","borrow_mut","","","commit","","count_transactions_in_range","create","create_with_store","deref","","","deref_mut","","","deserialize","","","drop","","","","fmt","","","from","","","get_block","get_block_range","get_header","get_header_window","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","init","","","insert_block","insert_leaf","insert_vid","into","","","layout_raw","","","metrics","open","open_with_store","payload_size_in_range","pointer_metadata","","","read","revert","","","skip_version","sync_status","try_from","","","try_into","","","type_id","","","update_aggregates","vid_share","vzip","","","write","NoStorage","Transaction","__clone_box","aggregates_height","block_height","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","commit","count_transactions_in_range","default","deref","","deref_mut","","deserialize","","drop","","fmt","from","","get_block","get_block_range","get_header","get_header_window","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","init","","insert_block","insert_leaf","insert_vid","into","","layout_raw","","metrics","payload_size_in_range","pointer_metadata","","read","revert","sync_status","testing","to_owned","try_from","","try_into","","type_id","","update_aggregates","vid_share","vzip","","write","DataSource","NoStorage","","","Sql","","","Storage","Transaction","__clone_box","append","block_height","","","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","commit","connect","count_transactions_in_range","","create","deref","","","deref_mut","","","deserialize","","","drop","","","fmt","from","","","get_block","get_block_range","get_header_window","","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","handle_event","init","","","insert_block","insert_leaf","insert_vid","into","","","layout_raw","","","metrics","payload_size_in_range","","pointer_metadata","","","populate_metrics","read","reset","revert","setup","sync_status","","to_owned","try_from","","","try_into","","","type_id","","","update","vid_share","","vzip","","","write","fetch_from_port","PruneStorage","PrunedHeightStorage","Pruner","PrunerCfg","PrunerConfig","__clone_box","batch_size","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","deserialize","drop","fmt","from","get_disk_usage","get_pruning_config","init","interval","into","layout_raw","load_pruned_height","max_usage","minimum_retention","new","pointer_metadata","prune","pruning_threshold","set_pruning_config","target_retention","to_owned","try_from","try_into","type_id","validate","vzip","with_batch_size","with_interval","with_max_usage","with_minimum_retention","with_pruning_threshold","with_target_retention","ArgumentBuffer","Arguments","Column","Config","Connection","Database","","Db","Error","Executor","FixedLengthParams","Migration","NAME","Params","Pruner","Query","QueryAs","QueryBuilder","QueryResult","Read","Row","SqlStorage","Sqlite","Statement","Transaction","TransactionManager","TransactionMode","TypeInfo","URL_SCHEMES","Value","ValueRef","Write","__clone_box","","","","aggregates_height","applied","applied_on","archive","as_ref","","backtrace","begin","","","bind","","block_height","borrow","","","","","","","","","","borrow_mut","","","","","","","","","","bounds_to_where_clause","builder","chain","checksum","cleanup_test","cleanup_test_dbs","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","commit","compare","connect","","connection_timeout","context","count_transactions_in_range","create_database","database","database_exists","default","","","","","default_migrations","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","","display","","","downcast","downcast_mut","downcast_ref","drop","","","","","","","","","","","drop_database","eq","equivalent","","","","execute","","execute_many","","","execute_many_with_retries","execute_one","execute_one_with_retries","fetch","","fetch_all","","fetch_many","fetch_one","","fetch_optional","fmt","","","","","","","","","","","","fmt_value_debug","from","","","","","","","","","","","","","from_str","get_block","get_block_detail","get_block_range","get_block_summaries","get_disk_usage","get_explorer_summary","get_feature_gate","get_header","get_header_window","get_last_state_height","get_leaf","get_leaf_range","get_path","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_pruning_config","get_search_results","get_transaction","get_transaction_detail","get_transaction_summaries","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","header_where_clause","host","idle_connection_timeout","include_dir","include_migrations","init","","","","","","","","","","insert_block","insert_leaf","insert_merkle_nodes","insert_vid","into","","","","","","","","","","is","layout_raw","","","","","","","","","","load_header","load_pruned_height","max_connections","metrics","migrations","min_connections","msg","name","new","no_migrations","param_type_for_id","partial_cmp","password","payload_size_in_range","pointer_metadata","","","","","","","","","","port","prefix","prepare","","prepare_with","prune","pruner_cfg","query","","query_as","","read","reset_schema","return_type_for_id","revert","root_cause","schema","set_applied","set_last_state_height","set_pruning_config","slow_statement_threshold","snapshot","sql","sqlx","sync_status","test_context","testing","tls","to_owned","","","","to_string","","try_from","","","","","","","","","","try_into","","","","","","","","","","type_id","","","","","","","","","","unapplied","update_aggregates","upsert","user","version","vid_share","vzip","","","","","","","","","","write","TestMerkleTreeMigration","TmpDb","borrow","","borrow_mut","","config","deref","","deref_mut","","deserialize","","drop","","","fmt","from","","host","init","","","into","","layout_raw","","persistent","pointer_metadata","","port","start","stop","try_from","","try_into","","type_id","","vzip","","BalanceAmount","","Block","BlockDetail","BlockDetailResponse","BlockIdentifier","BlockNamespaceId","BlockNotFound","BlockRange","BlockSummary","BlockSummaryResponse","Btc","CryptoEnd","CryptoStart","CurrencyCode","CurrencyMismatchError","Error","Esp","Eth","Eur","ExplorerDataSource","ExplorerHeader","ExplorerHistograms","ExplorerSummary","ExplorerSummaryResponse","ExplorerTransaction","FeeAttribution","FiatCurrencyEnd","FiatCurrencyStart","Gbp","GenesisOverview","GetBlockDetail","GetBlockDetailError","","GetBlockSummaries","GetBlockSummariesError","","GetBlockSummariesRequest","GetExplorerSummary","GetExplorerSummaryError","GetSearchResults","GetSearchResultsError","GetTransactionDetail","GetTransactionDetailError","GetTransactionSummaries","GetTransactionSummariesError","","GetTransactionSummariesRequest","Hash","","Height","HeightAndOffset","IntError","InvalidCurrencyCodeError","InvalidLimit","","InvalidQuery","Jpy","Latest","","MonetaryValue","NamespaceId","","None","ProposerId","","QueryError","","","","","","RollUp","SearchResult","SearchResultResponse","TargetNotFound","","TimeError","Timestamp","TimestampConversionError","TokenEnd","TokenStart","TransactionDetail","TransactionDetailResponse","TransactionIdentifier","TransactionNamespaceId","TransactionNotFound","TransactionRange","TransactionSummariesResponse","TransactionSummary","TransactionSummaryFilter","Unimplemented","","","","","","Usd","WalletAddress","","Xxx","__clone_box","","","","","","","","","","","","","","","","add","as_error","","","","","","","","as_error_source","","","","","","","","","","","","","","","","block_confirmed","block_detail","block_heights","block_reward","block_size","block_summaries","block_time","block_transactions","blocks","","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","btc","clone","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","cmp","compare","currency","","currency1","currency2","default","define_api","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deserialize","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","eq","","","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","esp","eth","explorer_summary","fee_details","fee_info_account","fee_info_balance","fee_recipient","fees","filter","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_row","","genesis_overview","get_block_detail","get_block_summaries","get_explorer_summary","get_search_results","get_transaction_detail","get_transaction_summaries","hash","","","","height","","","","histograms","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_resettable","is_crypto","is_fiat","is_token","latest_block","latest_blocks","latest_transactions","layout_raw","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","namespace_id","namespace_ids","new","num_blocks","num_transactions","","","","","offset","","partial_cmp","pointer_metadata","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","proposer_id","","","range","reward_balance","rollups","","search_results","sequencing_fees","serialize","","","","","","","","","","","","","","","","","","","","","","","","","","","","significant_digits","size","","","source","","","","","","","","status","","","","","","","sub","target","","","time","","","","to_owned","","","","","","","","","","","","","","","","to_string","","","","","","","","","","","","","","transaction_detail","transaction_summaries","transactions","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","usd","value","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Callback","Fetcher","LocalCallback","Provider","Request","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","deserialize","drop","fmt","from","init","into","layout_raw","new","pointer_metadata","provider","request","run","","spawn_fetch","to_owned","try_from","try_into","type_id","vzip","AnyProvider","NoFetching","Provider","QueryServiceProvider","TestProvider","__clone_box","","","","block","borrow","","","","borrow_mut","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","deref","","","","deref_mut","","","","deserialize","","","","drop","","","","fail","fetch","","","","","","","","","fmt","","","","from","","","","init","","","","into","","","","layout_raw","","","","new","","pointer_metadata","","","","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","unblock","unfail","vzip","","","","with_block_provider","with_leaf_provider","with_provider","with_vid_common_provider","LeafRequest","PayloadRequest","Request","Response","VidCommonRequest","__clone_box","","","borrow","","","borrow_mut","","","clone","","","clone_into","","","clone_to_uninit","","","deref","","","deref_mut","","","deserialize","","","drop","","","eq","","","equivalent","","","","","","","","","","","","fmt","","","from","","","","get_hash","","","hash","","","init","","","into","","","layout_raw","","","pointer_metadata","","","to_owned","","","try_from","","","try_into","","","type_id","","","vzip","","","Commit","","Custom","Digest","Entry","Error","Index","Key","MerklizedState","MerklizedStateDataSource","MerklizedStateHeightPersistence","Options","Query","Request","Snapshot","T","UpdateStateData","__clone_box","","api_path","as_error","as_error_source","","backtrace","borrow","","","borrow_mut","","","cause","clone","","clone_into","","clone_to_uninit","","cmp","compare","default","define_api","deref","","","deref_mut","","","description","deserialize","","","","drop","","","eq","equivalent","","","","extensions","fmt","","","","from","","","","","","get_hash","get_last_state_height","get_path","hash","header_state_commitment_field","init","","","insert_merkle_nodes","insert_path","into","","","layout_raw","","","partial_cmp","pointer_metadata","","","serialize","set_last_state_height","source","state_type","status","to_owned","","to_string","","tree_height","try_from","","","try_into","","","type_id","","","vzip","","","message","source","","status","Counter","CounterFamily","Gauge","GaugeFamily","Histogram","HistogramFamily","MetricsError","NoSuchMetric","NoSuchSubgroup","Prometheus","PrometheusMetrics","TextFamily","__clone_box","","","","","","","","add","add_point","as_error","as_error_source","","backtrace","borrow","","","","","","","","","borrow_mut","","","","","","","","","cause","clone","","","","","","","","clone_into","","","","","","","","clone_to_uninit","","","","","","","","counter_family","create","","","","create_counter","create_gauge","create_histogram","create_text","default","deref","","","","","","","","","deref_mut","","","","","","","","","description","deserialize","","","","","","","","","drop","","","","","","","","","export","fmt","","","","","","","","","","from","","","","","","","","","","gauge_family","","get","","","","","get_counter","get_counter_family","get_gauge","get_histogram","get_histogram_family","get_subgroup","histogram_family","init","","","","","","","","","into","","","","","","","","","layout_raw","","","","","","","","","mean","pointer_metadata","","","","","","","","","sample_count","set","source","subgroup","sum","text_family","to_owned","","","","","","","","to_string","try_from","","","","","","","","","try_into","","","","","","","","","type_id","","","","","","","","","update","vzip","","","","","","","","","name","namespace","path","source","BlockHash","BlockId","Custom","CustomSnafu","Error","Hash","Height","Limits","NodeDataSource","Options","Query","QuerySnafu","QueryVid","QueryVidSnafu","QueryWindow","QueryWindowSnafu","Request","RequestSnafu","SyncStatus","Time","TimeWindowQueryData","WindowStart","__clone_box","","","","","","","","","","api_path","as_error","as_error_source","","backtrace","block","block_height","borrow","","","","","","","","","","","borrow_mut","","","","","","","","","","","build","cause","clone","","","","","","","","","","clone_into","","","","","","","","","","clone_to_uninit","","","","","","","","","","cmp","compare","count_transactions","","count_transactions_in_range","default","","define_api","deref","","","","","","","","","","","deref_mut","","","","","","","","","","","description","deserialize","","","","","","","","","","","","","","","drop","","","","","","","","","","","end","eq","","","equivalent","","","","","","","","","","","","extensions","fail","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","","","","fully_synced","get_hash","get_header_window","hash","init","","","","","","","","","","","internal","into","","","","","","","","","","","into_error","","","","","is_fully_synced","layout_raw","","","","","","","","","","","message","missing_blocks","missing_leaves","missing_vid_common","missing_vid_shares","next","partial_cmp","payload_size","","payload_size_in_range","pointer_metadata","","","","","","","","","","","prev","pruned_height","serialize","","","","source","start","status","","sync_status","to_owned","","","","","","","","","","to_string","try_from","","","","","","","","","","","try_into","","","","","","","","","","","type_id","","","","","","","","","","","vid_share","vzip","","","","","","","","","","","window","window_limit","","block","end","message","source","","","","start","status","Error","HasMetrics","Internal","Options","Request","StatusDataSource","UpdateStatusData","__clone_box","api_path","as_error","as_error_source","","backtrace","block_height","borrow","","borrow_mut","","cause","clone","clone_into","clone_to_uninit","consensus_metrics","","default","define_api","deref","","deref_mut","","description","deserialize","","","drop","","elapsed_time_since_last_decide","","extensions","fmt","","from","","","","init","","into","","layout_raw","","metrics","pointer_metadata","","populate_metrics","serialize","source","status","success_rate","","to_owned","to_string","try_from","","try_into","","type_id","","vzip","","reason","source","BackgroundTask","Task","__clone_box","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","deref","","deref_mut","","deserialize","","drop","","","fmt","","from","","init","","into","","join","layout_raw","","pointer_metadata","","spawn","","to_owned","try_from","","try_into","","type_id","","vzip","","consensus","mocks","setup_test","sleep","DataSourceLifeCycle","MockDataSource","MockNetwork","MockSqlDataSource","NUM_NODES","Storage","TestableDataSource","borrow","borrow_mut","connect","create","data_source","data_source_index","deref","deref_mut","deserialize","drop","","from","handle","handle_event","init","","init_with_config","into","layout_raw","num_nodes","pointer_metadata","proposer","reset","setup","shut_down","spawn","start","storage","submit_transaction","try_from","try_into","type_id","vzip","MockAuctionResults","MockBase","MockHeader","MockMembership","MockMerkleTree","MockNetwork","MockNodeImpl","MockPayload","MockQuorumProposal","MockStorage","MockTransaction","MockTypes","MockVersions","__clone_box","","","block_header","block_number","borrow","","","borrow_mut","","","builder_commitment","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","decided_upgrade_certificate","default","","delay_config","deref","","","deref_mut","","","deserialize","","","","","drop","","","eq","","equivalent","","","","","","","","fee_info_account","fee_info_balance","fmt","","","from","","","get_hash","","hash","","header_state_commitment_field","height","init","","","insert_path","into","","","iter","justify_qc","layout_raw","","","len","metadata","mock_transaction","namespace_id","namespace_ids","partial_cmp","","payload_commitment","pointer_metadata","","","proposal_certificate","proposer_id","random","reward_balance","serialize","","should_return_err","state_type","timestamp","","to_owned","","","transaction_with_proof","transactions","tree_height","try_from","","","try_into","","","type_id","","","upgrade_certificate","urls","view_number","vzip","","","HeightIndexed","height"],"q":[[0,"hotshot_query_service"],[303,"hotshot_query_service::Error"],[310,"hotshot_query_service::QueryError"],[311,"hotshot_query_service::availability"],[1151,"hotshot_query_service::availability::Error"],[1162,"hotshot_query_service::data_source"],[1281,"hotshot_query_service::data_source::availability_tests"],[1283,"hotshot_query_service::data_source::fetching"],[1404,"hotshot_query_service::data_source::fs"],[1415,"hotshot_query_service::data_source::node_tests"],[1421,"hotshot_query_service::data_source::persistence_tests"],[1424,"hotshot_query_service::data_source::sql"],[1437,"hotshot_query_service::data_source::sql::testing"],[1438,"hotshot_query_service::data_source::status_tests"],[1439,"hotshot_query_service::data_source::storage"],[1489,"hotshot_query_service::data_source::storage::fail_storage"],[1630,"hotshot_query_service::data_source::storage::fs"],[1721,"hotshot_query_service::data_source::storage::no_storage"],[1791,"hotshot_query_service::data_source::storage::no_storage::testing"],[1893,"hotshot_query_service::data_source::storage::no_storage::testing::Storage"],[1894,"hotshot_query_service::data_source::storage::pruning"],[1940,"hotshot_query_service::data_source::storage::sql"],[2315,"hotshot_query_service::data_source::storage::sql::testing"],[2356,"hotshot_query_service::explorer"],[3411,"hotshot_query_service::fetching"],[3443,"hotshot_query_service::fetching::provider"],[3553,"hotshot_query_service::fetching::request"],[3643,"hotshot_query_service::merklized_state"],[3756,"hotshot_query_service::merklized_state::Error"],[3760,"hotshot_query_service::metrics"],[4000,"hotshot_query_service::metrics::MetricsError"],[4004,"hotshot_query_service::node"],[4335,"hotshot_query_service::node::Error"],[4344,"hotshot_query_service::status"],[4414,"hotshot_query_service::status::Error"],[4416,"hotshot_query_service::task"],[4459,"hotshot_query_service::testing"],[4463,"hotshot_query_service::testing::consensus"],[4503,"hotshot_query_service::testing::mocks"],[4637,"hotshot_query_service::types"],[4639,"dyn_clone::sealed"],[4640,"core::error"],[4641,"hotshot_query_service::error"],[4642,"std::backtrace"],[4643,"core::option"],[4644,"hotshot_types::data"],[4645,"hotshot_types::traits::node_implementation"],[4646,"alloc::string"],[4647,"core::convert"],[4648,"tide_disco::status"],[4649,"core::clone"],[4650,"committable"],[4651,"hotshot_types::message"],[4652,"hotshot_query_service::resolvable"],[4653,"rand_core"],[4654,"core::result"],[4655,"serde::de"],[4656,"rkyv::with"],[4657,"hotshot_types::simple_vote"],[4658,"hotshot_types::simple_certificate"],[4659,"async_lock::rwlock"],[4660,"alloc::sync"],[4661,"utils::anytrace"],[4662,"core::fmt"],[4663,"hotshot_query_service::explorer::query_data"],[4664,"sqlx_core::error"],[4665,"std::os::fd::owned"],[4666,"io_lifetimes::portability"],[4667,"core::hash"],[4668,"core::marker"],[4669,"core::alloc::layout"],[4670,"arc_swap::access"],[4671,"core::future::future"],[4672,"alloc::boxed"],[4673,"core::pin"],[4674,"futures_core::future"],[4675,"core::ops::function"],[4676,"hotshot::types::handle"],[4677,"hotshot_query_service::availability::data_source"],[4678,"hotshot_query_service::data_source::update"],[4679,"hotshot_query_service::node::data_source"],[4680,"hotshot_query_service::status::data_source"],[4681,"vbs::version"],[4682,"serde::ser"],[4683,"core::any"],[4684,"anyhow"],[4685,"hotshot_query_service::availability::query_data"],[4686,"core::cmp"],[4687,"core::iter::traits::iterator"],[4688,"hotshot_types::vid"],[4689,"hotshot_query_service::availability::fetch"],[4690,"snafu"],[4691,"tide_disco::api"],[4692,"tide_disco::method"],[4693,"tide_disco::request"],[4694,"futures_core::stream"],[4695,"core::ops::range"],[4696,"core::time"],[4697,"hotshot_query_service::data_source::extension"],[4698,"hotshot_query_service::data_source::metrics"],[4699,"hotshot_query_service::explorer::data_source"],[4700,"hotshot_query_service::merklized_state::data_source"],[4701,"tagged_base64"],[4702,"hotshot_types::event"],[4703,"core::default"],[4704,"jf_merkle_tree::internal"],[4705,"alloc::vec"],[4706,"hotshot_types::traits::metrics"],[4707,"std::path"],[4708,"atomic_store::atomic_store"],[4709,"core::ops::deref"],[4710,"atomic_store::error"],[4711,"hotshot_query_service::data_source::storage::sql::transaction"],[4712,"time::offset_date_time"],[4713,"refinery_core::runner"],[4714,"hotshot_query_service::data_source::storage::sql::queries"],[4715,"hotshot_query_service::data_source::storage::sql::db"],[4716,"sqlx_core::encode"],[4717,"sqlx_core::types"],[4718,"sqlx_core::executor"],[4719,"sqlx_core::database"],[4720,"sqlx_sqlite::database"],[4721,"sqlx_core::type_checking"],[4722,"sqlx_postgres::options"],[4723,"core::iter::traits::collect"],[4724,"sqlx_core::from_row"],[4725,"sqlx_core::testing"],[4726,"refinery_core::error"],[4727,"hotshot_query_service::explorer::monetary_value"],[4728,"hotshot_query_service::explorer::currency"],[4729,"hotshot_query_service::explorer::traits"],[4730,"core::num::error"],[4731,"time::error::component_range"],[4732,"clap_builder::builder::resettable"],[4733,"async_lock::semaphore"],[4734,"backoff"],[4735,"hotshot_query_service::fetching::provider::testing"],[4736,"hotshot_query_service::fetching::provider::any"],[4737,"hotshot_query_service::fetching::provider::query_service"],[4738,"url"],[4739,"jf_merkle_tree"],[4740,"core::str::traits"],[4741,"ark_serialize"],[4742,"prometheus::errors"],[4743,"hotshot_query_service::node::query_data"],[4744,"tokio::runtime::task::error"],[4745,"hotshot_types::signature_key"],[4746,"hotshot_types"],[4747,"include_dir_macros"]],"i":"`j0AMd`A``2``2`0`20`1``````2````Ab3AhAjAl4Bf757755`Cf86555584326015843260143288658432615843261584326155Bn66`16954371226954371297669954377126954371266666`6543`66669954377269999999543777122222222626666`69543712`````96954371254366954371222`3``1666954371212`69797`971``695437269769543712695437120669543712`66669543712BNnBO`BObBOdBOfBOh5BOj`````Ij`Fb```0`0`0`N`NbMb`3`0```4`21`1`4`4Of``4`04`````1````5`532K`KfKdNdKjKlKnNfNhNjNlNnO`L`LbLdLfLhLjFbA@bJnKd3003303K`KfKjKlKnNjNl2OfN`Nb98:Nd876NfNh76NnA@bO`L`LbLdLfLhLjFb?>=K`KfKd?KjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFb654321Mb0Kd2N`NbK`Kf4NdKjKlKnNfNhNjNlNnO`L`LbLdLfLhLjFbN`NbK`KfKdNdKjKlKnNfNhNjNlNnO`L`LbLdLfLhLjFbN`NbK`KfKdNdKjKlKnNfNhNjNlNnO`L`LbLdLfLhLjFbN`NbKl21OfKjA@b`254K`KfKdNd57KnNfNhNjNlNn:O`L`LbLdLfLhLjFbOfN`NbK`KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFbKd1OfN`NbK`Kf05Nd0Kj0Kl0Kn0Nf0Nh0NjNlNn0A@bO`L`LbLdLfLhLjFb0OfN`NbK`KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFbMb0NdN`NbKf3KjKlKnNfNhNjNlNn::::99998888;;;;77776666555544443333222211110000A@bL`LbLdLfLhLj6N`0Nb0K`KfKd0NdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFb0OfN`00Nb00K`0KfKdNdKj0KlKnNf0NhNj0Nl0NnA@bO`L`LbLdLfLhLjFb002KfNdKjKl?>3210Ij0N`Nb2222222222210654KnNfNj981K`:98721Nl20?4?Of762Ij00000000000ACdN`NbK`KfKd?>=<;:8Nl:O`L`LbLdLfLhLjFb=<90Mb0NdKn221222OfN`NbK`KfKd7KjKl8NfNhNjNlNnA@bO`L`LbLdLfLhLjFbOfN`NbK`KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFbOf0N`NbK`KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFb2K`0OfN`Nb3KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFbOf0BOlBOn01C@`C@bC@dC@fC@h46`````Jb``0``AChACj111`1101010101010ACl21221121212121`2121`222222222222222222222221212222121212`2`2121322102```221212121Il333243``````AFlAGd1111AG`21021022121212222021021021000212102122222222222222222222220210210212022202122222102102102122021000000000000002``AHd00000000```````````````AHf000`0```````````````AHhAHj0``AHlAHn10012AI`22AIb333323223333AId00`5``5AIf6AIl``000000000000000`0AInAIj02102102121210021021021021022222111111111112102111011111001000000001000002100002102100111111102101101021210210210002101````AJf0AJlAGn210222200102102102102210210222222222222222210222210210200021020AJh3313213213213332131``AKhAKf00101111001010101011010000000000000000100001011001100`101010100011`C@jAKlAKj210``001002102100001010021021021021002100010000000000000210111210210010210000101002102102100102100C@l``AGb``AJ`00000000000001AJb1111AJd22223212222222222222ANj00`0`ANh`````1`````1`1``1`1`1111`ALlAMnAN`AGfALd441AGj00ALf54ALnAMb438ANn18756ANbANd6;23:97810386;22;:98;:98;:98;7;818672823:980`66;23:97781066;23:9778106;23:978105:966666;23:978102;;;;;<<<<7777<<<<<<<<66;;23:978102666;23:978810877771727777777777177777777388``6;23:9781077776;23:9781066;23:978107781886;682;876;23:978108;<<<18`3`3182768;7182;`72`8;:986;6;23:978106;23:978106;23:97810;778;76;23:978101``C@nB@d1001010101000100100101001000010101010`BDjBBl````BAf```B@n00```000```````000`El`BAn1`0`1`1`1`1`0`ACnAE`10Ff`BAhBAlBB`854`;BEb;`<:3BAj382<``435``::````0````;40382:`=:B@jB@l>22==99<<00;;11BBhBCfBC`BBb1BCh22BBnBCd?>B@n>ACnAE`?>=6BBdFfBBfBCb;BAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@jB@lB@nB@fACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@fB@jB@lB@n3ACnAE`BA`BAbBAdBAfBAhBAjBAlBAnBB`El>==>AEb`?>=B@f=<;:9BBbBBdFfBBfBBhBBjADbBBl9BBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@jB@lB@nB@fACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@j0B@l0B@n0B@f0ACnAE`BA`BAbBAd0BBb0BBd0FfBBf0BBh0BBj0ADbBBl0AEbBBn0BC`0BCb0BCd0BAf0BAh0BAj0BAl0BAn0BB`0El0BCf0BCh0BCj0BCl0BCn0BD`0B@jB@lB@nB@fACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@nB@fACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADb====<<<<;;;;::::9999888877776666555544443333222211110000<=FfBBf<;ADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@jB@lB@nB@fACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@n000???B@jB@l2B@fACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`BEbBDjB@fBA`BAbBBbBBdBBhBBj10B@nB@jB@l29ACnAE`:9BAd98FfBBf98ADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`BDjBBbBBdAEb3BBjBBn6BBhB@jB@lB@nB@fBAd:9BBf68BBl8BC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@nBBbBBdBBhFfBAfBAhBAjBAlBAnBB`El6543210B@fBA`BAbBBf>=BBfBBhBBj0ADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@jB@lB@nB@fACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@jB@lB@nB@fACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD`B@f0B@jB@lB@n3ACnAE`BA`BAbBAdBBbBBdFfBBfBBhBBjADbBBlAEbBBnBC`BCbBCdBAfBAhBAjBAlBAnBB`ElBCfBChBCjBClBCnBD``````BEd0000000000000000``BEjBEl222222`````BFdBFfBFbBFh1321032103210321032103032103210321032101BF`444333214321432143214321432132432143214321432143212243214444```BEn`BFjBFlBFn2102102102102102102102102102102222111100002102100210210210210210210210210210210210ADhADjEn11`21````00`1`20BGb11113013011313131330`3013011301130133333033113011113ADfADl54523AF`563463466344045464645634634634634CA`CAbCAd2```````BIf00``AFbBIbBIhBIdBIjBIlBInBJ`6488888765432108765432108765432107654321076543210732107777787654321087654321088765432108765432107887654321088765432107765321777777787654321087654321087654321048765432104587477654321088765432108765432108765432105876543210CAf0CAhCAj``F```ADd0```1`1`1`1``0``0BKhBKjBKlBKnBL`BLbBLdBKf9BLf::::3In:987165432;:987165432;2;:98765432;:98765432;:98765432;9900081`:987165432;:987165432;;:998877165432;;:987165432;398799998888777712:987165432;;::9887165432;;;;9909:987165432;;:987165432;654329:987165432;2999989000:987165432;89987;;3;20:98765432;;:987165432;:987165432;:987165432;0:987165432;871CAlCAnCB`CBbCBd4332``Fd`0``0BLl1111J`12122222001`1212212212001221222121212AFd23BLn444224434343434CBfCBh``BM`0BMb10111101010100101010100101010110101010`````````BMf`AKn01100000000010000000011000000000`````````````AEdBMjBMhCBjBNf43243204324324324242CBl530543543554335435355553333115435435353BNh26540654BNj476503`BNd486487654448632448761128768768765CBn6987`BLj","f":"`````````````````````````````{{bd}f}000000{b{{b{h}}}}00000``{{{b{j}}}{{n{{b{l}}}}}}{{{b{A`}}}{{n{{b{l}}}}}}{{{b{{Ab{c}}}}}bAd}{{{b{Af{Ab{c}}}}}{{b{Af}}}Ad}{{{b{{Ab{c}}}}}nAd}{b{{b{c}}}{}}0000000{{{b{Af}}}{{b{Afc}}}{}}0000000{AhA`}{AjA`}{{{Al{c}}}A`{{B`{An}}}}{{BbAn}j}{{{b{j}}}{{n{{b{h}}}}}}{{{b{A`}}}{{n{{b{h}}}}}}{{{b{{Ab{c}}}}}{{Ab{c}}}{BdAd}}{{{b{j}}}j}{{{b{Ah}}}Ah}{{{b{Aj}}}Aj}{{{b{{Al{c}}}}}{{Al{c}}}Bd}{{{b{A`}}}A`}{{{b{{Bf{c}}}}}{{Bf{c}}}Bd}{{b{b{Afc}}}f{}}000000{bf}000000{{{b{{Ab{c}}}}}{{Bh{{Ab{c}}}}}Ad}{{{b{{Ab{c}}}}{b{{Bj{ce}}}}}{{Bh{{Ab{c}}}}}AdBl}{{{b{Bn}}}{{Bh{c}}}C`}{b{{Bh{c}}}{}}{{{b{{Ab{c}}}}{b{AfCb}}Cd}{}Ad}`{{}Cf}{Ch{{b{c}}}{}}000000{{{b{{Bf{c}}}}}{{b{e}}}{}{}}1{Ch{{b{Afc}}}{}}0000000{{{b{j}}}{{b{Cj}}}}{{{b{A`}}}{{b{Cj}}}}{c{{Cl{{Ab{e}}}}}CnAd}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{c{{Cl{j}}}Cn}111{c{{Cl{A`}}}Cn}222{Chf}0000000{{{b{{Ab{c}}}}{b{{Ab{c}}}}}DbAd}{{b{b{c}}}Db{}}000`{{{b{{Ab{c}}}}{b{{Ab{c}}}}{b{{Dl{{Dj{{n{{Dh{c{Dd{c}}Df}}}}}}}}}}}{{Cl{fDn}}}Ad}{Ah{{Cl{cA`}}}{}}{Aj{{Cl{cA`}}}{}}{{{Al{c}}}{{Cl{eA`}}}{{B`{An}}}{}}`{{{b{Af{Ab{c}}}}Ch}{{Cl{fE`}}}Ad}{{{b{Af{Ab{c}}}}}fAd}{{{b{{Ab{c}}}}{b{AfEb}}}{{Cl{fEd}}}{EfAd}}{{{b{{Ab{c}}}}{b{AfEb}}}{{Cl{fEd}}}Ad}{{{b{j}}{b{AfEb}}}Eh}0{{{b{Ah}}{b{AfEb}}}Eh}{{{b{Aj}}{b{AfEb}}}Eh}{{{b{{Al{c}}}}{b{AfEb}}}EhEf}{{{b{A`}}{b{AfEb}}}Eh}0{{{b{{Bf{c}}}}{b{AfEb}}}EhEf}{cc{}}0{{{Ej{AnBb}}}j}{Elj}{Enj}{F`j}{Fbj}{Fdj}6666{FfA`}{FhA`}8{c{{Bf{c}}}{}}{Fjc{}}{{{Dl{c}}}{{Bf{c}}}{}};{Flc{}}0{ceFn{}}{ceG`{}}{{{b{{Gb{c}}}}}{{Ab{c}}}Ad}3{{bb}{{Ab{c}}}Ad}{{{b{c}}{b{e}}}Cd{GdGf}Gh}{{{b{{Ab{c}}}}{b{Afe}}}fAdGj}{{{b{{Ab{c}}}}}CdAd}`{{}Ch}0000000`````{cjGl}{{}c{}}0000000{{Ahc}A`{}}{{Ajc}A`{}}{{{Al{c}}e}A`{{B`{An}}}{}}{{{b{{Ab{c}}}}}{{Dh{c{Gn{c}}H`}}}Ad}{{}{{Cl{HbHd}}}}0000000{b{{Hf{c}}}{}}{b}`````{{{b{{Ab{c}}}}}{{Bh{{Ab{c}}}}}Ad}{{{b{{Ab{c}}}}}{}Ad}22222222`{{{b{{Bf{c}}}}i}{{Hl{{Hj{Hh}}}}}{HnI`}{}{}{Hn{If{{b{e}}}{{Ib{{Id{g}}}}}}}}{{Cfe{Ih{cgi}}k}{{Cl{fj}}}Ad{{Ij{c}}{Il{c}}{In{c}}J`JbHnI`}{{Jd{c}}}BlJf}{{{b{{Ab{c}}}}e}Cl{AdJh}Jj}{{{b{j}}c}ClJj}{{{b{A`}}c}ClJj}{{{b{j}}}{{n{{b{h}}}}}}{{{b{A`}}}{{n{{b{h}}}}}}`{{{b{j}}}Bb}{{{b{A`}}}Bb}```{bc{}}000000{bAn}00{c{{Cl{e}}}{}{}}0000000{{}{{Cl{c}}}{}}0000000{Bn{{Cl{cBn}}}C`}{{}{{Cl{cc}}}{}}{bJl}0000000`{{{b{Af{Ab{c}}}}}nAd}{{{b{{Ab{c}}}}}{{n{{Dh{c{Dd{c}}Df}}}}}Ad}{{{b{{Ab{c}}}}}{}Ad}{{}c{}}0000000`````````````````````````````````````````````````````````````````{{bd}f}000000000000000000000`{{{b{Jn}}{K`{c}}}{{`{Hn{Hh{}{{Ib{{Kb{f}}}}}}}}}Ad}{b{{b{h}}}}00000{{{b{{Kd{c}}}}}{{n{{b{l}}}}}Ad}{{{b{Fb}}}{{n{{b{l}}}}}}`{{{b{{Kf{c}}}}}{{Kh{c}}}Ad}{{{b{{Kj{c}}}}}{{Kh{c}}}Ad}{{{b{{Kl{c}}}}}{{Kh{c}}}Ad}{{{b{{Kn{c}}}}}{{Kh{c}}}Ad}``{{{b{{Kn{c}}}}}CdAd}{b{{b{c}}}{}}00000000000000000000000{{{b{Af}}}{{b{Afc}}}{}}00000000000000000000000{{{L`{c}}}Fb{{B`{An}}}}{{{Lb{c}}}Fb{{B`{An}}}}{{{Ld{c}}}Fb{{B`{An}}}}{{{Lf{ce}}}Fb{{B`{Cd}}}{{B`{Cd}}}}{{{Lh{ceg}}}Fb{{B`{Ch}}}{{B`{Ch}}}{{B`{Ch}}}}{{{Lj{ce}}}Fb{{B`{An}}}{{B`{Bb}}}}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{Bh{k}}}{{n{c}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Kd{c}}}}}{{n{{b{h}}}}}Ad}{{{b{Fb}}}{{n{{b{h}}}}}}{{{b{{N`{c}}}}}{{N`{c}}}Ad}{{{b{{Nb{c}}}}}{{Nb{c}}}Ad}{{{b{{K`{c}}}}}{{K`{c}}}{BdAd}}{{{b{{Kf{c}}}}}{{Kf{c}}}{BdAd}}{{{b{{Kd{c}}}}}{{Kd{c}}}{BdAd}}{{{b{{Nd{c}}}}}{{Nd{c}}}{BdAd}}{{{b{{Kj{c}}}}}{{Kj{c}}}{BdAd}}{{{b{{Kl{c}}}}}{{Kl{c}}}{BdAd}}{{{b{{Kn{c}}}}}{{Kn{c}}}{BdAd}}{{{b{{Nf{c}}}}}{{Nf{c}}}{BdAd}}{{{b{{Nh{c}}}}}{{Nh{c}}}{BdAd}}{{{b{{Nj{c}}}}}{{Nj{c}}}{AdBd}}{{{b{{Nl{c}}}}}{{Nl{c}}}{AdBd}}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{{L`{c}}}}}{{L`{c}}}Bd}{{{b{{Lb{c}}}}}{{Lb{c}}}Bd}{{{b{{Ld{c}}}}}{{Ld{c}}}Bd}{{{b{{Lf{ce}}}}}{{Lf{ce}}}BdBd}{{{b{{Lh{ceg}}}}}{{Lh{ceg}}}BdBdBd}{{{b{{Lj{ce}}}}}{{Lj{ce}}}BdBd}{{{b{Fb}}}Fb}{{b{b{Afc}}}f{}}000000000000000000000{bf}000000000000000000000{{{b{{N`{c}}}}{b{{N`{c}}}}}ObAd}{{{b{{Nb{c}}}}{b{{Nb{c}}}}}ObAd}{{{b{{Kl{c}}}}}{{b{Od}}}Ad}{{b{b{c}}}Ob{}}0{{{Of{c}}g}{{Cl{ce}}}{}{hOh}{{On{e}{{Oj{Ol}}}}}}{{{b{{Kj{c}}}}}{{b{{A@`{c}}}}}Ad}{{}A@b}{{{b{A@b}}c}{{Cl{{A@d{eFbc}}A@f}}}Jf{HnI`A@h}}{Ch{{b{c}}}{}}00000000000000000000000{Ch{{b{Afc}}}{}}00000000000000000000000{{{b{{Kd{c}}}}}{{b{Cj}}}Ad}{{{b{Fb}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}000{c{{Cl{{Kf{e}}}}}CnAd}111{c{{Cl{{Nd{e}}}}}CnAd}2{c{{Cl{{Kj{e}}}}}CnAd}{c{{Cl{{Kl{e}}}}}CnAd}4{c{{Cl{{Kn{e}}}}}CnAd}55{c{{Cl{{Nf{e}}}}}CnAd}6{c{{Cl{{Nh{e}}}}}CnAd}77{c{{Cl{Nn}}}Cn}8888888888{c{{Cl{Fb}}}Cn}{Chf}00000000000000000000000{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}}{{Hj{Mn}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}0{{{b{{Nd{c}}}}}{{`{{Mn{}{{Ml{{Ej{{A@j{c}}{A@l{c}}}}}}}}}}}Ad}{{{b{{N`{c}}}}{b{{N`{c}}}}}DbAd}{{{b{{Nb{c}}}}{b{{Nb{c}}}}}DbAd}{{{b{{Kf{c}}}}{b{{Kf{c}}}}}Db{MdAd}}{{{b{{Nd{c}}}}{b{{Nd{c}}}}}Db{MdAd}}{{{b{{Kj{c}}}}{b{{Kj{c}}}}}Db{MdAd}}{{{b{{Kl{c}}}}{b{{Kl{c}}}}}Db{MdAd}}{{{b{{Kn{c}}}}{b{{Kn{c}}}}}Db{MdAd}}{{{b{{Nf{c}}}}{b{{Nf{c}}}}}Db{MdAd}}{{{b{{Nh{c}}}}{b{{Nh{c}}}}}Db{MdAd}}{{{b{{Nj{c}}}}{b{{Nj{c}}}}}Db{AdMd}}{{{b{{Nl{c}}}}{b{{Nl{c}}}}}Db{AdMd}}{{{b{Nn}}{b{Nn}}}Db}{{b{b{c}}}Db{}}00000000000000000000000000000000000000000000000`{{{L`{c}}}{{Cl{eFb}}}{{B`{An}}}{}}{{{Lb{c}}}{{Cl{eFb}}}{{B`{An}}}{}}{{{Ld{c}}}{{Cl{eFb}}}{{B`{An}}}{}}{{{Lf{ce}}}{{Cl{gFb}}}{{B`{Cd}}}{{B`{Cd}}}{}}{{{Lh{ceg}}}{{Cl{iFb}}}{{B`{Ch}}}{{B`{Ch}}}{{B`{Ch}}}{}}{{{Lj{ce}}}{{Cl{gFb}}}{{B`{An}}}{{B`{Bb}}}{}}`{{{b{{N`{c}}}}{b{AfEb}}}EhAd}0{{{b{{Nb{c}}}}{b{AfEb}}}EhAd}0{{{b{{K`{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kf{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kd{c}}}}{b{AfEb}}}EhAd}{{{b{{Kd{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Nd{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kj{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kl{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kn{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Nf{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Nh{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Nj{c}}}}{b{AfEb}}}Eh{AdEf}}{{{b{{Nl{c}}}}{b{AfEb}}}Eh{AdEf}}{{{b{Nn}}{b{AfEb}}}Eh}{{{b{A@b}}{b{AfEb}}}Eh}{{{b{O`}}{b{AfEb}}}Eh}{{{b{{L`{c}}}}{b{AfEb}}}EhEf}{{{b{{Lb{c}}}}{b{AfEb}}}EhEf}{{{b{{Ld{c}}}}{b{AfEb}}}EhEf}{{{b{{Lf{ce}}}}{b{AfEb}}}EhEfEf}{{{b{{Lh{ceg}}}}{b{AfEb}}}EhEfEfEf}{{{b{{Lj{ce}}}}{b{AfEb}}}EhEfEf}{{{b{Fb}}{b{AfEb}}}Eh}0{cc{}}{{{A@n{c}}}{{N`{c}}}Ad}1{Ch{{N`{c}}}Ad}{Ch{{Nb{c}}}Ad}3{{{Kh{c}}}{{Nb{c}}}Ad}4{{{Kf{c}}}{{K`{c}}}Ad}555{{{Nd{c}}}{{Kj{c}}}Ad}6666{{{Nd{c}}}{{Nf{c}}}Ad}7{{{Nd{c}}}{{Nj{c}}}Ad}88{{{Kl{c}}}{{Nl{c}}}Ad}999999999{AA`Fb}:{{{Ej{AnBb}}}Fb}`{b{{AAb{{Kf{c}}}}}Ad}{b{{AAb{{Nd{c}}}}}Ad}{b{{AAb{{Kj{c}}}}}Ad}{b{{AAb{{Kl{c}}}}}Ad}{b{{AAb{{Nj{c}}}}}Ad}{b{{AAb{{Nl{c}}}}}Ad}{{bb}{{Kf{c}}}Ad}{{bb}{{Nd{c}}}Ad}{{bb}{{Kj{c}}}Ad}{{bb}{{Kl{c}}}Ad}{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}Aa}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}{{B`{{Nb{e}}}}HnI`}}{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}Aa}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}{{ABd{Ch}}Hn}}{{{b{c}}{b{e}}}Cd{GdGf}Gh}0{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}Aa}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}{{B`{{N`{e}}}}HnI`}}23322{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}{ABf{e}}}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}}4433{{{b{{N`{c}}}}{b{Afe}}}fAdGj}{{{b{{Nb{c}}}}{b{Afe}}}fAdGj}{{{b{{Kf{c}}}}}{{A@n{c}}}Ad}{{{b{{Nd{c}}}}}{{Kh{c}}}Ad}{{{b{{Kj{c}}}}}ABhAd}{{{b{{Kn{c}}}}}{{ABf{c}}}Ad}{{{b{{Nf{c}}}}}{{Kh{c}}}Ad}`{{{b{{Kf{c}}}}}{{b{{ABj{c}}}}}Ad}{{{b{{Nd{c}}}}}{{b{{ABj{c}}}}}Ad}{{{b{{Nf{c}}}}}{{b{{ABj{c}}}}}Ad}{{{b{{K`{c}}}}}CdAd}{{{b{{Kf{c}}}}}CdAd}{{{b{{Nd{c}}}}}CdAd}{{{b{{Kj{c}}}}}CdAd}{{{b{{Kl{c}}}}}CdAd}{{{b{{Nf{c}}}}}CdAd}{{{b{{Nj{c}}}}}CdAd}{{{b{{Nl{c}}}}}CdAd}```{{{b{{Kn{c}}}}}CdAd}`{{}Ch}00000000000000000000000{cFbGl}{{}c{}}00000000000000000000000{{O`c}Fb{}}{{{L`{c}}e}Fb{{B`{An}}}{}}{{{Lb{c}}e}Fb{{B`{An}}}{}}{{{Ld{c}}e}Fb{{B`{An}}}{}}{{{Lf{ce}}g}Fb{{B`{Cd}}}{{B`{Cd}}}{}}{{{Lh{ceg}}i}Fb{{B`{Ch}}}{{B`{Ch}}}{{B`{Ch}}}{}}{{{Lj{ce}}g}Fb{{B`{An}}}{{B`{Bb}}}{}}{{{Of{c}}}eHn{}}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}}Db{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}0{{{b{{Nd{c}}}}}DbAd}{{{b{{Of{c}}}}}Db{}}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}}e{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}``{{}{{Cl{HbHd}}}}00000000000000000000000{{{b{{Kf{c}}}}}{{b{{Ab{c}}}}}Ad}``{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}}Ch{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}{{{b{{Nd{c}}}}}ChAd}`{{{Of{c}}g}{{Of{e}}}{}{}{Hn{If{c}{{Ib{e}}}}}}`{{{b{{Nd{c}}}}}{{b{{ABl{c}}}}}Ad}{{{Kf{c}}{n{{Nd{c}}}}{n{{Kl{c}}}}{n{ABn}}}{{K`{c}}}Ad}{{{Ab{c}}{AC`{c}}}{{Cl{{Kf{c}}{Kd{c}}}}}Ad}{{{ABj{c}}{A@`{c}}}{{Nd{c}}}Ad}{{{ABj{c}}Od}{{Kl{c}}}Ad}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}Ch}{{n{c}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}0{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}Ch}{{n{k}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}Ch}{{n{{Ej{kg}}}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Nd{c}}}}}CdAd}{{{b{{Nf{c}}}}}CdAd}`{{{b{{N`{c}}}}{b{{N`{c}}}}}{{n{Ob}}}Ad}{{{b{{Nb{c}}}}{b{{Nb{c}}}}}{{n{Ob}}}Ad}{{{b{{Nd{c}}}}}{{b{{A@`{c}}}}}Ad}{{{b{{Kf{c}}}}}ABhAd}{{{b{{Nd{c}}}}}ABhAd}{{{b{{Kl{c}}}}}ABhAd}`{b}00000000000000000000000{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{b{c}}}{{n{g}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}0{{{b{{Kn{c}}}}}{{b{{ACb{c}}}}}Ad}{{{b{{Kf{c}}}}}{{b{{AC`{c}}}}}Ad}`{{{Of{c}}}cHn}```{{{b{{Kf{c}}}}e}ClAdJj}{{{b{{Nd{c}}}}e}ClAdJj}{{{b{{Kj{c}}}}e}ClAdJj}{{{b{{Kl{c}}}}e}ClAdJj}{{{b{{Kn{c}}}}e}ClAdJj}{{{b{{Nf{c}}}}e}ClAdJj}{{{b{{Nh{c}}}}e}ClAdJj}{{{b{Nn}}c}ClJj}{{{b{Fb}}c}ClJj}{{{b{{Nd{c}}}}}CdAd}{{{b{{Kj{c}}}}}CdAd}{{{b{{Nf{c}}}}}CdAd}```{{{b{{Kd{c}}}}}{{n{{b{h}}}}}Ad}{{{b{Fb}}}{{n{{b{h}}}}}}{{{b{Fb}}}Bb}`{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}Ch}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}}00000000000{{{b{ACd}}}Cd}{bc{}}000000000000000000000{bAn}000{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{b{c}}}{{n{k}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Nd{c}}}}{b{{A@j{c}}}}}{{n{{A@l{c}}}}}Ad}{{{b{{Kn{c}}}}}{{b{{A@l{c}}}}}Ad}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{Bh{k}}}{{n{k}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Nd{c}}}}{Bh{{A@l{c}}}}}{{n{{A@j{c}}}}}Ad}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{Bh{k}}}{{n{{Ej{kg}}}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{b{c}}}{{n{{Ej{kg}}}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}{c{{Cl{e}}}{}{}}00000000000000000000000{{}{{Cl{c}}}{}}00000000000000000000000{{{Of{c}}}{{Cl{c{Of{c}}}}}{}}{bJl}00000000000000000000000```{{}c{}}00000000000000000000000{{{Of{c}}i}{{Cl{ce}}}{}{hOh}{{On{e}{{Oj{Ol}}}}}{{If{}{{Ib{g}}}}}}{{{Of{c}}ACf}{{n{c}}}Hn}``````````````````````{{bd}f}0{{{b{{ACh{eg}}}}{K`{c}}}{{Kb{f}}}Ad{{Jn{c}}HnI`}{HnI`}}{{{b{Af{ACh{ce}}}}}{{b{Afe}}}{}{}}{{{b{{ACh{ce}}}}}{{b{e}}}{}{}}`{{{b{{ACh{ce}}}}}{{Hl{{Hj{Hh}}}}}{J`HnI`}{HnI`}}{{{b{{ACh{eg}}}}}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}}{{{b{ACj}}}{{Hl{{Hj{Hh}}}}}}{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{{ACh{ce}}}}}{{ACh{ce}}}BdBd}{{{b{ACj}}}ACj}{{b{b{Afc}}}f{}}0{bf}0{ACl{{`{{Hh{}{{Ib{{Kb{f}}}}}}Hn}}}}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}0{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}{{ABd{Ch}}Hn}}{Ch{{Hl{{Hj{Hh}}}}}}0{{}ACj}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{Chf}0`{{{b{{ACh{ce}}}}{b{AfEb}}}EhEfEf}{{{b{ACj}}{b{AfEb}}}Eh}{cc{}}0`{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{Ij{c}}HnI`}{HnI`}{{B`{{Nb{c}}}}HnI`}}{{{b{{ACh{eg}}}}{ACn{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{Ij{c}}HnI`}{HnI`}{{ABd{Ch}}Hn}}{{{b{{ACh{eg}}}}{ADb{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}iCdCh}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}{{B`{{ADd{c}}}}HnI`}}{{{b{{ACh{ce}}}}}{{Hl{{Hj{Hh}}}}}{ADfI`}{HnI`}}{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{Ij{c}}HnI`}{HnI`}{{B`{{N`{c}}}}HnI`}}5{{{b{{ACh{gi}}}}{ADh{ce}}}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}{{ADl{ce}}I`}{HnI`}}8866{{{b{{ACh{eg}}}}ADn}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad{{Ij{c}}HnI`}{HnI`}}{{{b{{ACh{eg}}}}{AE`{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}{AEb{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}<<::{{{b{{ACh{ce}}}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}{AEh{Il{AEd}}}{BdAEjHnI`}}{{{b{ACj}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}}{{}Ch}0{{{b{{ACh{ce}}}}}{{b{c}}}{}{}}{{{b{Af{ACh{ce}}}}}{{b{Afc}}}{}{}}{{{b{Af{ACh{gi}}}}AEl{AEn{Ch}}Cd}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}{{AF`{ce}}HnI`}{HnI`}}{{}c{}}0{{}{{Cl{HbHd}}}}0{{{b{{ACh{ce}}}}}{{b{AFb}}}AFd{}}{{{b{ACj}}}{{b{AFb}}}}{{ce}{{ACh{ce}}}{}{}}`{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}{{ABd{Ch}}Hn}}`{b}0{b{{Hj{AFf}}}}0{{{b{{Jb{}{{AFh{c}}{AFj{e}}}}}}}{{`{{Hh{}{{Ib{{Kb{e}}}}}}Hn}}}AClACl}{{{b{{ACh{ce}}}}}{{Kb{g}}}{JbHn}{HnI`}{}}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}0{ACl{{`{HhHn}}}}{{{b{Af{ACh{gi}}}}Ch}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}{{AF`{ce}}HnI`}{HnI`}}```{{{b{{ACh{eg}}}}}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}}{bc{}}0{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}0{{{b{Il}}{b{{AEf{c}}}}}{{Hl{{Hj{Hh}}}}}Ad}{{b{b{{AEf{c}}}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}{{B`{{Nb{c}}}}HnI`}}{{}c{}}0{{{b{{Jb{}{{AFh{c}}{AFj{e}}}}}}}{{`{{Hh{}{{Ib{{Kb{c}}}}}}Hn}}}AClACl}={{}f}0````{{bd}f}0{{{b{{AFl{ceg}}}}{K`{c}}}{{Kb{f}}}AdJb{{AFn{c}}}}{{{b{{AFl{ceg}}}}}{{b{e}}}Ad{}{}}{{{b{{AFl{ceg}}}}}{{Hl{{Hj{Hh}}}}}Ad{JbAFdHnI`}{HnI`}}{{{b{{AFl{ceg}}}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{AG`{ceg}}}{{Kb{{AFl{ceg}}}}}Ad{AGbJbAFd}{{AFn{c}}}}{{cg}{{AG`{ecg}}}{JbAGbAFd}Ad{{AFn{e}}}}{{{b{{AFl{ceg}}}}}{{AFl{ceg}}}Ad{}{}}{{{b{{AGd{ceg}}}}}{{AGd{ceg}}}Ad{}{}}{{b{b{Afc}}}f{}}0{bf}0{{AGfe}{{Cl{{AGh{ce}}AGj}}}Ad{{AFn{c}}}}{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{ABd{Ch}}Hn}}{{{b{AGl}}e}{{Kb{{AFl{c{AGn{c}}e}}}}}Ad{{AFn{c}}}}{{{b{AfAH`}}e}{{Kb{{AFl{c{AGn{c}}e}}}}}Ad{{AFn{c}}}}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{{{AG`{ceg}}}{{AG`{ceg}}}{}{}{}}0{Chf}00{{{b{{AFl{ceg}}}}{b{AfEb}}}EhAdEfEf}{{{b{{AGd{ceg}}}}{b{AfEb}}}EhAdEfEf}{cc{}}00{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{{AFn{c}}}{{B`{{Nb{c}}}}HnI`}}{{{b{{AFl{ceg}}}}{ACn{c}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{{AFn{c}}}{{ABd{Ch}}Hn}}{{{b{{AFl{ceg}}}}{ADb{c}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}iCdCh}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{B`{{ADd{c}}}}HnI`}}1{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{{AFn{c}}}{{B`{{N`{c}}}}HnI`}}4{{{b{{AFl{ceg}}}}{ADh{ci}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{ADj{c}}}}7755{{{b{{AFl{ceg}}}}ADn}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}AdJb{{AFn{c}}}}{{{b{{AFl{ceg}}}}{AE`{c}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}{AEb{c}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}};;99{{}Ch}00{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{{AFl{ceg}}}}}{{b{AFb}}}AdAFd{}}{{ce}{{AG`{gce}}}{}{}{}}{{{b{AGl}}e}{{Kb{{AFl{c{AGn{c}}e}}}}}Ad{{AFn{c}}}}{{{b{AfAH`}}e}{{Kb{{AFl{c{AGn{c}}e}}}}}Ad{{AFn{c}}}}{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{ABd{Ch}}Hn}}{b}00{b{{Hj{AFf}}}}{{{b{{AFl{ceg}}}}}{{Kb{i}}}Ad{JbHnI`}{HnI`}{}}{{{b{{AFl{c{AGn{c}}e}}}}}{{Kb{f}}}Ad{{AFn{c}}}}{{{b{{AFl{ceg}}}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{bc{}}0{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00{{b{b{{AEf{c}}}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{B`{{Nb{c}}}}HnI`}}{{}c{}}00{{{AG`{ceg}}ACf}{{AG`{ceg}}}{}{}{}}{{{AG`{ceg}}Ch}{{AG`{ceg}}}{}{}{}}100111000{{{AG`{ceg}}AHb}{{AG`{ceg}}}{}{}{}}02<``{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{Ch{{Hl{{Hj{Hh}}}}}}{{{b{AGl}}e}{{Kb{{AHd{ce}}}}}Ad{{AFn{c}}}}{{{b{AfAH`}}e}{{Kb{{AHd{ce}}}}}Ad{{AFn{c}}}}{{{b{{AHd{AEdc}}}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}{{AFn{AEd}}AEj}}214{{{b{{AHd{ce}}}}}{{Kb{f}}}Ad{{AFn{c}}}}{{}f}00000000``````{{AGfe}{{Cl{{AGh{ce}}AGj}}}Ad{{AFn{c}}}}76{{{b{{AHf{AEdc}}}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}{{AFn{AEd}}AEj}}`8``2````````````{{{b{AfAHh}}}{{`{{Hh{}{{Ib{{Kb{Ch}}}}}}Hn}}}}{{{b{AfAHj}}}{{Hl{{Hj{Hh}}}}}}{{{b{AfAHj}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}``{{{b{AfAHl}}{Nb{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHn}}{ACn{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHl}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{{{b{AfAHn}}{ADb{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHn}}}{{Hl{{Hj{Hh}}}}}}4{{{b{AfAHj}}eCdCh}{{Hl{{Hj{Hh}}}}}Ad{{B`{{ADd{c}}}}HnI`}}{{{b{AfAI`}}}{{Hl{{Hj{Hh}}}}}}{{{b{AfAHl}}{N`{c}}}{{Hl{{Hj{Hh}}}}}Ad}5{{{b{AfAIb}}{ADh{ce}}}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}}8866{{{b{AfAHn}}ADn}{{Hl{{Hj{Hh}}}}}}{{{b{AfAHl}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHn}}{AE`{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHn}}{AEb{c}}}{{Hl{{Hj{Hh}}}}}Ad}<<::{{{b{AfAId}}{Nd{c}}}{{`{Hn{Hh{}{{Ib{{Kb{f}}}}}}}}}Ad}{{{b{AfAId}}{Kf{c}}}{{`{Hn{Hh{}{{Ib{{Kb{f}}}}}}}}}Ad}{{{b{AfAId}}{Kl{c}}{n{ABn}}}{{`{Hn{Hh{}{{Ib{{Kb{f}}}}}}}}}Ad}`{{{b{AfAHj}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}``{{{b{AfAHj}}}{{Hl{{Hj{Hh}}}}}}{{{b{AfAIf}}{b{{AIh{{Nj{c}}}}}}}{{`{{Hh{}{{Ib{{Kb{f}}}}}}Hn}}}Ad}{{{b{AfAHj}}e}{{Hl{{Hj{Hh}}}}}Ad{{B`{{Nb{c}}}}HnI`}}```````````````````{{bd}f}0{{{b{Af{AIj{c}}}}}{{Kb{Ch}}}{AHhHnI`}}{{{b{Af{AIj{e}}}}}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}}{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{b{AIl}}}AIl}{{{b{{AIn{c}}}}}{{AIn{c}}}Bd}{{b{b{Afc}}}f{}}0{bf}0{{{AIj{c}}}{{Kb{f}}}ACl}{{{b{Af{AIj{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}{{ABd{Ch}}Hn}}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{Chf}00{{{b{AIl}}{b{AIl}}}Db}{{b{b{c}}}Db{}}000{{{b{{AIn{c}}}}AIl}f{}}0000000000{{{b{AIl}}{b{AfEb}}}Eh}{{{b{{AIn{c}}}}{b{AfEb}}}EhEf}{{{b{{AIj{c}}}}{b{AfEb}}}EhEf}{cc{}}{Fjc{}}{c{{AIn{c}}}{}}22{Flc{}}0{ceFn{}}{ceG`{}}2{{{b{Af{AIj{e}}}}{Nb{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AHl{c}}}}{{{b{Af{AIj{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{{AHl{c}}}{{ABd{Ch}}Hn}}{{{b{{AIn{c}}}}}{{Hl{{Hj{Hh}}}}}{AGbI`}}2{{{b{Af{AIj{e}}}}gCdCh}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}{{B`{{ADd{c}}}}HnI`}}{{{b{Af{AIj{e}}}}{N`{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AHl{c}}}}34433{{{b{{AIn{c}}}}}{{n{AJ`}}}AJb}{{{b{Af{AIj{e}}}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AHl{c}}}}6655{{}Ch}00{{{b{Af{AIj{e}}}}{Nd{c}}}{{Kb{f}}}Ad{{AId{c}}HnI`}}{{{b{Af{AIj{e}}}}{Kf{c}}}{{Kb{f}}}Ad{{AId{c}}HnI`}}{{{b{Af{AIj{e}}}}{Kl{c}}{n{ABn}}}{{Kb{f}}}Ad{{AId{c}}HnI`}}{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{Af{AIj{c}}}}}{{Hl{{Hj{Hh}}}}}{AJdHnI`}}{{{b{{AIn{c}}}}}{{b{AFb}}}AFd}{{{b{{AIn{c}}}}}f{}}00000{{{b{Af{AIj{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}{{ABd{Ch}}Hn}}{b}00{{{b{{AIn{c}}}}{b{Afe}}}{{Hl{{Hj{Hh}}}}}{AGbI`}{}}{{{b{{AIn{c}}}}}{{Kb{e}}}Jb{}}{{{AIj{c}}}{{`{HhHn}}}ACl}{{{b{Af{AIn{c}}}}AJ`}fAJb}{{{b{Af{AIj{e}}}}}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}}{bc{}}0{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00{{{b{Af{AIj{e}}}}{b{{AIh{{Nj{c}}}}}}}{{Kb{f}}}Ad{{AIf{c}}HnI`}}{{{b{Af{AIj{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}{{B`{{Nb{c}}}}HnI`}}{{}c{}}00:````{{{b{Af{AJf{c}}}}}{{Kb{Ch}}}{AJhHn}}{{{b{Af{AJf{e}}}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}}{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{AJf{{AK`{{AJl{c}}}}}}}{{Kb{f}}}Ad}{{{AJf{{AKb{{AJl{c}}}}}}}{{Kb{f}}}Ad}{{{b{Af{AJf{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}{{ABd{Ch}}Hn}}{{{b{AGl}}}{{Cl{{AGn{c}}AKd}}}Ad}{{{b{AfAH`}}}{{Cl{{AGn{c}}AKd}}}Ad}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{Chf}0{{{b{Af{AJf{c}}}}}fAJh}1{{{b{{AJl{c}}}}{b{AfEb}}}EhAd}{{{b{{AGn{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{AJf{c}}}}{b{AfEb}}}Eh{EfAJh}}{cc{}}00{{{b{Af{AJf{e}}}}{Nb{c}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}HnI`}}{{{b{Af{AJf{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}HnI`}{{ABd{Ch}}Hn}}1{{{b{Af{AJf{e}}}}gCdCh}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}{{B`{{ADd{c}}}}HnI`}}{{{b{Af{AJf{e}}}}{N`{c}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}HnI`}}23322{{{b{Af{AJf{e}}}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}HnI`}}4433{{}Ch}00{{{b{Af{AJf{{AKb{{AJl{c}}}}}}}}{Nd{c}}}{{Kb{f}}}Ad}{{{b{Af{AJf{{AKb{{AJl{c}}}}}}}}{Kf{c}}}{{Kb{f}}}Ad}{{{b{Af{AJf{{AKb{{AJl{c}}}}}}}}{Kl{c}}{n{ABn}}}{{Kb{f}}}Ad}{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{{AGn{c}}}}}{{b{AFb}}}Ad}{{{b{AGl}}}{{Cl{{AGn{c}}AKd}}}Ad}{{{b{AfAH`}}}{{Cl{{AGn{c}}AKd}}}Ad}{{{b{Af{AJf{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}{{ABd{Ch}}Hn}}{b}00{{{b{{AGn{c}}}}}{{Kb{e}}}Ad{}}{{{b{AfAJh}}}f}{{{AJf{{AKb{{AJl{c}}}}}}}{{`{HhHn}}}Ad}{{{AJf{{AK`{{AJl{c}}}}}}}{{`{HhHn}}}Ad}{{{b{{AGn{c}}}}}{{Cl{fAKd}}}Ad}{{{b{Af{AJf{e}}}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}}{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00{{{b{Af{AJf{c}}}}{b{{AIh{{Nj{e}}}}}}}{{Kb{f}}}{AJhHn}Ad}{{{b{Af{AJf{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}{{B`{{Nb{c}}}}HnI`}}{{}c{}}00;``{{bd}f}{{{b{AfAKf}}}{{Kb{Ch}}}}{{{b{AfAKf}}}{{Hl{{Hj{Hh}}}}}}{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{AKh}}}AKh}{{b{b{Afc}}}f{}}{bf}{AKf{{Kb{f}}}}{{{b{AfAKf}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{{}AKh}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{Chf}0{{{b{AKh}}{b{AfEb}}}Eh}{cc{}}0{{{b{AfAKf}}{Nb{c}}}{{Hl{{Hj{Hh}}}}}Ad}80{{{b{AfAKf}}eCdCh}{{Hl{{Hj{Hh}}}}}Ad{{B`{{ADd{c}}}}HnI`}}{{{b{AfAKf}}{N`{c}}}{{Hl{{Hj{Hh}}}}}Ad}:22::{{{b{AfAKf}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad}33;;{{}Ch}0{{{b{AfAKf}}{Nd{c}}}{{Kb{f}}}Ad}{{{b{AfAKf}}{Kf{c}}}{{Kb{f}}}Ad}{{{b{AfAKf}}{Kl{c}}{n{ABn}}}{{Kb{f}}}Ad}{{}c{}}0{{}{{Cl{HbHd}}}}0{{{b{AKh}}}{{b{AFb}}}}{{{b{AfAKf}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{b}0{{{b{AKh}}}{{Kb{c}}}{}}{AKf{{`{HhHn}}}}{{{b{AfAKf}}}{{Hl{{Hj{Hh}}}}}}`{bc{}}{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}0{{{b{AfAKf}}{b{{AIh{{Nj{c}}}}}}}{{Kb{f}}}Ad}{{{b{AfAKf}}e}{{Hl{{Hj{Hh}}}}}Ad{{B`{{Nb{c}}}}HnI`}}==8`````````{{bd}f}{{{b{AKj}}{K`{AEd}}}{{Kb{f}}}}{{{b{Af{AKl{c}}}}}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}}{{{b{AKj}}}{{Hl{{Hj{Hh}}}}}}0{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{b{AKj}}}AKj}{{b{b{Afc}}}f{}}{bf}{{{AKl{c}}}{{Kb{f}}}ACl}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{Af{AKl{c}}}}e}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}{{ABd{Ch}}Hn}}{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{Ch{{Hl{{Hj{Hh}}}}}}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{Chf}00{{{b{AKj}}{b{AfEb}}}Eh}{cc{}}00{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{B`{{Nb{AEd}}}}HnI`}}8{{{b{Af{AKl{c}}}}eCdCh}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}{{B`{{ADd{AEd}}}}HnI`}}{{{b{AKj}}cCdCh}{{Hl{{Hj{Hh}}}}}{{B`{{ADd{AEd}}}}HnI`}}{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{B`{{N`{AEd}}}}HnI`}};33;;{{{b{AKj}}{ABf{AEd}}}{{Hl{{Hj{Hh}}}}}}44<<{{{b{AKj}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}}{{}Ch}00{{{b{Af{AKl{c}}}}{Nd{AEd}}}{{Kb{f}}}{{AId{AEd}}HnI`}}{{{b{Af{AKl{c}}}}{Kf{AEd}}}{{Kb{f}}}{{AId{AEd}}HnI`}}{{{b{Af{AKl{c}}}}{Kl{AEd}}{n{ABn}}}{{Kb{f}}}{{AId{AEd}}HnI`}}{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{AKj}}}{{b{AFb}}}}{{{b{Af{AKl{c}}}}e}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}{{ABd{Ch}}Hn}}{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{b}00{b{{Hj{AFf}}}}{{{b{AKj}}}{{Kb{c}}}{}}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{{{AKl{c}}}{{`{HhHn}}}ACl}{{{b{Af{AKn{AKj}}}}}{{Hl{{Hj{Hh}}}}}}{{{b{Af{AKl{c}}}}}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}}{{{b{AKj}}}{{Hl{{Hj{Hh}}}}}}{bc{}}{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00{{b{b{{AEf{c}}}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{Af{AKl{c}}}}e}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}{{B`{{Nb{AEd}}}}HnI`}}{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{B`{{Nb{AEd}}}}HnI`}}{{}c{}}00=``````{{bd}f}{{{b{AJ`}}}Cd}{b{{b{c}}}{}}{{{b{Af}}}{{b{Afc}}}{}}{{{b{AJ`}}}AJ`}{{b{b{Afc}}}f{}}{bf}{{}AJ`}{Ch{{b{c}}}{}}{Ch{{b{Afc}}}{}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{Chf}{{{b{AJ`}}{b{AfEb}}}Eh}{cc{}}{{{b{{AGb{}{{AL`{c}}}}}}}{{Hl{{Hj{Hh}}}}}{AEjHn}}{{{b{AJb}}}{{n{AJ`}}}}{{}Ch}{{{b{AJ`}}}ACf}{{}c{}}{{}{{Cl{HbHd}}}}{{{b{AfAJd}}}{{Hl{{Hj{Hh}}}}}}{{{b{AJ`}}}ALb}4>{b}{{{b{{AGb{}{{AL`{c}}}}}}{b{Afc}}}{{Hl{{Hj{Hh}}}}}{AEjHn}}{{{b{AJ`}}}{{n{Cd}}}}{{{b{AfAJb}}AJ`}f}8{bc{}}{c{{Cl{e}}}{}{}}{{}{{Cl{c}}}{}}{bJl}{{{b{AJ`}}}{{Kb{f}}}}<{{AJ`Cd}AJ`}{{AJ`ACf}AJ`}{{AJ`ALb}AJ`}121````````````````````````````````{{bd}f}000{{{b{Af{ALd{c}}}}}{{Kb{Ch}}}ALf}{{ALhAnALjCd}ALl}{{{b{ALl}}}{{n{{b{ALj}}}}}}{AGfAGf}{{{b{AGj}}}{{b{h}}}}0{{{b{AGj}}}{{b{l}}}}{{{b{Af}}}{{`{{Hh{}{{Ib{{Kb{f}}}}}}Hn}}}}{{{b{Af}}}{{Kb{f}}}}0{{ALnAM`}AM`}{{{b{AfAMb}}c}{{AMd{An}}}{{AMh{AMf}}{AMj{AMf}}}}{{{b{Af{ALd{c}}}}}{{Hl{{Hj{Hh}}}}}ALf}{b{{b{c}}}{}}000000000{{{b{Af}}}{{b{Afc}}}{}}000000000{{{b{AfAMb}}c{b{Cj}}}{{AMd{An}}}{{ABd{Ch}}}}{{AGfe}{{Cl{{AGh{ce}}AGj}}}Ad{{AFn{c}}}}{{{b{AGj}}}AMl}{{{b{ALl}}}Cd}{{{b{Cj}}}{{Hl{{Hj{Hh}}}}}}{{}{{Hl{{Hj{Hh}}}}}}{{{b{ALl}}}ALl}{{{b{AMn}}}AMn}{{{b{AN`}}}AN`}{{{b{AGf}}}AGf}{{b{b{Afc}}}f{}}000{bf}000{{{b{ALl}}{b{ALl}}}Ob}{{{ALd{c}}}{{Kb{f}}}ALf}{{b{b{c}}}Ob{}}{{AGfe}{{Cl{{AHf{ce}}AGj}}}Ad{{AFn{c}}}}{AGf{{Cl{ANbAGj}}}}{{AGfACf}AGf}{{AGjc}AGj{GlHnI`}}{{{b{Af{ALd{c}}}}e}{{Hl{{Hj{Hh}}}}}ALf{{ABd{Ch}}Hn}}?{{AGf{b{Cj}}}AGf}{{{b{Cj}}}{{Hl{{Hj{Hh}}}}}}{{}AMb}{{}AMn}{{}AN`}{{}AGf}{{}ANd}{{}{{AEn{ALl}}}}{{{b{AGj}}}b}{Ch{{b{c}}}{}}00000{{{b{{ALd{c}}}}}{{b{e}}}{}{}}1111{{{b{AfAGj}}}{{b{Af}}}}{Ch{{b{Afc}}}{}}00000{{{b{Af{ALd{c}}}}}{{b{Afe}}}{}{}}1111{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}000000000{{}{{b{Cj}}}}00{AGj{{Cl{cAGj}}}{GlEfHnI`}}{{{b{AfAGj}}}{{n{{b{Afc}}}}}{GlEfHnI`}}{{{b{AGj}}}{{n{{b{c}}}}}{GlEfHnI`}}{Chf}{{{b{AfAGj}}}f}111111111{{{b{Cj}}}{{Hl{{Hj{Hh}}}}}}{{{b{ALl}}{b{ALl}}}Db}{{b{b{c}}}Db{}}000{{{ANh{}{{ANf{c}}}}e}{{Hl{{Hj{Hh}}}}}ANj{{ANl{c}}}}0{{{ANh{}{{ANf{c}}}}e}{{Hl{{Hj{AB`}}}}}ANj{{ANl{c}}}}0{{{b{Af{ALd{AMn}}}}c}{{Kb{Cd}}}{{ANl{AMf}}}}{{{b{Af{ALd{AMn}}}}{b{Cj}}c}{{Kb{Cd}}}{ALnBd}}{{{b{Af{ALd{AMn}}}}c}{{Kb{f}}}{{ANl{AMf}}}}{{{b{Af{ALd{AMn}}}}{b{Cj}}c}{{Kb{f}}}{ALnBd}}44554555{{{b{AGj}}{b{AfEb}}}{{Cl{fEd}}}}0{{{b{ALl}}{b{AfEb}}}{{Cl{fEd}}}}0{{{b{ANn}}{b{AfEb}}}{{Cl{fEd}}}}{{{b{AMb}}{b{AfEb}}}Eh}{{{b{AMn}}{b{AfEb}}}Eh}{{{b{AN`}}{b{AfEb}}}Eh}{{{b{{ALd{c}}}}{b{AfEb}}}EhEf}{{{b{AGf}}{b{AfEb}}}Eh}{{{b{ANb}}{b{AfEb}}}Eh}{{{b{ANd}}{b{AfEb}}}Eh}{b{{AO`{ANn}}}}{cAGj{hHnI`}}{cc{}}{Fjc{}}1111111{AObAGf}22{{{b{Cj}}}{{Cl{AGfc}}}{}}{{{b{Af{ALd{c}}}}{Nb{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{Af{ALd{c}}}}{ACn{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{Af{ALd{c}}}}e}{{Hl{{Hj{Hh}}}}}ALf{{ABd{Ch}}Hn}}{{{b{Af{ALd{c}}}}{ADb{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{ANb}}}{{Hl{{Hj{Hh}}}}}}{{{b{Af{ALd{c}}}}}{{Hl{{Hj{Hh}}}}}ALf}{b{{n{{b{Cj}}}}}}6{{{b{Af{ALd{c}}}}gCdCh}{{Hl{{Hj{Hh}}}}}ALfAd{{B`{{ADd{e}}}}HnI`}}2{{{b{Af{ALd{c}}}}{N`{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}6{{{b{Af{ALd{c}}}}{ADh{eg}}}{{Hl{{Hj{Hh}}}}}ALfAd{{ADj{e}}}}9977{{{b{ANb}}}{{n{AJ`}}}}{{{b{Af{ALd{c}}}}ADn}{{Hl{{Hj{Hh}}}}}ALf}{{{b{Af{ALd{c}}}}{ABf{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{Af{ALd{c}}}}{AE`{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{Af{ALd{c}}}}{AEb{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}>><<{{{b{AfAMb}}{Nb{c}}}{{AMd{An}}}Ad}{{AGfc}AGf{{B`{An}}}}{{AGfACf}AGf}``{{}Ch}000000000{{{b{Af{ALd{AMn}}}}{Nd{c}}}{{Kb{f}}}Ad}{{{b{Af{ALd{AMn}}}}{Kf{c}}}{{Kb{f}}}Ad}{{{b{Af{ALd{AMn}}}}AEl{AEn{Ch}}Cd}{{Hl{{Hj{Hh}}}}}}{{{b{Af{ALd{AMn}}}}{Kl{c}}{n{ABn}}}{{Kb{f}}}Ad}{{}c{}}000000000{{{b{AGj}}}Db}{{}{{Cl{HbHd}}}}000000000{{{b{Af{ALd{c}}}}g}{{AMd{{ABj{e}}}}}{}Ad{{B`{{Nb{e}}}}Hn}}{{{b{Af{ALd{c}}}}}{{Hl{{Hj{Hh}}}}}ALf}{{AGfAOd}AGf}{{{b{ANb}}}{{b{AFb}}}}{{AGfc}AGf{{AOf{}{{Ml{ALl}}}}}}2{cAGj{GlEfHnI`}}{{{b{ALl}}}{{b{Cj}}}}{cAGj{hHnI`}}{AGfAGf}{b{{n{{b{Cj}}}}}}{{{b{ALl}}{b{ALl}}}{{n{Ob}}}}{{AGf{b{Cj}}}AGf}{{{b{Af{ALd{c}}}}e}{{Hl{{Hj{Hh}}}}}ALf{{ABd{Ch}}Hn}}{b}000000000{{AGfALb}AGf}{{{b{ALl}}}{{b{AOh}}}}{{{ANh{}{{ANf{c}}}}{b{Cj}}}{{Hl{{Hj{Hh}}}}}ANj}0{{{ANh{}{{ANf{c}}}}{b{Cj}}{b{AIh}}}{{Hl{{Hj{Hh}}}}}ANj}{{{b{ANb}}{b{AfANd}}}{{Hl{{Hj{Hh}}}}}}{{AGfAJ`}{{Cl{AGfAGj}}}}{{{b{Cj}}}AM`}{{AMb{b{Cj}}}AM`}{{{b{Cj}}}{{AOj{c}}}AOl}{{AMb{b{Cj}}}{{AOj{c}}}AOl}{{{b{ANb}}}{{Kb{{ALd{AN`}}}}}}{AGfAGf}{b{{n{{b{Cj}}}}}}{{{ALd{c}}}{{`{HhHn}}}ALf}{{{b{AGj}}}{{b{h}}}}{{AGfc}AGf{{B`{An}}}}{{{b{AfALl}}}f}{{{b{Af{ALd{AMn}}}}Ch}{{Hl{{Hj{Hh}}}}}}{{{b{AfANb}}AJ`}f}{{AGfACf}AGf}{{{b{Af}}}{{Hl{{Hj{Hh}}}}}}{{{b{ALl}}}{{n{{b{Cj}}}}}}`{{{b{Af{ALd{c}}}}}{{Hl{{Hj{Hh}}}}}ALf}{{{b{AOn}}}{{Hl{{Hj{Hh}}}}}}`<{bc{}}000{bAn}0{c{{Cl{e}}}{}{}}000000000{{}{{Cl{c}}}{}}000000000{bJl}000000000{{{b{Cj}}{b{Cj}}}{{Cl{ALlB@`}}}}{{{b{Af{ALd{AMn}}}}{b{{AIh{{Nj{c}}}}}}}{{Kb{f}}}Ad}{{{b{Af{ALd{AMn}}}}{b{Cj}}{B@b{{b{Cj}}}}ce}{{Kb{f}}}{{AOf{}{{Ml{{b{Cj}}}}}}}AOf}{{AGf{b{Cj}}}AGf}{{{b{ALl}}}AOd}{{{b{Af{ALd{c}}}}g}{{Hl{{Hj{Hh}}}}}ALfAd{{B`{{Nb{e}}}}HnI`}}{{}c{}}000000000{{{b{ANb}}}{{Kb{{ALd{AMn}}}}}}``{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{B@d}}}AGf}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{Chf}{{{b{AfB@d}}}f}1{{{b{B@d}}{b{AfEb}}}Eh}{cc{}}0{{{b{B@d}}}An}{{}Ch}0{{}B@d}>>{{}{{Cl{HbHd}}}}01{b}0{{{b{B@d}}}ALb}88{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}0{{}c{}}0`````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}000000000000000{{B@fB@f}c{}}{b{{b{h}}}}00000000000000000000000``````````{b{{b{c}}}{}}0000000000000000000000000000000000{{{b{Af}}}{{b{Afc}}}{}}0000000000000000000000000000000000{B@hB@f}{{{b{B@j}}}B@j}{{{b{B@l}}}B@l}{{{b{B@n}}}B@n}{{{b{B@f}}}B@f}{{{b{{ACn{c}}}}}{{ACn{c}}}{BdAd}}{{{b{{AE`{c}}}}}{{AE`{c}}}{BdAd}}{{{b{{BA`{c}}}}}{{BA`{c}}}{BdAd}}{{{b{{BAb{c}}}}}{{BAb{c}}}{BdAd}}{{{b{BAd}}}BAd}{{{b{BAf}}}BAf}{{{b{BAh}}}BAh}{{{b{BAj}}}BAj}{{{b{BAl}}}BAl}{{{b{BAn}}}BAn}{{{b{BB`}}}BB`}{{{b{El}}}El}{{b{b{Afc}}}f{}}000000000000000{bf}000000000000000{{{b{B@n}}{b{B@n}}}Ob}{{b{b{c}}}Ob{}}````{{}{{AEb{c}}}Ad}{c{{Cl{{A@d{eElc}}A@f}}}Jf{HnI`A@h}}{Ch{{b{c}}}{}}0000000000000000000000000000000000{Ch{{b{Afc}}}{}}0000000000000000000000000000000000{c{{Cl{B@j}}}Cn}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{c{{Cl{B@l}}}Cn}1{c{{Cl{B@n}}}Cn}2{c{{Cl{B@f}}}Cn}3333{c{{Cl{BAd}}}Cn}4{c{{Cl{{BBb{e}}}}}CnAd}5{c{{Cl{{BBd{e}}}}}CnAd}66{c{{Cl{BBf}}}Cn}77{c{{Cl{{BBh{e}}}}}CnAd}8{c{{Cl{{BBj{e}}}}}CnAd}9{c{{Cl{BBl}}}Cn}:::{c{{Cl{BBn}}}Cn}{c{{Cl{BC`}}}Cn}<{c{{Cl{{BCb{e}}}}}CnAd}={c{{Cl{{BCd{e}}}}}CnAd}>>{c{{Cl{BAf}}}Cn}{c{{Cl{BAh}}}Cn}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{c{{Cl{BAj}}}Cn}1{c{{Cl{BAl}}}Cn}2{c{{Cl{BAn}}}Cn}{c{{Cl{BB`}}}Cn}44{c{{Cl{El}}}Cn}{c{{Cl{{BCf{e}}}}}CnAd}66{c{{Cl{{BCh{e}}}}}CnAd}7{c{{Cl{{BCj{e}}}}}CnAd}{c{{Cl{{BCl{e}}}}}CnAd}9{c{{Cl{{BCn{e}}}}}CnAd}:{c{{Cl{{BD`{e}}}}}CnAd};{Chf}0000000000000000000000000000000000{{{b{B@n}}{b{B@n}}}Db}{{{b{B@f}}{b{B@f}}}Db}{{{b{{ACn{c}}}}{b{{ACn{c}}}}}Db{MdAd}}{{{b{{AE`{c}}}}{b{{AE`{c}}}}}Db{MdAd}}{{{b{{BA`{c}}}}{b{{BA`{c}}}}}Db{MdAd}}{{{b{{BAb{c}}}}{b{{BAb{c}}}}}Db{MdAd}}{{{b{BAd}}{b{BAd}}}Db}{{{b{{BBb{c}}}}{b{{BBb{c}}}}}Db{MdAd}}{{{b{{BBd{c}}}}{b{{BBd{c}}}}}Db{MdAd}}{{{b{Ff}}{b{Ff}}}Db}{{{b{BBf}}{b{BBf}}}Db}{{{b{{BBh{c}}}}{b{{BBh{c}}}}}Db{MdAd}}{{{b{{BBj{c}}}}{b{{BBj{c}}}}}Db{MdAd}}{{{b{{ADb{c}}}}{b{{ADb{c}}}}}Db{MdAd}}{{b{b{c}}}Db{}}0000000000000000000000000000000000000000000000000000000{B@hB@f}0``{{{b{{BDj{}{{BDb{c}}{BDd{e}}{BDf{g}}{BDh{i}}}}}}}e{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}{{{b{{BDj{}{{BDb{c}}{BDd{e}}{BDf{g}}{BDh{i}}}}}}}c{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}```{{{b{B@j}}{b{AfEb}}}Eh}0{{{b{B@l}}{b{AfEb}}}Eh}0{{{b{B@n}}{b{AfEb}}}Eh}0{{{b{B@f}}{b{AfEb}}}Eh}0{{{b{{ACn{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{ACn{c}}}}{b{AfEb}}}EhAd}{{{b{{AE`{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{AE`{c}}}}{b{AfEb}}}EhAd}{{{b{{BA`{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BAb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{BAd}}{b{AfEb}}}Eh}{{{b{{BBb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BBd{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{Ff}}{b{AfEb}}}Eh}0{{{b{BBf}}{b{AfEb}}}Eh}{{{b{{BBh{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BBj{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{ADb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{BBl}}{b{AfEb}}}Eh}{{{b{{AEb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{BBn}}{b{AfEb}}}Eh}{{{b{BC`}}{b{AfEb}}}Eh}{{{b{{BCb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BCd{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{BAf}}{b{AfEb}}}Eh}0{{{b{BAh}}{b{AfEb}}}Eh}0{{{b{BAj}}{b{AfEb}}}Eh}0{{{b{BAl}}{b{AfEb}}}Eh}0{{{b{BAn}}{b{AfEb}}}Eh}0{{{b{BB`}}{b{AfEb}}}Eh}0{{{b{El}}{b{AfEb}}}Eh}0{{{b{{BCf{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BCh{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BCj{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BCl{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BCn{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BD`{c}}}}{b{AfEb}}}Eh{EfAd}}{cc{}}00{B@hB@f}11111111{BDlFf}2{BDnFf}3333333333{A`BAf}{FhBAf}5{FhBAh}{A`BAh}77{A`BAj}{FfBAj}{FhBAj}:{A`BAl}{FhBAl}<{BAhBAn}{BAlBAn}{FhBAn}{A`BAn}{BAfBAn}{cc{}}{FhBB`}{A`BB`}22{{{BBb{c}}}{{BCf{c}}}Ad}3{{{AEn{{BBd{c}}}}}{{BCh{c}}}Ad}4{{{AEn{{BBj{c}}}}}{{BCl{c}}}Ad}55{{{BCb{c}}}{{BCn{c}}}Ad}{{{BCd{c}}}{{BD`{c}}}Ad}7{b{{AAb{{BBb{c}}}}}Ad}{b{{AAb{{BBd{c}}}}}Ad}`{{{b{AD`}}{ACn{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AD`}}{ADb{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AD`}}}{{Hl{{Hj{Hh}}}}}}{{{b{AD`}}ADn}{{Hl{{Hj{Hh}}}}}}{{{b{AD`}}{AE`{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AD`}}{AEb{c}}}{{Hl{{Hj{Hh}}}}}Ad}`````````{{}Ch}0000000000000000000000000000000000{{}c{}}0000000000000000000000000000000000{{}{{BE`{An}}}}{{{b{B@n}}}Db}00```{{}{{Cl{HbHd}}}}0000000000000000000000000000000000{{{b{{BEb{}{{BDh{c}}}}}}}c{BdEfJhMjHnI`MdMf}}{{{b{{BDj{}{{BDb{c}}{BDd{e}}{BDf{g}}{BDh{i}}}}}}}{{AEn{i}}}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}{{B@nB@h}B@f}````````{{{b{B@n}}{b{B@n}}}{{n{Ob}}}}{b}0000000000000000000000000000000000{{{b{{BDj{}{{BDb{c}}{BDd{e}}{BDf{g}}{BDh{i}}}}}}}g{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}```{{{b{{BDj{}{{BDb{c}}{BDd{e}}{BDf{g}}{BDh{i}}}}}}}c{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}````{{{b{B@j}}c}ClJj}{{{b{B@l}}c}ClJj}{{{b{B@n}}c}ClJj}{{{b{B@f}}c}ClJj}{{{b{BAd}}c}ClJj}{{{b{{BBb{c}}}}e}ClAdJj}{{{b{{BBd{c}}}}e}ClAdJj}{{{b{BBf}}c}ClJj}{{{b{{BBh{c}}}}e}ClAdJj}{{{b{{BBj{c}}}}e}ClAdJj}{{{b{BBl}}c}ClJj}{{{b{BBn}}c}ClJj}{{{b{BC`}}c}ClJj}{{{b{{BCb{c}}}}e}ClAdJj}{{{b{{BCd{c}}}}e}ClAdJj}{{{b{BAf}}c}ClJj}{{{b{BAh}}c}ClJj}{{{b{BAj}}c}ClJj}{{{b{BAl}}c}ClJj}{{{b{BAn}}c}ClJj}{{{b{BB`}}c}ClJj}{{{b{El}}c}ClJj}{{{b{{BCf{c}}}}e}ClAdJj}{{{b{{BCh{c}}}}e}ClAdJj}{{{b{{BCj{c}}}}e}ClAdJj}{{{b{{BCl{c}}}}e}ClAdJj}{{{b{{BCn{c}}}}e}ClAdJj}{{{b{{BD`{c}}}}e}ClAdJj}{{{b{B@n}}}Ch}```{{{b{Ff}}}{{n{{b{h}}}}}}{{{b{BAf}}}{{n{{b{h}}}}}}{{{b{BAh}}}{{n{{b{h}}}}}}{{{b{BAj}}}{{n{{b{h}}}}}}{{{b{BAl}}}{{n{{b{h}}}}}}{{{b{BAn}}}{{n{{b{h}}}}}}{{{b{BB`}}}{{n{{b{h}}}}}}{{{b{El}}}{{n{{b{h}}}}}}{{{b{BAf}}}Bb}{{{b{BAh}}}Bb}{{{b{BAj}}}Bb}{{{b{BAl}}}Bb}{{{b{BAn}}}Bb}{{{b{BB`}}}Bb}{{{b{El}}}Bb}{{B@fB@f}c{}}```````{bc{}}000000000000000{bAn}0000000000000````{c{{Cl{e}}}{}{}}00{{{b{Cj}}}{{Cl{B@nc}}}{}}1111111{{{Nd{c}}}{{Cl{{BBb{c}}e}}}Ad{}}{{{Nd{c}}}{{Cl{{BBd{c}}e}}}Ad{}}33333{{{Ej{{b{{Nd{c}}}}Ch}}}{{Cl{{BBj{c}}e}}}Ad{}}44444444444444444444{{}{{Cl{c}}}{}}0000000000000000000000000000000000{bJl}0000000000000000000000000000000000{B@hB@f}`{{}c{}}0000000000000000000000000000000000`````{{bd}f}{b{{b{c}}}{}}{{{b{Af}}}{{b{Afc}}}{}}{{{b{{BEd{ce}}}}}{{BEd{ce}}}{}{}}{{b{b{Afc}}}f{}}{bf}{Ch{{b{c}}}{}}{Ch{{b{Afc}}}{}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{Chf}{{{b{{BEd{ce}}}}{b{AfEb}}}Eh{}{}}{cc{}}{{}Ch}={{}{{Cl{HbHd}}}}{{{Dl{BEf}}BEh}{{BEd{ce}}}{}{}}{b}``{{BEjc}f{}}{{BElc}{{`{{Hh{}{{Ib{f}}}}Hn}}}{}}{{{b{{BEd{eg}}}}eik}f{}{{BEn{c}}}BEl{{BF`{ce}}}{{AOf{}{{Ml{g}}}}Hn}}{bc{}}{c{{Cl{e}}}{}{}}{{}{{Cl{c}}}{}}{bJl}{{}c{}}`````{{bd}f}000{{{b{{BFb{c}}}}}f{}}{b{{b{c}}}{}}000{{{b{Af}}}{{b{Afc}}}{}}000{{{b{{BFd{c}}}}}{{BFd{c}}}Ad}{{{b{{BFf{c}}}}}{{BFf{c}}}{BdJf}}{{{b{{BFb{c}}}}}{{BFb{c}}}{}}{{{b{BFh}}}BFh}{{b{b{Afc}}}f{}}000{bf}000{{}{{BFd{c}}}Ad}{{}BFh}{Ch{{b{c}}}{}}000{Ch{{b{Afc}}}{}}000{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}000{Chf}000>{{{b{BF`}}e}{{Hl{{Hj{Hh}}}}}{}{{BEn{c}}}}{{{b{{BFd{c}}}}BFj}{{Hl{{Hj{Hh}}}}}Ad}{{{b{{BFd{c}}}}BFl}{{Hl{{Hj{Hh}}}}}Ad}{{{b{{BFd{c}}}}BFn}{{Hl{{Hj{Hh}}}}}Ad}{{{b{{BFf{c}}}}BFn}{{Hl{{Hj{Hh}}}}}Jf}{{{b{{BFf{c}}}}BFj}{{Hl{{Hj{Hh}}}}}Jf}{{{b{{BFf{c}}}}BFl}{{Hl{{Hj{Hh}}}}}Jf}{{{b{{BFb{g}}}}e}{{Hl{{Hj{Hh}}}}}Ad{{BEn{c}}}{{BF`{ce}}I`}}{{{b{BFh}}e}{{Hl{{Hj{Hh}}}}}{}{Hn{BEn{c}}}}{{{b{{BFd{c}}}}{b{AfEb}}}EhAd}{{{b{{BFf{c}}}}{b{AfEb}}}Eh{EfJf}}{{{b{{BFb{c}}}}{b{AfEb}}}EhEf}{{{b{BFh}}{b{AfEb}}}Eh}{cc{}}000{{}Ch}000{{}c{}}000{{}{{Cl{HbHd}}}}000{{BG`c}{{BFf{c}}}Jf}{c{{BFb{c}}}{}}{b}000{bc{}}000{c{{Cl{e}}}{}{}}000{{}{{Cl{c}}}{}}000{bJl}000{{{b{{BFb{c}}}}}f{}}09999{{{BFd{c}}e}{{BFd{c}}}Ad{{BF`{cBFj}}Ef}}{{{BFd{c}}e}{{BFd{c}}}Ad{{BF`{cBFn}}Ef}}{{{BFd{c}}e}{{BFd{c}}}Ad{{AFn{c}}Ef}}{{{BFd{c}}e}{{BFd{c}}}Ad{{BF`{cBFl}}Ef}}`````{{bd}f}00{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{b{BFj}}}BFj}{{{b{BFl}}}BFl}{{{b{BFn}}}BFn}{{b{b{Afc}}}f{}}00{bf}00{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{Chf}00{{{b{BFj}}{b{BFj}}}Db}{{{b{BFl}}{b{BFl}}}Db}{{{b{BFn}}{b{BFn}}}Db}{{b{b{c}}}Db{}}00000000000{{{b{BFj}}{b{AfEb}}}Eh}{{{b{BFl}}{b{AfEb}}}Eh}{{{b{BFn}}{b{AfEb}}}Eh}{cc{}}00{ChBFn}{{{b{c}}{b{e}}}Cd{GdGf}Gh}00{{{b{BFj}}{b{Afc}}}fGj}{{{b{BFl}}{b{Afc}}}fGj}{{{b{BFn}}{b{Afc}}}fGj}{{}Ch}00{{}c{}}00{{}{{Cl{HbHd}}}}00{b}00{bc{}}00{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00666`````````````````{{bd}f}0`{b{{b{h}}}}00{{{b{En}}}{{n{{b{l}}}}}}{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{b{En}}}{{n{{b{h}}}}}}{{{b{{ADh{ce}}}}}{{ADh{ce}}}Ad{{ADj{c}}}}{{{b{En}}}En}{{b{b{Afc}}}f{}}0{bf}0{{{b{{ADh{ce}}}}{b{{ADh{ce}}}}}ObAd{{ADj{c}}}}{{b{b{c}}}Ob{}}{{}BGb}{{{b{BGb}}}{{Cl{{A@d{cEne}}A@f}}}{HnI`A@h}Jf}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{{b{En}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{c{{Cl{En}}}Cn}{Chf}00{{{b{{ADh{ce}}}}{b{{ADh{ce}}}}}DbAd{{ADj{c}}}}{{b{b{c}}}Db{}}000`{{{b{{ADh{ce}}}}{b{AfEb}}}EhAd{{ADj{c}}}}0{{{b{En}}{b{AfEb}}}Eh}0{cc{}}0{{{Ej{AnBb}}}En}{AA`En}2{A`En}{{{b{c}}{b{e}}}Cd{GdGf}Gh}{{{b{ADf}}}{{Hl{{Hj{Hh}}}}}}{{{b{ADl}}{ADh{ce}}}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}}{{{b{{ADh{ce}}}}{b{Afg}}}fAd{{ADj{c}}}Gj}{{}{{b{Cj}}}}{{}Ch}00{{{b{AfAF`}}AEl{AEn{Ch}}Cd}{{Hl{{Hj{Hh}}}}}}{{{b{Af{ADj{}{{BGd{c}}{BGf{e}}{BGh{g}}{BGj{i}}{BGl{k}}}}}}c{b{{AEl{ecg}}}}}{{Kb{f}}}{BGnHnI`JhBH`BHbMjGlBHdBHf}{BHhHnI`JhMjBHdBHf}{BHjHn}{{BHl{g}}Hn{BHn{{b{ADn}}}}GlEf{B`{ADn}}}{{BI`{ecg}}}}{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{{ADh{ce}}}}{b{{ADh{ce}}}}}{{n{Ob}}}Ad{{ADj{c}}}}{b}00{{{b{En}}c}ClJj}{{{b{AfAF`}}Ch}{{Hl{{Hj{Hh}}}}}}{{{b{En}}}{{n{{b{h}}}}}}:{{{b{En}}}Bb}{bc{}}0{bAn}0<{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00<<<````````````````{{bd}f}0000000{{{b{BIb}}Ch}f}{{{b{BId}}AHb}f}{b{{b{h}}}}00{{{b{BIf}}}{{n{{b{l}}}}}}{b{{b{c}}}{}}00000000{{{b{Af}}}{{b{Afc}}}{}}00000000{{{b{BIf}}}{{n{{b{h}}}}}}{{{b{AFb}}}AFb}{{{b{BIb}}}BIb}{{{b{BIh}}}BIh}{{{b{BId}}}BId}{{{b{BIj}}}BIj}{{{b{BIl}}}BIl}{{{b{BIn}}}BIn}{{{b{BJ`}}}BJ`}{{b{b{Afc}}}f{}}0000000{bf}0000000{{{b{AFb}}An{AEn{An}}}{{Hj{BJb}}}}{{{b{BIj}}{AEn{An}}}{{Hj{BJd}}}}{{{b{BIl}}{AEn{An}}}{{Hj{BJf}}}}{{{b{BIn}}{AEn{An}}}{{Hj{BJh}}}}{{{b{BJ`}}{AEn{An}}}f}{{{b{AFb}}An{n{An}}}{{Hj{BJd}}}}{{{b{AFb}}An{n{An}}}{{Hj{BJf}}}}{{{b{AFb}}An{n{An}}}{{Hj{BJh}}}}{{{b{AFb}}An}f}{{}AFb}{Ch{{b{c}}}{}}00000000{Ch{{b{Afc}}}{}}00000000{{{b{BIf}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00000000{Chf}00000000{{{b{AFb}}}{{Cl{Anc}}}{}}{{{b{BIf}}{b{AfEb}}}Eh}0{{{b{AFb}}{b{AfEb}}}Eh}{{{b{BIb}}{b{AfEb}}}Eh}{{{b{BIh}}{b{AfEb}}}Eh}{{{b{BId}}{b{AfEb}}}Eh}{{{b{BIj}}{b{AfEb}}}Eh}{{{b{BIl}}{b{AfEb}}}Eh}{{{b{BIn}}{b{AfEb}}}Eh}{{{b{BJ`}}{b{AfEb}}}Eh}{BJjBIf}{cc{}}00000000{{{b{AFb}}An{AEn{An}}}{{Hj{BJl}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BIlBIf}}}}{{{b{BIb}}}Ch}{{{b{BIh}}}Ch}{{{b{BIj}}{b{{AIh{c}}}}}BIb{{BJn{Cj}}}}{{{b{BIl}}{b{{AIh{c}}}}}BIh{{BJn{Cj}}}}{{{b{BIn}}{b{{AIh{c}}}}}BId{{BJn{Cj}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BIbBIf}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BIjBIf}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BIhBIf}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BIdBIf}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BInBIf}}}}{{{b{AFb}}c}{{Cl{AFbBIf}}}AOf}{{{b{AFb}}An{AEn{An}}}{{Hj{BK`}}}}{{}Ch}00000000{{}c{}}00000000{{}{{Cl{HbHd}}}}00000000{{{b{BId}}}AHb}{b}00000000{{{b{BId}}}Ch}{{{b{BIh}}Ch}f}{{{b{BIf}}}{{n{{b{h}}}}}}{{{b{AFb}}An}{{Hj{AFf}}}}5{{{b{AFb}}An{AEn{An}}}{{Hj{BKb}}}}{bc{}}0000000{bAn}{c{{Cl{e}}}{}{}}00000000{{}{{Cl{c}}}{}}00000000{bJl}00000000{{{b{BIh}}BKd}f}>>>>>>>>>``````````````````````````{{bd}f}000000000`{b{{b{h}}}}00{{{b{F`}}}{{n{{b{l}}}}}}`{{{b{In}}}{{Hl{{Hj{Hh}}}}}}{b{{b{c}}}{}}0000000000{{{b{Af}}}{{b{Afc}}}{}}0000000000{{{BKf{ce}}}F`{{B`{An}}}{{B`{Bb}}}}{{{b{F`}}}{{n{{b{h}}}}}}{{{b{{ADd{c}}}}}{{ADd{c}}}Ad}{{{b{BKh}}}BKh}{{{b{{BKj{c}}}}}{{BKj{c}}}Bd}{{{b{BKl}}}BKl}{{{b{BKn}}}BKn}{{{b{BL`}}}BL`}{{{b{{BLb{c}}}}}{{BLb{c}}}Bd}{{{b{{BLd{ce}}}}}{{BLd{ce}}}BdBd}{{{b{{BKf{ce}}}}}{{BKf{ce}}}BdBd}{{{b{F`}}}F`}{{b{b{Afc}}}f{}}000000000{bf}000000000{{{b{BKh}}{b{BKh}}}Ob}{{b{b{c}}}Ob{}}{{{b{In}}}{{Hl{{Hj{Hh}}}}}}0{{{b{In}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{{}{{BKj{c}}}{}}{{}BLf}{{{b{BLf}}c}{{Cl{{A@d{eF`c}}A@f}}}Jf{HnI`A@h}}{Ch{{b{c}}}{}}0000000000{Ch{{b{Afc}}}{}}0000000000{{{b{F`}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{c{{Cl{BKh}}}Cn}{c{{Cl{{BKj{e}}}}}CnBLh}2{c{{Cl{BKl}}}Cn}3333333{c{{Cl{F`}}}Cn}4{Chf}0000000000`{{{b{BKh}}{b{BKh}}}Db}{{{b{{BKj{c}}}}{b{{BKj{c}}}}}DbMd}{{{b{BKl}}{b{BKl}}}Db}{{b{b{c}}}Db{}}00000000000`{{{BKf{ce}}}{{Cl{gF`}}}{{B`{An}}}{{B`{Bb}}}{}}{{{b{{ADd{c}}}}{b{AfEb}}}EhAd}{{{b{BKh}}{b{AfEb}}}Eh}{{{b{{BKj{c}}}}{b{AfEb}}}EhEf}{{{b{BKl}}{b{AfEb}}}Eh}{{{b{BLf}}{b{AfEb}}}Eh}{{{b{BKn}}{b{AfEb}}}Eh}{{{b{BL`}}{b{AfEb}}}Eh}{{{b{{BLb{c}}}}{b{AfEb}}}EhEf}{{{b{{BLd{ce}}}}{b{AfEb}}}EhEfEf}{{{b{{BKf{ce}}}}{b{AfEb}}}EhEfEf}{{{b{F`}}{b{AfEb}}}Eh}0{{{Kh{c}}}{{ADd{c}}}Ad}{cc{}}00{{{b{{BKj{c}}}}}{{n{Cd}}}BLj}1111111{{{Ej{AnBb}}}F`}{AA`F`}{A`F`}4{{}BKh}{{{b{c}}{b{e}}}Cd{GdGf}Gh}{{{b{In}}eCdCh}{{Hl{{Hj{Hh}}}}}Ad{{B`{{ADd{c}}}}HnI`}}{{{b{BKh}}{b{Afc}}}fGj}{{}Ch}0000000000{cF`Gl}{{}c{}}0000000000{{BKnc}F`{}}{{BL`c}F`{}}{{{BLb{c}}e}F`{{B`{An}}}{}}{{{BLd{ce}}g}F`{{B`{An}}}{{B`{Cd}}}{}}{{{BKf{ce}}g}F`{{B`{An}}}{{B`{Bb}}}{}}{{{b{BKh}}}Db}{{}{{Cl{HbHd}}}}0000000000``````{{{b{BKh}}{b{BKh}}}{{n{Ob}}}}{{{b{In}}}{{Hl{{Hj{Hh}}}}}}0{{{b{In}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{b}0000000000``{{{b{BKh}}c}ClJj}{{{b{{BKj{c}}}}e}ClJhJj}{{{b{BKl}}c}ClJj}{{{b{F`}}c}ClJj}{{{b{F`}}}{{n{{b{h}}}}}}`{{{b{F`}}}Bb}`8{bc{}}000000000{bAn}{c{{Cl{e}}}{}{}}0000000000{{}{{Cl{c}}}{}}0000000000{bJl}0000000000{{{b{In}}e}{{Hl{{Hj{Hh}}}}}Ad{{B`{{Nb{c}}}}HnI`}}{{}c{}}0000000000```````````````````{{bd}f}`{b{{b{h}}}}00{{{b{Fd}}}{{n{{b{l}}}}}}{{{b{J`}}}{{Hl{{Hj{Hh}}}}}}{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{Fd}}}{{n{{b{h}}}}}}{{{b{Fd}}}Fd}{{b{b{Afc}}}f{}}{bf}{{{b{J`}}}{{AMd{AFb}}}}0{{}BLl}{{{b{BLl}}c}{{Cl{{A@d{eFdc}}A@f}}}Jf{HnI`A@h}}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{{b{Fd}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{c{{Cl{Fd}}}Cn}{Chf}0??`{{{b{Fd}}{b{AfEb}}}Eh}0{cc{}}{AA`Fd}1{AnFd}{{}Ch}0{{}c{}}0{{}{{Cl{HbHd}}}}0{{{b{AFd}}}{{b{AFb}}}}{b}0{{{b{BLn}}}{{Hj{AFf}}}}{{{b{Fd}}c}ClJj}{{{b{Fd}}}{{n{{b{h}}}}}}{{{b{Fd}}}Bb}{{{b{J`}}}{{Hl{{Hj{Hh}}}}}}0{bc{}}{bAn}{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}0==````{{bd}f}{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{BM`}}}BM`}{{b{b{Afc}}}f{}}{bf}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{Chf}0{{{b{Af{BMb{c}}}}}fHn}{{{b{BM`}}{b{AfEb}}}Eh}{{{b{{BMb{c}}}}{b{AfEb}}}EhHn}{cc{}}0{{}Ch}0{{}c{}}0{{{BMb{c}}}{{Cl{cBMd}}}Hn}{{}{{Cl{HbHd}}}}0{b}0{{ce}BM`Gl{HhHn}}{{cg}{{BMb{e}}}GlHn{{Hh{}{{Ib{e}}}}Hn}}{bc{}}{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}099``{{}f}{ACff}```````{b{{b{c}}}{}}{{{b{Af}}}{{b{Afc}}}{}}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{Ch{{Hl{{Hj{Hh}}}}}}{{{b{{AKn{c}}}}}cBMf}{{{b{{AKn{c}}}}Ch}cBMf}{Ch{{b{c}}}{}}{Ch{{b{Afc}}}{}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{Chf}{{{b{Af{AKn{c}}}}}fBMf}{cc{}}{{{b{{AKn{c}}}}}{{b{{Ih{AEdBMhBMj}}}}}BMf}{{{b{{BMf{}{{BMl{c}}}}}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}{HnI`}}{{}Ch}{{}{{AKn{c}}}{BMfBLn}}{c{{AKn{e}}}{{If{{b{Af{BN`{BMn}}}}}}}{BMfBLn}}{{}c{}}{{}{{Cl{HbHd}}}}{{{b{{AKn{c}}}}}ChBMf}{b}{{{b{{AKn{c}}}}Ch}{{BNb{AEd}}}BMf}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{Af{AKn{{BMf{}{{BMl{c}}}}}}}}}{{Hl{{Hj{Hh}}}}}{HnI`}}{{{AKn{c}}}fBMf}{{{b{Af{AKn{c}}}}eg}fBMfGl{HhHn}}?{{{b{{AKn{c}}}}}bBMf}{{{b{{AKn{c}}}}BNd}fBMf}{c{{Cl{e}}}{}{}}{{}{{Cl{c}}}{}}{bJl}=`````````````{{bd}f}00``{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00`{{{b{AEd}}}AEd}{{{b{BMj}}}BMj}{{{b{BMh}}}BMh}{{b{b{Afc}}}f{}}00{bf}00{{{b{AEd}}{b{AEd}}}Ob}{{{b{BMh}}{b{BMh}}}Ob}{{b{b{c}}}Ob{}}0`{{}AEd}{{}BMh}`{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{c{{Cl{AEd}}}Cn}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{c{{Cl{BMh}}}Cn}{Chf}00{{{b{AEd}}{b{AEd}}}Db}{{{b{BMh}}{b{BMh}}}Db}{{b{b{c}}}Db{}}0000000{{{b{BNf}}}c{}}0{{{b{AEd}}{b{AfEb}}}Eh}{{{b{BMj}}{b{AfEb}}}Eh}{{{b{BMh}}{b{AfEb}}}Eh}{cc{}}00{{{b{c}}{b{e}}}Cd{GdGf}Gh}0{{{b{AEd}}{b{Afc}}}fGj}{{{b{BMh}}{b{Afc}}}fGj}{{}{{b{Cj}}}}{{{b{BNf}}}Cd}{{}Ch}00{{{b{AfBNh}}c{b{{AEl{ecg}}}}}{{Kb{f}}}{}{}{}}{{}c{}}00{{{b{BNj}}{b{c}}}e{}{}}`{{}{{Cl{HbHd}}}}00{{{b{BNj}}{b{c}}}Ch{}}`{{{AEn{BNl}}}BNd}{{{b{BNd}}}c{}}{{{b{BNf}}}{{AEn{c}}}{}}{{{b{AEd}}{b{AEd}}}{{n{Ob}}}}{{{b{BMh}}{b{BMh}}}{{n{Ob}}}}`{b}00`{{{b{BNf}}}c{}}`0{{{b{AEd}}c}ClJj}{{{b{BMh}}c}ClJj}`{{}{{b{Cj}}}}{{{b{BNf}}}Cd}`{bc{}}00{{{b{BNj}}{b{c}}{b{e}}}{{n{{Ej{gi}}}}}{}{}{}{}}`{{}Ch}{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00```{{}c{}}00`{{{b{BLj}}}Cd}","D":"EKd","p":[[1,"reference"],[5,"Private",4639],[1,"unit"],[10,"Error",4640],[6,"Error",0,4641],[5,"Backtrace",4642],[6,"Option",4643],[6,"QueryError",0],[5,"Leaf",0,4644],[10,"NodeType",4645],[0,"mut"],[5,"NotFoundSnafu",0],[5,"MissingSnafu",0],[5,"ErrorSnafu",0],[5,"String",4646],[10,"Into",4647],[5,"StatusCode",4648],[10,"Clone",4649],[5,"ApiState",0],[5,"Commitment",4650],[5,"UpgradeLock",4651],[10,"Versions",4645],[10,"Resolvable",0,4652],[10,"Committable",4650],[10,"RngCore",4653],[1,"u64"],[5,"Options",0],[1,"usize"],[1,"str"],[6,"Result",4654],[10,"Deserializer",4655],[5,"With",4656],[1,"bool"],[5,"UpgradeProposalData",4657],[5,"UpgradeThreshold",4658],[5,"SimpleCertificate",4658],[5,"RwLock",4659],[5,"Arc",4660],[5,"Error",4661],[6,"BlockError",4644],[5,"Formatter",4662],[5,"Error",4662],[10,"Debug",4662],[8,"Result",4662],[1,"tuple"],[6,"Error",2356],[6,"Error",3643],[6,"Error",4004],[6,"Error",311],[6,"Error",4344],[6,"TimestampConversionError",2356,4663],[6,"Error",4664],[1,"never"],[5,"OwnedFd",4665],[10,"IntoFilelike",4666],[10,"IntoSocketlike",4666],[5,"QuorumProposal",4644],[10,"Hash",4667],[10,"Sized",4668],[10,"BuildHasher",4667],[10,"Hasher",4667],[10,"Display",4662],[5,"QuorumData",4657],[5,"SuccessThreshold",4658],[5,"Layout",4669],[5,"LayoutError",4669],[5,"DynGuard",4670],[10,"Future",4671],[5,"Box",4672],[5,"Pin",4673],[10,"Send",4668],[10,"Sync",4668],[17,"Output"],[8,"BoxFuture",4674],[10,"FnOnce",4675],[5,"SystemContextHandle",4676],[10,"AvailabilityDataSource",311,4677],[10,"UpdateDataSource",1162,4678],[10,"NodeDataSource",4004,4679],[10,"StatusDataSource",4344,4680],[10,"VersionedDataSource",1162,4678],[10,"NodeImplementation",4645],[10,"StaticVersionType",4681],[10,"Serialize",4682],[10,"Serializer",4682],[5,"TypeId",4683],[10,"UpdateAvailabilityData",311,4677],[5,"BlockInfo",311,4677],[8,"Result",4684],[5,"InconsistentLeafError",311,4685],[5,"LeafQueryData",311,4685],[8,"BlockHash",311,4685],[5,"PayloadQueryData",311,4685],[5,"VidCommonQueryData",311,4685],[5,"TransactionQueryData",311,4685],[5,"FetchLeafSnafu",311],[5,"FetchBlockSnafu",311],[5,"FetchTransactionSnafu",311],[5,"InvalidTransactionIndexSnafu",311],[5,"RangeLimitSnafu",311],[5,"CustomSnafu",311],[17,"TransactionIndex"],[17,"Iter"],[17,"InclusionProof"],[10,"QueryablePayload",311,4685],[10,"PartialEq",4686],[10,"Eq",4686],[10,"Ord",4686],[10,"DeserializeOwned",4655],[17,"Item"],[10,"Iterator",4687],[6,"LeafId",311,4677],[6,"BlockId",311,4677],[5,"BlockQueryData",311,4685],[5,"BlockSummaryQueryData",311,4685],[5,"TransactionSummaryQueryData",311,4685],[5,"PayloadMetadata",311,4685],[5,"VidCommonMetadata",311,4685],[5,"Limits",311,4685],[5,"RequestSnafu",311],[6,"Ordering",4686],[8,"VidCommon",0,4688],[6,"Fetch",311,4689],[10,"ErrorCompat",4690],[17,"Source"],[5,"NoneError",4690],[10,"IntoError",4690],[8,"Payload",0],[5,"Options",311],[5,"Api",4691],[6,"ApiError",4691],[10,"ReadState",4692],[8,"TransactionIndex",311,4685],[8,"Transaction",0],[8,"LeafHash",311,4685],[6,"RequestError",4693],[8,"Result",4664],[17,"LeafRange"],[17,"BlockRange"],[17,"PayloadRange"],[17,"PayloadMetadataRange"],[17,"VidCommonRange"],[17,"VidCommonMetadataRange"],[10,"Stream",4694],[10,"Unpin",4668],[10,"RangeBounds",4695],[8,"TransactionHash",311,4685],[8,"VidCommitment",0,4688],[8,"Header",0],[8,"Metadata",0],[8,"VidShare",0,4688],[8,"QuorumCertificate",4658],[8,"TransactionInclusionProof",311,4685],[10,"QueryableHeader",311,4685],[5,"Duration",4696],[5,"ExtensibleDataSource",1162,4697],[5,"MetricsDataSource",1162,4698],[10,"Transaction",1162,4678],[6,"BlockIdentifier",2356,4663],[10,"ExplorerDataSource",2356,4699],[5,"GetBlockSummariesRequest",2356,4663],[6,"WindowStart",4004,4679],[10,"MerklizedStateHeightPersistence",3643,4700],[6,"Snapshot",3643,4700],[10,"MerklizedState",3643,4700],[10,"MerklizedStateDataSource",3643,4700],[5,"TaggedBase64",4701],[6,"TransactionIdentifier",2356,4663],[5,"GetTransactionSummariesRequest",2356,4663],[5,"MockTypes",4503],[5,"Event",4702],[10,"TestableDataSource",4463],[10,"Default",4703],[5,"MerkleProof",4704],[5,"Vec",4705],[10,"UpdateStateData",3643,4700],[5,"PrometheusMetrics",3760],[10,"HasMetrics",4344,4680],[10,"Metrics",4706],[17,"Transaction"],[17,"ReadOnly"],[5,"FetchingDataSource",1283],[10,"AvailabilityProvider",1283],[5,"Builder",1283],[10,"PruneStorage",1894],[5,"Pruner",1283],[5,"Config",1940],[8,"Builder",1424],[5,"Error",1940,4684],[5,"Path",4707],[5,"FileSystemStorage",1630],[5,"AtomicStoreLoader",4708],[1,"f64"],[8,"FileSystemDataSource",1404],[8,"SqlDataSource",1424],[10,"AggregatesStorage",1439],[10,"NodeStorage",1439],[10,"AvailabilityStorage",1439],[10,"ExplorerStorage",1439],[10,"MerklizedStateHeightStorage",1439],[10,"MerklizedStateStorage",1439],[10,"UpdateAvailabilityStorage",1439],[10,"UpdateAggregatesStorage",1439],[1,"slice"],[5,"Transaction",1489],[6,"FailableAction",1489],[5,"FailStorage",1489],[5,"PrunerCfg",1894],[10,"PrunerConfig",1894],[10,"PrunedHeightStorage",1894],[5,"Transaction",1630],[10,"Revert",1630],[17,"Target"],[5,"FileSystemStorageInner",1630],[10,"Deref",4709],[5,"RwLockReadGuard",4659],[5,"RwLockWriteGuard",4659],[6,"PersistenceError",4710],[5,"Transaction",1721],[5,"NoStorage",1721],[6,"DataSource",1791],[6,"Transaction",1791],[5,"MockNetwork",4463],[17,"Pruner"],[1,"u16"],[5,"Transaction",1940,4711],[10,"TransactionMode",1940,4711],[1,"i32"],[5,"OffsetDateTime",4712],[5,"Migration",1940,4713],[10,"Params",1940,4711],[8,"Query",1940,4711],[5,"QueryBuilder",1940,4714],[8,"QueryResult",0],[8,"Db",1940,4715],[10,"Encode",4716],[10,"Type",4717],[5,"Chain",4684],[5,"Write",1940,4711],[5,"Read",1940,4711],[5,"SqlStorage",1940],[5,"Pruner",1940],[17,"Database"],[10,"Executor",1940,4718],[10,"Database",1940,4719],[10,"Execute",4718],[5,"Sqlite",1940,4720],[5,"FmtValue",4721],[5,"PgConnectOptions",4722],[1,"u32"],[10,"IntoIterator",4723],[6,"Type",4713],[8,"QueryAs",1940,4711],[10,"FromRow",4724],[5,"TestArgs",4725],[5,"Error",4726],[1,"array"],[5,"TmpDb",2315],[5,"MonetaryValue",2356,4727],[1,"i128"],[5,"CurrencyMismatchError",2356,4728],[5,"InvalidCurrencyCodeError",2356,4728],[6,"CurrencyCode",2356,4728],[5,"BlockRange",2356,4663],[5,"TransactionRange",2356,4663],[5,"Timestamp",2356,4663],[6,"GetBlockDetailError",2356,4663],[6,"GetBlockSummariesError",2356,4663],[6,"GetTransactionDetailError",2356,4663],[6,"GetTransactionSummariesError",2356,4663],[6,"GetExplorerSummaryError",2356,4663],[6,"GetSearchResultsError",2356,4663],[5,"BlockDetail",2356,4663],[5,"BlockSummary",2356,4663],[5,"FeeAttribution",2356,4663],[5,"TransactionDetail",2356,4663],[5,"TransactionSummary",2356,4663],[6,"TransactionSummaryFilter",2356,4663],[5,"GenesisOverview",2356,4663],[5,"ExplorerHistograms",2356,4663],[5,"ExplorerSummary",2356,4663],[5,"SearchResult",2356,4663],[5,"BlockDetailResponse",2356],[5,"BlockSummaryResponse",2356],[5,"TransactionDetailResponse",2356],[5,"TransactionSummariesResponse",2356],[5,"ExplorerSummaryResponse",2356],[5,"SearchResultResponse",2356],[17,"BalanceAmount"],[17,"WalletAddress"],[17,"ProposerId"],[17,"NamespaceId"],[10,"ExplorerHeader",2356,4729],[5,"TryFromIntError",4730],[5,"ComponentRange",4731],[6,"Resettable",4732],[10,"ExplorerTransaction",2356,4729],[5,"Fetcher",3411],[5,"Semaphore",4733],[8,"ExponentialBackoff",4734],[10,"LocalCallback",3411],[10,"Callback",3411],[10,"Request",3553],[10,"Provider",3443],[5,"TestProvider",3443,4735],[5,"AnyProvider",3443,4736],[5,"QueryServiceProvider",3443,4737],[5,"NoFetching",3443],[5,"PayloadRequest",3553],[5,"VidCommonRequest",3553],[5,"LeafRequest",3553],[5,"Url",4738],[5,"Options",3643],[17,"Key"],[17,"Entry"],[17,"T"],[17,"Commit"],[17,"Digest"],[10,"Index",4739],[10,"ToTraversalPath",4739],[10,"FromStr",4740],[10,"CanonicalSerialize",4741],[10,"CanonicalDeserialize",4741],[10,"Element",4739],[10,"NodeValue",4739],[10,"MerkleCommitment",4739],[10,"TryFrom",4647],[10,"DigestAlgorithm",4739],[5,"Counter",3760],[5,"Histogram",3760],[6,"MetricsError",3760],[5,"Gauge",3760],[5,"CounterFamily",3760],[5,"GaugeFamily",3760],[5,"HistogramFamily",3760],[5,"TextFamily",3760],[10,"CounterFamily",4706],[10,"Counter",4706],[10,"Gauge",4706],[10,"Histogram",4706],[6,"Error",4742],[10,"GaugeFamily",4706],[10,"AsRef",4647],[10,"HistogramFamily",4706],[10,"TextFamily",4706],[1,"i64"],[5,"CustomSnafu",4004],[5,"SyncStatus",4004,4743],[5,"TimeWindowQueryData",4004,4743],[5,"Limits",4004,4743],[5,"RequestSnafu",4004],[5,"QuerySnafu",4004],[5,"QueryVidSnafu",4004],[5,"QueryWindowSnafu",4004],[5,"Options",4004],[10,"Deserialize",4655],[10,"HeightIndexed",4637],[5,"Options",4344],[10,"UpdateStatusData",4344,4680],[5,"BackgroundTask",4416],[5,"Task",4416],[5,"JoinError",4744],[10,"DataSourceLifeCycle",4463],[5,"MockNodeImpl",4503],[5,"MockVersions",4503],[17,"Storage"],[8,"BLSPubKey",4745],[5,"HotShotConfig",4746],[8,"SignatureKey",0],[8,"MockTransaction",4503],[8,"MockHeader",4503],[8,"MockMerkleTree",4503],[8,"MockPayload",4503],[1,"u8"],[15,"Custom",303],[15,"Availability",303],[15,"Node",303],[15,"Status",303],[15,"MerklizedState",303],[15,"Explorer",303],[15,"Error",310],[15,"RangeLimit",1151],[15,"InvalidTransactionIndex",1151],[15,"Custom",1151],[15,"FetchLeaf",1151],[15,"FetchBlock",1151],[15,"FetchTransaction",1151],[15,"Request",1151],[6,"Storage",1791],[15,"NoStorage",1893],[5,"TestMerkleTreeMigration",2315],[15,"Custom",3756],[15,"Request",3756],[15,"Query",3756],[15,"NoSuchMetric",4000],[15,"NoSuchSubgroup",4000],[15,"Prometheus",4000],[15,"QueryVid",4335],[15,"QueryWindow",4335],[15,"Custom",4335],[15,"Request",4335],[15,"Query",4335],[15,"Internal",4414],[15,"Request",4414],[8,"MockQuorumProposal",4503],[8,"MockStorage",4503],[8,"MockAuctionResults",4503]],"r":[[4,4641],[9,4644],[22,4652],[26,4688],[27,4688],[28,4688],[311,4677],[312,4685],[313,4677],[314,4677],[315,4685],[317,4685],[321,4689],[331,4685],[335,4685],[336,4677],[337,4685],[339,4685],[344,4685],[346,4685],[349,4685],[350,4685],[356,4685],[357,4685],[358,4685],[359,4685],[361,4685],[362,4685],[363,4677],[364,4685],[366,4685],[1162,1283],[1163,4697],[1164,1283],[1165,1404],[1166,4698],[1168,1424],[1169,4678],[1171,4678],[1172,4678],[1405,1630],[1425,1940],[1426,4684],[1427,4713],[1429,4711],[1434,0],[1437,2315],[1442,1489],[1443,1630],[1446,1721],[1448,1940],[1945,4719],[1947,4715],[1948,4684],[1949,4718],[1950,4711],[1951,4713],[1953,4711],[1955,4711],[1956,4711],[1957,4714],[1959,4711],[1962,4720],[1964,4711],[1966,4711],[1971,4711],[2173,4747],[2174,0],[2241,4711],[2243,4711],[2356,4663],[2359,4663],[2361,4663],[2362,4663],[2364,4663],[2365,4663],[2370,4728],[2371,4728],[2376,4699],[2377,4729],[2378,4663],[2379,4663],[2381,4729],[2382,4663],[2386,4663],[2388,4663],[2391,4663],[2393,4663],[2395,4663],[2397,4663],[2399,4663],[2401,4663],[2403,4663],[2409,4728],[2416,4727],[2420,4663],[2429,4663],[2434,4663],[2435,4663],[2438,4663],[2440,4663],[2441,4663],[2443,4663],[2445,4663],[2446,4663],[2454,4663],[3414,3443],[3415,3553],[3443,4736],[3446,4737],[3447,4735],[3651,4700],[3652,4700],[3653,4700],[3657,4700],[3659,4700],[4004,4685],[4005,4677],[4011,4743],[4012,4679],[4022,4743],[4024,4743],[4025,4679],[4345,4680],[4349,4680],[4350,4680]],"b":[[92,"impl-Committable-for-Leaf%3CTYPES%3E"],[93,"impl-Leaf%3CTYPES%3E"],[150,"impl-Debug-for-Leaf%3CTYPES%3E"],[151,"impl-Display-for-Leaf%3CTYPES%3E"],[152,"impl-Debug-for-Error"],[153,"impl-Display-for-Error"],[157,"impl-Debug-for-QueryError"],[158,"impl-Display-for-QueryError"],[162,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[163,"impl-From%3CError%3E-for-Error"],[164,"impl-From%3CError%3E-for-Error"],[165,"impl-From%3CError%3E-for-Error"],[166,"impl-From%3CError%3E-for-Error"],[167,"impl-From%3CError%3E-for-Error"],[172,"impl-From%3CTimestampConversionError%3E-for-QueryError"],[173,"impl-From%3CError%3E-for-QueryError"],[175,"impl-From%3CD%3E-for-ApiState%3CD%3E"],[177,"impl-From%3CArc%3CD%3E%3E-for-ApiState%3CD%3E"],[719,"impl-Display-for-LeafId%3CTypes%3E"],[720,"impl-Debug-for-LeafId%3CTypes%3E"],[721,"impl-Display-for-BlockId%3CTypes%3E"],[722,"impl-Debug-for-BlockId%3CTypes%3E"],[725,"impl-Display-for-InconsistentLeafError%3CTypes%3E"],[726,"impl-Debug-for-InconsistentLeafError%3CTypes%3E"],[744,"impl-Debug-for-Error"],[745,"impl-Display-for-Error"],[747,"impl-From%3CCommitment%3CLeaf%3CTypes%3E%3E%3E-for-LeafId%3CTypes%3E"],[749,"impl-From%3Cusize%3E-for-LeafId%3CTypes%3E"],[750,"impl-From%3Cusize%3E-for-BlockId%3CTypes%3E"],[752,"impl-From%3CCommitment%3C%3CTypes+as+NodeType%3E::BlockHeader%3E%3E-for-BlockId%3CTypes%3E"],[778,"impl-From%3CRequestError%3E-for-Error"],[780,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[1179,"impl-StatusDataSource-for-ExtensibleDataSource%3CD,+U%3E"],[1180,"impl-NodeDataSource%3CTypes%3E-for-ExtensibleDataSource%3CD,+U%3E"],[1291,"impl-StatusDataSource-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1292,"impl-NodeDataSource%3CTypes%3E-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1407,"impl-DataSourceLifeCycle-for-FetchingDataSource%3CMockTypes,+FileSystemStorage%3CMockTypes%3E,+P%3E"],[1408,"impl-FetchingDataSource%3CTypes,+FileSystemStorage%3CTypes%3E,+P%3E"],[1430,"impl-FetchingDataSource%3CTypes,+SqlStorage,+P%3E"],[1431,"impl-DataSourceLifeCycle-for-FetchingDataSource%3CMockTypes,+SqlStorage,+P%3E"],[1642,"impl-Transaction-for-Transaction%3CRwLockReadGuard%3C\'a,+FileSystemStorageInner%3CTypes%3E%3E%3E"],[1643,"impl-Transaction-for-Transaction%3CRwLockWriteGuard%3C\'a,+FileSystemStorageInner%3CTypes%3E%3E%3E"],[1702,"impl-Transaction-for-Transaction%3CRwLockWriteGuard%3C\'a,+FileSystemStorageInner%3CTypes%3E%3E%3E"],[1703,"impl-Transaction-for-Transaction%3CRwLockReadGuard%3C\'a,+FileSystemStorageInner%3CTypes%3E%3E%3E"],[1803,"impl-NodeDataSource%3CMockTypes%3E-for-DataSource"],[1804,"impl-StatusDataSource-for-DataSource"],[1980,"impl-AsRef%3Cdyn+Error+%2B+Send+%2B+Sync%3E-for-Error"],[1981,"impl-AsRef%3Cdyn+Error%3E-for-Error"],[2117,"impl-Debug-for-Error"],[2118,"impl-Display-for-Error"],[2119,"impl-Debug-for-Migration"],[2120,"impl-Display-for-Migration"],[2882,"impl-Debug-for-CurrencyMismatchError"],[2883,"impl-Display-for-CurrencyMismatchError"],[2884,"impl-Display-for-InvalidCurrencyCodeError"],[2885,"impl-Debug-for-InvalidCurrencyCodeError"],[2886,"impl-Debug-for-CurrencyCode"],[2887,"impl-Display-for-CurrencyCode"],[2888,"impl-Debug-for-MonetaryValue"],[2889,"impl-Display-for-MonetaryValue"],[2890,"impl-Debug-for-BlockIdentifier%3CTypes%3E"],[2891,"impl-Display-for-BlockIdentifier%3CTypes%3E"],[2892,"impl-Debug-for-TransactionIdentifier%3CTypes%3E"],[2893,"impl-Display-for-TransactionIdentifier%3CTypes%3E"],[2899,"impl-Debug-for-TimestampConversionError"],[2900,"impl-Display-for-TimestampConversionError"],[2911,"impl-Debug-for-GetBlockDetailError"],[2912,"impl-Display-for-GetBlockDetailError"],[2913,"impl-Debug-for-GetBlockSummariesError"],[2914,"impl-Display-for-GetBlockSummariesError"],[2915,"impl-Debug-for-GetTransactionDetailError"],[2916,"impl-Display-for-GetTransactionDetailError"],[2917,"impl-Display-for-GetTransactionSummariesError"],[2918,"impl-Debug-for-GetTransactionSummariesError"],[2919,"impl-Display-for-GetExplorerSummaryError"],[2920,"impl-Debug-for-GetExplorerSummaryError"],[2921,"impl-Debug-for-GetSearchResultsError"],[2922,"impl-Display-for-GetSearchResultsError"],[2923,"impl-Debug-for-Error"],[2924,"impl-Display-for-Error"],[2943,"impl-From%3CTryFromIntError%3E-for-TimestampConversionError"],[2945,"impl-From%3CComponentRange%3E-for-TimestampConversionError"],[2956,"impl-From%3CQueryError%3E-for-GetBlockDetailError"],[2957,"impl-From%3CError%3E-for-GetBlockDetailError"],[2959,"impl-From%3CError%3E-for-GetBlockSummariesError"],[2960,"impl-From%3CQueryError%3E-for-GetBlockSummariesError"],[2963,"impl-From%3CQueryError%3E-for-GetTransactionDetailError"],[2964,"impl-From%3CTimestampConversionError%3E-for-GetTransactionDetailError"],[2965,"impl-From%3CError%3E-for-GetTransactionDetailError"],[2967,"impl-From%3CQueryError%3E-for-GetTransactionSummariesError"],[2968,"impl-From%3CError%3E-for-GetTransactionSummariesError"],[2970,"impl-From%3CGetBlockSummariesError%3E-for-GetExplorerSummaryError"],[2971,"impl-From%3CGetTransactionSummariesError%3E-for-GetExplorerSummaryError"],[2972,"impl-From%3CError%3E-for-GetExplorerSummaryError"],[2973,"impl-From%3CQueryError%3E-for-GetExplorerSummaryError"],[2974,"impl-From%3CGetBlockDetailError%3E-for-GetExplorerSummaryError"],[2976,"impl-From%3CError%3E-for-GetSearchResultsError"],[2977,"impl-From%3CQueryError%3E-for-GetSearchResultsError"],[3493,"impl-Provider%3CTypes,+PayloadRequest%3E-for-AnyProvider%3CTypes%3E"],[3494,"impl-Provider%3CTypes,+VidCommonRequest%3E-for-AnyProvider%3CTypes%3E"],[3495,"impl-Provider%3CTypes,+LeafRequest%3E-for-AnyProvider%3CTypes%3E"],[3496,"impl-Provider%3CTypes,+LeafRequest%3E-for-QueryServiceProvider%3CVer%3E"],[3497,"impl-Provider%3CTypes,+PayloadRequest%3E-for-QueryServiceProvider%3CVer%3E"],[3498,"impl-Provider%3CTypes,+VidCommonRequest%3E-for-QueryServiceProvider%3CVer%3E"],[3704,"impl-Debug-for-Snapshot%3CTypes,+T,+ARITY%3E"],[3705,"impl-Display-for-Snapshot%3CTypes,+T,+ARITY%3E"],[3706,"impl-Display-for-Error"],[3707,"impl-Debug-for-Error"],[3710,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[3711,"impl-From%3CRequestError%3E-for-Error"],[3713,"impl-From%3CQueryError%3E-for-Error"],[3877,"impl-Debug-for-MetricsError"],[3878,"impl-Display-for-MetricsError"],[3897,"impl-Metrics-for-PrometheusMetrics"],[3898,"impl-PrometheusMetrics"],[4182,"impl-Display-for-Error"],[4183,"impl-Debug-for-Error"],[4196,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[4197,"impl-From%3CRequestError%3E-for-Error"],[4198,"impl-From%3CQueryError%3E-for-Error"],[4383,"impl-Debug-for-Error"],[4384,"impl-Display-for-Error"],[4386,"impl-From%3CRequestError%3E-for-Error"],[4388,"impl-From%3CString%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEUPLQECAAEABQAAAAgAAQALAAEADwAAABMAAwAYAAEAHgAMACwAAgAyAA8ARQAYAGAAAQBjACwAlwAJAKMABQCtAAEAsAACALQAAwC5AAAAuwABAL8ADQDVAAIA2QAJAOQAAQDnAAAA6gAJAPUABAD7AAIA/wAaABsBCAAoAQ8AOgEAADwBAwBBAQAAQwEAAEUBAABHAQAASQEBAEwBAQBQAQgAWgEEAGABAABiAQEAZQEDAGoBAgBuARkAiQELAJYBAQCZAS8A0QFIABsCbQCLAjwA0AIaAOwCAADuAgEA8QIAAPMCAAD3AgAA/AIAAP4CAAABAwAACwMAAA0DFQAkAwgALgMPAD8DGQBxAwcAewMAAH4DAACAAxoAnAMBAJ8DAgCjAwEAqwMhANADAQDTAxAA5QMqABIEAAAWBAAAGgQvAEsEMgCABAsAjQQBAJAEAQCWBAQAnAQbALkEAQC9BBoA2gQAAN0EBADjBAAA5QQDAOoEBQDyBAgA/AQDAAEFAgAHBQwAFgUFAB0FAAAgBQgAKwUEADMFGABPBQMAVgUFAF0FEAB8BQAAfgUCAIMFAACGBQAAiAUKAJYFAACYBQIAnAUEAKMFAgCnBQQArQUEALMFAAC2BQkAwQUAAMQFCgDRBQAA1QVAABcGAQAbBhsAOgYkAGAGDQBwBg8AgwYUAJsGAwChBgcAqgYPALsGFgDUBhMA6gYcAAgHIAAsBxUARQcnAG4HCgB6BwIAfwcBAIMHAgCHBwAAiQcLAJsHAACjBwIAtQcFAL0HAQDABwMAxQcUAN4HEADzBwEA9gcFAP0HJAAlCBAARggNAFUIAABdCAAAYAgMAG4IDACACA0AmQgJAKQIAACmCAAArQgBALAICgDCCAAAxAgAAMYIAADICAEAzAgCANAIBQDXCCMA/AgBAAAJHAAfCQMAJQkQADcJAAA7CQEAQAkCAEYJAgBQCQIAVAkAAFYJAQBZCQAAWwkAAF0JAABfCQAAYQkAAGMJAABlCQQAawkFAHQJAQB3CQYAgAkCAIUJAQCKCQEAkAkHAJkJEACrCWcAFAo2AEwKTACaCgMAnwqaADwLAQBACwMARgsBAEkLAABLCygAgAsAAIILAACNCwEAkAsBAJQLAgCYCwEAmwsEAKELAQClCwAApwsAAKkLAACsCwEArwsCALgLKwAHDCoANAwrAGEMAgBlDAMAawwAAG4MFgCGDBEAmQyVADANIwBXDQwAZQ0AAGcNAgBsDQEAbw0EAHkNAwB+DSUApg0LALYNAwC+DRkA2g0DAOcNLwAaDgkAJw4cAEYOAwBLDgAATQ4qAHkOAwB/DgEAgg4EAIgOAwCQDgkAmw4EAKEODwC3DgMAvQ5zADoPAAA8DwQARw8JAFoPTQCpDwYAsQ8AALMPAAC1DwAAtw8BALoPJwDjD2cATRAMAGUQAgBpEA8AhBAvALUQOQDwEC4AIBEBACMRAAAlEQIAKhEWAEMREgBYEQEAXREDAGMREQB2EQsAgxEEAIkRBACPEQkAmhENAKoRBQCxES0A4hEJAO8RAADxEQMA9hEEAPwRAgAAEgAAAhICAAYSAQAJEgMADhIJABsSAgAfEgAA"}]]')); +var searchIndex = new Map(JSON.parse('[["hotshot_query_service",{"t":"FPPPGPFPIFPIPFPPFPFIGIKIPIIIINNNNNNNNNNNNNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNQQQQQNNNNNNNNNNNNNNNNNNNNNNNCOCCONNNNNNNNNNONHNNNNNCNNOCCNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNCNNNNNNNNNNNOOOOOOOOKIGFFRFPFGGPFPFPFPPRFPFRIGFRFPPFPFRFRPKKPFPPFIIIIRFFKFRFRNNNNNNNNNNNNNNNNNNNNNNOMNNNNNNNNONNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNMMNNMMMMMMMMMMMNNNNNNNONNNNNNNNNNNOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMOONNNNNNNNNNNNNNNNNNNNNNNNNOOMNONONNNNNNNNNNNNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNONOOONNNNNNNNNNNNOOONNNONNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOEFEEFREKRKKNNNNNCNNNNNNNNNNNNNMNNNNNNNNNNNNNNCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNCNNNNMNNNMNCCCNNNNNNNNNMNNNNMNHHKFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIENNNNNNNNNHHHHHHHHHIIFFIENNNNNNQNCEHKKKEEKKEKEKKMMMCCMMMMMMMMMMMMMMMMMMMMMMMMMMCMCCMMMPFGPPPPPPPPPPPPPPPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFKFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNGPPPPPPGGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOKKRFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRRRFRKRIFKKFTKFIIFRFRFFRFRKRTRRFNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQQNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNHNHNNNNNNNNNNNNDNCNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIRPFFGIPFFFPPPGFGPPPKKFFFKFPPPFPGPPGPFPGPGPGPGPFPPPPPFPPPPPPFRRPIRPPPPPPPFFPPPFGPPFFGIPFFFGPPPPPPPIRPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOMMOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOMMMMMMOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMOOOMOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKFKEENNNNNNNNNNNNNNNNNCCMMNNNNNNFFKFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFKRFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPRPRRGPRKKKFPPGRKNNONNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNMMNMNNNMMNNNNNNNNNNNMNMNNNNNMNNNNNNNNNNNNOOOOFFFFFFGPPPFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOEEPFGPPFKFPFPFPFPFFPFGNNNNNNNNNNONNNNOMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOONNNMNNNNNNNNNNNOONNNNNONOMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOOOOOOOOOGKPFPKKNONNNNMNNNNNNNNNNNHNNNNNNNNNNNNONNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNOOFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCHHKIFISRKNNMMNNNNNNNNNMNNNNNNNNMNNNNNNNNNNIIIIIIFIIIIFFNNNOONNNNNNONNNNNNNNNNNNNONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNOHNNNNONNNONONNNONNONNNNONNNNNNNNNNOOONNNKM","n":["ApiState","Availability","Custom","Err","Error","","ErrorSnafu","Explorer","Header","Leaf","MerklizedState","Metadata","Missing","MissingSnafu","Node","NotFound","NotFoundSnafu","Ok","Options","Payload","QueryError","QueryResult","Resolvable","SignatureKey","Status","Transaction","VidCommitment","VidCommon","VidShare","__clone_box","","","","","","","as_error","","as_error_source","","","","availability","","backtrace","","block_header","block_header_mut","block_payload","borrow","","","","","","","","borrow_mut","","","","","","","","build","","","catch_all","cause","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","commit","","commitment","","create_random_transaction","data_source","default","deref","","","","","","","","","deref_mut","","","","","","","","description","","deserialize","","","","","","","","","","","drop","","","","","","","","eq","equivalent","","","","explorer","extends_upgrade","fail","","","fetching","fill_block_payload","fill_block_payload_unchecked","fmt","","","","","","","","","","from","","","","","","","","","","","","","","","","","","","from_fd","from_filelike","from_into_filelike","from_into_socketlike","from_quorum_proposal","from_socketlike","genesis","get_hash","hash","height","include_migrations","init","","","","","","","","instantiate_availability_tests","instantiate_data_source_tests","instantiate_node_tests","instantiate_persistence_tests","instantiate_status_tests","internal","into","","","","","","","","into_error","","","justify_qc","layout_raw","","","","","","","","load","","merklized_state","message","metrics","node","","parent_commitment","payload_commitment","pointer_metadata","","","","","","","","port","read","run_standalone_service","serialize","","","source","","status","","","","task","testing","to_owned","","","","","","","to_string","","","try_from","","","","","","","","try_into","","","","","","","","try_resolve","","type_id","","","","","","","","types","unfill_block_payload","upgrade_certificate","view_number","vzip","","","","","","","","message","source","","","","","status","message","AvailabilityDataSource","BlockHash","BlockId","BlockInfo","BlockQueryData","BlockRange","BlockSummaryQueryData","Custom","CustomSnafu","Error","Fetch","FetchBlock","FetchBlockSnafu","FetchLeaf","FetchLeafSnafu","FetchTransaction","FetchTransactionSnafu","Hash","","InclusionProof","InconsistentLeafError","InvalidTransactionIndex","InvalidTransactionIndexSnafu","Iter","LeafHash","LeafId","LeafQueryData","LeafRange","Limits","Number","","Options","PayloadHash","PayloadMetadata","PayloadMetadataRange","PayloadQueryData","PayloadRange","Pending","QueryableHeader","QueryablePayload","RangeLimit","RangeLimitSnafu","Ready","Request","RequestSnafu","Timestamp","TransactionHash","TransactionInclusionProof","TransactionIndex","","TransactionQueryData","TransactionSummaryQueryData","UpdateAvailabilityData","VidCommonMetadata","VidCommonMetadataRange","VidCommonQueryData","VidCommonRange","__clone_box","","","","","","","","","","","","","","","","","","","","","","api_path","append","as_error","","as_error_source","","","","backtrace","","block","block_hash","","","","","","block_height","borrow","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","build","","","","","","by_hash","","cause","","clone","","","","","","","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","cmp","","common","compare","","context","data","default","define_api","deref","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","description","","deserialize","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","drop","","","","","","","","","","","","","","","","","","","","","","","","enumerate","","","eq","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","extensions","fail","","","","","","fetch_timeout","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_row","","","","","","genesis","","","","get_block","get_block_range","get_hash","","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","hash","","","","","","","","header","","","height","","","","","","","","","","","index","","init","","","","","","","","","","","","","","","","","","","","","","","","internal","into","","","","","","","","","","","","","","","","","","","","","","","","into_error","","","","","","","into_future","is_empty","","","is_pending","iter","large_object_range_limit","","layout_raw","","","","","","","","","","","","","","","","","","","","","","","","leaf","","","len","","limit","map","message","metadata","new","","","","nth","","nth_transaction","","nth_transaction_with_proof","","num_transactions","","","partial_cmp","","payload","payload_hash","","","","pointer_metadata","","","","","","","","","","","","","","","","","","","","","","","","proof","","","qc","qc_leaf","resolve","resource","","","serialize","","","","","","","","","size","","","","small_object_range_limit","","source","","status","","subscribe_blocks","","subscribe_leaves","","subscribe_payload_metadata","","subscribe_payloads","","subscribe_vid_common","","subscribe_vid_common_metadata","","timestamp","to_owned","","","","","","","","","","","","","","","","","","","","","","to_string","","","","transaction","","","","transaction_by_hash","","","transaction_by_hash_with_proof","","transaction_with_proof","try_from","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","try_resolve","type_id","","","","","","","","","","","","","","","","","","","","","","","","until","vid_common","vid_share","vzip","","","","","","","","","","","","","","","","","","","","","","","","with_context","with_timeout","from","height","index","limit","message","resource","","","source","status","until","AvailabilityProvider","ExtensibleDataSource","FetchingDataSource","FileSystemDataSource","MetricsDataSource","ReadOnly","SqlDataSource","Transaction","","UpdateDataSource","VersionedDataSource","__clone_box","","append","as_mut","as_ref","availability_tests","block_height","","","borrow","","borrow_mut","","clone","","clone_into","","clone_to_uninit","","commit","connect","","count_transactions_in_range","create","","default","deref","","deref_mut","","deserialize","","drop","","fetching","fmt","","from","","fs","get_block","get_block_detail","get_block_range","get_block_summaries","get_explorer_summary","get_header_window","get_last_state_height","get_leaf","get_leaf_range","get_path","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_search_results","get_transaction","get_transaction_detail","get_transaction_summaries","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","handle_event","","init","","inner","inner_mut","insert_merkle_nodes","into","","layout_raw","","metrics","","new","node_tests","payload_size_in_range","persistence_tests","pointer_metadata","","populate_metrics","","read","","reset","","revert","set_last_state_height","sql","status_tests","storage","sync_status","to_owned","","try_from","","try_into","","type_id","","update","","vid_share","vzip","","write","","test_range","test_update","AvailabilityProvider","Builder","FetchingDataSource","Pruner","__clone_box","","append","as_ref","block_height","","borrow","","","borrow_mut","","","build","builder","clone","","clone_into","","clone_to_uninit","","connect","count_transactions_in_range","create","create_with_store","deref","","","deref_mut","","","deserialize","","","disable_aggregator","disable_proactive_fetching","drop","","","fmt","","from","","","get_block","get_block_detail","get_block_range","get_block_summaries","get_explorer_summary","get_header_window","get_last_state_height","get_leaf","get_leaf_range","get_path","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_search_results","get_transaction","get_transaction_detail","get_transaction_summaries","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","init","","","into","","","layout_raw","","","metrics","new","open","open_with_store","payload_size_in_range","pointer_metadata","","","populate_metrics","read","skip_version","sync_status","to_owned","","try_from","","","try_into","","","type_id","","","update","vid_share","vzip","","","with_active_fetch_delay","with_aggregator_chunk_size","with_chunk_fetch_delay","with_major_scan_interval","with_major_scan_offset","with_max_retry_interval","with_min_retry_interval","with_minor_scan_interval","with_proactive_range_chunk_size","with_range_chunk_size","with_rate_limit","with_retry_multiplier","with_retry_randomization_factor","with_retry_timeout","write","FileSystemDataSource","Transaction","connect","create","","create_with_store","handle_event","open","open_with_store","reset","skip_version","test_counters","test_sync_status","test_timestamp_window","test_vid_monotonicity","test_vid_recovery","test_vid_shares","test_drop_tx","test_reset","test_revert","Builder","Config","Error","Migration","SqlDataSource","Transaction","builder","connect","","","create","handle_event","include_migrations","reset","testing","TmpDb","test_metrics","AggregatesStorage","AvailabilityStorage","ExplorerStorage","FailStorage","FileSystemStorage","MerklizedStateHeightStorage","MerklizedStateStorage","NoStorage","NodeStorage","SqlStorage","UpdateAggregatesStorage","UpdateAvailabilityStorage","aggregates_height","block_height","count_transactions_in_range","fail_storage","fs","get_block","get_block_detail","get_block_range","get_block_summaries","get_explorer_summary","get_header","get_header_window","get_last_state_height","get_leaf","get_leaf_range","get_path","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_search_results","get_transaction","get_transaction_detail","get_transaction_summaries","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","insert_block","insert_leaf","insert_vid","no_storage","payload_size_in_range","pruning","sql","sync_status","update_aggregates","vid_share","Any","FailStorage","FailableAction","GetBlock","GetBlockRange","GetHeader","GetHeaderRange","GetLeaf","GetLeafRange","GetPayload","GetPayloadMetadata","GetPayloadMetadataRange","GetPayloadRange","GetTransaction","GetVidCommon","GetVidCommonMetadata","GetVidCommonMetadataRange","GetVidCommonRange","Transaction","__clone_box","","aggregates_height","block_height","borrow","","","borrow_mut","","","clone","","clone_into","","clone_to_uninit","","commit","count_transactions_in_range","deref","","","deref_mut","","","deserialize","","","drop","","","eq","equivalent","","","","fail","fail_begins_read_only","fail_begins_writable","fail_commits","fail_one_begin_read_only","fail_one_begin_writable","fail_one_commit","fail_one_read","fail_one_write","fail_reads","fail_writes","fmt","","","from","","","","","from_fd","from_filelike","from_into_filelike","from_into_socketlike","from_socketlike","get_block","get_block_range","get_disk_usage","get_header","get_header_window","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_pruning_config","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","init","","","insert_block","insert_leaf","insert_vid","into","","","layout_raw","","","load_pruned_height","metrics","pass","pass_begins_read_only","pass_begins_writable","pass_commits","pass_reads","pass_writes","payload_size_in_range","pointer_metadata","","","prune","read","revert","set_pruning_config","sync_status","to_owned","","try_from","","","try_into","","","type_id","","","update_aggregates","vid_share","vzip","","","write","FileSystemStorage","FileSystemStorageInner","Revert","Transaction","aggregates_height","block_height","borrow","","","borrow_mut","","","commit","","count_transactions_in_range","create","create_with_store","deref","","","deref_mut","","","deserialize","","","drop","","","","fmt","","","from","","","get_block","get_block_range","get_header","get_header_window","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","init","","","insert_block","insert_leaf","insert_vid","into","","","layout_raw","","","metrics","open","open_with_store","payload_size_in_range","pointer_metadata","","","read","revert","","","skip_version","sync_status","try_from","","","try_into","","","type_id","","","update_aggregates","vid_share","vzip","","","write","NoStorage","Transaction","__clone_box","aggregates_height","block_height","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","commit","count_transactions_in_range","default","deref","","deref_mut","","deserialize","","drop","","fmt","from","","get_block","get_block_range","get_header","get_header_window","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","init","","insert_block","insert_leaf","insert_vid","into","","layout_raw","","metrics","payload_size_in_range","pointer_metadata","","read","revert","sync_status","testing","to_owned","try_from","","try_into","","type_id","","update_aggregates","vid_share","vzip","","write","DataSource","NoStorage","","","Sql","","","Storage","Transaction","__clone_box","append","block_height","","","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","commit","connect","count_transactions_in_range","","create","deref","","","deref_mut","","","deserialize","","","drop","","","fmt","from","","","get_block","get_block_range","get_header_window","","get_leaf","get_leaf_range","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_transaction","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","handle_event","init","","","insert_block","insert_leaf","insert_vid","into","","","layout_raw","","","metrics","payload_size_in_range","","pointer_metadata","","","populate_metrics","read","reset","revert","setup","sync_status","","to_owned","try_from","","","try_into","","","type_id","","","update","vid_share","","vzip","","","write","fetch_from_port","PruneStorage","PrunedHeightStorage","Pruner","PrunerCfg","PrunerConfig","__clone_box","batch_size","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","deserialize","drop","fmt","from","get_disk_usage","get_pruning_config","init","interval","into","layout_raw","load_pruned_height","max_usage","minimum_retention","new","pointer_metadata","prune","pruning_threshold","set_pruning_config","target_retention","to_owned","try_from","try_into","type_id","validate","vzip","with_batch_size","with_interval","with_max_usage","with_minimum_retention","with_pruning_threshold","with_target_retention","ArgumentBuffer","Arguments","Column","Config","Connection","Database","","Db","Error","Executor","FixedLengthParams","Migration","NAME","Params","Pruner","Query","QueryAs","QueryBuilder","QueryResult","Read","Row","SqlStorage","Sqlite","Statement","Transaction","TransactionManager","TransactionMode","TypeInfo","URL_SCHEMES","Value","ValueRef","Write","__clone_box","","","","","aggregates_height","applied","applied_on","archive","as_ref","","backtrace","begin","","","bind","","block_height","borrow","","","","","","","","","","borrow_mut","","","","","","","","","","bounds_to_where_clause","build_where_in","builder","busy_timeout","chain","checksum","cleanup_test","cleanup_test_dbs","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","commit","compare","connect","","connection_timeout","context","count_transactions_in_range","create_database","database_exists","db_path","default","","","","","default_migrations","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","","display","","","downcast","downcast_mut","downcast_ref","drop","","","","","","","","","","","drop_database","eq","equivalent","","","","execute","","execute_many","","fetch","","fetch_all","","fetch_many","fetch_one","","fetch_optional","fmt","","","","","","","","","","","fmt_value_debug","from","","","","","","","","","","","","","from_str","get_block","get_block_detail","get_block_range","get_block_summaries","get_disk_usage","get_explorer_summary","get_feature_gate","get_header","get_header_window","get_last_state_height","get_leaf","get_leaf_range","get_path","get_payload","get_payload_metadata","get_payload_metadata_range","get_payload_range","get_pruning_config","get_search_results","get_transaction","get_transaction_detail","get_transaction_summaries","get_vid_common","get_vid_common_metadata","get_vid_common_metadata_range","get_vid_common_range","header_where_clause","idle_connection_timeout","include_dir","include_migrations","init","","","","","","","","","","insert_block","insert_leaf","insert_merkle_nodes","insert_vid","into","","","","","","","","","","is","layout_raw","","","","","","","","","","load_header","load_pruned_height","max_connections","metrics","migrations","min_connections","msg","name","new","no_migrations","param_type_for_id","partial_cmp","payload_size_in_range","pointer_metadata","","","","","","","","","","pool","","prefix","prepare","","prepare_with","prune","pruner_cfg","query","","query_as","","read","reset_schema","return_type_for_id","revert","root_cause","set_applied","set_last_state_height","set_pruning_config","slow_statement_threshold","snapshot","sql","sqlx","sync_status","syntax_helpers","test_context","testing","to_owned","","","","","to_string","","try_from","","","","","","","","","","try_into","","","","","","","","","","type_id","","","","","","","","","","unapplied","update_aggregates","upsert","version","vid_share","vzip","","","","","","","","","","write","BINARY_TYPE","MAX_FN","TestMerkleTreeMigration","TmpDb","borrow","","borrow_mut","","config","deref","","deref_mut","","deserialize","","drop","","","fmt","from","","init","","","into","","layout_raw","","path","persistent","pointer_metadata","","try_from","","try_into","","type_id","","vzip","","BalanceAmount","","Block","BlockDetail","BlockDetailResponse","BlockIdentifier","BlockNamespaceId","BlockNotFound","BlockRange","BlockSummary","BlockSummaryResponse","Btc","CryptoEnd","CryptoStart","CurrencyCode","CurrencyMismatchError","Error","Esp","Eth","Eur","ExplorerDataSource","ExplorerHeader","ExplorerHistograms","ExplorerSummary","ExplorerSummaryResponse","ExplorerTransaction","FeeAttribution","FiatCurrencyEnd","FiatCurrencyStart","Gbp","GenesisOverview","GetBlockDetail","GetBlockDetailError","","GetBlockSummaries","GetBlockSummariesError","","GetBlockSummariesRequest","GetExplorerSummary","GetExplorerSummaryError","GetSearchResults","GetSearchResultsError","GetTransactionDetail","GetTransactionDetailError","GetTransactionSummaries","GetTransactionSummariesError","","GetTransactionSummariesRequest","Hash","","Height","HeightAndOffset","IntError","InvalidCurrencyCodeError","InvalidLimit","","InvalidQuery","Jpy","Latest","","MonetaryValue","NamespaceId","","None","ProposerId","","QueryError","","","","","","RollUp","SearchResult","SearchResultResponse","TargetNotFound","","TimeError","Timestamp","TimestampConversionError","TokenEnd","TokenStart","TransactionDetail","TransactionDetailResponse","TransactionIdentifier","TransactionNamespaceId","TransactionNotFound","TransactionRange","TransactionSummariesResponse","TransactionSummary","TransactionSummaryFilter","Unimplemented","","","","","","Usd","WalletAddress","","Xxx","__clone_box","","","","","","","","","","","","","","","","add","as_error","","","","","","","","as_error_source","","","","","","","","","","","","","","","","block_confirmed","block_detail","block_heights","block_reward","block_size","block_summaries","block_time","block_transactions","blocks","","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","btc","clone","","","","","","","","","","","","","","","","clone_into","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","cmp","compare","currency","","currency1","currency2","default","define_api","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deserialize","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","eq","","","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","esp","eth","explorer_summary","fee_details","fee_info_account","fee_info_balance","fee_recipient","fees","filter","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_row","","genesis_overview","get_block_detail","get_block_summaries","get_explorer_summary","get_search_results","get_transaction_detail","get_transaction_summaries","hash","","","","height","","","","histograms","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_resettable","is_crypto","is_fiat","is_token","latest_block","latest_blocks","latest_transactions","layout_raw","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","namespace_id","namespace_ids","new","num_blocks","num_transactions","","","","","offset","","partial_cmp","pointer_metadata","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","proposer_id","","","range","reward_balance","rollups","","search_results","sequencing_fees","serialize","","","","","","","","","","","","","","","","","","","","","","","","","","","","significant_digits","size","","","source","","","","","","","","status","","","","","","","sub","target","","","time","","","","to_owned","","","","","","","","","","","","","","","","to_string","","","","","","","","","","","","","","transaction_detail","transaction_summaries","transactions","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","usd","value","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Callback","Fetcher","LocalCallback","Provider","Request","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","deserialize","drop","fmt","from","init","into","layout_raw","new","pointer_metadata","provider","request","run","","spawn_fetch","to_owned","try_from","try_into","type_id","vzip","AnyProvider","NoFetching","Provider","QueryServiceProvider","TestProvider","__clone_box","","","","block","borrow","","","","borrow_mut","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","deref","","","","deref_mut","","","","deserialize","","","","drop","","","","fail","fetch","","","","","","","","","fmt","","","","from","","","","init","","","","into","","","","layout_raw","","","","new","","pointer_metadata","","","","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","unblock","unfail","vzip","","","","with_block_provider","with_leaf_provider","with_provider","with_vid_common_provider","LeafRequest","PayloadRequest","Request","Response","VidCommonRequest","__clone_box","","","borrow","","","borrow_mut","","","clone","","","clone_into","","","clone_to_uninit","","","deref","","","deref_mut","","","deserialize","","","drop","","","eq","","","equivalent","","","","","","","","","","","","fmt","","","from","","","","get_hash","","","hash","","","init","","","into","","","layout_raw","","","pointer_metadata","","","to_owned","","","try_from","","","try_into","","","type_id","","","vzip","","","Commit","","Custom","Digest","Entry","Error","Index","Key","MerklizedState","MerklizedStateDataSource","MerklizedStateHeightPersistence","Options","Query","Request","Snapshot","T","UpdateStateData","__clone_box","","api_path","as_error","as_error_source","","backtrace","borrow","","","borrow_mut","","","cause","clone","","clone_into","","clone_to_uninit","","cmp","compare","default","define_api","deref","","","deref_mut","","","description","deserialize","","","","drop","","","eq","equivalent","","","","extensions","fmt","","","","from","","","","","","get_hash","get_last_state_height","get_path","hash","header_state_commitment_field","init","","","insert_merkle_nodes","insert_path","into","","","layout_raw","","","partial_cmp","pointer_metadata","","","serialize","set_last_state_height","source","state_type","status","to_owned","","to_string","","tree_height","try_from","","","try_into","","","type_id","","","vzip","","","message","source","","status","Counter","CounterFamily","Gauge","GaugeFamily","Histogram","HistogramFamily","MetricsError","NoSuchMetric","NoSuchSubgroup","Prometheus","PrometheusMetrics","TextFamily","__clone_box","","","","","","","","add","add_point","as_error","as_error_source","","backtrace","borrow","","","","","","","","","borrow_mut","","","","","","","","","cause","clone","","","","","","","","clone_into","","","","","","","","clone_to_uninit","","","","","","","","counter_family","create","","","","create_counter","create_gauge","create_histogram","create_text","default","deref","","","","","","","","","deref_mut","","","","","","","","","description","deserialize","","","","","","","","","drop","","","","","","","","","export","fmt","","","","","","","","","","from","","","","","","","","","","gauge_family","","get","","","","","get_counter","get_counter_family","get_gauge","get_histogram","get_histogram_family","get_subgroup","histogram_family","init","","","","","","","","","into","","","","","","","","","layout_raw","","","","","","","","","mean","pointer_metadata","","","","","","","","","sample_count","set","source","subgroup","sum","text_family","to_owned","","","","","","","","to_string","try_from","","","","","","","","","try_into","","","","","","","","","type_id","","","","","","","","","update","vzip","","","","","","","","","name","namespace","path","source","BlockHash","BlockId","Custom","CustomSnafu","Error","Hash","Height","Limits","NodeDataSource","Options","Query","QuerySnafu","QueryVid","QueryVidSnafu","QueryWindow","QueryWindowSnafu","Request","RequestSnafu","SyncStatus","Time","TimeWindowQueryData","WindowStart","__clone_box","","","","","","","","","","api_path","as_error","as_error_source","","backtrace","block","block_height","borrow","","","","","","","","","","","borrow_mut","","","","","","","","","","","build","cause","clone","","","","","","","","","","clone_into","","","","","","","","","","clone_to_uninit","","","","","","","","","","cmp","compare","count_transactions","","count_transactions_in_range","default","","define_api","deref","","","","","","","","","","","deref_mut","","","","","","","","","","","description","deserialize","","","","","","","","","","","","","","","drop","","","","","","","","","","","end","eq","","","equivalent","","","","","","","","","","","","extensions","fail","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","","","","fully_synced","get_hash","get_header_window","hash","init","","","","","","","","","","","internal","into","","","","","","","","","","","into_error","","","","","is_fully_synced","layout_raw","","","","","","","","","","","message","missing_blocks","missing_leaves","missing_vid_common","missing_vid_shares","next","partial_cmp","payload_size","","payload_size_in_range","pointer_metadata","","","","","","","","","","","prev","pruned_height","serialize","","","","source","start","status","","sync_status","to_owned","","","","","","","","","","to_string","try_from","","","","","","","","","","","try_into","","","","","","","","","","","type_id","","","","","","","","","","","vid_share","vzip","","","","","","","","","","","window","window_limit","","block","end","message","source","","","","start","status","Error","HasMetrics","Internal","Options","Request","StatusDataSource","UpdateStatusData","__clone_box","api_path","as_error","as_error_source","","backtrace","block_height","borrow","","borrow_mut","","cause","clone","clone_into","clone_to_uninit","consensus_metrics","","default","define_api","deref","","deref_mut","","description","deserialize","","","drop","","elapsed_time_since_last_decide","","extensions","fmt","","from","","","","init","","into","","layout_raw","","metrics","pointer_metadata","","populate_metrics","serialize","source","status","success_rate","","to_owned","to_string","try_from","","try_into","","type_id","","vzip","","reason","source","BackgroundTask","Task","__clone_box","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","deref","","deref_mut","","deserialize","","drop","","","fmt","","from","","init","","into","","join","layout_raw","","pointer_metadata","","spawn","","to_owned","try_from","","try_into","","type_id","","vzip","","consensus","mocks","setup_test","sleep","DataSourceLifeCycle","MockDataSource","MockNetwork","MockSqlDataSource","NUM_NODES","Storage","TestableDataSource","borrow","borrow_mut","connect","create","data_source","data_source_index","deref","deref_mut","deserialize","drop","","from","handle","handle_event","init","","init_with_config","into","layout_raw","num_nodes","pointer_metadata","proposer","reset","setup","shut_down","spawn","start","storage","submit_transaction","try_from","try_into","type_id","vzip","MockAuctionResults","MockBase","MockHeader","MockMembership","MockMerkleTree","MockNetwork","MockNodeImpl","MockPayload","MockQuorumProposal","MockStorage","MockTransaction","MockTypes","MockVersions","__clone_box","","","block_header","block_number","borrow","","","borrow_mut","","","builder_commitment","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","decided_upgrade_certificate","default","","delay_config","deref","","","deref_mut","","","deserialize","","","","","drop","","","eq","","equivalent","","","","","","","","fee_info_account","fee_info_balance","fmt","","","from","","","get_hash","","hash","","header_state_commitment_field","height","init","","","insert_path","into","","","iter","justify_qc","layout_raw","","","len","metadata","mock_transaction","namespace_id","namespace_ids","partial_cmp","","payload_commitment","pointer_metadata","","","proposal_certificate","proposer_id","random","reward_balance","serialize","","should_return_err","state_type","timestamp","","to_owned","","","transaction_with_proof","transactions","tree_height","try_from","","","try_into","","","type_id","","","upgrade_certificate","urls","view_number","vzip","","","HeightIndexed","height"],"q":[[0,"hotshot_query_service"],[303,"hotshot_query_service::Error"],[310,"hotshot_query_service::QueryError"],[311,"hotshot_query_service::availability"],[1151,"hotshot_query_service::availability::Error"],[1162,"hotshot_query_service::data_source"],[1281,"hotshot_query_service::data_source::availability_tests"],[1283,"hotshot_query_service::data_source::fetching"],[1404,"hotshot_query_service::data_source::fs"],[1415,"hotshot_query_service::data_source::node_tests"],[1421,"hotshot_query_service::data_source::persistence_tests"],[1424,"hotshot_query_service::data_source::sql"],[1439,"hotshot_query_service::data_source::sql::testing"],[1440,"hotshot_query_service::data_source::status_tests"],[1441,"hotshot_query_service::data_source::storage"],[1491,"hotshot_query_service::data_source::storage::fail_storage"],[1632,"hotshot_query_service::data_source::storage::fs"],[1723,"hotshot_query_service::data_source::storage::no_storage"],[1793,"hotshot_query_service::data_source::storage::no_storage::testing"],[1895,"hotshot_query_service::data_source::storage::no_storage::testing::Storage"],[1896,"hotshot_query_service::data_source::storage::pruning"],[1942,"hotshot_query_service::data_source::storage::sql"],[2316,"hotshot_query_service::data_source::storage::sql::syntax_helpers"],[2318,"hotshot_query_service::data_source::storage::sql::testing"],[2356,"hotshot_query_service::explorer"],[3411,"hotshot_query_service::fetching"],[3443,"hotshot_query_service::fetching::provider"],[3553,"hotshot_query_service::fetching::request"],[3643,"hotshot_query_service::merklized_state"],[3756,"hotshot_query_service::merklized_state::Error"],[3760,"hotshot_query_service::metrics"],[4000,"hotshot_query_service::metrics::MetricsError"],[4004,"hotshot_query_service::node"],[4335,"hotshot_query_service::node::Error"],[4344,"hotshot_query_service::status"],[4414,"hotshot_query_service::status::Error"],[4416,"hotshot_query_service::task"],[4459,"hotshot_query_service::testing"],[4463,"hotshot_query_service::testing::consensus"],[4503,"hotshot_query_service::testing::mocks"],[4637,"hotshot_query_service::types"],[4639,"dyn_clone::sealed"],[4640,"core::error"],[4641,"hotshot_query_service::error"],[4642,"std::backtrace"],[4643,"core::option"],[4644,"hotshot_types::data"],[4645,"hotshot_types::traits::node_implementation"],[4646,"alloc::string"],[4647,"core::convert"],[4648,"tide_disco::status"],[4649,"core::clone"],[4650,"committable"],[4651,"hotshot_types::message"],[4652,"hotshot_query_service::resolvable"],[4653,"rand_core"],[4654,"core::result"],[4655,"serde::de"],[4656,"rkyv::with"],[4657,"hotshot_types::simple_vote"],[4658,"hotshot_types::simple_certificate"],[4659,"async_lock::rwlock"],[4660,"alloc::sync"],[4661,"utils::anytrace"],[4662,"core::fmt"],[4663,"hotshot_query_service::explorer::query_data"],[4664,"sqlx_core::error"],[4665,"std::os::fd::owned"],[4666,"io_lifetimes::portability"],[4667,"core::hash"],[4668,"core::marker"],[4669,"core::alloc::layout"],[4670,"arc_swap::access"],[4671,"core::future::future"],[4672,"alloc::boxed"],[4673,"core::pin"],[4674,"futures_core::future"],[4675,"core::ops::function"],[4676,"hotshot::types::handle"],[4677,"hotshot_query_service::availability::data_source"],[4678,"hotshot_query_service::data_source::update"],[4679,"hotshot_query_service::node::data_source"],[4680,"hotshot_query_service::status::data_source"],[4681,"vbs::version"],[4682,"serde::ser"],[4683,"core::any"],[4684,"anyhow"],[4685,"hotshot_query_service::availability::query_data"],[4686,"core::cmp"],[4687,"core::iter::traits::iterator"],[4688,"hotshot_types::vid"],[4689,"hotshot_query_service::availability::fetch"],[4690,"snafu"],[4691,"tide_disco::api"],[4692,"tide_disco::method"],[4693,"tide_disco::request"],[4694,"futures_core::stream"],[4695,"core::ops::range"],[4696,"core::time"],[4697,"hotshot_query_service::data_source::extension"],[4698,"hotshot_query_service::data_source::metrics"],[4699,"hotshot_query_service::explorer::data_source"],[4700,"hotshot_query_service::merklized_state::data_source"],[4701,"tagged_base64"],[4702,"hotshot_types::event"],[4703,"core::default"],[4704,"jf_merkle_tree::internal"],[4705,"alloc::vec"],[4706,"hotshot_types::traits::metrics"],[4707,"std::path"],[4708,"atomic_store::atomic_store"],[4709,"core::ops::deref"],[4710,"atomic_store::error"],[4711,"hotshot_query_service::data_source::storage::sql::transaction"],[4712,"time::offset_date_time"],[4713,"refinery_core::runner"],[4714,"hotshot_query_service::data_source::storage::sql::db"],[4715,"sqlx_core::query_builder"],[4716,"hotshot_query_service::data_source::storage::sql::queries"],[4717,"sqlx_core::encode"],[4718,"sqlx_core::types"],[4719,"core::iter::traits::collect"],[4720,"sqlx_core::executor"],[4721,"sqlx_core::database"],[4722,"sqlx_sqlite::database"],[4723,"sqlx_core::type_checking"],[4724,"sqlx_sqlite::options"],[4725,"sqlx_core::pool"],[4726,"sqlx_core::from_row"],[4727,"sqlx_core::testing"],[4728,"refinery_core::error"],[4729,"hotshot_query_service::explorer::monetary_value"],[4730,"hotshot_query_service::explorer::currency"],[4731,"hotshot_query_service::explorer::traits"],[4732,"core::num::error"],[4733,"time::error::component_range"],[4734,"clap_builder::builder::resettable"],[4735,"async_lock::semaphore"],[4736,"backoff"],[4737,"hotshot_query_service::fetching::provider::testing"],[4738,"hotshot_query_service::fetching::provider::any"],[4739,"hotshot_query_service::fetching::provider::query_service"],[4740,"url"],[4741,"jf_merkle_tree"],[4742,"core::str::traits"],[4743,"ark_serialize"],[4744,"prometheus::errors"],[4745,"hotshot_query_service::node::query_data"],[4746,"tokio::runtime::task::error"],[4747,"hotshot_types::signature_key"],[4748,"hotshot_types"],[4749,"include_dir_macros"],[4750,"hotshot_query_service::data_source::storage::sql::db::syntax_helpers"]],"i":"`j0AMh`A``2``2`0`20`1``````2````Ab3AhAjAl4Bf757755`Cf86555584326015843260143288658432615843261584326155Bn66`16954371226954371297669954377126954371266666`6543`66669954377269999999543777122222222626666`69543712`````96954371254366954371222`3``1666954371212`69797`971``695437269769543712695437120669543712`66669543712BOfBOhBOjBOlBOnC@`5C@b`````Ij`Fb```0`0`0`N`NbMb`3`0```4`21`1`4`4Of``4`04`````1````5`532K`KfKdNdKjKlKnNfNhNjNlNnO`L`LbLdLfLhLjFbA@bJnKd3003303K`KfKjKlKnNjNl2OfN`Nb98:Nd876NfNh76NnA@bO`L`LbLdLfLhLjFb?>=K`KfKd?KjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFb654321Mb0Kd2N`NbK`Kf4NdKjKlKnNfNhNjNlNnO`L`LbLdLfLhLjFbN`NbK`KfKdNdKjKlKnNfNhNjNlNnO`L`LbLdLfLhLjFbN`NbK`KfKdNdKjKlKnNfNhNjNlNnO`L`LbLdLfLhLjFbN`NbKl21OfKjA@b`254K`KfKdNd57KnNfNhNjNlNn:O`L`LbLdLfLhLjFbOfN`NbK`KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFbKd1OfN`NbK`Kf05Nd0Kj0Kl0Kn0Nf0Nh0NjNlNn0A@bO`L`LbLdLfLhLjFb0OfN`NbK`KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFbMb0NdN`NbKf3KjKlKnNfNhNjNlNn::::99998888;;;;77776666555544443333222211110000A@bL`LbLdLfLhLj6N`0Nb0K`KfKd0NdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFb0OfN`00Nb00K`0KfKdNdKj0KlKnNf0NhNj0Nl0NnA@bO`L`LbLdLfLhLjFb002KfNdKjKl?>3210Ij0N`Nb2222222222210654KnNfNj981K`:98721Nl20?4?Of762Ij00000000000ACdN`NbK`KfKd?>=<;:8Nl:O`L`LbLdLfLhLjFb=<90Mb0NdKn221222OfN`NbK`KfKd7KjKl8NfNhNjNlNnA@bO`L`LbLdLfLhLjFbOfN`NbK`KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFbOf0N`NbK`KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFb2K`0OfN`Nb3KfKdNdKjKlKnNfNhNjNlNnA@bO`L`LbLdLfLhLjFbOf0C@dC@f01C@hC@jC@lC@nCA`46`````Jb``0``AChACj111`1101010101010ACl21221121212121`2121`222222222222222222222221212222121212`2`2121322102```221212121Il333243``````AFlAGd1111AG`21021022121212222021021021000212102122222222222222222222220210210212022202122222102102102122021000000000000002``AHd00000000```````````````AGf0AHf000`0```````````````AHhAHj0``AHlAHn10012AI`22AIb333323223333AId00`5``5AIf6AIl``000000000000000`0AInAIj02102102121210021021021021022222111111111112102111011111001000000001000002100002102100111111102101101021210210210002101````AJf0AJlAGn210222200102102102102210210222222222222222210222210210200021020AJh3313213213213332131``AKhAKf00101111001010101011010000000000000000100001011001100`101010100011`CAbAKlAKj210``001002102100001010021021021021002100010000000000000210111210210010210000101002102102100102100CAd``AGb``AJ`00000000000001AJb1111AJd22223212222222222222AO`00`0`ANn`````1`````1`1``1`1`1111`ALlANbANdALnANfALd552AGj00ALf65AM`AMf439AOd198576ANj5;12:968702`885;11;:987;:987;:987;6;878561182:980`55;12:96687055;12:9668705;12:968704:955555;12:968701;;;;;<<<<<<<<<<<<55;;12:96701555;12:96887086666761666666666676666666628``5;12:9687066665;12:9687055;12:968706687885;581;65;12:9687087;<<<78`2`278165;6781;`6`1`;:9875;5;12:968705;12:968705;12:96870;66;65;12:968707````CAfB@l1001010101000101001010001010101010`BEbBCd````BAn```BAf00```000```````000`Fd`BBf1`0`1`1`1`1`0`ACnAE`10Ff`BB`BBdBBh854`;BEj;`<:3BBb382<``435``::````0````;40382:`=:BAbBAd>22==99<<00;;11BC`BCnBChBBj1BD`22BCfBCl?>BAf>ACnAE`?>=6BBlFfBBnBCj;BAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAbBAdBAfB@nACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhB@nBAbBAdBAf3ACnAE`BAhBAjBAlBAnBB`BBbBBdBBfBBhFd>==>AEb`?>=B@n=<;:9BBjBBlFfBBnBC`BCbADbBCd9BCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAbBAdBAfB@nACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAb0BAd0BAf0B@n0ACnAE`BAhBAjBAl0BBj0BBl0FfBBn0BC`0BCb0ADbBCd0AEbBCf0BCh0BCj0BCl0BAn0BB`0BBb0BBd0BBf0BBh0Fd0BCn0BD`0BDb0BDd0BDf0BDh0BAbBAdBAfB@nACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAfB@nACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADb====<<<<;;;;::::9999888877776666555544443333222211110000<=FfBBn<;ADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAbBAdBAfB@nACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAf000???BAbBAd2B@nACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBEjBEbB@nBAhBAjBBjBBlBC`BCb10BAfBAbBAd29ACnAE`:9BAl98FfBBn98ADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBEbBBjBBlAEb3BCbBCf6BC`BAbBAdBAfB@nBAl:9BBn68BCd8BChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAfBBjBBlBC`FfBAnBB`BBbBBdBBfBBhFd6543210B@nBAhBAjBBn>=BBnBC`BCb0ADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAbBAdBAfB@nACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhBAbBAdBAfB@nACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDhB@n0BAbBAdBAf3ACnAE`BAhBAjBAlBBjBBlFfBBnBC`BCbADbBCdAEbBCfBChBCjBClBAnBB`BBbBBdBBfBBhFdBCnBD`BDbBDdBDfBDh`````BEl0000000000000000``BFbBFd222222`````BFlBFnBFjBG`1321032103210321032103032103210321032101BFh444333214321432143214321432132432143214321432143212243214444```BFf`BGbBGdBGf2102102102102102102102102102102222111100002102100210210210210210210210210210210210ADhADjEj11`21````00`1`20BGj11113013011313131330`3013011301130133333033113011113ADfADl54523AF`563463466344045464645634634634634CAhCAjCAl2```````BIn00``AFbBIjBJ`BIlBJbBJdBJfBJh6488888765432108765432108765432107654321076543210732107777787654321087654321088765432108765432107887654321088765432107765321777777787654321087654321087654321048765432104587477654321088765432108765432108765432105876543210CAn0CB`CBb``F```ADd0```1`1`1`1``0``0BL`BLbBLdBLfBLhBLjBLlBKn9BLn::::3In:987165432;:987165432;2;:98765432;:98765432;:98765432;9900081`:987165432;:987165432;;:998877165432;;:987165432;398799998888777712:987165432;;::9887165432;;;;9909:987165432;;:987165432;654329:987165432;2999989000:987165432;89987;;3;20:98765432;;:987165432;:987165432;:987165432;0:987165432;871CBdCBfCBhCBjCBl4332``En`0``0BMd1111J`12122222001`1212212212001221222121212AFd23BMf444224434343434CBnCC```BMh0BMj10111101010100101010100101010110101010`````````BMn`AKn01100000000010000000011000000000`````````````AEdBNbBN`CCbBNn43243204324324324242CCd530543543554335435355553333115435435353BO`26540654BOb476503`BNl486487654448632448761128768768765CCf6987`BMb","f":"`````````````````````````````{{bd}f}000000{b{{b{h}}}}00000``{{{b{j}}}{{n{{b{l}}}}}}{{{b{A`}}}{{n{{b{l}}}}}}{{{b{{Ab{c}}}}}bAd}{{{b{Af{Ab{c}}}}}{{b{Af}}}Ad}{{{b{{Ab{c}}}}}nAd}{b{{b{c}}}{}}0000000{{{b{Af}}}{{b{Afc}}}{}}0000000{AhA`}{AjA`}{{{Al{c}}}A`{{B`{An}}}}{{BbAn}j}{{{b{j}}}{{n{{b{h}}}}}}{{{b{A`}}}{{n{{b{h}}}}}}{{{b{{Ab{c}}}}}{{Ab{c}}}{BdAd}}{{{b{j}}}j}{{{b{Ah}}}Ah}{{{b{Aj}}}Aj}{{{b{{Al{c}}}}}{{Al{c}}}Bd}{{{b{A`}}}A`}{{{b{{Bf{c}}}}}{{Bf{c}}}Bd}{{b{b{Afc}}}f{}}000000{bf}000000{{{b{{Ab{c}}}}}{{Bh{{Ab{c}}}}}Ad}{{{b{{Ab{c}}}}{b{{Bj{ce}}}}}{{Bh{{Ab{c}}}}}AdBl}{{{b{Bn}}}{{Bh{c}}}C`}{b{{Bh{c}}}{}}{{{b{{Ab{c}}}}{b{AfCb}}Cd}{}Ad}`{{}Cf}{Ch{{b{c}}}{}}000000{{{b{{Bf{c}}}}}{{b{e}}}{}{}}1{Ch{{b{Afc}}}{}}0000000{{{b{j}}}{{b{Cj}}}}{{{b{A`}}}{{b{Cj}}}}{c{{Cl{{Ab{e}}}}}CnAd}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{c{{Cl{j}}}Cn}1111{c{{Cl{A`}}}Cn}222{Chf}0000000{{{b{{Ab{c}}}}{b{{Ab{c}}}}}DbAd}{{b{b{c}}}Db{}}000`{{{b{{Ab{c}}}}{b{{Ab{c}}}}{b{{Dl{{Dj{{n{{Dh{c{Dd{c}}Df}}}}}}}}}}}{{Cl{fDn}}}Ad}{Ah{{Cl{cA`}}}{}}{Aj{{Cl{cA`}}}{}}{{{Al{c}}}{{Cl{eA`}}}{{B`{An}}}{}}`{{{b{Af{Ab{c}}}}Ch}{{Cl{fE`}}}Ad}{{{b{Af{Ab{c}}}}}fAd}{{{b{{Ab{c}}}}{b{AfEb}}}{{Cl{fEd}}}{EfAd}}{{{b{{Ab{c}}}}{b{AfEb}}}{{Cl{fEd}}}Ad}{{{b{j}}{b{AfEb}}}Eh}0{{{b{Ah}}{b{AfEb}}}Eh}{{{b{Aj}}{b{AfEb}}}Eh}{{{b{{Al{c}}}}{b{AfEb}}}EhEf}{{{b{A`}}{b{AfEb}}}Eh}0{{{b{{Bf{c}}}}{b{AfEb}}}EhEf}{cc{}}0{Ejj}{{{El{AnBb}}}j}{Enj}{F`j}{Fbj}{Fdj}666{FfA`}{FhA`}888{{{Dl{c}}}{{Bf{c}}}{}}{Fjc{}}{c{{Bf{c}}}{}}{Flc{}}0{ceFn{}}{ceG`{}}{{{b{{Gb{c}}}}}{{Ab{c}}}Ad}3{{bb}{{Ab{c}}}Ad}{{{b{c}}{b{e}}}Cd{GdGf}Gh}{{{b{{Ab{c}}}}{b{Afe}}}fAdGj}{{{b{{Ab{c}}}}}CdAd}`{{}Ch}0000000`````{cjGl}{{}c{}}0000000{{Ahc}A`{}}{{Ajc}A`{}}{{{Al{c}}e}A`{{B`{An}}}{}}{{{b{{Ab{c}}}}}{{Dh{c{Gn{c}}H`}}}Ad}{{}{{Cl{HbHd}}}}0000000{b}{b{{Hf{c}}}{}}`````{{{b{{Ab{c}}}}}{{Bh{{Ab{c}}}}}Ad}{{{b{{Ab{c}}}}}{}Ad}33333333`{{{b{{Bf{c}}}}i}{{Hl{{Hj{Hh}}}}}{HnI`}{}{}{Hn{If{{b{e}}}{{Ib{{Id{g}}}}}}}}{{Cfe{Ih{cgi}}k}{{Cl{fj}}}Ad{{Ij{c}}{Il{c}}{In{c}}J`JbHnI`}{{Jd{c}}}BlJf}{{{b{{Ab{c}}}}e}Cl{AdJh}Jj}{{{b{j}}c}ClJj}{{{b{A`}}c}ClJj}{{{b{j}}}{{n{{b{h}}}}}}{{{b{A`}}}{{n{{b{h}}}}}}`{{{b{j}}}Bb}{{{b{A`}}}Bb}```{bc{}}000000{bAn}00{c{{Cl{e}}}{}{}}0000000{{}{{Cl{c}}}{}}0000000{Bn{{Cl{cBn}}}C`}{{}{{Cl{cc}}}{}}{bJl}0000000`{{{b{Af{Ab{c}}}}}nAd}{{{b{{Ab{c}}}}}{{n{{Dh{c{Dd{c}}Df}}}}}Ad}{{{b{{Ab{c}}}}}{}Ad}{{}c{}}0000000`````````````````````````````````````````````````````````````````{{bd}f}000000000000000000000`{{{b{Jn}}{K`{c}}}{{`{Hn{Hh{}{{Ib{{Kb{f}}}}}}}}}Ad}{b{{b{h}}}}00000{{{b{{Kd{c}}}}}{{n{{b{l}}}}}Ad}{{{b{Fb}}}{{n{{b{l}}}}}}`{{{b{{Kf{c}}}}}{{Kh{c}}}Ad}{{{b{{Kj{c}}}}}{{Kh{c}}}Ad}{{{b{{Kl{c}}}}}{{Kh{c}}}Ad}{{{b{{Kn{c}}}}}{{Kh{c}}}Ad}``{{{b{{Kn{c}}}}}CdAd}{b{{b{c}}}{}}00000000000000000000000{{{b{Af}}}{{b{Afc}}}{}}00000000000000000000000{{{L`{c}}}Fb{{B`{An}}}}{{{Lb{c}}}Fb{{B`{An}}}}{{{Ld{c}}}Fb{{B`{An}}}}{{{Lf{ce}}}Fb{{B`{Cd}}}{{B`{Cd}}}}{{{Lh{ceg}}}Fb{{B`{Ch}}}{{B`{Ch}}}{{B`{Ch}}}}{{{Lj{ce}}}Fb{{B`{An}}}{{B`{Bb}}}}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{Bh{k}}}{{n{c}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Kd{c}}}}}{{n{{b{h}}}}}Ad}{{{b{Fb}}}{{n{{b{h}}}}}}{{{b{{N`{c}}}}}{{N`{c}}}Ad}{{{b{{Nb{c}}}}}{{Nb{c}}}Ad}{{{b{{K`{c}}}}}{{K`{c}}}{BdAd}}{{{b{{Kf{c}}}}}{{Kf{c}}}{BdAd}}{{{b{{Kd{c}}}}}{{Kd{c}}}{BdAd}}{{{b{{Nd{c}}}}}{{Nd{c}}}{BdAd}}{{{b{{Kj{c}}}}}{{Kj{c}}}{BdAd}}{{{b{{Kl{c}}}}}{{Kl{c}}}{BdAd}}{{{b{{Kn{c}}}}}{{Kn{c}}}{BdAd}}{{{b{{Nf{c}}}}}{{Nf{c}}}{BdAd}}{{{b{{Nh{c}}}}}{{Nh{c}}}{BdAd}}{{{b{{Nj{c}}}}}{{Nj{c}}}{AdBd}}{{{b{{Nl{c}}}}}{{Nl{c}}}{AdBd}}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{{L`{c}}}}}{{L`{c}}}Bd}{{{b{{Lb{c}}}}}{{Lb{c}}}Bd}{{{b{{Ld{c}}}}}{{Ld{c}}}Bd}{{{b{{Lf{ce}}}}}{{Lf{ce}}}BdBd}{{{b{{Lh{ceg}}}}}{{Lh{ceg}}}BdBdBd}{{{b{{Lj{ce}}}}}{{Lj{ce}}}BdBd}{{{b{Fb}}}Fb}{{b{b{Afc}}}f{}}000000000000000000000{bf}000000000000000000000{{{b{{N`{c}}}}{b{{N`{c}}}}}ObAd}{{{b{{Nb{c}}}}{b{{Nb{c}}}}}ObAd}{{{b{{Kl{c}}}}}{{b{Od}}}Ad}{{b{b{c}}}Ob{}}0{{{Of{c}}g}{{Cl{ce}}}{}{hOh}{{On{e}{{Oj{Ol}}}}}}{{{b{{Kj{c}}}}}{{b{{A@`{c}}}}}Ad}{{}A@b}{{{b{A@b}}c}{{Cl{{A@d{eFbc}}A@f}}}Jf{HnI`A@h}}{Ch{{b{c}}}{}}00000000000000000000000{Ch{{b{Afc}}}{}}00000000000000000000000{{{b{{Kd{c}}}}}{{b{Cj}}}Ad}{{{b{Fb}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0000{c{{Cl{{Kf{e}}}}}CnAd}11{c{{Cl{{Nd{e}}}}}CnAd}{c{{Cl{{Kj{e}}}}}CnAd}3{c{{Cl{{Kl{e}}}}}CnAd}4{c{{Cl{{Kn{e}}}}}CnAd}55{c{{Cl{{Nf{e}}}}}CnAd}{c{{Cl{{Nh{e}}}}}CnAd}7777{c{{Cl{Nn}}}Cn}88888888{c{{Cl{Fb}}}Cn}9{Chf}00000000000000000000000{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}}{{Hj{Mn}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}0{{{b{{Nd{c}}}}}{{`{{Mn{}{{Ml{{El{{A@j{c}}{A@l{c}}}}}}}}}}}Ad}{{{b{{N`{c}}}}{b{{N`{c}}}}}DbAd}{{{b{{Nb{c}}}}{b{{Nb{c}}}}}DbAd}{{{b{{Kf{c}}}}{b{{Kf{c}}}}}Db{MdAd}}{{{b{{Nd{c}}}}{b{{Nd{c}}}}}Db{MdAd}}{{{b{{Kj{c}}}}{b{{Kj{c}}}}}Db{MdAd}}{{{b{{Kl{c}}}}{b{{Kl{c}}}}}Db{MdAd}}{{{b{{Kn{c}}}}{b{{Kn{c}}}}}Db{MdAd}}{{{b{{Nf{c}}}}{b{{Nf{c}}}}}Db{MdAd}}{{{b{{Nh{c}}}}{b{{Nh{c}}}}}Db{MdAd}}{{{b{{Nj{c}}}}{b{{Nj{c}}}}}Db{AdMd}}{{{b{{Nl{c}}}}{b{{Nl{c}}}}}Db{AdMd}}{{{b{Nn}}{b{Nn}}}Db}{{b{b{c}}}Db{}}00000000000000000000000000000000000000000000000`{{{L`{c}}}{{Cl{eFb}}}{{B`{An}}}{}}{{{Lb{c}}}{{Cl{eFb}}}{{B`{An}}}{}}{{{Ld{c}}}{{Cl{eFb}}}{{B`{An}}}{}}{{{Lf{ce}}}{{Cl{gFb}}}{{B`{Cd}}}{{B`{Cd}}}{}}{{{Lh{ceg}}}{{Cl{iFb}}}{{B`{Ch}}}{{B`{Ch}}}{{B`{Ch}}}{}}{{{Lj{ce}}}{{Cl{gFb}}}{{B`{An}}}{{B`{Bb}}}{}}`{{{b{{N`{c}}}}{b{AfEb}}}EhAd}0{{{b{{Nb{c}}}}{b{AfEb}}}EhAd}0{{{b{{K`{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kf{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kd{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kd{c}}}}{b{AfEb}}}EhAd}{{{b{{Nd{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kj{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kl{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Kn{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Nf{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Nh{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{Nj{c}}}}{b{AfEb}}}Eh{AdEf}}{{{b{{Nl{c}}}}{b{AfEb}}}Eh{AdEf}}{{{b{Nn}}{b{AfEb}}}Eh}{{{b{A@b}}{b{AfEb}}}Eh}{{{b{O`}}{b{AfEb}}}Eh}{{{b{{L`{c}}}}{b{AfEb}}}EhEf}{{{b{{Lb{c}}}}{b{AfEb}}}EhEf}{{{b{{Ld{c}}}}{b{AfEb}}}EhEf}{{{b{{Lf{ce}}}}{b{AfEb}}}EhEfEf}{{{b{{Lh{ceg}}}}{b{AfEb}}}EhEfEfEf}{{{b{{Lj{ce}}}}{b{AfEb}}}EhEfEf}{{{b{Fb}}{b{AfEb}}}Eh}0{cc{}}{Ch{{N`{c}}}Ad}1{{{A@n{c}}}{{N`{c}}}Ad}{{{Kh{c}}}{{Nb{c}}}Ad}{Ch{{Nb{c}}}Ad}44{{{Kf{c}}}{{K`{c}}}Ad}555{{{Nd{c}}}{{Kj{c}}}Ad}666{{{Nd{c}}}{{Nf{c}}}Ad}777{{{Nd{c}}}{{Nj{c}}}Ad}8{{{Kl{c}}}{{Nl{c}}}Ad}999999999{AA`Fb}{{{El{AnBb}}}Fb};`{b{{AAb{{Kf{c}}}}}Ad}{b{{AAb{{Nd{c}}}}}Ad}{b{{AAb{{Kj{c}}}}}Ad}{b{{AAb{{Kl{c}}}}}Ad}{b{{AAb{{Nj{c}}}}}Ad}{b{{AAb{{Nl{c}}}}}Ad}{{bb}{{Kf{c}}}Ad}{{bb}{{Nd{c}}}Ad}{{bb}{{Kj{c}}}Ad}{{bb}{{Kl{c}}}Ad}{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}Aa}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}{{B`{{Nb{e}}}}HnI`}}{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}Aa}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}{{ABd{Ch}}Hn}}{{{b{c}}{b{e}}}Cd{GdGf}Gh}0{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}Aa}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}{{B`{{N`{e}}}}HnI`}}23322{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}{ABf{e}}}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}}4433{{{b{{N`{c}}}}{b{Afe}}}fAdGj}{{{b{{Nb{c}}}}{b{Afe}}}fAdGj}{{{b{{Kf{c}}}}}{{A@n{c}}}Ad}{{{b{{Nd{c}}}}}{{Kh{c}}}Ad}{{{b{{Kj{c}}}}}ABhAd}{{{b{{Kn{c}}}}}{{ABf{c}}}Ad}{{{b{{Nf{c}}}}}{{Kh{c}}}Ad}`{{{b{{Kf{c}}}}}{{b{{ABj{c}}}}}Ad}{{{b{{Nd{c}}}}}{{b{{ABj{c}}}}}Ad}{{{b{{Nf{c}}}}}{{b{{ABj{c}}}}}Ad}{{{b{{K`{c}}}}}CdAd}{{{b{{Kf{c}}}}}CdAd}{{{b{{Nd{c}}}}}CdAd}{{{b{{Kj{c}}}}}CdAd}{{{b{{Kl{c}}}}}CdAd}{{{b{{Nf{c}}}}}CdAd}{{{b{{Nj{c}}}}}CdAd}{{{b{{Nl{c}}}}}CdAd}```{{{b{{Kn{c}}}}}CdAd}`{{}Ch}00000000000000000000000{cFbGl}{{}c{}}00000000000000000000000{{O`c}Fb{}}{{{L`{c}}e}Fb{{B`{An}}}{}}{{{Lb{c}}e}Fb{{B`{An}}}{}}{{{Ld{c}}e}Fb{{B`{An}}}{}}{{{Lf{ce}}g}Fb{{B`{Cd}}}{{B`{Cd}}}{}}{{{Lh{ceg}}i}Fb{{B`{Ch}}}{{B`{Ch}}}{{B`{Ch}}}{}}{{{Lj{ce}}g}Fb{{B`{An}}}{{B`{Bb}}}{}}{{{Of{c}}}eHn{}}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}}Db{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}0{{{b{{Nd{c}}}}}DbAd}{{{b{{Of{c}}}}}Db{}}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}}e{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}``{{}{{Cl{HbHd}}}}00000000000000000000000{{{b{{Kf{c}}}}}{{b{{Ab{c}}}}}Ad}``{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}}Ch{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}{{{b{{Nd{c}}}}}ChAd}`{{{Of{c}}g}{{Of{e}}}{}{}{Hn{If{c}{{Ib{e}}}}}}`{{{b{{Nd{c}}}}}{{b{{ABl{c}}}}}Ad}{{{Kf{c}}{n{{Nd{c}}}}{n{{Kl{c}}}}{n{ABn}}}{{K`{c}}}Ad}{{{Ab{c}}{AC`{c}}}{{Cl{{Kf{c}}{Kd{c}}}}}Ad}{{{ABj{c}}{A@`{c}}}{{Nd{c}}}Ad}{{{ABj{c}}Od}{{Kl{c}}}Ad}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}Ch}{{n{c}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}0{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}Ch}{{n{k}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}Ch}{{n{{El{kg}}}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Nd{c}}}}}CdAd}{{{b{{Nf{c}}}}}CdAd}`{{{b{{N`{c}}}}{b{{N`{c}}}}}{{n{Ob}}}Ad}{{{b{{Nb{c}}}}{b{{Nb{c}}}}}{{n{Ob}}}Ad}{{{b{{Nd{c}}}}}{{b{{A@`{c}}}}}Ad}{{{b{{Kf{c}}}}}ABhAd}{{{b{{Nd{c}}}}}ABhAd}{{{b{{Kl{c}}}}}ABhAd}`{b}00000000000000000000000{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{b{c}}}{{n{g}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}}0{{{b{{Kn{c}}}}}{{b{{ACb{c}}}}}Ad}{{{b{{Kf{c}}}}}{{b{{AC`{c}}}}}Ad}`{{{Of{c}}}cHn}```{{{b{{Kf{c}}}}e}ClAdJj}{{{b{{Nd{c}}}}e}ClAdJj}{{{b{{Kj{c}}}}e}ClAdJj}{{{b{{Kl{c}}}}e}ClAdJj}{{{b{{Kn{c}}}}e}ClAdJj}{{{b{{Nf{c}}}}e}ClAdJj}{{{b{{Nh{c}}}}e}ClAdJj}{{{b{Nn}}c}ClJj}{{{b{Fb}}c}ClJj}{{{b{{Nd{c}}}}}CdAd}{{{b{{Kj{c}}}}}CdAd}{{{b{{Nf{c}}}}}CdAd}```{{{b{{Kd{c}}}}}{{n{{b{h}}}}}Ad}{{{b{Fb}}}{{n{{b{h}}}}}}{{{b{Fb}}}Bb}`{{{b{{Ij{}{{AAd{c}}{AAf{g}}{AAh{i}}{AAj{k}}{AAl{m}}{AAn{o}}}}}}Ch}{{Hl{{Hj{Hh}}}}}{{AB`{}{{Ml{{Of{{Kf{e}}}}}}}}ABbHn}Ad{{AB`{}{{Ml{{Of{{Nd{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nj{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Kl{e}}}}}}}}ABbHn}{{AB`{}{{Ml{{Of{{Nl{e}}}}}}}}ABbHn}}00000000000{{{b{ACd}}}Cd}{bc{}}000000000000000000000{bAn}000{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{b{c}}}{{n{k}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Nd{c}}}}{b{{A@j{c}}}}}{{n{{A@l{c}}}}}Ad}{{{b{{Kn{c}}}}}{{b{{A@l{c}}}}}Ad}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{Bh{k}}}{{n{k}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Nd{c}}}}{Bh{{A@l{c}}}}}{{n{{A@j{c}}}}}Ad}{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{Bh{k}}}{{n{{El{kg}}}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}0{{{b{{Mb{}{{Ll{c}}{Ln{e}}{M`{g}}}}}}{b{i}}{b{c}}}{{n{{El{kg}}}}}{BdEfMdMfMhJhMjHnI`}{{Mn{}{{Ml{c}}}}}{BdEfMdMfJhMjHnI`}{}{}}{c{{Cl{e}}}{}{}}00000000000000000000000{{}{{Cl{c}}}{}}00000000000000000000000{{{Of{c}}}{{Cl{c{Of{c}}}}}{}}{bJl}00000000000000000000000```{{}c{}}00000000000000000000000{{{Of{c}}i}{{Cl{ce}}}{}{hOh}{{On{e}{{Oj{Ol}}}}}{{If{}{{Ib{g}}}}}}{{{Of{c}}ACf}{{n{c}}}Hn}``````````````````````{{bd}f}0{{{b{{ACh{eg}}}}{K`{c}}}{{Kb{f}}}Ad{{Jn{c}}HnI`}{HnI`}}{{{b{Af{ACh{ce}}}}}{{b{Afe}}}{}{}}{{{b{{ACh{ce}}}}}{{b{e}}}{}{}}`{{{b{{ACh{eg}}}}}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}}{{{b{{ACh{ce}}}}}{{Hl{{Hj{Hh}}}}}{J`HnI`}{HnI`}}{{{b{ACj}}}{{Hl{{Hj{Hh}}}}}}{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{{ACh{ce}}}}}{{ACh{ce}}}BdBd}{{{b{ACj}}}ACj}{{b{b{Afc}}}f{}}0{bf}0{ACl{{`{{Hh{}{{Ib{{Kb{f}}}}}}Hn}}}}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}0{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}{{ABd{Ch}}Hn}}{Ch{{Hl{{Hj{Hh}}}}}}0{{}ACj}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{Chf}0`{{{b{{ACh{ce}}}}{b{AfEb}}}EhEfEf}{{{b{ACj}}{b{AfEb}}}Eh}{cc{}}0`{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{Ij{c}}HnI`}{HnI`}{{B`{{Nb{c}}}}HnI`}}{{{b{{ACh{eg}}}}{ACn{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{Ij{c}}HnI`}{HnI`}{{ABd{Ch}}Hn}}{{{b{{ACh{eg}}}}{ADb{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}iCdCh}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}{{B`{{ADd{c}}}}HnI`}}{{{b{{ACh{ce}}}}}{{Hl{{Hj{Hh}}}}}{ADfI`}{HnI`}}{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{Ij{c}}HnI`}{HnI`}{{B`{{N`{c}}}}HnI`}}5{{{b{{ACh{gi}}}}{ADh{ce}}}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}{{ADl{ce}}I`}{HnI`}}8866{{{b{{ACh{eg}}}}ADn}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad{{Ij{c}}HnI`}{HnI`}}{{{b{{ACh{eg}}}}{AE`{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}{{{b{{ACh{eg}}}}{AEb{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AD`{c}}I`}{HnI`}}<<::{{{b{{ACh{ce}}}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}{AEh{Il{AEd}}}{BdAEjHnI`}}{{{b{ACj}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}}{{}Ch}0{{{b{{ACh{ce}}}}}{{b{c}}}{}{}}{{{b{Af{ACh{ce}}}}}{{b{Afc}}}{}{}}{{{b{Af{ACh{gi}}}}AEl{AEn{Ch}}Cd}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}{{AF`{ce}}HnI`}{HnI`}}{{}c{}}0{{}{{Cl{HbHd}}}}0{{{b{{ACh{ce}}}}}{{b{AFb}}}AFd{}}{{{b{ACj}}}{{b{AFb}}}}{{ce}{{ACh{ce}}}{}{}}`{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}{{ABd{Ch}}Hn}}`{b}0{b{{Hj{AFf}}}}0{{{b{{Jb{}{{AFh{c}}{AFj{e}}}}}}}{{`{{Hh{}{{Ib{{Kb{e}}}}}}Hn}}}AClACl}{{{b{{ACh{ce}}}}}{{Kb{g}}}{JbHn}{HnI`}{}}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}0{ACl{{`{HhHn}}}}{{{b{Af{ACh{gi}}}}Ch}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}{{AF`{ce}}HnI`}{HnI`}}```{{{b{{ACh{eg}}}}}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}}{bc{}}0{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}0{{{b{Il}}{b{{AEf{c}}}}}{{Hl{{Hj{Hh}}}}}Ad}{{b{b{{AEf{c}}}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{{ACh{eg}}}}i}{{Hl{{Hj{Hh}}}}}Ad{{In{c}}HnI`}{HnI`}{{B`{{Nb{c}}}}HnI`}}{{}c{}}0{{{b{{Jb{}{{AFh{c}}{AFj{e}}}}}}}{{`{{Hh{}{{Ib{{Kb{c}}}}}}Hn}}}AClACl}={{}f}0````{{bd}f}0{{{b{{AFl{ceg}}}}{K`{c}}}{{Kb{f}}}AdJb{{AFn{c}}}}{{{b{{AFl{ceg}}}}}{{b{e}}}Ad{}{}}{{{b{{AFl{ceg}}}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}}{{Hl{{Hj{Hh}}}}}Ad{JbAFdHnI`}{HnI`}}{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{AG`{ceg}}}{{Kb{{AFl{ceg}}}}}Ad{AGbJbAFd}{{AFn{c}}}}{{cg}{{AG`{ecg}}}{JbAGbAFd}Ad{{AFn{e}}}}{{{b{{AFl{ceg}}}}}{{AFl{ceg}}}Ad{}{}}{{{b{{AGd{ceg}}}}}{{AGd{ceg}}}Ad{}{}}{{b{b{Afc}}}f{}}0{bf}0{{AGfe}{{Cl{{AGh{ce}}AGj}}}Ad{{AFn{c}}}}{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{ABd{Ch}}Hn}}{{{b{AGl}}e}{{Kb{{AFl{c{AGn{c}}e}}}}}Ad{{AFn{c}}}}{{{b{AfAH`}}e}{{Kb{{AFl{c{AGn{c}}e}}}}}Ad{{AFn{c}}}}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{{{AG`{ceg}}}{{AG`{ceg}}}{}{}{}}0{Chf}00{{{b{{AFl{ceg}}}}{b{AfEb}}}EhAdEfEf}{{{b{{AGd{ceg}}}}{b{AfEb}}}EhAdEfEf}{cc{}}00{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{{AFn{c}}}{{B`{{Nb{c}}}}HnI`}}{{{b{{AFl{ceg}}}}{ACn{c}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{{AFn{c}}}{{ABd{Ch}}Hn}}{{{b{{AFl{ceg}}}}{ADb{c}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}iCdCh}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{B`{{ADd{c}}}}HnI`}}1{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{{AFn{c}}}{{B`{{N`{c}}}}HnI`}}4{{{b{{AFl{ceg}}}}{ADh{ci}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{ADj{c}}}}7755{{{b{{AFl{ceg}}}}ADn}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}AdJb{{AFn{c}}}}{{{b{{AFl{ceg}}}}{AE`{c}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{{{b{{AFl{ceg}}}}{AEb{c}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}};;99{{}Ch}00{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{{AFl{ceg}}}}}{{b{AFb}}}AdAFd{}}{{ce}{{AG`{gce}}}{}{}{}}{{{b{AGl}}e}{{Kb{{AFl{c{AGn{c}}e}}}}}Ad{{AFn{c}}}}{{{b{AfAH`}}e}{{Kb{{AFl{c{AGn{c}}e}}}}}Ad{{AFn{c}}}}{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{ABd{Ch}}Hn}}{b}00{b{{Hj{AFf}}}}{{{b{{AFl{ceg}}}}}{{Kb{i}}}Ad{JbHnI`}{HnI`}{}}{{{b{{AFl{c{AGn{c}}e}}}}}{{Kb{f}}}Ad{{AFn{c}}}}{{{b{{AFl{ceg}}}}}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}}{bc{}}0{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00{{b{b{{AEf{c}}}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{{AFl{ceg}}}}i}{{Hl{{Hj{Hh}}}}}AdJb{HnI`}{{B`{{Nb{c}}}}HnI`}}{{}c{}}00{{{AG`{ceg}}ACf}{{AG`{ceg}}}{}{}{}}{{{AG`{ceg}}Ch}{{AG`{ceg}}}{}{}{}}100111000{{{AG`{ceg}}AHb}{{AG`{ceg}}}{}{}{}}02<``{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{Ch{{Hl{{Hj{Hh}}}}}}{{{b{AGl}}e}{{Kb{{AHd{ce}}}}}Ad{{AFn{c}}}}{{{b{AfAH`}}e}{{Kb{{AHd{ce}}}}}Ad{{AFn{c}}}}{{{b{{AHd{AEdc}}}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}{{AFn{AEd}}AEj}}214{{{b{{AHd{ce}}}}}{{Kb{f}}}Ad{{AFn{c}}}}{{}f}00000000``````{{AGfe}{{Cl{{AGh{ce}}AGj}}}Ad{{AFn{c}}}}{{AGfe}{{Cl{{AHf{ce}}AGj}}}Ad{{AFn{c}}}}187{{{b{{AHf{AEdc}}}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}{{AFn{AEd}}AEj}}`9``3````````````{{{b{AfAHh}}}{{`{{Hh{}{{Ib{{Kb{Ch}}}}}}Hn}}}}{{{b{AfAHj}}}{{Hl{{Hj{Hh}}}}}}{{{b{AfAHj}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}``{{{b{AfAHl}}{Nb{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHn}}{ACn{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHl}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{{{b{AfAHn}}{ADb{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHn}}}{{Hl{{Hj{Hh}}}}}}4{{{b{AfAHj}}eCdCh}{{Hl{{Hj{Hh}}}}}Ad{{B`{{ADd{c}}}}HnI`}}{{{b{AfAI`}}}{{Hl{{Hj{Hh}}}}}}{{{b{AfAHl}}{N`{c}}}{{Hl{{Hj{Hh}}}}}Ad}5{{{b{AfAIb}}{ADh{ce}}}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}}8866{{{b{AfAHn}}ADn}{{Hl{{Hj{Hh}}}}}}{{{b{AfAHl}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHn}}{AE`{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AfAHn}}{AEb{c}}}{{Hl{{Hj{Hh}}}}}Ad}<<::{{{b{AfAId}}{Nd{c}}}{{`{Hn{Hh{}{{Ib{{Kb{f}}}}}}}}}Ad}{{{b{AfAId}}{Kf{c}}}{{`{Hn{Hh{}{{Ib{{Kb{f}}}}}}}}}Ad}{{{b{AfAId}}{Kl{c}}{n{ABn}}}{{`{Hn{Hh{}{{Ib{{Kb{f}}}}}}}}}Ad}`{{{b{AfAHj}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}``{{{b{AfAHj}}}{{Hl{{Hj{Hh}}}}}}{{{b{AfAIf}}{b{{AIh{{Nj{c}}}}}}}{{`{{Hh{}{{Ib{{Kb{f}}}}}}Hn}}}Ad}{{{b{AfAHj}}e}{{Hl{{Hj{Hh}}}}}Ad{{B`{{Nb{c}}}}HnI`}}```````````````````{{bd}f}0{{{b{Af{AIj{c}}}}}{{Kb{Ch}}}{AHhHnI`}}{{{b{Af{AIj{e}}}}}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}}{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{b{AIl}}}AIl}{{{b{{AIn{c}}}}}{{AIn{c}}}Bd}{{b{b{Afc}}}f{}}0{bf}0{{{AIj{c}}}{{Kb{f}}}ACl}{{{b{Af{AIj{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}{{ABd{Ch}}Hn}}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{Chf}00{{{b{AIl}}{b{AIl}}}Db}{{b{b{c}}}Db{}}000{{{b{{AIn{c}}}}AIl}f{}}0000000000{{{b{AIl}}{b{AfEb}}}Eh}{{{b{{AIn{c}}}}{b{AfEb}}}EhEf}{{{b{{AIj{c}}}}{b{AfEb}}}EhEf}{cc{}}0{Fjc{}}{c{{AIn{c}}}{}}2{Flc{}}0{ceFn{}}{ceG`{}}2{{{b{Af{AIj{e}}}}{Nb{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AHl{c}}}}{{{b{Af{AIj{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{{AHl{c}}}{{ABd{Ch}}Hn}}{{{b{{AIn{c}}}}}{{Hl{{Hj{Hh}}}}}{AGbI`}}2{{{b{Af{AIj{e}}}}gCdCh}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}{{B`{{ADd{c}}}}HnI`}}{{{b{Af{AIj{e}}}}{N`{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AHl{c}}}}34433{{{b{{AIn{c}}}}}{{n{AJ`}}}AJb}{{{b{Af{AIj{e}}}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad{{AHl{c}}}}6655{{}Ch}00{{{b{Af{AIj{e}}}}{Nd{c}}}{{Kb{f}}}Ad{{AId{c}}HnI`}}{{{b{Af{AIj{e}}}}{Kf{c}}}{{Kb{f}}}Ad{{AId{c}}HnI`}}{{{b{Af{AIj{e}}}}{Kl{c}}{n{ABn}}}{{Kb{f}}}Ad{{AId{c}}HnI`}}{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{Af{AIj{c}}}}}{{Hl{{Hj{Hh}}}}}{AJdHnI`}}{{{b{{AIn{c}}}}}{{b{AFb}}}AFd}{{{b{{AIn{c}}}}}f{}}00000{{{b{Af{AIj{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}{{ABd{Ch}}Hn}}{b}00{{{b{{AIn{c}}}}{b{Afe}}}{{Hl{{Hj{Hh}}}}}{AGbI`}{}}{{{b{{AIn{c}}}}}{{Kb{e}}}Jb{}}{{{AIj{c}}}{{`{HhHn}}}ACl}{{{b{Af{AIn{c}}}}AJ`}fAJb}{{{b{Af{AIj{e}}}}}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}}{bc{}}0{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00{{{b{Af{AIj{e}}}}{b{{AIh{{Nj{c}}}}}}}{{Kb{f}}}Ad{{AIf{c}}HnI`}}{{{b{Af{AIj{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{{AHj{c}}HnI`}{{B`{{Nb{c}}}}HnI`}}{{}c{}}00:````{{{b{Af{AJf{c}}}}}{{Kb{Ch}}}{AJhHn}}{{{b{Af{AJf{e}}}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}}{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{AJf{{AK`{{AJl{c}}}}}}}{{Kb{f}}}Ad}{{{AJf{{AKb{{AJl{c}}}}}}}{{Kb{f}}}Ad}{{{b{Af{AJf{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}{{ABd{Ch}}Hn}}{{{b{AGl}}}{{Cl{{AGn{c}}AKd}}}Ad}{{{b{AfAH`}}}{{Cl{{AGn{c}}AKd}}}Ad}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{Chf}0{{{b{Af{AJf{c}}}}}fAJh}1{{{b{{AJl{c}}}}{b{AfEb}}}EhAd}{{{b{{AGn{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{AJf{c}}}}{b{AfEb}}}Eh{EfAJh}}{cc{}}00{{{b{Af{AJf{e}}}}{Nb{c}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}HnI`}}{{{b{Af{AJf{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}HnI`}{{ABd{Ch}}Hn}}1{{{b{Af{AJf{e}}}}gCdCh}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}{{B`{{ADd{c}}}}HnI`}}{{{b{Af{AJf{e}}}}{N`{c}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}HnI`}}23322{{{b{Af{AJf{e}}}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}HnI`}}4433{{}Ch}00{{{b{Af{AJf{{AKb{{AJl{c}}}}}}}}{Nd{c}}}{{Kb{f}}}Ad}{{{b{Af{AJf{{AKb{{AJl{c}}}}}}}}{Kf{c}}}{{Kb{f}}}Ad}{{{b{Af{AJf{{AKb{{AJl{c}}}}}}}}{Kl{c}}{n{ABn}}}{{Kb{f}}}Ad}{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{{AGn{c}}}}}{{b{AFb}}}Ad}{{{b{AGl}}}{{Cl{{AGn{c}}AKd}}}Ad}{{{b{AfAH`}}}{{Cl{{AGn{c}}AKd}}}Ad}{{{b{Af{AJf{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}{{ABd{Ch}}Hn}}{b}00{{{b{{AGn{c}}}}}{{Kb{e}}}Ad{}}{{{b{AfAJh}}}f}{{{AJf{{AK`{{AJl{c}}}}}}}{{`{HhHn}}}Ad}{{{AJf{{AKb{{AJl{c}}}}}}}{{`{HhHn}}}Ad}{{{b{{AGn{c}}}}}{{Cl{fAKd}}}Ad}{{{b{Af{AJf{e}}}}}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}}{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00{{{b{Af{AJf{c}}}}{b{{AIh{{Nj{e}}}}}}}{{Kb{f}}}{AJhHn}Ad}{{{b{Af{AJf{e}}}}g}{{Hl{{Hj{Hh}}}}}Ad{AJh{AJn{}{{AJj{{AJl{c}}}}}}Hn}{{B`{{Nb{c}}}}HnI`}}{{}c{}}00;``{{bd}f}{{{b{AfAKf}}}{{Kb{Ch}}}}{{{b{AfAKf}}}{{Hl{{Hj{Hh}}}}}}{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{AKh}}}AKh}{{b{b{Afc}}}f{}}{bf}{AKf{{Kb{f}}}}{{{b{AfAKf}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{{}AKh}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{Chf}0{{{b{AKh}}{b{AfEb}}}Eh}{cc{}}0{{{b{AfAKf}}{Nb{c}}}{{Hl{{Hj{Hh}}}}}Ad}80{{{b{AfAKf}}eCdCh}{{Hl{{Hj{Hh}}}}}Ad{{B`{{ADd{c}}}}HnI`}}{{{b{AfAKf}}{N`{c}}}{{Hl{{Hj{Hh}}}}}Ad}:22::{{{b{AfAKf}}{ABf{c}}}{{Hl{{Hj{Hh}}}}}Ad}33;;{{}Ch}0{{{b{AfAKf}}{Nd{c}}}{{Kb{f}}}Ad}{{{b{AfAKf}}{Kf{c}}}{{Kb{f}}}Ad}{{{b{AfAKf}}{Kl{c}}{n{ABn}}}{{Kb{f}}}Ad}{{}c{}}0{{}{{Cl{HbHd}}}}0{{{b{AKh}}}{{b{AFb}}}}{{{b{AfAKf}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{b}0{{{b{AKh}}}{{Kb{c}}}{}}{AKf{{`{HhHn}}}}{{{b{AfAKf}}}{{Hl{{Hj{Hh}}}}}}`{bc{}}{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}0{{{b{AfAKf}}{b{{AIh{{Nj{c}}}}}}}{{Kb{f}}}Ad}{{{b{AfAKf}}e}{{Hl{{Hj{Hh}}}}}Ad{{B`{{Nb{c}}}}HnI`}}==8`````````{{bd}f}{{{b{AKj}}{K`{AEd}}}{{Kb{f}}}}{{{b{Af{AKl{c}}}}}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}}{{{b{AKj}}}{{Hl{{Hj{Hh}}}}}}0{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{b{AKj}}}AKj}{{b{b{Afc}}}f{}}{bf}{{{AKl{c}}}{{Kb{f}}}ACl}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{Af{AKl{c}}}}e}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}{{ABd{Ch}}Hn}}{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{Ch{{Hl{{Hj{Hh}}}}}}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{Chf}00{{{b{AKj}}{b{AfEb}}}Eh}{cc{}}00{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{B`{{Nb{AEd}}}}HnI`}}8{{{b{Af{AKl{c}}}}eCdCh}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}{{B`{{ADd{AEd}}}}HnI`}}{{{b{AKj}}cCdCh}{{Hl{{Hj{Hh}}}}}{{B`{{ADd{AEd}}}}HnI`}}{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{B`{{N`{AEd}}}}HnI`}};33;;{{{b{AKj}}{ABf{AEd}}}{{Hl{{Hj{Hh}}}}}}44<<{{{b{AKj}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}}{{}Ch}00{{{b{Af{AKl{c}}}}{Nd{AEd}}}{{Kb{f}}}{{AId{AEd}}HnI`}}{{{b{Af{AKl{c}}}}{Kf{AEd}}}{{Kb{f}}}{{AId{AEd}}HnI`}}{{{b{Af{AKl{c}}}}{Kl{AEd}}{n{ABn}}}{{Kb{f}}}{{AId{AEd}}HnI`}}{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{AKj}}}{{b{AFb}}}}{{{b{Af{AKl{c}}}}e}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}{{ABd{Ch}}Hn}}{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{b}00{b{{Hj{AFf}}}}{{{b{AKj}}}{{Kb{c}}}{}}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{{{AKl{c}}}{{`{HhHn}}}ACl}{{{b{Af{AKn{AKj}}}}}{{Hl{{Hj{Hh}}}}}}{{{b{Af{AKl{c}}}}}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}}{{{b{AKj}}}{{Hl{{Hj{Hh}}}}}}{bc{}}{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00{{b{b{{AEf{c}}}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{Af{AKl{c}}}}e}{{Hl{{Hj{Hh}}}}}{{AHj{AEd}}Hn}{{B`{{Nb{AEd}}}}HnI`}}{{{b{AKj}}c}{{Hl{{Hj{Hh}}}}}{{B`{{Nb{AEd}}}}HnI`}}{{}c{}}00=``````{{bd}f}{{{b{AJ`}}}Cd}{b{{b{c}}}{}}{{{b{Af}}}{{b{Afc}}}{}}{{{b{AJ`}}}AJ`}{{b{b{Afc}}}f{}}{bf}{{}AJ`}{Ch{{b{c}}}{}}{Ch{{b{Afc}}}{}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{Chf}{{{b{AJ`}}{b{AfEb}}}Eh}{cc{}}{{{b{{AGb{}{{AL`{c}}}}}}}{{Hl{{Hj{Hh}}}}}{AEjHn}}{{{b{AJb}}}{{n{AJ`}}}}{{}Ch}{{{b{AJ`}}}ACf}{{}c{}}{{}{{Cl{HbHd}}}}{{{b{AfAJd}}}{{Hl{{Hj{Hh}}}}}}{{{b{AJ`}}}ALb}4>{b}{{{b{{AGb{}{{AL`{c}}}}}}{b{Afc}}}{{Hl{{Hj{Hh}}}}}{AEjHn}}{{{b{AJ`}}}{{n{Cd}}}}{{{b{AfAJb}}AJ`}f}8{bc{}}{c{{Cl{e}}}{}{}}{{}{{Cl{c}}}{}}{bJl}{{{b{AJ`}}}{{Kb{f}}}}<{{AJ`Cd}AJ`}{{AJ`ACf}AJ`}{{AJ`ALb}AJ`}121````````````````````````````````{{bd}f}0000{{{b{Af{ALd{c}}}}}{{Kb{Ch}}}ALf}{{ALhAnALjCd}ALl}{{{b{ALl}}}{{n{{b{ALj}}}}}}{ALnALn}{{{b{AGj}}}{{b{h}}}}0{{{b{AGj}}}{{b{l}}}}{{{b{Af}}}{{`{{Hh{}{{Ib{{Kb{f}}}}}}Hn}}}}{{{b{Af}}}{{Kb{f}}}}0{{AM`{b{Af{AMd{AMb{b{Cj}}}}}}}{{b{Af{AMd{AMb{b{Cj}}}}}}}}{{{b{AfAMf}}c}{{AMh{An}}}{{AMj{AMb}}{AMl{AMb}}}}{{{b{Af{ALd{c}}}}}{{Hl{{Hj{Hh}}}}}ALf}{b{{b{c}}}{}}000000000{{{b{Af}}}{{b{Afc}}}{}}000000000{{{b{AfAMf}}c{b{Cj}}}{{AMh{An}}}{{ABd{Ch}}}}{{{b{Cj}}{b{Cj}}c}{{AMh{{El{AMfAn}}}}}AMn}{{ALne}{{Cl{{AGh{ce}}AGj}}}Ad{{AFn{c}}}}{{ALnACf}ALn}{{{b{AGj}}}AN`}{{{b{ALl}}}Cd}{{{b{Cj}}}{{Hl{{Hj{Hh}}}}}}{{}{{Hl{{Hj{Hh}}}}}}{{{b{ALl}}}ALl}{{{b{ANb}}}ANb}{{{b{ANd}}}ANd}{{{b{ALn}}}ALn}{{{b{ANf}}}ANf}{{b{b{Afc}}}f{}}0000{bf}0000{{{b{ALl}}{b{ALl}}}Ob}{{{ALd{c}}}{{Kb{f}}}ALf}{{b{b{c}}}Ob{}}{{ALne}{{Cl{{AHf{ce}}AGj}}}Ad{{AFn{c}}}}{ALn{{Cl{ANfAGj}}}}{{ALnACf}ALn}{{AGjc}AGj{GlHnI`}}{{{b{Af{ALd{c}}}}e}{{Hl{{Hj{Hh}}}}}ALf{{ABd{Ch}}Hn}}{{{b{Cj}}}{{Hl{{Hj{Hh}}}}}}0{{ALnANh}ALn}{{}AMf}{{}ANb}{{}ANd}{{}ALn}{{}ANj}{{}{{AEn{ALl}}}}{{{b{AGj}}}b}{Ch{{b{c}}}{}}000000{{{b{{ALd{c}}}}}{{b{e}}}{}{}}111{Ch{{b{Afc}}}{}}{{{b{AfAGj}}}{{b{Af}}}}111111{{{b{Af{ALd{c}}}}}{{b{Afe}}}{}{}}222{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}000000000{{}{{b{Cj}}}}00{AGj{{Cl{cAGj}}}{GlEfHnI`}}{{{b{AfAGj}}}{{n{{b{Afc}}}}}{GlEfHnI`}}{{{b{AGj}}}{{n{{b{c}}}}}{GlEfHnI`}}{Chf}{{{b{AfAGj}}}f}111111111{{{b{Cj}}}{{Hl{{Hj{Hh}}}}}}{{{b{ALl}}{b{ALl}}}Db}{{b{b{c}}}Db{}}000{{{ANn{}{{ANl{c}}}}e}{{Hl{{Hj{Hh}}}}}AO`{{AOb{c}}}}0{{{ANn{}{{ANl{c}}}}e}{{Hl{{Hj{AB`}}}}}AO`{{AOb{c}}}}000110111{{{b{AGj}}{b{AfEb}}}{{Cl{fEd}}}}0{{{b{ALl}}{b{AfEb}}}{{Cl{fEd}}}}0{{{b{AOd}}{b{AfEb}}}{{Cl{fEd}}}}{{{b{AMf}}{b{AfEb}}}Eh}{{{b{ANb}}{b{AfEb}}}Eh}{{{b{ANd}}{b{AfEb}}}Eh}{{{b{{ALd{c}}}}{b{AfEb}}}EhEf}{{{b{ANf}}{b{AfEb}}}Eh}{{{b{ANj}}{b{AfEb}}}Eh}{b{{AOf{AOd}}}}{Fjc{}}{cAGj{hHnI`}}{cc{}}000000{AOhALn}111{{{b{Cj}}}{{Cl{ALnc}}}{}}{{{b{Af{ALd{c}}}}{Nb{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{Af{ALd{c}}}}{ACn{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{Af{ALd{c}}}}e}{{Hl{{Hj{Hh}}}}}ALf{{ABd{Ch}}Hn}}{{{b{Af{ALd{c}}}}{ADb{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{ANf}}}{{Hl{{Hj{Hh}}}}}}{{{b{Af{ALd{c}}}}}{{Hl{{Hj{Hh}}}}}ALf}{b{{n{{b{Cj}}}}}}6{{{b{Af{ALd{c}}}}gCdCh}{{Hl{{Hj{Hh}}}}}ALfAd{{B`{{ADd{e}}}}HnI`}}2{{{b{Af{ALd{c}}}}{N`{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}6{{{b{Af{ALd{c}}}}{ADh{eg}}}{{Hl{{Hj{Hh}}}}}ALfAd{{ADj{e}}}}9977{{{b{ANf}}}{{n{AJ`}}}}{{{b{Af{ALd{c}}}}ADn}{{Hl{{Hj{Hh}}}}}ALf}{{{b{Af{ALd{c}}}}{ABf{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{Af{ALd{c}}}}{AE`{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}{{{b{Af{ALd{c}}}}{AEb{e}}}{{Hl{{Hj{Hh}}}}}ALfAd}>><<{{{b{AfAMf}}{Nb{c}}}{{AMh{An}}}Ad}{{ALnACf}ALn}``{{}Ch}000000000{{{b{Af{ALd{ANb}}}}{Nd{c}}}{{Kb{f}}}Ad}{{{b{Af{ALd{ANb}}}}{Kf{c}}}{{Kb{f}}}Ad}{{{b{Af{ALd{ANb}}}}AEl{AEn{Ch}}Cd}{{Hl{{Hj{Hh}}}}}}{{{b{Af{ALd{ANb}}}}{Kl{c}}{n{ABn}}}{{Kb{f}}}Ad}{{}c{}}000000000{{{b{AGj}}}Db}{{}{{Cl{HbHd}}}}000000000{{{b{Af{ALd{c}}}}g}{{AMh{{ABj{e}}}}}{}Ad{{B`{{Nb{e}}}}Hn}}{{{b{Af{ALd{c}}}}}{{Hl{{Hj{Hh}}}}}ALf}{{ALnAOj}ALn}{{{b{ANf}}}{{b{AFb}}}}{{ALnc}ALn{{AMn{}{{Ml{ALl}}}}}}2{cAGj{GlEfHnI`}}{{{b{ALl}}}{{b{Cj}}}}{cAGj{hHnI`}}{ALnALn}{b{{n{{b{Cj}}}}}}{{{b{ALl}}{b{ALl}}}{{n{Ob}}}}{{{b{Af{ALd{c}}}}e}{{Hl{{Hj{Hh}}}}}ALf{{ABd{Ch}}Hn}}{b}000000000{{ALn{AOl{AMb}}}ALn}{{{b{ANf}}}{{AOl{AMb}}}}{{{b{ALl}}}{{b{AOn}}}}{{{ANn{}{{ANl{c}}}}{b{Cj}}}{{Hl{{Hj{Hh}}}}}AO`}0{{{ANn{}{{ANl{c}}}}{b{Cj}}{b{AIh}}}{{Hl{{Hj{Hh}}}}}AO`}{{{b{ANf}}{b{AfANj}}}{{Hl{{Hj{Hh}}}}}}{{ALnAJ`}{{Cl{ALnAGj}}}}{{{b{Cj}}}B@`}{{AMf{b{Cj}}}B@`}{{{b{Cj}}}{{B@b{c}}}B@d}{{AMf{b{Cj}}}{{B@b{c}}}B@d}{{{b{ANf}}}{{Kb{{ALd{ANd}}}}}}{ALnALn}{b{{n{{b{Cj}}}}}}{{{ALd{c}}}{{`{HhHn}}}ALf}{{{b{AGj}}}{{b{h}}}}{{{b{AfALl}}}f}{{{b{Af{ALd{ANb}}}}Ch}{{Hl{{Hj{Hh}}}}}}{{{b{AfANf}}AJ`}f}{{ALnACf}ALn}{{{b{Af}}}{{Hl{{Hj{Hh}}}}}}{{{b{ALl}}}{{n{{b{Cj}}}}}}`{{{b{Af{ALd{c}}}}}{{Hl{{Hj{Hh}}}}}ALf}`{{{b{B@f}}}{{Hl{{Hj{Hh}}}}}}`{bc{}}0000{bAn}0{c{{Cl{e}}}{}{}}000000000{{}{{Cl{c}}}{}}000000000{bJl}000000000{{{b{Cj}}{b{Cj}}}{{Cl{ALlB@h}}}}{{{b{Af{ALd{ANb}}}}{b{{AIh{{Nj{c}}}}}}}{{Kb{f}}}Ad}{{{b{Af{ALd{ANb}}}}{b{Cj}}{B@j{{b{Cj}}}}ce}{{Kb{f}}}{{AMn{}{{Ml{{b{Cj}}}}}}}AMn}{{{b{ALl}}}AOj}{{{b{Af{ALd{c}}}}g}{{Hl{{Hj{Hh}}}}}ALfAd{{B`{{Nb{e}}}}HnI`}}{{}c{}}000000000{{{b{ANf}}}{{Kb{{ALd{ANb}}}}}}````{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{B@l}}}ALn}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{Chf}0{{{b{AfB@l}}}f}{{{b{B@l}}{b{AfEb}}}Eh}{cc{}}0{{}Ch}0{{}B@l}=={{}{{Cl{HbHd}}}}0{{{b{B@l}}}ANh}2{b}0{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}0{{}c{}}0`````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}000000000000000{{B@nB@n}c{}}{b{{b{h}}}}00000000000000000000000``````````{b{{b{c}}}{}}0000000000000000000000000000000000{{{b{Af}}}{{b{Afc}}}{}}0000000000000000000000000000000000{BA`B@n}{{{b{BAb}}}BAb}{{{b{BAd}}}BAd}{{{b{BAf}}}BAf}{{{b{B@n}}}B@n}{{{b{{ACn{c}}}}}{{ACn{c}}}{BdAd}}{{{b{{AE`{c}}}}}{{AE`{c}}}{BdAd}}{{{b{{BAh{c}}}}}{{BAh{c}}}{BdAd}}{{{b{{BAj{c}}}}}{{BAj{c}}}{BdAd}}{{{b{BAl}}}BAl}{{{b{BAn}}}BAn}{{{b{BB`}}}BB`}{{{b{BBb}}}BBb}{{{b{BBd}}}BBd}{{{b{BBf}}}BBf}{{{b{BBh}}}BBh}{{{b{Fd}}}Fd}{{b{b{Afc}}}f{}}000000000000000{bf}000000000000000{{{b{BAf}}{b{BAf}}}Ob}{{b{b{c}}}Ob{}}````{{}{{AEb{c}}}Ad}{c{{Cl{{A@d{eFdc}}A@f}}}Jf{HnI`A@h}}{Ch{{b{c}}}{}}0000000000000000000000000000000000{Ch{{b{Afc}}}{}}0000000000000000000000000000000000{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{c{{Cl{BAb}}}Cn}{c{{Cl{BAd}}}Cn}2{c{{Cl{BAf}}}Cn}3{c{{Cl{B@n}}}Cn}444444{c{{Cl{BAl}}}Cn}{c{{Cl{{BBj{e}}}}}CnAd}6{c{{Cl{{BBl{e}}}}}CnAd}77{c{{Cl{BBn}}}Cn}8{c{{Cl{{BC`{e}}}}}CnAd}9{c{{Cl{{BCb{e}}}}}CnAd}::{c{{Cl{BCd}}}Cn};;{c{{Cl{BCf}}}Cn}<<{c{{Cl{BCh}}}Cn}{c{{Cl{{BCj{e}}}}}CnAd}>{c{{Cl{{BCl{e}}}}}CnAd}??{c{{Cl{BAn}}}Cn}{c{{Cl{BB`}}}Cn}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{c{{Cl{BBb}}}Cn}{c{{Cl{BBd}}}Cn}22{c{{Cl{BBf}}}Cn}{c{{Cl{BBh}}}Cn}44{c{{Cl{Fd}}}Cn}5{c{{Cl{{BCn{e}}}}}CnAd}6{c{{Cl{{BD`{e}}}}}CnAd}{c{{Cl{{BDb{e}}}}}CnAd}88{c{{Cl{{BDd{e}}}}}CnAd}{c{{Cl{{BDf{e}}}}}CnAd}:{c{{Cl{{BDh{e}}}}}CnAd};{Chf}0000000000000000000000000000000000{{{b{BAf}}{b{BAf}}}Db}{{{b{B@n}}{b{B@n}}}Db}{{{b{{ACn{c}}}}{b{{ACn{c}}}}}Db{MdAd}}{{{b{{AE`{c}}}}{b{{AE`{c}}}}}Db{MdAd}}{{{b{{BAh{c}}}}{b{{BAh{c}}}}}Db{MdAd}}{{{b{{BAj{c}}}}{b{{BAj{c}}}}}Db{MdAd}}{{{b{BAl}}{b{BAl}}}Db}{{{b{{BBj{c}}}}{b{{BBj{c}}}}}Db{MdAd}}{{{b{{BBl{c}}}}{b{{BBl{c}}}}}Db{MdAd}}{{{b{Ff}}{b{Ff}}}Db}{{{b{BBn}}{b{BBn}}}Db}{{{b{{BC`{c}}}}{b{{BC`{c}}}}}Db{MdAd}}{{{b{{BCb{c}}}}{b{{BCb{c}}}}}Db{MdAd}}{{{b{{ADb{c}}}}{b{{ADb{c}}}}}Db{MdAd}}{{b{b{c}}}Db{}}0000000000000000000000000000000000000000000000000000000{BA`B@n}0``{{{b{{BEb{}{{BDj{c}}{BDl{e}}{BDn{g}}{BE`{i}}}}}}}e{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}{{{b{{BEb{}{{BDj{c}}{BDl{e}}{BDn{g}}{BE`{i}}}}}}}c{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}```{{{b{BAb}}{b{AfEb}}}Eh}0{{{b{BAd}}{b{AfEb}}}Eh}0{{{b{BAf}}{b{AfEb}}}Eh}0{{{b{B@n}}{b{AfEb}}}Eh}0{{{b{{ACn{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{ACn{c}}}}{b{AfEb}}}EhAd}{{{b{{AE`{c}}}}{b{AfEb}}}EhAd}{{{b{{AE`{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BAh{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BAj{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{BAl}}{b{AfEb}}}Eh}{{{b{{BBj{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BBl{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{Ff}}{b{AfEb}}}Eh}0{{{b{BBn}}{b{AfEb}}}Eh}{{{b{{BC`{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BCb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{ADb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{BCd}}{b{AfEb}}}Eh}{{{b{{AEb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{BCf}}{b{AfEb}}}Eh}{{{b{BCh}}{b{AfEb}}}Eh}{{{b{{BCj{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BCl{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{BAn}}{b{AfEb}}}Eh}0{{{b{BB`}}{b{AfEb}}}Eh}0{{{b{BBb}}{b{AfEb}}}Eh}0{{{b{BBd}}{b{AfEb}}}Eh}0{{{b{BBf}}{b{AfEb}}}Eh}0{{{b{BBh}}{b{AfEb}}}Eh}0{{{b{Fd}}{b{AfEb}}}Eh}0{{{b{{BCn{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BD`{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BDb{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BDd{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BDf{c}}}}{b{AfEb}}}Eh{EfAd}}{{{b{{BDh{c}}}}{b{AfEb}}}Eh{EfAd}}{cc{}}00{BA`B@n}111111111{BEdFf}{BEfFf}3333333333{FhBAn}{A`BAn}55{FhBB`}{A`BB`}{A`BBb}{FhBBb}{FfBBb}:{FhBBd}{A`BBd}<{BBdBBf}{BB`BBf}{FhBBf}?{A`BBf}{BAnBBf}{A`BBh}{FhBBh}{cc{}}00{{{BBj{c}}}{{BCn{c}}}Ad}{{{AEn{{BBl{c}}}}}{{BD`{c}}}Ad}22{{{AEn{{BCb{c}}}}}{{BDd{c}}}Ad}3{{{BCj{c}}}{{BDf{c}}}Ad}44{{{BCl{c}}}{{BDh{c}}}Ad}{b{{AAb{{BBj{c}}}}}Ad}{b{{AAb{{BBl{c}}}}}Ad}`{{{b{AD`}}{ACn{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AD`}}{ADb{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AD`}}}{{Hl{{Hj{Hh}}}}}}{{{b{AD`}}ADn}{{Hl{{Hj{Hh}}}}}}{{{b{AD`}}{AE`{c}}}{{Hl{{Hj{Hh}}}}}Ad}{{{b{AD`}}{AEb{c}}}{{Hl{{Hj{Hh}}}}}Ad}`````````{{}Ch}0000000000000000000000000000000000{{}c{}}0000000000000000000000000000000000{{}{{BEh{An}}}}{{{b{BAf}}}Db}00```{{}{{Cl{HbHd}}}}0000000000000000000000000000000000{{{b{{BEj{}{{BE`{c}}}}}}}c{BdEfJhMjHnI`MdMf}}{{{b{{BEb{}{{BDj{c}}{BDl{e}}{BDn{g}}{BE`{i}}}}}}}{{AEn{i}}}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}{{BAfBA`}B@n}````````{{{b{BAf}}{b{BAf}}}{{n{Ob}}}}{b}0000000000000000000000000000000000{{{b{{BEb{}{{BDj{c}}{BDl{e}}{BDn{g}}{BE`{i}}}}}}}g{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}```{{{b{{BEb{}{{BDj{c}}{BDl{e}}{BDn{g}}{BE`{i}}}}}}}c{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}{BdEfJhMjHnI`MdMf}}````{{{b{BAb}}c}ClJj}{{{b{BAd}}c}ClJj}{{{b{BAf}}c}ClJj}{{{b{B@n}}c}ClJj}{{{b{BAl}}c}ClJj}{{{b{{BBj{c}}}}e}ClAdJj}{{{b{{BBl{c}}}}e}ClAdJj}{{{b{BBn}}c}ClJj}{{{b{{BC`{c}}}}e}ClAdJj}{{{b{{BCb{c}}}}e}ClAdJj}{{{b{BCd}}c}ClJj}{{{b{BCf}}c}ClJj}{{{b{BCh}}c}ClJj}{{{b{{BCj{c}}}}e}ClAdJj}{{{b{{BCl{c}}}}e}ClAdJj}{{{b{BAn}}c}ClJj}{{{b{BB`}}c}ClJj}{{{b{BBb}}c}ClJj}{{{b{BBd}}c}ClJj}{{{b{BBf}}c}ClJj}{{{b{BBh}}c}ClJj}{{{b{Fd}}c}ClJj}{{{b{{BCn{c}}}}e}ClAdJj}{{{b{{BD`{c}}}}e}ClAdJj}{{{b{{BDb{c}}}}e}ClAdJj}{{{b{{BDd{c}}}}e}ClAdJj}{{{b{{BDf{c}}}}e}ClAdJj}{{{b{{BDh{c}}}}e}ClAdJj}{{{b{BAf}}}Ch}```{{{b{Ff}}}{{n{{b{h}}}}}}{{{b{BAn}}}{{n{{b{h}}}}}}{{{b{BB`}}}{{n{{b{h}}}}}}{{{b{BBb}}}{{n{{b{h}}}}}}{{{b{BBd}}}{{n{{b{h}}}}}}{{{b{BBf}}}{{n{{b{h}}}}}}{{{b{BBh}}}{{n{{b{h}}}}}}{{{b{Fd}}}{{n{{b{h}}}}}}{{{b{BAn}}}Bb}{{{b{BB`}}}Bb}{{{b{BBb}}}Bb}{{{b{BBd}}}Bb}{{{b{BBf}}}Bb}{{{b{BBh}}}Bb}{{{b{Fd}}}Bb}{{B@nB@n}c{}}```````{bc{}}000000000000000{bAn}0000000000000````{c{{Cl{e}}}{}{}}0{{{b{Cj}}}{{Cl{BAfc}}}{}}1111111{{{Nd{c}}}{{Cl{{BBj{c}}e}}}Ad{}}22{{{Nd{c}}}{{Cl{{BBl{c}}e}}}Ad{}}333{{{El{{b{{Nd{c}}}}Ch}}}{{Cl{{BCb{c}}e}}}Ad{}}444444444444444444444{{}{{Cl{c}}}{}}0000000000000000000000000000000000{bJl}0000000000000000000000000000000000{BA`B@n}`{{}c{}}0000000000000000000000000000000000`````{{bd}f}{b{{b{c}}}{}}{{{b{Af}}}{{b{Afc}}}{}}{{{b{{BEl{ce}}}}}{{BEl{ce}}}{}{}}{{b{b{Afc}}}f{}}{bf}{Ch{{b{c}}}{}}{Ch{{b{Afc}}}{}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{Chf}{{{b{{BEl{ce}}}}{b{AfEb}}}Eh{}{}}{cc{}}{{}Ch}={{}{{Cl{HbHd}}}}{{{Dl{BEn}}BF`}{{BEl{ce}}}{}{}}{b}``{{BFbc}f{}}{{BFdc}{{`{{Hh{}{{Ib{f}}}}Hn}}}{}}{{{b{{BEl{eg}}}}eik}f{}{{BFf{c}}}BFd{{BFh{ce}}}{{AMn{}{{Ml{g}}}}Hn}}{bc{}}{c{{Cl{e}}}{}{}}{{}{{Cl{c}}}{}}{bJl}{{}c{}}`````{{bd}f}000{{{b{{BFj{c}}}}}f{}}{b{{b{c}}}{}}000{{{b{Af}}}{{b{Afc}}}{}}000{{{b{{BFl{c}}}}}{{BFl{c}}}Ad}{{{b{{BFn{c}}}}}{{BFn{c}}}{BdJf}}{{{b{{BFj{c}}}}}{{BFj{c}}}{}}{{{b{BG`}}}BG`}{{b{b{Afc}}}f{}}000{bf}000{{}{{BFl{c}}}Ad}{{}BG`}{Ch{{b{c}}}{}}000{Ch{{b{Afc}}}{}}000{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}000{Chf}000>{{{b{BFh}}e}{{Hl{{Hj{Hh}}}}}{}{{BFf{c}}}}{{{b{{BFl{c}}}}BGb}{{Hl{{Hj{Hh}}}}}Ad}{{{b{{BFl{c}}}}BGd}{{Hl{{Hj{Hh}}}}}Ad}{{{b{{BFl{c}}}}BGf}{{Hl{{Hj{Hh}}}}}Ad}{{{b{{BFn{c}}}}BGb}{{Hl{{Hj{Hh}}}}}Jf}{{{b{{BFn{c}}}}BGf}{{Hl{{Hj{Hh}}}}}Jf}{{{b{{BFn{c}}}}BGd}{{Hl{{Hj{Hh}}}}}Jf}{{{b{{BFj{g}}}}e}{{Hl{{Hj{Hh}}}}}Ad{{BFf{c}}}{{BFh{ce}}I`}}{{{b{BG`}}e}{{Hl{{Hj{Hh}}}}}{}{Hn{BFf{c}}}}{{{b{{BFl{c}}}}{b{AfEb}}}EhAd}{{{b{{BFn{c}}}}{b{AfEb}}}Eh{EfJf}}{{{b{{BFj{c}}}}{b{AfEb}}}EhEf}{{{b{BG`}}{b{AfEb}}}Eh}{cc{}}000{{}Ch}000{{}c{}}000{{}{{Cl{HbHd}}}}000{{BGhc}{{BFn{c}}}Jf}{c{{BFj{c}}}{}}{b}000{bc{}}000{c{{Cl{e}}}{}{}}000{{}{{Cl{c}}}{}}000{bJl}000{{{b{{BFj{c}}}}}f{}}09999{{{BFl{c}}e}{{BFl{c}}}Ad{{BFh{cBGb}}Ef}}{{{BFl{c}}e}{{BFl{c}}}Ad{{BFh{cBGf}}Ef}}{{{BFl{c}}e}{{BFl{c}}}Ad{{AFn{c}}Ef}}{{{BFl{c}}e}{{BFl{c}}}Ad{{BFh{cBGd}}Ef}}`````{{bd}f}00{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{b{BGb}}}BGb}{{{b{BGd}}}BGd}{{{b{BGf}}}BGf}{{b{b{Afc}}}f{}}00{bf}00{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{Chf}00{{{b{BGb}}{b{BGb}}}Db}{{{b{BGd}}{b{BGd}}}Db}{{{b{BGf}}{b{BGf}}}Db}{{b{b{c}}}Db{}}00000000000{{{b{BGb}}{b{AfEb}}}Eh}{{{b{BGd}}{b{AfEb}}}Eh}{{{b{BGf}}{b{AfEb}}}Eh}{cc{}}00{ChBGf}{{{b{c}}{b{e}}}Cd{GdGf}Gh}00{{{b{BGb}}{b{Afc}}}fGj}{{{b{BGd}}{b{Afc}}}fGj}{{{b{BGf}}{b{Afc}}}fGj}{{}Ch}00{{}c{}}00{{}{{Cl{HbHd}}}}00{b}00{bc{}}00{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00666`````````````````{{bd}f}0`{b{{b{h}}}}00{{{b{Ej}}}{{n{{b{l}}}}}}{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00{{{b{Ej}}}{{n{{b{h}}}}}}{{{b{{ADh{ce}}}}}{{ADh{ce}}}Ad{{ADj{c}}}}{{{b{Ej}}}Ej}{{b{b{Afc}}}f{}}0{bf}0{{{b{{ADh{ce}}}}{b{{ADh{ce}}}}}ObAd{{ADj{c}}}}{{b{b{c}}}Ob{}}{{}BGj}{{{b{BGj}}}{{Cl{{A@d{cEje}}A@f}}}{HnI`A@h}Jf}{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{{{b{Ej}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00{c{{Cl{Ej}}}Cn}{Chf}00{{{b{{ADh{ce}}}}{b{{ADh{ce}}}}}DbAd{{ADj{c}}}}{{b{b{c}}}Db{}}000`{{{b{{ADh{ce}}}}{b{AfEb}}}EhAd{{ADj{c}}}}0{{{b{Ej}}{b{AfEb}}}Eh}0{cc{}}0{AA`Ej}1{A`Ej}{{{El{AnBb}}}Ej}{{{b{c}}{b{e}}}Cd{GdGf}Gh}{{{b{ADf}}}{{Hl{{Hj{Hh}}}}}}{{{b{ADl}}{ADh{ce}}}{{Hl{{Hj{Hh}}}}}Ad{{ADj{c}}}}{{{b{{ADh{ce}}}}{b{Afg}}}fAd{{ADj{c}}}Gj}{{}{{b{Cj}}}}{{}Ch}00{{{b{AfAF`}}AEl{AEn{Ch}}Cd}{{Hl{{Hj{Hh}}}}}}{{{b{Af{ADj{}{{BGl{c}}{BGn{e}}{BH`{g}}{BHb{i}}{BHd{k}}}}}}c{b{{AEl{ecg}}}}}{{Kb{f}}}{BHfHnI`JhBHhBHjMjGlBHlBHn}{BI`HnI`JhMjBHlBHn}{BIbHn}{{BId{g}}Hn{BIf{{b{ADn}}}}GlEf{B`{ADn}}}{{BIh{ecg}}}}{{}c{}}00{{}{{Cl{HbHd}}}}00{{{b{{ADh{ce}}}}{b{{ADh{ce}}}}}{{n{Ob}}}Ad{{ADj{c}}}}{b}00{{{b{Ej}}c}ClJj}{{{b{AfAF`}}Ch}{{Hl{{Hj{Hh}}}}}}{{{b{Ej}}}{{n{{b{h}}}}}}:{{{b{Ej}}}Bb}{bc{}}0{bAn}0<{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00<<<````````````````{{bd}f}0000000{{{b{BIj}}Ch}f}{{{b{BIl}}AHb}f}{b{{b{h}}}}00{{{b{BIn}}}{{n{{b{l}}}}}}{b{{b{c}}}{}}00000000{{{b{Af}}}{{b{Afc}}}{}}00000000{{{b{BIn}}}{{n{{b{h}}}}}}{{{b{AFb}}}AFb}{{{b{BIj}}}BIj}{{{b{BJ`}}}BJ`}{{{b{BIl}}}BIl}{{{b{BJb}}}BJb}{{{b{BJd}}}BJd}{{{b{BJf}}}BJf}{{{b{BJh}}}BJh}{{b{b{Afc}}}f{}}0000000{bf}0000000{{{b{AFb}}An{AEn{An}}}{{Hj{BJj}}}}{{{b{BJb}}{AEn{An}}}{{Hj{BJl}}}}{{{b{BJd}}{AEn{An}}}{{Hj{BJn}}}}{{{b{BJf}}{AEn{An}}}{{Hj{BK`}}}}{{{b{BJh}}{AEn{An}}}f}{{{b{AFb}}An{n{An}}}{{Hj{BJl}}}}{{{b{AFb}}An{n{An}}}{{Hj{BJn}}}}{{{b{AFb}}An{n{An}}}{{Hj{BK`}}}}{{{b{AFb}}An}f}{{}AFb}{Ch{{b{c}}}{}}00000000{Ch{{b{Afc}}}{}}00000000{{{b{BIn}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}00000000{Chf}00000000{{{b{AFb}}}{{Cl{Anc}}}{}}{{{b{BIn}}{b{AfEb}}}Eh}0{{{b{AFb}}{b{AfEb}}}Eh}{{{b{BIj}}{b{AfEb}}}Eh}{{{b{BJ`}}{b{AfEb}}}Eh}{{{b{BIl}}{b{AfEb}}}Eh}{{{b{BJb}}{b{AfEb}}}Eh}{{{b{BJd}}{b{AfEb}}}Eh}{{{b{BJf}}{b{AfEb}}}Eh}{{{b{BJh}}{b{AfEb}}}Eh}{BKbBIn}{cc{}}00000000{{{b{AFb}}An{AEn{An}}}{{Hj{BKd}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BJdBIn}}}}{{{b{BIj}}}Ch}{{{b{BJ`}}}Ch}{{{b{BJb}}{b{{AIh{c}}}}}BIj{{BKf{Cj}}}}{{{b{BJd}}{b{{AIh{c}}}}}BJ`{{BKf{Cj}}}}{{{b{BJf}}{b{{AIh{c}}}}}BIl{{BKf{Cj}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BIjBIn}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BJbBIn}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BJ`BIn}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BIlBIn}}}}{{{b{AFb}}{b{Cj}}}{{Cl{BJfBIn}}}}{{{b{AFb}}c}{{Cl{AFbBIn}}}AMn}{{{b{AFb}}An{AEn{An}}}{{Hj{BKh}}}}{{}Ch}00000000{{}c{}}00000000{{}{{Cl{HbHd}}}}00000000{{{b{BIl}}}AHb}{b}00000000{{{b{BIl}}}Ch}{{{b{BJ`}}Ch}f}{{{b{BIn}}}{{n{{b{h}}}}}}{{{b{AFb}}An}{{Hj{AFf}}}}5{{{b{AFb}}An{AEn{An}}}{{Hj{BKj}}}}{bc{}}0000000{bAn}{c{{Cl{e}}}{}{}}00000000{{}{{Cl{c}}}{}}00000000{bJl}00000000{{{b{BJ`}}BKl}f}>>>>>>>>>``````````````````````````{{bd}f}000000000`{b{{b{h}}}}00{{{b{F`}}}{{n{{b{l}}}}}}`{{{b{In}}}{{Hl{{Hj{Hh}}}}}}{b{{b{c}}}{}}0000000000{{{b{Af}}}{{b{Afc}}}{}}0000000000{{{BKn{ce}}}F`{{B`{An}}}{{B`{Bb}}}}{{{b{F`}}}{{n{{b{h}}}}}}{{{b{{ADd{c}}}}}{{ADd{c}}}Ad}{{{b{BL`}}}BL`}{{{b{{BLb{c}}}}}{{BLb{c}}}Bd}{{{b{BLd}}}BLd}{{{b{BLf}}}BLf}{{{b{BLh}}}BLh}{{{b{{BLj{c}}}}}{{BLj{c}}}Bd}{{{b{{BLl{ce}}}}}{{BLl{ce}}}BdBd}{{{b{{BKn{ce}}}}}{{BKn{ce}}}BdBd}{{{b{F`}}}F`}{{b{b{Afc}}}f{}}000000000{bf}000000000{{{b{BL`}}{b{BL`}}}Ob}{{b{b{c}}}Ob{}}{{{b{In}}}{{Hl{{Hj{Hh}}}}}}0{{{b{In}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{{}{{BLb{c}}}{}}{{}BLn}{{{b{BLn}}c}{{Cl{{A@d{eF`c}}A@f}}}Jf{HnI`A@h}}{Ch{{b{c}}}{}}0000000000{Ch{{b{Afc}}}{}}0000000000{{{b{F`}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{c{{Cl{BL`}}}Cn}11{c{{Cl{{BLb{e}}}}}CnBM`}2{c{{Cl{BLd}}}Cn}3333333{c{{Cl{F`}}}Cn}{Chf}0000000000`{{{b{BL`}}{b{BL`}}}Db}{{{b{{BLb{c}}}}{b{{BLb{c}}}}}DbMd}{{{b{BLd}}{b{BLd}}}Db}{{b{b{c}}}Db{}}00000000000`{{{BKn{ce}}}{{Cl{gF`}}}{{B`{An}}}{{B`{Bb}}}{}}{{{b{{ADd{c}}}}{b{AfEb}}}EhAd}{{{b{BL`}}{b{AfEb}}}Eh}{{{b{{BLb{c}}}}{b{AfEb}}}EhEf}{{{b{BLd}}{b{AfEb}}}Eh}{{{b{BLn}}{b{AfEb}}}Eh}{{{b{BLf}}{b{AfEb}}}Eh}{{{b{BLh}}{b{AfEb}}}Eh}{{{b{{BLj{c}}}}{b{AfEb}}}EhEf}{{{b{{BLl{ce}}}}{b{AfEb}}}EhEfEf}{{{b{{BKn{ce}}}}{b{AfEb}}}EhEfEf}{{{b{F`}}{b{AfEb}}}Eh}0{{{Kh{c}}}{{ADd{c}}}Ad}{cc{}}0{{{b{{BLb{c}}}}}{{n{Cd}}}BMb}11111111{A`F`}2{{{El{AnBb}}}F`}{AA`F`}{{}BL`}{{{b{c}}{b{e}}}Cd{GdGf}Gh}{{{b{In}}eCdCh}{{Hl{{Hj{Hh}}}}}Ad{{B`{{ADd{c}}}}HnI`}}{{{b{BL`}}{b{Afc}}}fGj}{{}Ch}0000000000{cF`Gl}{{}c{}}0000000000{{BLfc}F`{}}{{BLhc}F`{}}{{{BLj{c}}e}F`{{B`{An}}}{}}{{{BLl{ce}}g}F`{{B`{An}}}{{B`{Cd}}}{}}{{{BKn{ce}}g}F`{{B`{An}}}{{B`{Bb}}}{}}{{{b{BL`}}}Db}{{}{{Cl{HbHd}}}}0000000000``````{{{b{BL`}}{b{BL`}}}{{n{Ob}}}}{{{b{In}}}{{Hl{{Hj{Hh}}}}}}0{{{b{In}}c}{{Hl{{Hj{Hh}}}}}{{ABd{Ch}}Hn}}{b}0000000000``{{{b{BL`}}c}ClJj}{{{b{{BLb{c}}}}e}ClJhJj}{{{b{BLd}}c}ClJj}{{{b{F`}}c}ClJj}{{{b{F`}}}{{n{{b{h}}}}}}`{{{b{F`}}}Bb}`8{bc{}}000000000{bAn}{c{{Cl{e}}}{}{}}0000000000{{}{{Cl{c}}}{}}0000000000{bJl}0000000000{{{b{In}}e}{{Hl{{Hj{Hh}}}}}Ad{{B`{{Nb{c}}}}HnI`}}{{}c{}}0000000000```````````````````{{bd}f}`{b{{b{h}}}}00{{{b{En}}}{{n{{b{l}}}}}}{{{b{J`}}}{{Hl{{Hj{Hh}}}}}}{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{En}}}{{n{{b{h}}}}}}{{{b{En}}}En}{{b{b{Afc}}}f{}}{bf}{{{b{J`}}}{{AMh{AFb}}}}0{{}BMd}{{{b{BMd}}c}{{Cl{{A@d{eEnc}}A@f}}}Jf{HnI`A@h}}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{{b{En}}}{{b{Cj}}}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{c{{Cl{En}}}Cn}1{Chf}0??`{{{b{En}}{b{AfEb}}}Eh}0{cc{}}0{AnEn}{AA`En}{{}Ch}0{{}c{}}0{{}{{Cl{HbHd}}}}0{{{b{AFd}}}{{b{AFb}}}}{b}0{{{b{BMf}}}{{Hj{AFf}}}}{{{b{En}}c}ClJj}{{{b{En}}}{{n{{b{h}}}}}}{{{b{En}}}Bb}{{{b{J`}}}{{Hl{{Hj{Hh}}}}}}0{bc{}}{bAn}{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}0==````{{bd}f}{b{{b{c}}}{}}0{{{b{Af}}}{{b{Afc}}}{}}0{{{b{BMh}}}BMh}{{b{b{Afc}}}f{}}{bf}{Ch{{b{c}}}{}}0{Ch{{b{Afc}}}{}}0{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{Chf}0{{{b{Af{BMj{c}}}}}fHn}{{{b{BMh}}{b{AfEb}}}Eh}{{{b{{BMj{c}}}}{b{AfEb}}}EhHn}{cc{}}0{{}Ch}0{{}c{}}0{{{BMj{c}}}{{Cl{cBMl}}}Hn}{{}{{Cl{HbHd}}}}0{b}0{{ce}BMhGl{HhHn}}{{cg}{{BMj{e}}}GlHn{{Hh{}{{Ib{e}}}}Hn}}{bc{}}{c{{Cl{e}}}{}{}}0{{}{{Cl{c}}}{}}0{bJl}099``{{}f}{ACff}```````{b{{b{c}}}{}}{{{b{Af}}}{{b{Afc}}}{}}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{Ch{{Hl{{Hj{Hh}}}}}}{{{b{{AKn{c}}}}}cBMn}{{{b{{AKn{c}}}}Ch}cBMn}{Ch{{b{c}}}{}}{Ch{{b{Afc}}}{}}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}{{{b{Af{AKn{c}}}}}fBMn}{Chf}{cc{}}{{{b{{AKn{c}}}}}{{b{{Ih{AEdBN`BNb}}}}}BMn}{{{b{{BMn{}{{BNd{c}}}}}}{b{{AEf{AEd}}}}}{{Hl{{Hj{Hh}}}}}{HnI`}}{{}Ch}{{}{{AKn{c}}}{BMnBMf}}{c{{AKn{e}}}{{If{{b{Af{BNh{BNf}}}}}}}{BMnBMf}}{{}c{}}{{}{{Cl{HbHd}}}}{{{b{{AKn{c}}}}}ChBMn}{b}{{{b{{AKn{c}}}}Ch}{{BNj{AEd}}}BMn}{{{b{c}}}{{Hl{{Hj{Hh}}}}}{}}{{{b{Af{AKn{{BMn{}{{BNd{c}}}}}}}}}{{Hl{{Hj{Hh}}}}}{HnI`}}{{{AKn{c}}}fBMn}{{{b{Af{AKn{c}}}}eg}fBMnGl{HhHn}}{{{b{Af{AKn{c}}}}}fBMn}{{{b{{AKn{c}}}}}bBMn}{{{b{{AKn{c}}}}BNl}fBMn}{c{{Cl{e}}}{}{}}{{}{{Cl{c}}}{}}{bJl}>`````````````{{bd}f}00``{b{{b{c}}}{}}00{{{b{Af}}}{{b{Afc}}}{}}00`{{{b{AEd}}}AEd}{{{b{BNb}}}BNb}{{{b{BN`}}}BN`}{{b{b{Afc}}}f{}}00{bf}00{{{b{AEd}}{b{AEd}}}Ob}{{{b{BN`}}{b{BN`}}}Ob}{{b{b{c}}}Ob{}}0`{{}AEd}{{}BN`}`{Ch{{b{c}}}{}}00{Ch{{b{Afc}}}{}}00{c{{Cl{AEd}}}Cn}{{b{b{Afc}}}{{Cl{{D`{eg}}}}}{}{}{}}0{c{{Cl{BN`}}}Cn}1{Chf}00{{{b{AEd}}{b{AEd}}}Db}{{{b{BN`}}{b{BN`}}}Db}{{b{b{c}}}Db{}}0000000{{{b{BNn}}}c{}}0{{{b{AEd}}{b{AfEb}}}Eh}{{{b{BNb}}{b{AfEb}}}Eh}{{{b{BN`}}{b{AfEb}}}Eh}{cc{}}00{{{b{c}}{b{e}}}Cd{GdGf}Gh}0{{{b{AEd}}{b{Afc}}}fGj}{{{b{BN`}}{b{Afc}}}fGj}{{}{{b{Cj}}}}{{{b{BNn}}}Cd}{{}Ch}00{{{b{AfBO`}}c{b{{AEl{ecg}}}}}{{Kb{f}}}{}{}{}}{{}c{}}00{{{b{BOb}}{b{c}}}e{}{}}`{{}{{Cl{HbHd}}}}00{{{b{BOb}}{b{c}}}Ch{}}`{{{AEn{BOd}}}BNl}{{{b{BNl}}}c{}}{{{b{BNn}}}{{AEn{c}}}{}}{{{b{AEd}}{b{AEd}}}{{n{Ob}}}}{{{b{BN`}}{b{BN`}}}{{n{Ob}}}}`{b}00`{{{b{BNn}}}c{}}`0{{{b{AEd}}c}ClJj}{{{b{BN`}}c}ClJj}`{{}{{b{Cj}}}}{{{b{BNn}}}Cd}`{bc{}}00{{{b{BOb}}{b{c}}{b{e}}}{{n{{El{gi}}}}}{}{}{}{}}`{{}Ch}{c{{Cl{e}}}{}{}}00{{}{{Cl{c}}}{}}00{bJl}00```{{}c{}}00`{{{b{BMb}}}Cd}","D":"EJb","p":[[1,"reference"],[5,"Private",4639],[1,"unit"],[10,"Error",4640],[6,"Error",0,4641],[5,"Backtrace",4642],[6,"Option",4643],[6,"QueryError",0],[5,"Leaf",0,4644],[10,"NodeType",4645],[0,"mut"],[5,"NotFoundSnafu",0],[5,"MissingSnafu",0],[5,"ErrorSnafu",0],[5,"String",4646],[10,"Into",4647],[5,"StatusCode",4648],[10,"Clone",4649],[5,"ApiState",0],[5,"Commitment",4650],[5,"UpgradeLock",4651],[10,"Versions",4645],[10,"Resolvable",0,4652],[10,"Committable",4650],[10,"RngCore",4653],[1,"u64"],[5,"Options",0],[1,"usize"],[1,"str"],[6,"Result",4654],[10,"Deserializer",4655],[5,"With",4656],[1,"bool"],[5,"UpgradeProposalData",4657],[5,"UpgradeThreshold",4658],[5,"SimpleCertificate",4658],[5,"RwLock",4659],[5,"Arc",4660],[5,"Error",4661],[6,"BlockError",4644],[5,"Formatter",4662],[5,"Error",4662],[10,"Debug",4662],[8,"Result",4662],[6,"Error",3643],[1,"tuple"],[6,"Error",4344],[6,"Error",4004],[6,"Error",311],[6,"Error",2356],[6,"TimestampConversionError",2356,4663],[6,"Error",4664],[1,"never"],[5,"OwnedFd",4665],[10,"IntoFilelike",4666],[10,"IntoSocketlike",4666],[5,"QuorumProposal",4644],[10,"Hash",4667],[10,"Sized",4668],[10,"BuildHasher",4667],[10,"Hasher",4667],[10,"Display",4662],[5,"QuorumData",4657],[5,"SuccessThreshold",4658],[5,"Layout",4669],[5,"LayoutError",4669],[5,"DynGuard",4670],[10,"Future",4671],[5,"Box",4672],[5,"Pin",4673],[10,"Send",4668],[10,"Sync",4668],[17,"Output"],[8,"BoxFuture",4674],[10,"FnOnce",4675],[5,"SystemContextHandle",4676],[10,"AvailabilityDataSource",311,4677],[10,"UpdateDataSource",1162,4678],[10,"NodeDataSource",4004,4679],[10,"StatusDataSource",4344,4680],[10,"VersionedDataSource",1162,4678],[10,"NodeImplementation",4645],[10,"StaticVersionType",4681],[10,"Serialize",4682],[10,"Serializer",4682],[5,"TypeId",4683],[10,"UpdateAvailabilityData",311,4677],[5,"BlockInfo",311,4677],[8,"Result",4684],[5,"InconsistentLeafError",311,4685],[5,"LeafQueryData",311,4685],[8,"BlockHash",311,4685],[5,"PayloadQueryData",311,4685],[5,"VidCommonQueryData",311,4685],[5,"TransactionQueryData",311,4685],[5,"FetchLeafSnafu",311],[5,"FetchBlockSnafu",311],[5,"FetchTransactionSnafu",311],[5,"InvalidTransactionIndexSnafu",311],[5,"RangeLimitSnafu",311],[5,"CustomSnafu",311],[17,"TransactionIndex"],[17,"Iter"],[17,"InclusionProof"],[10,"QueryablePayload",311,4685],[10,"PartialEq",4686],[10,"Eq",4686],[10,"Ord",4686],[10,"DeserializeOwned",4655],[17,"Item"],[10,"Iterator",4687],[6,"LeafId",311,4677],[6,"BlockId",311,4677],[5,"BlockQueryData",311,4685],[5,"BlockSummaryQueryData",311,4685],[5,"TransactionSummaryQueryData",311,4685],[5,"PayloadMetadata",311,4685],[5,"VidCommonMetadata",311,4685],[5,"Limits",311,4685],[5,"RequestSnafu",311],[6,"Ordering",4686],[8,"VidCommon",0,4688],[6,"Fetch",311,4689],[10,"ErrorCompat",4690],[17,"Source"],[5,"NoneError",4690],[10,"IntoError",4690],[8,"Payload",0],[5,"Options",311],[5,"Api",4691],[6,"ApiError",4691],[10,"ReadState",4692],[8,"TransactionIndex",311,4685],[8,"Transaction",0],[8,"LeafHash",311,4685],[6,"RequestError",4693],[8,"Result",4664],[17,"LeafRange"],[17,"BlockRange"],[17,"PayloadRange"],[17,"PayloadMetadataRange"],[17,"VidCommonRange"],[17,"VidCommonMetadataRange"],[10,"Stream",4694],[10,"Unpin",4668],[10,"RangeBounds",4695],[8,"TransactionHash",311,4685],[8,"VidCommitment",0,4688],[8,"Header",0],[8,"Metadata",0],[8,"VidShare",0,4688],[8,"QuorumCertificate",4658],[8,"TransactionInclusionProof",311,4685],[10,"QueryableHeader",311,4685],[5,"Duration",4696],[5,"ExtensibleDataSource",1162,4697],[5,"MetricsDataSource",1162,4698],[10,"Transaction",1162,4678],[6,"BlockIdentifier",2356,4663],[10,"ExplorerDataSource",2356,4699],[5,"GetBlockSummariesRequest",2356,4663],[6,"WindowStart",4004,4679],[10,"MerklizedStateHeightPersistence",3643,4700],[6,"Snapshot",3643,4700],[10,"MerklizedState",3643,4700],[10,"MerklizedStateDataSource",3643,4700],[5,"TaggedBase64",4701],[6,"TransactionIdentifier",2356,4663],[5,"GetTransactionSummariesRequest",2356,4663],[5,"MockTypes",4503],[5,"Event",4702],[10,"TestableDataSource",4463],[10,"Default",4703],[5,"MerkleProof",4704],[5,"Vec",4705],[10,"UpdateStateData",3643,4700],[5,"PrometheusMetrics",3760],[10,"HasMetrics",4344,4680],[10,"Metrics",4706],[17,"Transaction"],[17,"ReadOnly"],[5,"FetchingDataSource",1283],[10,"AvailabilityProvider",1283],[5,"Builder",1283],[10,"PruneStorage",1896],[5,"Pruner",1283],[8,"Config",1424],[8,"Builder",1424],[5,"Error",1942,4684],[5,"Path",4707],[5,"FileSystemStorage",1632],[5,"AtomicStoreLoader",4708],[1,"f64"],[8,"FileSystemDataSource",1404],[8,"SqlDataSource",1424],[10,"AggregatesStorage",1441],[10,"NodeStorage",1441],[10,"AvailabilityStorage",1441],[10,"ExplorerStorage",1441],[10,"MerklizedStateHeightStorage",1441],[10,"MerklizedStateStorage",1441],[10,"UpdateAvailabilityStorage",1441],[10,"UpdateAggregatesStorage",1441],[1,"slice"],[5,"Transaction",1491],[6,"FailableAction",1491],[5,"FailStorage",1491],[5,"PrunerCfg",1896],[10,"PrunerConfig",1896],[10,"PrunedHeightStorage",1896],[5,"Transaction",1632],[10,"Revert",1632],[17,"Target"],[5,"FileSystemStorageInner",1632],[10,"Deref",4709],[5,"RwLockReadGuard",4659],[5,"RwLockWriteGuard",4659],[6,"PersistenceError",4710],[5,"Transaction",1723],[5,"NoStorage",1723],[6,"DataSource",1793],[6,"Transaction",1793],[5,"MockNetwork",4463],[17,"Pruner"],[1,"u16"],[5,"Transaction",1942,4711],[10,"TransactionMode",1942,4711],[1,"i32"],[5,"OffsetDateTime",4712],[5,"Migration",1942,4713],[5,"Config",1942],[10,"Params",1942,4711],[8,"Db",1942,4714],[5,"Separated",4715],[5,"QueryBuilder",1942,4716],[8,"QueryResult",0],[10,"Encode",4717],[10,"Type",4718],[10,"IntoIterator",4719],[5,"Chain",4684],[5,"Write",1942,4711],[5,"Read",1942,4711],[5,"SqlStorage",1942],[5,"PathBuf",4707],[5,"Pruner",1942],[17,"Database"],[10,"Executor",1942,4720],[10,"Database",1942,4721],[10,"Execute",4720],[5,"Sqlite",1942,4722],[5,"FmtValue",4723],[5,"SqliteConnectOptions",4724],[1,"u32"],[5,"Pool",4725],[6,"Type",4713],[8,"Query",1942,4711],[8,"QueryAs",1942,4711],[10,"FromRow",4726],[5,"TestArgs",4727],[5,"Error",4728],[1,"array"],[5,"TmpDb",2318],[5,"MonetaryValue",2356,4729],[1,"i128"],[5,"CurrencyMismatchError",2356,4730],[5,"InvalidCurrencyCodeError",2356,4730],[6,"CurrencyCode",2356,4730],[5,"BlockRange",2356,4663],[5,"TransactionRange",2356,4663],[5,"Timestamp",2356,4663],[6,"GetBlockDetailError",2356,4663],[6,"GetBlockSummariesError",2356,4663],[6,"GetTransactionDetailError",2356,4663],[6,"GetTransactionSummariesError",2356,4663],[6,"GetExplorerSummaryError",2356,4663],[6,"GetSearchResultsError",2356,4663],[5,"BlockDetail",2356,4663],[5,"BlockSummary",2356,4663],[5,"FeeAttribution",2356,4663],[5,"TransactionDetail",2356,4663],[5,"TransactionSummary",2356,4663],[6,"TransactionSummaryFilter",2356,4663],[5,"GenesisOverview",2356,4663],[5,"ExplorerHistograms",2356,4663],[5,"ExplorerSummary",2356,4663],[5,"SearchResult",2356,4663],[5,"BlockDetailResponse",2356],[5,"BlockSummaryResponse",2356],[5,"TransactionDetailResponse",2356],[5,"TransactionSummariesResponse",2356],[5,"ExplorerSummaryResponse",2356],[5,"SearchResultResponse",2356],[17,"BalanceAmount"],[17,"WalletAddress"],[17,"ProposerId"],[17,"NamespaceId"],[10,"ExplorerHeader",2356,4731],[5,"TryFromIntError",4732],[5,"ComponentRange",4733],[6,"Resettable",4734],[10,"ExplorerTransaction",2356,4731],[5,"Fetcher",3411],[5,"Semaphore",4735],[8,"ExponentialBackoff",4736],[10,"LocalCallback",3411],[10,"Callback",3411],[10,"Request",3553],[10,"Provider",3443],[5,"TestProvider",3443,4737],[5,"AnyProvider",3443,4738],[5,"QueryServiceProvider",3443,4739],[5,"NoFetching",3443],[5,"PayloadRequest",3553],[5,"VidCommonRequest",3553],[5,"LeafRequest",3553],[5,"Url",4740],[5,"Options",3643],[17,"Key"],[17,"Entry"],[17,"T"],[17,"Commit"],[17,"Digest"],[10,"Index",4741],[10,"ToTraversalPath",4741],[10,"FromStr",4742],[10,"CanonicalSerialize",4743],[10,"CanonicalDeserialize",4743],[10,"Element",4741],[10,"NodeValue",4741],[10,"MerkleCommitment",4741],[10,"TryFrom",4647],[10,"DigestAlgorithm",4741],[5,"Counter",3760],[5,"Histogram",3760],[6,"MetricsError",3760],[5,"Gauge",3760],[5,"CounterFamily",3760],[5,"GaugeFamily",3760],[5,"HistogramFamily",3760],[5,"TextFamily",3760],[10,"CounterFamily",4706],[10,"Counter",4706],[10,"Gauge",4706],[10,"Histogram",4706],[6,"Error",4744],[10,"GaugeFamily",4706],[10,"AsRef",4647],[10,"HistogramFamily",4706],[10,"TextFamily",4706],[1,"i64"],[5,"CustomSnafu",4004],[5,"SyncStatus",4004,4745],[5,"TimeWindowQueryData",4004,4745],[5,"Limits",4004,4745],[5,"RequestSnafu",4004],[5,"QuerySnafu",4004],[5,"QueryVidSnafu",4004],[5,"QueryWindowSnafu",4004],[5,"Options",4004],[10,"Deserialize",4655],[10,"HeightIndexed",4637],[5,"Options",4344],[10,"UpdateStatusData",4344,4680],[5,"BackgroundTask",4416],[5,"Task",4416],[5,"JoinError",4746],[10,"DataSourceLifeCycle",4463],[5,"MockNodeImpl",4503],[5,"MockVersions",4503],[17,"Storage"],[8,"BLSPubKey",4747],[5,"HotShotConfig",4748],[8,"SignatureKey",0],[8,"MockTransaction",4503],[8,"MockHeader",4503],[8,"MockMerkleTree",4503],[8,"MockPayload",4503],[1,"u8"],[15,"Custom",303],[15,"Availability",303],[15,"Node",303],[15,"Status",303],[15,"MerklizedState",303],[15,"Explorer",303],[15,"Error",310],[15,"RangeLimit",1151],[15,"InvalidTransactionIndex",1151],[15,"Custom",1151],[15,"FetchLeaf",1151],[15,"FetchBlock",1151],[15,"FetchTransaction",1151],[15,"Request",1151],[6,"Storage",1793],[15,"NoStorage",1895],[5,"TestMerkleTreeMigration",2318],[15,"Custom",3756],[15,"Request",3756],[15,"Query",3756],[15,"NoSuchMetric",4000],[15,"NoSuchSubgroup",4000],[15,"Prometheus",4000],[15,"QueryVid",4335],[15,"QueryWindow",4335],[15,"Custom",4335],[15,"Request",4335],[15,"Query",4335],[15,"Internal",4414],[15,"Request",4414],[8,"MockQuorumProposal",4503],[8,"MockStorage",4503],[8,"MockAuctionResults",4503]],"r":[[4,4641],[9,4644],[22,4652],[26,4688],[27,4688],[28,4688],[311,4677],[312,4685],[313,4677],[314,4677],[315,4685],[317,4685],[321,4689],[331,4685],[335,4685],[336,4677],[337,4685],[339,4685],[344,4685],[346,4685],[349,4685],[350,4685],[356,4685],[357,4685],[358,4685],[359,4685],[361,4685],[362,4685],[363,4677],[364,4685],[366,4685],[1162,1283],[1163,4697],[1164,1283],[1165,1404],[1166,4698],[1168,1424],[1169,4678],[1171,4678],[1172,4678],[1405,1632],[1426,4684],[1427,4713],[1429,4711],[1436,0],[1439,2318],[1444,1491],[1445,1632],[1448,1723],[1450,1942],[1947,4721],[1949,4714],[1950,4684],[1951,4720],[1952,4711],[1953,4713],[1955,4711],[1957,4711],[1958,4711],[1959,4716],[1961,4711],[1964,4722],[1966,4711],[1968,4711],[1973,4711],[2013,4711],[2175,4749],[2176,0],[2243,4711],[2245,4711],[2260,4714],[2316,4750],[2317,4750],[2356,4663],[2359,4663],[2361,4663],[2362,4663],[2364,4663],[2365,4663],[2370,4730],[2371,4730],[2376,4699],[2377,4731],[2378,4663],[2379,4663],[2381,4731],[2382,4663],[2386,4663],[2388,4663],[2391,4663],[2393,4663],[2395,4663],[2397,4663],[2399,4663],[2401,4663],[2403,4663],[2409,4730],[2416,4729],[2420,4663],[2429,4663],[2434,4663],[2435,4663],[2438,4663],[2440,4663],[2441,4663],[2443,4663],[2445,4663],[2446,4663],[2454,4663],[3414,3443],[3415,3553],[3443,4738],[3446,4739],[3447,4737],[3651,4700],[3652,4700],[3653,4700],[3657,4700],[3659,4700],[4004,4685],[4005,4677],[4011,4745],[4012,4679],[4022,4745],[4024,4745],[4025,4679],[4345,4680],[4349,4680],[4350,4680]],"b":[[92,"impl-Committable-for-Leaf%3CTYPES%3E"],[93,"impl-Leaf%3CTYPES%3E"],[150,"impl-Debug-for-Leaf%3CTYPES%3E"],[151,"impl-Display-for-Leaf%3CTYPES%3E"],[152,"impl-Debug-for-Error"],[153,"impl-Display-for-Error"],[157,"impl-Debug-for-QueryError"],[158,"impl-Display-for-QueryError"],[162,"impl-From%3CError%3E-for-Error"],[163,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[164,"impl-From%3CError%3E-for-Error"],[165,"impl-From%3CError%3E-for-Error"],[166,"impl-From%3CError%3E-for-Error"],[167,"impl-From%3CError%3E-for-Error"],[171,"impl-From%3CTimestampConversionError%3E-for-QueryError"],[172,"impl-From%3CError%3E-for-QueryError"],[176,"impl-From%3CArc%3CD%3E%3E-for-ApiState%3CD%3E"],[178,"impl-From%3CD%3E-for-ApiState%3CD%3E"],[719,"impl-Debug-for-LeafId%3CTypes%3E"],[720,"impl-Display-for-LeafId%3CTypes%3E"],[721,"impl-Debug-for-BlockId%3CTypes%3E"],[722,"impl-Display-for-BlockId%3CTypes%3E"],[725,"impl-Debug-for-InconsistentLeafError%3CTypes%3E"],[726,"impl-Display-for-InconsistentLeafError%3CTypes%3E"],[744,"impl-Display-for-Error"],[745,"impl-Debug-for-Error"],[747,"impl-From%3Cusize%3E-for-LeafId%3CTypes%3E"],[749,"impl-From%3CCommitment%3CLeaf%3CTypes%3E%3E%3E-for-LeafId%3CTypes%3E"],[750,"impl-From%3CCommitment%3C%3CTypes+as+NodeType%3E::BlockHeader%3E%3E-for-BlockId%3CTypes%3E"],[751,"impl-From%3Cusize%3E-for-BlockId%3CTypes%3E"],[778,"impl-From%3CRequestError%3E-for-Error"],[779,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[1179,"impl-NodeDataSource%3CTypes%3E-for-ExtensibleDataSource%3CD,+U%3E"],[1180,"impl-StatusDataSource-for-ExtensibleDataSource%3CD,+U%3E"],[1291,"impl-NodeDataSource%3CTypes%3E-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1292,"impl-StatusDataSource-for-FetchingDataSource%3CTypes,+S,+P%3E"],[1407,"impl-DataSourceLifeCycle-for-FetchingDataSource%3CMockTypes,+FileSystemStorage%3CMockTypes%3E,+P%3E"],[1408,"impl-FetchingDataSource%3CTypes,+FileSystemStorage%3CTypes%3E,+P%3E"],[1432,"impl-FetchingDataSource%3CTypes,+SqlStorage,+P%3E"],[1433,"impl-DataSourceLifeCycle-for-FetchingDataSource%3CMockTypes,+SqlStorage,+P%3E"],[1644,"impl-Transaction-for-Transaction%3CRwLockReadGuard%3C\'a,+FileSystemStorageInner%3CTypes%3E%3E%3E"],[1645,"impl-Transaction-for-Transaction%3CRwLockWriteGuard%3C\'a,+FileSystemStorageInner%3CTypes%3E%3E%3E"],[1704,"impl-Transaction-for-Transaction%3CRwLockReadGuard%3C\'a,+FileSystemStorageInner%3CTypes%3E%3E%3E"],[1705,"impl-Transaction-for-Transaction%3CRwLockWriteGuard%3C\'a,+FileSystemStorageInner%3CTypes%3E%3E%3E"],[1805,"impl-StatusDataSource-for-DataSource"],[1806,"impl-NodeDataSource%3CMockTypes%3E-for-DataSource"],[1983,"impl-AsRef%3Cdyn+Error%3E-for-Error"],[1984,"impl-AsRef%3Cdyn+Error+%2B+Send+%2B+Sync%3E-for-Error"],[2121,"impl-Display-for-Error"],[2122,"impl-Debug-for-Error"],[2123,"impl-Debug-for-Migration"],[2124,"impl-Display-for-Migration"],[2882,"impl-Display-for-CurrencyMismatchError"],[2883,"impl-Debug-for-CurrencyMismatchError"],[2884,"impl-Display-for-InvalidCurrencyCodeError"],[2885,"impl-Debug-for-InvalidCurrencyCodeError"],[2886,"impl-Debug-for-CurrencyCode"],[2887,"impl-Display-for-CurrencyCode"],[2888,"impl-Debug-for-MonetaryValue"],[2889,"impl-Display-for-MonetaryValue"],[2890,"impl-Debug-for-BlockIdentifier%3CTypes%3E"],[2891,"impl-Display-for-BlockIdentifier%3CTypes%3E"],[2892,"impl-Display-for-TransactionIdentifier%3CTypes%3E"],[2893,"impl-Debug-for-TransactionIdentifier%3CTypes%3E"],[2899,"impl-Debug-for-TimestampConversionError"],[2900,"impl-Display-for-TimestampConversionError"],[2911,"impl-Debug-for-GetBlockDetailError"],[2912,"impl-Display-for-GetBlockDetailError"],[2913,"impl-Debug-for-GetBlockSummariesError"],[2914,"impl-Display-for-GetBlockSummariesError"],[2915,"impl-Display-for-GetTransactionDetailError"],[2916,"impl-Debug-for-GetTransactionDetailError"],[2917,"impl-Debug-for-GetTransactionSummariesError"],[2918,"impl-Display-for-GetTransactionSummariesError"],[2919,"impl-Debug-for-GetExplorerSummaryError"],[2920,"impl-Display-for-GetExplorerSummaryError"],[2921,"impl-Display-for-GetSearchResultsError"],[2922,"impl-Debug-for-GetSearchResultsError"],[2923,"impl-Debug-for-Error"],[2924,"impl-Display-for-Error"],[2944,"impl-From%3CTryFromIntError%3E-for-TimestampConversionError"],[2945,"impl-From%3CComponentRange%3E-for-TimestampConversionError"],[2956,"impl-From%3CError%3E-for-GetBlockDetailError"],[2957,"impl-From%3CQueryError%3E-for-GetBlockDetailError"],[2960,"impl-From%3CError%3E-for-GetBlockSummariesError"],[2961,"impl-From%3CQueryError%3E-for-GetBlockSummariesError"],[2962,"impl-From%3CQueryError%3E-for-GetTransactionDetailError"],[2963,"impl-From%3CError%3E-for-GetTransactionDetailError"],[2964,"impl-From%3CTimestampConversionError%3E-for-GetTransactionDetailError"],[2966,"impl-From%3CError%3E-for-GetTransactionSummariesError"],[2967,"impl-From%3CQueryError%3E-for-GetTransactionSummariesError"],[2969,"impl-From%3CGetTransactionSummariesError%3E-for-GetExplorerSummaryError"],[2970,"impl-From%3CGetBlockSummariesError%3E-for-GetExplorerSummaryError"],[2971,"impl-From%3CError%3E-for-GetExplorerSummaryError"],[2973,"impl-From%3CQueryError%3E-for-GetExplorerSummaryError"],[2974,"impl-From%3CGetBlockDetailError%3E-for-GetExplorerSummaryError"],[2975,"impl-From%3CQueryError%3E-for-GetSearchResultsError"],[2976,"impl-From%3CError%3E-for-GetSearchResultsError"],[3493,"impl-Provider%3CTypes,+PayloadRequest%3E-for-AnyProvider%3CTypes%3E"],[3494,"impl-Provider%3CTypes,+VidCommonRequest%3E-for-AnyProvider%3CTypes%3E"],[3495,"impl-Provider%3CTypes,+LeafRequest%3E-for-AnyProvider%3CTypes%3E"],[3496,"impl-Provider%3CTypes,+PayloadRequest%3E-for-QueryServiceProvider%3CVer%3E"],[3497,"impl-Provider%3CTypes,+LeafRequest%3E-for-QueryServiceProvider%3CVer%3E"],[3498,"impl-Provider%3CTypes,+VidCommonRequest%3E-for-QueryServiceProvider%3CVer%3E"],[3704,"impl-Debug-for-Snapshot%3CTypes,+T,+ARITY%3E"],[3705,"impl-Display-for-Snapshot%3CTypes,+T,+ARITY%3E"],[3706,"impl-Debug-for-Error"],[3707,"impl-Display-for-Error"],[3710,"impl-From%3CRequestError%3E-for-Error"],[3712,"impl-From%3CQueryError%3E-for-Error"],[3713,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[3877,"impl-Debug-for-MetricsError"],[3878,"impl-Display-for-MetricsError"],[3897,"impl-Metrics-for-PrometheusMetrics"],[3898,"impl-PrometheusMetrics"],[4182,"impl-Debug-for-Error"],[4183,"impl-Display-for-Error"],[4196,"impl-From%3CQueryError%3E-for-Error"],[4198,"impl-From%3C(String,+StatusCode)%3E-for-Error"],[4199,"impl-From%3CRequestError%3E-for-Error"],[4383,"impl-Debug-for-Error"],[4384,"impl-Display-for-Error"],[4387,"impl-From%3CString%3E-for-Error"],[4388,"impl-From%3CRequestError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAE4PKAECAAEABQAAAAgAAQALAAEADwAAABMAAwAYAAEAHgAMACwAAgAyAA8ARQAYAGAAAQBjACwAlwAJAKMABQCsAAEAsQAGALkAAAC7AAEAvwANANUAAgDZAAkA5AABAOcAAADqAAkA9QAEAPsAAgD/ABoAGwEIACgBDwA6AQAAPAEDAEEBAABDAQAARQEAAEcBAABJAQEATAEBAFABCABaAQQAYAEAAGIBAQBlAQMAagECAG4BGQCJAQsAlgEBAJkBLwDRAUgAGwJtAIsCPADQAhoA7AIAAO4CAgDzAgAA9wIAAPsCAAD/AgAAAQMAAAsDAQAOAxQAJAMIAC4DDwA/AxkAcQMHAHsDAAB+AwAAgAMaAJwDAQCfAwIAowMBAKsDIQDQAwEA0wMQAOUDKgASBAAAFgQAABoELwBLBDIAgAQLAI0EAQCQBAEAlgQEAJwEGwC5BAEAvQQaANoEAADdBAQA4wQAAOUEAwDqBAUA8gQIAPwEAwABBQIABwUMABYFBQAdBQAAIAUIACsFBAAzBRgATwUDAFYFBQBdBRAAfAUAAH4FAgCDBQAAhgUAAIgFCgCWBQAAmgUCAJ4FBAClBQIAqQUEAK8FBAC1BQAAuAUJAMMFAADGBQoA0wUAANcFQAAaBgEAHQYbADwGJABiBg0AcgYPAIUGFACdBgMAowYHAKwGDwC9BhYA1gYTAOwGHAAKByAALgcVAEcHJwBwBwoAfAcCAIEHAQCFBwIAiQcAAIsHCwCaBwAAnQcAAKUHAgC3BwYAwAcBAMMHAwDIBxQA3gcAAOAHAADjBxMA+wcIAAUIJAAtCBAASggNAF8IAABjCAwAcQgMAIIIDQCbCAkApggAAKgIAACvCAwAvQgAAMQIAADGCAAAyAgAAMoIAQDNCAIA0QgrAP4IAQABCR4AIgkCACcJDgA3CQAAOwkBAEAJAgBGCQIAUAkCAFQJAABWCQEAWQkAAFsJAABdCQAAXwkAAGEJAABjCQAAZQkEAGsJBQB0CQEAdwkGAIAJAgCFCQEAigkBAJAJBwCZCRAAqwlnABQKNgBMCksAmQoFAKAKmQA8CwEAQAsCAEQLAABGCwEASQsAAEsLKACBCwEAjQsBAJELBACXCwEAmgsCAJ4LAwClCwEAqQsAAKsLAACuCwMAuAsrAAcMKgA0DCsAYQwCAGUMAwBrDAAAbgwWAIYMEQCZDJUAMA0jAFcNDABlDQAAZw0CAGwNAQBvDQQAeQ0DAH4NJQCmDQsAtg0DAL4NGQDaDQMA5w0vABoOCQAnDhwARg4DAEsOAABNDioAeQ4DAH8OAACBDgUAiA4DAJAOCQCbDgQAoQ4PALcOAwC9DnMAOg8AADwPBABHDwkAWg9NAKkPBgCxDwAAsw8AALUPAAC3DwEAug8nAOMPZwBNEAwAZRAAAGcQEQCEEC8AtRA5APAQLgAgEQEAJBEDACoRFgBDERIAWBEBAF0RAwBjEREAdhELAIMRBACJEQQAjxEJAJoRDQCqEQUAsREtAOIRCQDvEQAA8REDAPYRBAD8EQIAABIAAAISAgAGEgEACRIDAA4SCQAbEgIAHxIAAA=="}]]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); -//{"start":39,"fragment_lengths":[114406]} \ No newline at end of file +//{"start":39,"fragment_lengths":[114589]} \ No newline at end of file diff --git a/search.desc/hotshot_query_service/hotshot_query_service-desc-0-.js b/search.desc/hotshot_query_service/hotshot_query_service-desc-0-.js index e6f2a4a20..90186e16d 100644 --- a/search.desc/hotshot_query_service/hotshot_query_service-desc-0-.js +++ b/search.desc/hotshot_query_service/hotshot_query_service-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("hotshot_query_service", 0, "The HotShot Query Service is a minimal, generic query …\nRead-only wrapper for API state which does not require …\nContains the error value\nThere was an error while trying to fetch the requested …\nSNAFU context selector for the QueryError::Error variant\nThis is the consensus-internal analogous concept to a …\nThe requested resource exists but is not currently …\nSNAFU context selector for the QueryError::Missing variant\nThe requested resource does not exist or is not known to …\nSNAFU context selector for the QueryError::NotFound variant\nContains the success value\nA reference to a T which can be resolved into a whole T.\nItem within a Payload.\nVID commitment type\nVID common type\nVID share type\nQueries for HotShot chain state.\nThe block header contained in this leaf.\nGet a mutable reference to the block header contained in …\nOptional block payload.\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nCalculate the leaf commitment, which is gated on the …\nGet a commitment to the underlying object.\nPersistent storage and sources of data consumed by APIs.\nValidate that a leaf has the right upgrade certificate to …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nFetching missing data from remote providers.\nFill this leaf with the block payload.\nFill this leaf with the block payload, without checking …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs a leaf from a given quorum proposal.\nCreate a new leaf from its components.\nHeight of this leaf in the chain.\nEmbed migrations from the given directory into the current …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nThe QC linking this leaf to its parent in the chain.\nApi for querying merklized state\nA node’s view of a HotShot chain\nCommitment to this leaf’s parent.\nA commitment to the block payload contained in this leaf.\nRun an instance of the HotShot Query service with no …\nQueries for node-specific state and uncommitted data.\nAsync task utilites.\nGet the underlying object if it is available without …\nCommon functionality provided by types used in this crate.\nTake the block payload from the leaf and return it if it …\nThe QC linking this leaf to its parent in the chain.\nTime when this leaf was created.\nAn interface for querying a HotShot blockchain.\nA block hash is the hash of the block header.\nInformation about a block.\nSNAFU context selector for the Error::Custom variant\nAn in-progress request to fetch some data.\nSNAFU context selector for the Error::FetchBlock variant\nSNAFU context selector for the Error::FetchLeaf variant\nSNAFU context selector for the Error::FetchTransaction …\nA proof that a certain transaction exists in the block.\nSNAFU context selector for the …\nEnumerate the transactions in this block.\nA summary of a payload without all the data.\nA block payload whose contents (e.g. individual …\nSNAFU context selector for the Error::RangeLimit variant\nSNAFU context selector for the Error::Request variant\nAn index which can be used to efficiently retrieve a …\nA summary of a VID payload without all the data.\nAppend information about a new block to the database.\nThe hash of the block containing this transaction.\nThe height of the block containing this transaction.\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nGet the index of the transaction with a given hash, if it …\nGet the index of the transaction with a given hash, if it …\nConvert this Fetch to a Result with the provided error …\nEnumerate the transactions in the block with their indices.\nEnumerate the transactions in the block with their indices.\nAdditional API specification files to merge with …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nTimeout for failing requests due to missing data.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the transaction with the given hash.\nThe hash of this transaction.\nThe (0-based) position of this transaction within its …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nWhether this block is empty of transactions.\nWhether this block is empty of transactions.\nDoes this fetch represent an unresolved query?\nList the transaction indices in the block.\nThe maximum number of large objects which can be loaded in …\nThe number of transactions in the block.\nTransform the result of this fetch.\nCollect information about a Leaf.\nGet the index of the nth transaction.\nGet the index of the nth transaction.\nGet the nth transaction.\nGet the nth transaction.\nGet the nth transaction, along with an inclusion proof.\nGet the nth transaction, along with an inclusion proof.\nGet an inclusion proof for a transaction with a given …\nGet an inclusion proof for a transaction with a given …\nA proof of inclusion of this transaction in its block.\nWait for the data to become available, if it is not …\nThe maximum number of small objects which can be loaded in …\nGet a transaction by its block-specific index.\nGet a transaction by its block-specific index.\nThe underlying transaction data.\nGet the transaction with a given hash, if it is in the …\nGet the transaction with a given hash, if it is in the …\nGet the transaction with a given hash, if it is in the …\nGet the transaction with a given hash, if it is in the …\nGet a transaction by its block-specific index, along with …\nGet the requested data if it is available immediately.\nConvert this Fetch to a Result with the provided error …\nWait for the requested data to become available, but only …\nWrapper to add extensibility to an existing data source.\nA minimal data source for the status API provided in this …\nA unit of atomicity for updating a shared data sourec.\nA transaction which can read and modify the data source.\nAn extension trait for types which implement the update …\nA data source with an atomic transaction-based …\nGeneric tests we can instantiate for all the availability …\nAsynchronous retrieval of missing data.\nReturns the argument unchanged.\nReturns the argument unchanged.\nAccess the underlying data source.\nMutably access the underlying data source.\nCalls U::from(self).\nCalls U::from(self).\nGeneric tests we can instantiate for all the node data …\nGeneric tests we can instantiate for any data source with …\nStart a read-only transaction on the data source.\nGeneric tests we can instantiate for all the status data …\nPersistent storage for data sources.\nUpdate query state based on a new consensus event.\nStart an atomic transaction on the data source.\nA provider which can be used as a fetcher by the …\nBuilder for FetchingDataSource with configuration.\nThe most basic kind of data source.\nBuild a FetchingDataSource with these options.\nBuild a FetchingDataSource with the given storage and …\nConnect to a remote database.\nCreate a new FileSystemDataSource with storage at path.\nCreate a new FileSystemDataSource using a persistent …\nRun without an aggregator.\nRun without proactive fetching.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConstruct a new builder with the given storage and fetcher …\nOpen an existing FileSystemDataSource from storage at path.\nOpen an existing FileSystemDataSource using a persistent …\nAdvance the version of the persistent store without …\nAdd a delay between active fetches in proactive scans.\nSet the number of items to process at a time when …\nAdds a delay between chunk fetches during proactive scans.\nSet the interval (denominated in minor scans) between …\nSet the offset (denominated in minor scans) before the …\nSet the maximum delay between retries of failed operations.\nSet the minimum delay between retries of failed operations.\nSet the time interval between minor proactive fetching …\nSet the number of items to process at a time when scanning …\nSet the number of items to process at a time when loading …\nSet the maximum number of simultaneous fetches.\nSet the multiplier for exponential backoff when retrying …\nSet the randomization factor for randomized backoff when …\nSet the maximum time to retry failed operations before …\nA data source for the APIs provided in this crate, backed …\nCreate a new FileSystemDataSource with storage at path.\nCreate a new FileSystemDataSource using a persistent …\nOpen an existing FileSystemDataSource from storage at path.\nOpen an existing FileSystemDataSource using a persistent …\nAdvance the version of the persistent store without …\nThe Error type, a wrapper around a dynamic error type.\nRepresents a schema migration to be run on the database, …\nA data source for the APIs provided in this crate, backed …\nConnect to a remote database.\nEmbed migrations from the given directory into the current …\nPersistent storage for a HotShot blockchain.\nAn interface for querying Data and Statistics from the …\nThis trait defines methods that a data source should …\nThe block height for which aggregate statistics are …\nget_block_detail is a method that retrieves the details of …\nget_block_summaries is a method that retrieves a list of …\nget_explorer_summary is a method that retrieves a summary …\nget_search_results is a method that retrieves the results …\nget_transaction_detail is a method that retrieves the …\nget_transaction_summaries is a method that retrieves a …\nSearch the database for missing objects and generate a …\nUpdate aggregate statistics based on a new block.\nTarget any action for failure.\nStorage wrapper for error injection.\nA specific action that can be targetted to inject an error.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nStorage for the APIs provided in this crate, backed by a …\nCreate a new FileSystemStorage with storage at path.\nCreate a new FileSystemStorage using a persistent storage …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nOpen an existing FileSystemStorage from storage at path.\nOpen an existing FileSystemStorage using a persistent …\nAdvance the version of the persistent store without …\nMock storage implementation which doesn’t actually store …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nEither Postgres or no storage.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nNumber of blocks to remove in a single pruning operation.\nReturns the argument unchanged.\nPruning interval\nCalls U::from(self).\nMaximum disk usage (in basis points).\nMinimum data retention period\nDisk space threshold (in bytes).\nTarget data retention period\nThe concrete type used as a buffer for arguments while …\nThe concrete Arguments implementation for this database.\nThe concrete Column implementation for this database.\nPostgres client config.\nThe concrete Connection implementation for this database.\nA database driver.\nThe concrete database backing a SQL data source.\nThe Error type, a wrapper around a dynamic error type.\nA type that contains or can provide a database connection …\nA collection of parameters with a statically known length.\nRepresents a schema migration to be run on the database, …\nThe display name for this database driver.\nA collection of parameters which can be bound to a SQL …\nHelper type for programatically constructing queries.\nThe concrete QueryResult implementation for this database.\nMarker type indicating a transaction with read-only access …\nThe concrete Row implementation for this database.\nStorage for the APIs provided in this crate, backed by a …\nSqlite database driver.\nThe concrete Statement implementation for this database.\nAn atomic SQL transaction.\nThe concrete TransactionManager implementation for this …\nTrait for marker types indicating what type of access a …\nThe concrete TypeInfo implementation for this database.\nThe schemes for database URLs that should match this …\nThe concrete type used to hold an owned copy of the …\nThe concrete type used to hold a reference to the …\nMarker type indicating a transaction with read-write …\nGet the timestamp from when the Migration was applied. None…\nDisable pruning and reconstruct previously pruned data.\nGet the backtrace for this Error.\nAdd an argument and return its name as a formal parameter …\nConvert range bounds to a SQL WHERE clause constraining a …\nConnect to the database, setting options on the underlying …\nAn iterator of the chain of source errors contained by …\nGet the Migration checksum. Checksum is formed from the …\nConnect to the database with this config.\nConnect to a remote database.\nSet the maximum lifetime of a connection.\nWrap the error value with additional context.\nSet the name of the database to connect to.\nThe migrations requied to build the default schema for …\nAttempt to downcast the error object to a concrete type.\nDowncast this error object by mutable reference.\nDowncast this error object by reference.\nExecute the query and return the total number of rows …\nExecute the query and return the total number of rows …\nExecute multiple queries and return the rows affected from …\nExecute multiple queries and return the rows affected from …\nExecute a statement that is expected to modify at least …\nExecute a statement that is expected to modify at least …\nExecute a statement that is expected to modify exactly one …\nExecute a statement that is expected to modify exactly one …\nExecute the query and return the generated results as a …\nExecute the query and return the generated results as a …\nExecute the query and return all the generated results, …\nExecute the query and return all the generated results, …\nExecute multiple queries and return the generated results …\nExecute the query and returns exactly one row.\nExecute the query and returns exactly one row.\nExecute the query and returns at most one row.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nRetreives a Merkle path from the database\nConstruct a SQL WHERE clause which filters for a header …\nSet the hostname of the database server.\nSet the maximum idle time of a connection.\nEmbed the contents of a directory in your crate.\nEmbed migrations from the given directory into the current …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns true if E is the type held by this error object.\nLoad a header from storage.\nSet the maximum number of connections to maintain at any …\nAdd custom migrations to run when connecting to the …\nSet the minimum number of connections to maintain at any …\nCreate a new error object from a printable error message.\nGet the Migration Name\nCreate a new error object from any error type.\nSkip all migrations when connecting to the database.\nSet a password for connecting to the database.\nSet the port on which to connect to the database.\nGet the Prefix\nPrepare the SQL query to inspect the type information of …\nPrepare the SQL query to inspect the type information of …\nPrepare the SQL query, with parameter type information, to …\nNote: The prune operation may not immediately free up …\nEnable pruning with a given configuration.\nFinalize the query with a constructed SQL statement.\nFinalize the query with a constructed SQL statement and a …\nReset the schema on connection.\nThe lowest level cause of this error — this error’s …\nSet the name of the schema to use for queries.\nLog at WARN level any time a SQL statement takes longer …\nUse TLS for an encrypted connection to the database.\nCreate an unapplied migration, name and version are parsed …\nSet the DB user to connect as.\nGet the Migration version\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nBalanceAmount is a type that represents a general balance …\nBlockDetail is a struct that represents the details of a …\nBlockDetailResponse is a struct that represents the …\nBlockIdentifier is an enum that represents multiple ways …\nBlockRange is a struct that represents a range for a …\nBlockSummary is a struct that represents a summary …\nBlockSummaryResponse is a struct that represents the …\nCurrencyCode represents an enumeration of all …\nCurrencyMismatchError is an error that occurs when two …\nError is an enum that represents the various errors that …\nAn interface for querying Data and Statistics from the …\nExplorerHeader is a trait that represents certain …\nExplorerHistograms provides a series of data points that …\nExplorerSummary is a struct that represents an at-a-glance …\nExplorerSummaryResponse is a struct that represents the …\nExplorerTransaction is a trait that allows the Explorer …\nFeeAttribution represents a specific attribution of fees …\nGenesisOverview provides a summary overview of the block …\nGetBlockDetailError represents an error that has occurred …\nGetBlockSummariesError represents an error that has …\nGetBlockSummariesRequest is a struct that represents an …\nGetExplorerSummaryError represents an error that has …\nGetSearchResultsError represents an error that has …\nGetTransactionDetailError represents an error that has …\nGetTransactionSummariesError represents an error that has …\nGetTransactionSummariesRequest is a struct that represents …\nInvalidCurrencyCodeError is an error that occurs when an …\nMonetaryValues is a struct that paris a CurrencyCode with …\nNamespaceId is a type that represents the id of a …\nNamespaceId is a type that represents the id of a …\nProposerId is a type that represents the proposer id of …\nSearchResult is a struct that represents the results of …\nSearchResultResponse is a struct that represents the …\nTimestamp represents a specific point in time that has a …\nTimestampConversionError represents an error that has …\nTransactionDetail is a struct that represents the details …\nTransactionDetailResponse is a struct that represents the …\nTransactionIdentifier is an enum that represents multiple …\nTransactionRange is a struct that represents a range for a …\nTransactionSummariesResponse is a struct that represents …\nTransactionSummary is a struct that represents a summary …\nTransactionSummaryFilter represents the various filters …\nWalletAddress is a type that represents the address of a …\nadd attempts to add the two MonetaryValues together. This …\nbtc is a convenience function to create a MonetaryValue …\ndefine_api is a function that defines the API endpoints …\ndeserialize attempts to convert a string into a …\ndeserialize converts a string representation of a RFC3339 …\nesp is a convenience function to create a MonetaryValue …\neth is a convenience function to create a MonetaryValue …\nThe wallet address of the fee info account contained …\nThe balance amount of the fee info contained within the …\nfmt formats the error into a human readable string\nfmt formats the error into a human readable string\nfmt formats the currency code into a human readable string\nfmt formats the MonetaryValue into a human readable …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nfrom converts an i128 into a MonetaryValue with the USD …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nget_block_detail is a method that retrieves the details of …\nget_block_summaries is a method that retrieves a list of …\nget_explorer_summary is a method that retrieves a summary …\nget_search_results is a method that retrieves the results …\nget_transaction_detail is a method that retrieves the …\nget_transaction_summaries is a method that retrieves a …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nA collection of namespace ids that are contained within …\nnew creates a new MonetaryValue instance with the given …\nThe proposer id of the block as stored within the block …\nThe balance amount of the reward for constructing the …\nserialize converts the error into a struct representation\nserialize converts the error into a struct representation\nserialize converts the MonetaryValue into a String …\nserialize converts the timestamp into a string …\nsignificant_digits represents the total number of …\nsub attempts to subtract the two MonetaryValues together. …\nusd is a convenience function to create a MonetaryValue …\nA callback to process the result of a request.\nManagement of concurrent requests to fetch resources.\nA callback to process the result of a request.\nReturns the argument unchanged.\nCalls U::from(self).\nAsynchronous fetching from external data availability …\nRequests for fetching resources.\nFetch a resource, if it is not already being fetched.\nAdaptor combining multiple data availability providers.\nTrivial Provider where fetching always fails.\nA provider which is able to satisfy requests for data of …\nData availability provider backed by another instance of …\nAdaptor to add test-only functionality to an existing …\nDelay fetch requests until unblock.\nCause subsequent requests to fail.\nFetch a resource.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nAllow blocked fetch requests to proceed.\nStop requests from failing as a result of a previous call …\nAdd a sub-provider which fetches blocks.\nAdd a sub-provider which fetches leaves.\nAdd a sub-provider which fetches both blocks and leaves.\nAdd a sub-provider which fetches VID common data.\nA request for a leaf with a given height.\nA request for a payload with a given commitment.\nA request for a resource.\nThe type of resource that will be returned as a successful …\nA request for VID common data.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nThis trait should be implemented by the MerkleTree that …\nThis trait defines methods that a data source should …\nSnapshot can be queried by block height (index) or merkle …\nThis trait defines methods for updating the storage with …\nAdditional API specification files to merge with …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nRetrieves the field in the header containing the Merkle …\nInsert a forgotten path into the tree.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRetrieves the name of the state being queried.\nGet the height of the tree\nA Counter metric.\nA CounterFamily metric.\nA Gauge metric.\nA GaugeFamily metric.\nA Histogram metric.\nA HistogramFamily metric.\nA Prometheus-based implementation of a Metrics registry.\nA TextFamily metric.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet a gauge family in this sub-group by name.\nGet a counter in this sub-group by name.\nGet a counter family in this sub-group by name.\nGet a gauge in this sub-group by name.\nGet a histogram in this sub-group by name.\nGet a histogram family in this sub-group by name.\nGet a (possibly nested) subgroup of this group by its path.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSNAFU context selector for the Error::Custom variant\nSNAFU context selector for the Error::Query variant\nSNAFU context selector for the Error::QueryVid variant\nSNAFU context selector for the Error::QueryWindow variant\nSNAFU context selector for the Error::Request variant\nResponse to a /:resource/window query.\nConsume the selector and return the associated error\nAdditional API specification files to merge with …\nConsume the selector and return a Result with the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe block height of the block that starts the window.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSearch the database for missing objects and generate a …\nThe maximum number of headers which can be loaded in a …\nAdditional API specification files to merge with …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nA background task which is cancelled on Drop\nA task handle which can be joined, but is cancelled on Drop\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nWait for the task to complete and get its output.\nSpawn a background task, which will be cancelled when …\nSpawn a task, which will be cancelled when dropped.\nBacking storage for the data source.\nReturns the argument unchanged.\nCalls U::from(self).\nSetup runs after setting up the network but before …\nA type alias for the mock base version\nThe block header to append\nBlock number.\nFast commitment for builder verification\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nPer spec, justification\nblock metdata\nVID commitment to the payload.\nPossible timeout or view sync certificate.\nrandom\nshould_return_err is a testing utility to validate …\nTimestamp when this header was created.\nList of transactions.\nPossible upgrade certificate, which the leader may …\nThe URL of the builder to reach out to.\nCurView from leader when proposing leaf\nTypes which have a notion of “height” within a chain.") \ No newline at end of file +searchState.loadedDescShard("hotshot_query_service", 0, "The HotShot Query Service is a minimal, generic query …\nRead-only wrapper for API state which does not require …\nContains the error value\nThere was an error while trying to fetch the requested …\nSNAFU context selector for the QueryError::Error variant\nThis is the consensus-internal analogous concept to a …\nThe requested resource exists but is not currently …\nSNAFU context selector for the QueryError::Missing variant\nThe requested resource does not exist or is not known to …\nSNAFU context selector for the QueryError::NotFound variant\nContains the success value\nA reference to a T which can be resolved into a whole T.\nItem within a Payload.\nVID commitment type\nVID common type\nVID share type\nQueries for HotShot chain state.\nThe block header contained in this leaf.\nGet a mutable reference to the block header contained in …\nOptional block payload.\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nCalculate the leaf commitment, which is gated on the …\nGet a commitment to the underlying object.\nPersistent storage and sources of data consumed by APIs.\nValidate that a leaf has the right upgrade certificate to …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nFetching missing data from remote providers.\nFill this leaf with the block payload.\nFill this leaf with the block payload, without checking …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs a leaf from a given quorum proposal.\nCreate a new leaf from its components.\nHeight of this leaf in the chain.\nEmbed migrations from the given directory into the current …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nThe QC linking this leaf to its parent in the chain.\nApi for querying merklized state\nA node’s view of a HotShot chain\nCommitment to this leaf’s parent.\nA commitment to the block payload contained in this leaf.\nRun an instance of the HotShot Query service with no …\nQueries for node-specific state and uncommitted data.\nAsync task utilites.\nGet the underlying object if it is available without …\nCommon functionality provided by types used in this crate.\nTake the block payload from the leaf and return it if it …\nThe QC linking this leaf to its parent in the chain.\nTime when this leaf was created.\nAn interface for querying a HotShot blockchain.\nA block hash is the hash of the block header.\nInformation about a block.\nSNAFU context selector for the Error::Custom variant\nAn in-progress request to fetch some data.\nSNAFU context selector for the Error::FetchBlock variant\nSNAFU context selector for the Error::FetchLeaf variant\nSNAFU context selector for the Error::FetchTransaction …\nA proof that a certain transaction exists in the block.\nSNAFU context selector for the …\nEnumerate the transactions in this block.\nA summary of a payload without all the data.\nA block payload whose contents (e.g. individual …\nSNAFU context selector for the Error::RangeLimit variant\nSNAFU context selector for the Error::Request variant\nAn index which can be used to efficiently retrieve a …\nA summary of a VID payload without all the data.\nAppend information about a new block to the database.\nThe hash of the block containing this transaction.\nThe height of the block containing this transaction.\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nConsume the selector and return the associated error\nGet the index of the transaction with a given hash, if it …\nGet the index of the transaction with a given hash, if it …\nConvert this Fetch to a Result with the provided error …\nEnumerate the transactions in the block with their indices.\nEnumerate the transactions in the block with their indices.\nAdditional API specification files to merge with …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nConsume the selector and return a Result with the …\nTimeout for failing requests due to missing data.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the transaction with the given hash.\nThe hash of this transaction.\nThe (0-based) position of this transaction within its …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nWhether this block is empty of transactions.\nWhether this block is empty of transactions.\nDoes this fetch represent an unresolved query?\nList the transaction indices in the block.\nThe maximum number of large objects which can be loaded in …\nThe number of transactions in the block.\nTransform the result of this fetch.\nCollect information about a Leaf.\nGet the index of the nth transaction.\nGet the index of the nth transaction.\nGet the nth transaction.\nGet the nth transaction.\nGet the nth transaction, along with an inclusion proof.\nGet the nth transaction, along with an inclusion proof.\nGet an inclusion proof for a transaction with a given …\nGet an inclusion proof for a transaction with a given …\nA proof of inclusion of this transaction in its block.\nWait for the data to become available, if it is not …\nThe maximum number of small objects which can be loaded in …\nGet a transaction by its block-specific index.\nGet a transaction by its block-specific index.\nThe underlying transaction data.\nGet the transaction with a given hash, if it is in the …\nGet the transaction with a given hash, if it is in the …\nGet the transaction with a given hash, if it is in the …\nGet the transaction with a given hash, if it is in the …\nGet a transaction by its block-specific index, along with …\nGet the requested data if it is available immediately.\nConvert this Fetch to a Result with the provided error …\nWait for the requested data to become available, but only …\nWrapper to add extensibility to an existing data source.\nA minimal data source for the status API provided in this …\nA unit of atomicity for updating a shared data sourec.\nA transaction which can read and modify the data source.\nAn extension trait for types which implement the update …\nA data source with an atomic transaction-based …\nGeneric tests we can instantiate for all the availability …\nAsynchronous retrieval of missing data.\nReturns the argument unchanged.\nReturns the argument unchanged.\nAccess the underlying data source.\nMutably access the underlying data source.\nCalls U::from(self).\nCalls U::from(self).\nGeneric tests we can instantiate for all the node data …\nGeneric tests we can instantiate for any data source with …\nStart a read-only transaction on the data source.\nGeneric tests we can instantiate for all the status data …\nPersistent storage for data sources.\nUpdate query state based on a new consensus event.\nStart an atomic transaction on the data source.\nA provider which can be used as a fetcher by the …\nBuilder for FetchingDataSource with configuration.\nThe most basic kind of data source.\nBuild a FetchingDataSource with these options.\nBuild a FetchingDataSource with the given storage and …\nConnect to a remote database.\nCreate a new FileSystemDataSource with storage at path.\nCreate a new FileSystemDataSource using a persistent …\nRun without an aggregator.\nRun without proactive fetching.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConstruct a new builder with the given storage and fetcher …\nOpen an existing FileSystemDataSource from storage at path.\nOpen an existing FileSystemDataSource using a persistent …\nAdvance the version of the persistent store without …\nAdd a delay between active fetches in proactive scans.\nSet the number of items to process at a time when …\nAdds a delay between chunk fetches during proactive scans.\nSet the interval (denominated in minor scans) between …\nSet the offset (denominated in minor scans) before the …\nSet the maximum delay between retries of failed operations.\nSet the minimum delay between retries of failed operations.\nSet the time interval between minor proactive fetching …\nSet the number of items to process at a time when scanning …\nSet the number of items to process at a time when loading …\nSet the maximum number of simultaneous fetches.\nSet the multiplier for exponential backoff when retrying …\nSet the randomization factor for randomized backoff when …\nSet the maximum time to retry failed operations before …\nA data source for the APIs provided in this crate, backed …\nCreate a new FileSystemDataSource with storage at path.\nCreate a new FileSystemDataSource using a persistent …\nOpen an existing FileSystemDataSource from storage at path.\nOpen an existing FileSystemDataSource using a persistent …\nAdvance the version of the persistent store without …\nThe Error type, a wrapper around a dynamic error type.\nRepresents a schema migration to be run on the database, …\nA data source for the APIs provided in this crate, backed …\nConnect to the database, setting options on the underlying …\nConnect to the database with this config.\nConnect to a remote database.\nEmbed migrations from the given directory into the current …\nPersistent storage for a HotShot blockchain.\nAn interface for querying Data and Statistics from the …\nThis trait defines methods that a data source should …\nThe block height for which aggregate statistics are …\nget_block_detail is a method that retrieves the details of …\nget_block_summaries is a method that retrieves a list of …\nget_explorer_summary is a method that retrieves a summary …\nget_search_results is a method that retrieves the results …\nget_transaction_detail is a method that retrieves the …\nget_transaction_summaries is a method that retrieves a …\nSearch the database for missing objects and generate a …\nUpdate aggregate statistics based on a new block.\nTarget any action for failure.\nStorage wrapper for error injection.\nA specific action that can be targetted to inject an error.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nStorage for the APIs provided in this crate, backed by a …\nCreate a new FileSystemStorage with storage at path.\nCreate a new FileSystemStorage using a persistent storage …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nOpen an existing FileSystemStorage from storage at path.\nOpen an existing FileSystemStorage using a persistent …\nAdvance the version of the persistent store without …\nMock storage implementation which doesn’t actually store …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nEither Postgres or no storage.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nNumber of blocks to remove in a single pruning operation.\nReturns the argument unchanged.\nPruning interval\nCalls U::from(self).\nMaximum disk usage (in basis points).\nMinimum data retention period\nDisk space threshold (in bytes).\nTarget data retention period\nThe concrete type used as a buffer for arguments while …\nThe concrete Arguments implementation for this database.\nThe concrete Column implementation for this database.\nThe concrete Connection implementation for this database.\nA database driver.\nThe underlying database type for a SQL data source.\nThe Error type, a wrapper around a dynamic error type.\nA type that contains or can provide a database connection …\nA collection of parameters with a statically known length.\nRepresents a schema migration to be run on the database, …\nThe display name for this database driver.\nA collection of parameters which can be bound to a SQL …\nHelper type for programatically constructing queries.\nThe concrete QueryResult implementation for this database.\nMarker type indicating a transaction with read-only access …\nThe concrete Row implementation for this database.\nStorage for the APIs provided in this crate, backed by a …\nSqlite database driver.\nThe concrete Statement implementation for this database.\nAn atomic SQL transaction.\nThe concrete TransactionManager implementation for this …\nTrait for marker types indicating what type of access a …\nThe concrete TypeInfo implementation for this database.\nThe schemes for database URLs that should match this …\nThe concrete type used to hold an owned copy of the …\nThe concrete type used to hold a reference to the …\nMarker type indicating a transaction with read-write …\nGet the timestamp from when the Migration was applied. None…\nDisable pruning and reconstruct previously pruned data.\nGet the backtrace for this Error.\nAdd an argument and return its name as a formal parameter …\nConvert range bounds to a SQL WHERE clause constraining a …\nConnect to the database, setting options on the underlying …\nAn iterator of the chain of source errors contained by …\nGet the Migration checksum. Checksum is formed from the …\nConnect to the database with this config.\nConnect to a remote database.\nSet the maximum lifetime of a connection.\nWrap the error value with additional context.\nThe migrations requied to build the default schema for …\nAttempt to downcast the error object to a concrete type.\nDowncast this error object by mutable reference.\nDowncast this error object by reference.\nExecute the query and return the total number of rows …\nExecute the query and return the total number of rows …\nExecute multiple queries and return the rows affected from …\nExecute multiple queries and return the rows affected from …\nExecute the query and return the generated results as a …\nExecute the query and return the generated results as a …\nExecute the query and return all the generated results, …\nExecute the query and return all the generated results, …\nExecute multiple queries and return the generated results …\nExecute the query and returns exactly one row.\nExecute the query and returns exactly one row.\nExecute the query and returns at most one row.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nRetreives a Merkle path from the database\nConstruct a SQL WHERE clause which filters for a header …\nSet the maximum idle time of a connection.\nEmbed the contents of a directory in your crate.\nEmbed migrations from the given directory into the current …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns true if E is the type held by this error object.\nLoad a header from storage.\nSet the maximum number of connections to maintain at any …\nAdd custom migrations to run when connecting to the …\nSet the minimum number of connections to maintain at any …\nCreate a new error object from a printable error message.\nGet the Migration Name\nCreate a new error object from any error type.\nSkip all migrations when connecting to the database.\nSets the database connection pool This allows reusing an …\nGet the Prefix\nPrepare the SQL query to inspect the type information of …\nPrepare the SQL query to inspect the type information of …\nPrepare the SQL query, with parameter type information, to …\nNote: The prune operation may not immediately free up …\nEnable pruning with a given configuration.\nFinalize the query with a constructed SQL statement.\nFinalize the query with a constructed SQL statement and a …\nReset the schema on connection.\nThe lowest level cause of this error — this error’s …\nLog at WARN level any time a SQL statement takes longer …\nCreate an unapplied migration, name and version are parsed …\nGet the Migration version\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nBalanceAmount is a type that represents a general balance …\nBlockDetail is a struct that represents the details of a …\nBlockDetailResponse is a struct that represents the …\nBlockIdentifier is an enum that represents multiple ways …\nBlockRange is a struct that represents a range for a …\nBlockSummary is a struct that represents a summary …\nBlockSummaryResponse is a struct that represents the …\nCurrencyCode represents an enumeration of all …\nCurrencyMismatchError is an error that occurs when two …\nError is an enum that represents the various errors that …\nAn interface for querying Data and Statistics from the …\nExplorerHeader is a trait that represents certain …\nExplorerHistograms provides a series of data points that …\nExplorerSummary is a struct that represents an at-a-glance …\nExplorerSummaryResponse is a struct that represents the …\nExplorerTransaction is a trait that allows the Explorer …\nFeeAttribution represents a specific attribution of fees …\nGenesisOverview provides a summary overview of the block …\nGetBlockDetailError represents an error that has occurred …\nGetBlockSummariesError represents an error that has …\nGetBlockSummariesRequest is a struct that represents an …\nGetExplorerSummaryError represents an error that has …\nGetSearchResultsError represents an error that has …\nGetTransactionDetailError represents an error that has …\nGetTransactionSummariesError represents an error that has …\nGetTransactionSummariesRequest is a struct that represents …\nInvalidCurrencyCodeError is an error that occurs when an …\nMonetaryValues is a struct that paris a CurrencyCode with …\nNamespaceId is a type that represents the id of a …\nNamespaceId is a type that represents the id of a …\nProposerId is a type that represents the proposer id of …\nSearchResult is a struct that represents the results of …\nSearchResultResponse is a struct that represents the …\nTimestamp represents a specific point in time that has a …\nTimestampConversionError represents an error that has …\nTransactionDetail is a struct that represents the details …\nTransactionDetailResponse is a struct that represents the …\nTransactionIdentifier is an enum that represents multiple …\nTransactionRange is a struct that represents a range for a …\nTransactionSummariesResponse is a struct that represents …\nTransactionSummary is a struct that represents a summary …\nTransactionSummaryFilter represents the various filters …\nWalletAddress is a type that represents the address of a …\nadd attempts to add the two MonetaryValues together. This …\nbtc is a convenience function to create a MonetaryValue …\ndefine_api is a function that defines the API endpoints …\ndeserialize attempts to convert a string into a …\ndeserialize converts a string representation of a RFC3339 …\nesp is a convenience function to create a MonetaryValue …\neth is a convenience function to create a MonetaryValue …\nThe wallet address of the fee info account contained …\nThe balance amount of the fee info contained within the …\nfmt formats the error into a human readable string\nfmt formats the error into a human readable string\nfmt formats the currency code into a human readable string\nfmt formats the MonetaryValue into a human readable …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nfrom converts an i128 into a MonetaryValue with the USD …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nget_block_detail is a method that retrieves the details of …\nget_block_summaries is a method that retrieves a list of …\nget_explorer_summary is a method that retrieves a summary …\nget_search_results is a method that retrieves the results …\nget_transaction_detail is a method that retrieves the …\nget_transaction_summaries is a method that retrieves a …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nA collection of namespace ids that are contained within …\nnew creates a new MonetaryValue instance with the given …\nThe proposer id of the block as stored within the block …\nThe balance amount of the reward for constructing the …\nserialize converts the error into a struct representation\nserialize converts the error into a struct representation\nserialize converts the MonetaryValue into a String …\nserialize converts the timestamp into a string …\nsignificant_digits represents the total number of …\nsub attempts to subtract the two MonetaryValues together. …\nusd is a convenience function to create a MonetaryValue …\nA callback to process the result of a request.\nManagement of concurrent requests to fetch resources.\nA callback to process the result of a request.\nReturns the argument unchanged.\nCalls U::from(self).\nAsynchronous fetching from external data availability …\nRequests for fetching resources.\nFetch a resource, if it is not already being fetched.\nAdaptor combining multiple data availability providers.\nTrivial Provider where fetching always fails.\nA provider which is able to satisfy requests for data of …\nData availability provider backed by another instance of …\nAdaptor to add test-only functionality to an existing …\nDelay fetch requests until unblock.\nCause subsequent requests to fail.\nFetch a resource.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nAllow blocked fetch requests to proceed.\nStop requests from failing as a result of a previous call …\nAdd a sub-provider which fetches blocks.\nAdd a sub-provider which fetches leaves.\nAdd a sub-provider which fetches both blocks and leaves.\nAdd a sub-provider which fetches VID common data.\nA request for a leaf with a given height.\nA request for a payload with a given commitment.\nA request for a resource.\nThe type of resource that will be returned as a successful …\nA request for VID common data.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nThis trait should be implemented by the MerkleTree that …\nThis trait defines methods that a data source should …\nSnapshot can be queried by block height (index) or merkle …\nThis trait defines methods for updating the storage with …\nAdditional API specification files to merge with …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nRetrieves the field in the header containing the Merkle …\nInsert a forgotten path into the tree.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRetrieves the name of the state being queried.\nGet the height of the tree\nA Counter metric.\nA CounterFamily metric.\nA Gauge metric.\nA GaugeFamily metric.\nA Histogram metric.\nA HistogramFamily metric.\nA Prometheus-based implementation of a Metrics registry.\nA TextFamily metric.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet a gauge family in this sub-group by name.\nGet a counter in this sub-group by name.\nGet a counter family in this sub-group by name.\nGet a gauge in this sub-group by name.\nGet a histogram in this sub-group by name.\nGet a histogram family in this sub-group by name.\nGet a (possibly nested) subgroup of this group by its path.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSNAFU context selector for the Error::Custom variant\nSNAFU context selector for the Error::Query variant\nSNAFU context selector for the Error::QueryVid variant\nSNAFU context selector for the Error::QueryWindow variant\nSNAFU context selector for the Error::Request variant\nResponse to a /:resource/window query.\nConsume the selector and return the associated error\nAdditional API specification files to merge with …\nConsume the selector and return a Result with the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe block height of the block that starts the window.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSearch the database for missing objects and generate a …\nThe maximum number of headers which can be loaded in a …\nAdditional API specification files to merge with …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nA background task which is cancelled on Drop\nA task handle which can be joined, but is cancelled on Drop\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nWait for the task to complete and get its output.\nSpawn a background task, which will be cancelled when …\nSpawn a task, which will be cancelled when dropped.\nBacking storage for the data source.\nReturns the argument unchanged.\nCalls U::from(self).\nSetup runs after setting up the network but before …\nA type alias for the mock base version\nThe block header to append\nBlock number.\nFast commitment for builder verification\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nPer spec, justification\nblock metdata\nVID commitment to the payload.\nPossible timeout or view sync certificate.\nrandom\nshould_return_err is a testing utility to validate …\nTimestamp when this header was created.\nList of transactions.\nPossible upgrade certificate, which the leader may …\nThe URL of the builder to reach out to.\nCurView from leader when proposing leaf\nTypes which have a notion of “height” within a chain.") \ No newline at end of file diff --git a/src/hotshot_query_service/data_source/sql.rs.html b/src/hotshot_query_service/data_source/sql.rs.html index a1e2c1711..02b0dc469 100644 --- a/src/hotshot_query_service/data_source/sql.rs.html +++ b/src/hotshot_query_service/data_source/sql.rs.html @@ -421,6 +421,21 @@ 421 422 423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -449,10 +464,12 @@
     use hotshot_types::traits::node_implementation::NodeType;
     pub use refinery::Migration;
     
    -pub use sql::{Config, Transaction};
    +pub use sql::Transaction;
     
     pub type Builder<Types, Provider> = fetching::Builder<Types, SqlStorage, Provider>;
     
    +pub type Config = sql::Config;
    +
     impl Config {
         /// Connect to the database with this config.
         pub async fn connect<Types, P: AvailabilityProvider<Types>>(
    @@ -501,9 +518,11 @@
     ///
     /// ## Initialization
     ///
    -/// When creating a [`SqlDataSource`], the caller can use [`Config`] to specify the host, user, and
    -/// database to connect to. As such, [`SqlDataSource`] is not very opinionated about how the
    -/// Postgres instance is set up. The administrator must simply ensure that there is a database
    +/// When creating a PostgreSQL [`SqlDataSource`], the caller can use [`Config`] to specify the host, user, and
    +/// database for the connection. If the `embedded-db` feature is enabled, the caller can instead specify the
    +/// file path for an SQLite database.
    +/// As such, [`SqlDataSource`] is not very opinionated about how the
    +/// database instance is set up. The administrator must simply ensure that there is a database
     /// dedicated to the [`SqlDataSource`] and a user with appropriate permissions (all on `SCHEMA` and
     /// all on `DATABASE`) over that database.
     ///
    @@ -519,10 +538,13 @@
     /// GRANT ALL ON DATABASE hotshot_query_service TO hotshot_user WITH GRANT OPTION;
     /// ```
     ///
    -/// One could then connect to this database with the following [`Config`]:
    +/// For SQLite, simply provide the file path, and the file will be created if it does not already exist.
    +///
    +/// One could then connect to this database with the following [`Config`] for postgres:
     ///
     /// ```
     /// # use hotshot_query_service::data_source::sql::Config;
    +/// #[cfg(not(feature= "embedded-db"))]
     /// Config::default()
     ///     .host("postgres.database.hostname")
     ///     .database("hotshot_query_service")
    @@ -530,7 +552,15 @@
     ///     .password("password")
     /// # ;
     /// ```
    +/// Or, if the `embedded-db` feature is enabled, configure it as follows for SQLite:
     ///
    +/// ```
    +/// # use hotshot_query_service::data_source::sql::Config;
    +/// #[cfg(feature= "embedded-db")]
    +/// Config::default()
    +///     .db_path("temp.db".into())
    +/// # ;
    +/// ```
     /// ## Resetting
     ///
     /// In general, resetting the database when necessary is left up to the administrator. However, for
    diff --git a/src/hotshot_query_service/data_source/storage/sql.rs.html b/src/hotshot_query_service/data_source/storage/sql.rs.html
    index 78713ac26..8ef16900d 100644
    --- a/src/hotshot_query_service/data_source/storage/sql.rs.html
    +++ b/src/hotshot_query_service/data_source/storage/sql.rs.html
    @@ -1214,6 +1214,195 @@
     1214
     1215
     1216
    +1217
    +1218
    +1219
    +1220
    +1221
    +1222
    +1223
    +1224
    +1225
    +1226
    +1227
    +1228
    +1229
    +1230
    +1231
    +1232
    +1233
    +1234
    +1235
    +1236
    +1237
    +1238
    +1239
    +1240
    +1241
    +1242
    +1243
    +1244
    +1245
    +1246
    +1247
    +1248
    +1249
    +1250
    +1251
    +1252
    +1253
    +1254
    +1255
    +1256
    +1257
    +1258
    +1259
    +1260
    +1261
    +1262
    +1263
    +1264
    +1265
    +1266
    +1267
    +1268
    +1269
    +1270
    +1271
    +1272
    +1273
    +1274
    +1275
    +1276
    +1277
    +1278
    +1279
    +1280
    +1281
    +1282
    +1283
    +1284
    +1285
    +1286
    +1287
    +1288
    +1289
    +1290
    +1291
    +1292
    +1293
    +1294
    +1295
    +1296
    +1297
    +1298
    +1299
    +1300
    +1301
    +1302
    +1303
    +1304
    +1305
    +1306
    +1307
    +1308
    +1309
    +1310
    +1311
    +1312
    +1313
    +1314
    +1315
    +1316
    +1317
    +1318
    +1319
    +1320
    +1321
    +1322
    +1323
    +1324
    +1325
    +1326
    +1327
    +1328
    +1329
    +1330
    +1331
    +1332
    +1333
    +1334
    +1335
    +1336
    +1337
    +1338
    +1339
    +1340
    +1341
    +1342
    +1343
    +1344
    +1345
    +1346
    +1347
    +1348
    +1349
    +1350
    +1351
    +1352
    +1353
    +1354
    +1355
    +1356
    +1357
    +1358
    +1359
    +1360
    +1361
    +1362
    +1363
    +1364
    +1365
    +1366
    +1367
    +1368
    +1369
    +1370
    +1371
    +1372
    +1373
    +1374
    +1375
    +1376
    +1377
    +1378
    +1379
    +1380
    +1381
    +1382
    +1383
    +1384
    +1385
    +1386
    +1387
    +1388
    +1389
    +1390
    +1391
    +1392
    +1393
    +1394
    +1395
    +1396
    +1397
    +1398
    +1399
    +1400
    +1401
    +1402
    +1403
    +1404
    +1405
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -1240,17 +1429,22 @@
     };
     use async_trait::async_trait;
     use chrono::Utc;
    -use futures::future::FutureExt;
    +
     use hotshot_types::traits::metrics::Metrics;
     use itertools::Itertools;
     use log::LevelFilter;
    +
    +#[cfg(not(feature = "embedded-db"))]
    +use futures::future::FutureExt;
    +#[cfg(not(feature = "embedded-db"))]
    +use sqlx::postgres::{PgConnectOptions, PgSslMode};
    +#[cfg(feature = "embedded-db")]
    +use sqlx::sqlite::SqliteConnectOptions;
     use sqlx::{
         pool::{Pool, PoolOptions},
    -    postgres::{PgConnectOptions, PgSslMode},
         ConnectOptions, Row,
     };
     use std::{cmp::min, fmt::Debug, str::FromStr, time::Duration};
    -
     pub extern crate sqlx;
     pub use sqlx::{Database, Sqlite};
     
    @@ -1264,7 +1458,7 @@
     // in the expansion of `include_migrations`, even when `include_migrations` is invoked from another
     // crate which doesn't have `include_dir` as a dependency.
     pub use crate::include_migrations;
    -pub use db::Db;
    +pub use db::*;
     pub use include_dir::include_dir;
     pub use queries::QueryBuilder;
     pub use refinery::Migration;
    @@ -1272,7 +1466,7 @@
     
     use self::{migrate::Migrator, transaction::PoolMetrics};
     
    -/// Embed migrations from the given directory into the current binary.
    +/// Embed migrations from the given directory into the current binary for PostgreSQL or SQLite.
     ///
     /// The macro invocation `include_migrations!(path)` evaluates to an expression of type `impl
     /// Iterator<Item = Migration>`. Each migration must be a text file which is an immediate child of
    @@ -1287,15 +1481,23 @@
     ///
     /// As an example, this is the invocation used to load the default migrations from the
     /// `hotshot-query-service` crate. The migrations are located in a directory called `migrations` at
    -/// the root of the crate.
    +/// - PostgreSQL migrations are in `/migrations/postgres`.
    +/// - SQLite migrations are in `/migrations/sqlite`.
     ///
     /// ```
     /// # use hotshot_query_service::data_source::sql::{include_migrations, Migration};
    +/// // For PostgreSQL
    +/// #[cfg(not(feature = "embedded-db"))]
    +///  let mut migrations: Vec<Migration> =
    +///     include_migrations!("$CARGO_MANIFEST_DIR/migrations/postgres").collect();
    +/// // For SQLite
    +/// #[cfg(feature = "embedded-db")]
     /// let mut migrations: Vec<Migration> =
    -///     include_migrations!("$CARGO_MANIFEST_DIR/migrations").collect();
    -/// migrations.sort();
    -/// assert_eq!(migrations[0].version(), 10);
    -/// assert_eq!(migrations[0].name(), "init_schema");
    +///     include_migrations!("$CARGO_MANIFEST_DIR/migrations/sqlite").collect();
    +///    
    +///     migrations.sort();
    +///     assert_eq!(migrations[0].version(), 10);
    +///     assert_eq!(migrations[0].name(), "init_schema");
     /// ```
     ///
     /// Note that a similar macro is available from Refinery:
    @@ -1333,7 +1535,13 @@
     
     /// The migrations requied to build the default schema for this version of [`SqlStorage`].
     pub fn default_migrations() -> Vec<Migration> {
    -    let mut migrations = include_migrations!("$CARGO_MANIFEST_DIR/migrations").collect::<Vec<_>>();
    +    #[cfg(not(feature = "embedded-db"))]
    +    let mut migrations =
    +        include_migrations!("$CARGO_MANIFEST_DIR/migrations/postgres").collect::<Vec<_>>();
    +
    +    #[cfg(feature = "embedded-db")]
    +    let mut migrations =
    +        include_migrations!("$CARGO_MANIFEST_DIR/migrations/sqlite").collect::<Vec<_>>();
     
         // Check version uniqueness and sort by version.
         validate_migrations(&mut migrations).expect("default migrations are invalid");
    @@ -1400,29 +1608,65 @@
             .map(|pair| pair.reduce(|_, custom| custom))
     }
     
    -/// Postgres client config.
    -#[derive(Clone, Debug)]
    +#[derive(Clone)]
     pub struct Config {
    -    db_opt: PgConnectOptions,
    +    #[cfg(feature = "embedded-db")]
    +    db_opt: SqliteConnectOptions,
    +    #[cfg(not(feature = "embedded-db"))]
    +    db_opt: PgConnectOptions,
         pool_opt: PoolOptions<Db>,
    -    schema: String,
    +    #[cfg(not(feature = "embedded-db"))]
    +    schema: String,
         reset: bool,
         migrations: Vec<Migration>,
         no_migrations: bool,
         pruner_cfg: Option<PrunerCfg>,
         archive: bool,
    +    pool: Option<Pool<Db>>,
     }
     
    -impl Default for Config {
    +#[cfg(not(feature = "embedded-db"))]
    +impl Default for Config {
         fn default() -> Self {
             PgConnectOptions::default()
    +            .username("postgres")
    +            .password("password")
                 .host("localhost")
                 .port(5432)
                 .into()
         }
     }
     
    -impl From<PgConnectOptions> for Config {
    +#[cfg(feature = "embedded-db")]
    +impl Default for Config {
    +    fn default() -> Self {
    +        SqliteConnectOptions::default()
    +            .journal_mode(sqlx::sqlite::SqliteJournalMode::Wal)
    +            .busy_timeout(Duration::from_secs(30))
    +            .auto_vacuum(sqlx::sqlite::SqliteAutoVacuum::Incremental)
    +            .create_if_missing(true)
    +            .into()
    +    }
    +}
    +
    +#[cfg(feature = "embedded-db")]
    +impl From<SqliteConnectOptions> for Config {
    +    fn from(db_opt: SqliteConnectOptions) -> Self {
    +        Self {
    +            db_opt,
    +            pool_opt: PoolOptions::default(),
    +            reset: false,
    +            migrations: vec![],
    +            no_migrations: false,
    +            pruner_cfg: None,
    +            archive: false,
    +            pool: None,
    +        }
    +    }
    +}
    +
    +#[cfg(not(feature = "embedded-db"))]
    +impl From<PgConnectOptions> for Config {
         fn from(db_opt: PgConnectOptions) -> Self {
             Self {
                 db_opt,
    @@ -1433,11 +1677,13 @@
                 no_migrations: false,
                 pruner_cfg: None,
                 archive: false,
    +            pool: None,
             }
         }
     }
     
    -impl FromStr for Config {
    +#[cfg(not(feature = "embedded-db"))]
    +impl FromStr for Config {
         type Err = <PgConnectOptions as FromStr>::Err;
     
         fn from_str(s: &str) -> Result<Self, Self::Err> {
    @@ -1445,7 +1691,30 @@
         }
     }
     
    -impl Config {
    +#[cfg(feature = "embedded-db")]
    +impl FromStr for Config {
    +    type Err = <SqliteConnectOptions as FromStr>::Err;
    +
    +    fn from_str(s: &str) -> Result<Self, Self::Err> {
    +        Ok(SqliteConnectOptions::from_str(s)?.into())
    +    }
    +}
    +
    +#[cfg(feature = "embedded-db")]
    +impl Config {
    +    pub fn busy_timeout(mut self, timeout: Duration) -> Self {
    +        self.db_opt = self.db_opt.busy_timeout(timeout);
    +        self
    +    }
    +
    +    pub fn db_path(mut self, path: std::path::PathBuf) -> Self {
    +        self.db_opt = self.db_opt.filename(path);
    +        self
    +    }
    +}
    +
    +#[cfg(not(feature = "embedded-db"))]
    +impl Config {
         /// Set the hostname of the database server.
         ///
         /// The default is `localhost`.
    @@ -1497,6 +1766,15 @@
             self.schema = schema.into();
             self
         }
    +}
    +
    +impl Config {
    +    /// Sets the database connection pool
    +    /// This allows reusing an existing connection pool when building a new `SqlStorage` instance.
    +    pub fn pool(mut self, pool: Pool<Db>) -> Self {
    +        self.pool = Some(pool);
    +        self
    +    }
     
         /// Reset the schema on connection.
         ///
    @@ -1600,7 +1878,7 @@
     }
     
     /// Storage for the APIs provided in this crate, backed by a remote PostgreSQL database.
    -#[derive(Debug)]
    +#[derive(Clone, Debug)]
     pub struct SqlStorage {
         pool: Pool<Db>,
         metrics: PrometheusMetrics,
    @@ -1616,32 +1894,59 @@
     }
     
     impl SqlStorage {
    +    pub fn pool(&self) -> Pool<Db> {
    +        self.pool.clone()
    +    }
         /// Connect to a remote database.
         pub async fn connect(mut config: Config) -> Result<Self, Error> {
    -        let schema = config.schema.clone();
    -        let pool = config
    -            .pool_opt
    -            .after_connect(move |conn, _| {
    -                let schema = schema.clone();
    -                async move {
    -                    query(&format!("SET search_path TO {schema}"))
    -                        .execute(conn)
    -                        .await?;
    -                    Ok(())
    -                }
    -                .boxed()
    -            })
    -            .connect_with(config.db_opt)
    -            .await?;
    +        let metrics = PrometheusMetrics::default();
    +        let pool_metrics = PoolMetrics::new(&*metrics.subgroup("sql".into()));
    +        let pool = config.pool_opt.clone();
    +        let pruner_cfg = config.pruner_cfg;
    +
    +        // re-use the same pool if present and return early
    +        if let Some(pool) = config.pool {
    +            return Ok(Self {
    +                metrics,
    +                pool_metrics,
    +                pool,
    +                pruner_cfg,
    +            });
    +        }
    +
    +        #[cfg(not(feature = "embedded-db"))]
    +        let schema = config.schema.clone();
    +        #[cfg(not(feature = "embedded-db"))]
    +        let pool = pool.after_connect(move |conn, _| {
    +            let schema = config.schema.clone();
    +            async move {
    +                query(&format!("SET search_path TO {schema}"))
    +                    .execute(conn)
    +                    .await?;
    +                Ok(())
    +            }
    +            .boxed()
    +        });
    +
    +        #[cfg(feature = "embedded-db")]
    +        if config.reset {
    +            std::fs::remove_file(config.db_opt.get_filename())?;
    +        }
    +
    +        let pool = pool.connect_with(config.db_opt).await?;
     
             // Create or connect to the schema for this query service.
             let mut conn = pool.acquire().await?;
    -        if config.reset {
    -            query(&format!("DROP SCHEMA IF EXISTS {} CASCADE", config.schema))
    +
    +        #[cfg(not(feature = "embedded-db"))]
    +        if config.reset {
    +            query(&format!("DROP SCHEMA IF EXISTS {} CASCADE", schema))
                     .execute(conn.as_mut())
                     .await?;
             }
    -        query(&format!("CREATE SCHEMA IF NOT EXISTS {}", config.schema))
    +
    +        #[cfg(not(feature = "embedded-db"))]
    +        query(&format!("CREATE SCHEMA IF NOT EXISTS {}", schema))
                 .execute(conn.as_mut())
                 .await?;
     
    @@ -1687,12 +1992,13 @@
                     .await?;
             }
     
    -        let metrics = PrometheusMetrics::default();
    +        conn.close().await?;
    +
             Ok(Self {
                 pool,
    -            pool_metrics: PoolMetrics::new(&*metrics.subgroup("sql".into())),
    +            pool_metrics,
                 metrics,
    -            pruner_cfg: config.pruner_cfg,
    +            pruner_cfg,
             })
         }
     }
    @@ -1761,10 +2067,17 @@
     
         async fn get_disk_usage(&self) -> anyhow::Result<u64> {
             let mut tx = self.read().await?;
    -        let row = tx
    -            .fetch_one("SELECT pg_database_size(current_database())")
    -            .await?;
    +
    +        #[cfg(not(feature = "embedded-db"))]
    +        let query = "SELECT pg_database_size(current_database())";
    +
    +        #[cfg(feature = "embedded-db")]
    +        let query = "
    +            SELECT( (SELECT page_count FROM pragma_page_count) * (SELECT * FROM pragma_page_size)) AS total_bytes";
    +
    +        let row = tx.fetch_one(query).await?;
             let size: i64 = row.get(0);
    +
             Ok(size as u64)
         }
     
    @@ -1888,38 +2201,69 @@
     // These tests run the `postgres` Docker image, which doesn't work on Windows.
     #[cfg(all(any(test, feature = "testing"), not(target_os = "windows")))]
     pub mod testing {
    +    #![allow(unused_imports)]
    +    use refinery::Migration;
         use std::{
             env,
             process::{Command, Stdio},
    -        str,
    +        str::{self, FromStr},
             time::Duration,
         };
         use tokio::net::TcpStream;
         use tokio::time::timeout;
     
         use portpicker::pick_unused_port;
    -    use refinery::Migration;
     
         use super::Config;
         use crate::testing::sleep;
     
         #[derive(Debug)]
         pub struct TmpDb {
    -        host: String,
    -        port: u16,
    -        container_id: String,
    -        persistent: bool,
    +        #[cfg(not(feature = "embedded-db"))]
    +        host: String,
    +        #[cfg(not(feature = "embedded-db"))]
    +        port: u16,
    +        #[cfg(not(feature = "embedded-db"))]
    +        container_id: String,
    +        #[cfg(feature = "embedded-db")]
    +        db_path: std::path::PathBuf,
    +        #[allow(dead_code)]
    +        persistent: bool,
         }
         impl TmpDb {
    +        #[cfg(feature = "embedded-db")]
    +        fn init_sqlite_db(persistent: bool) -> Self {
    +            let file = tempfile::Builder::new()
    +                .prefix("sqlite-")
    +                .suffix(".db")
    +                .tempfile()
    +                .unwrap();
    +
    +            let (_, db_path) = file.keep().unwrap();
    +
    +            Self {
    +                db_path,
    +                persistent,
    +            }
    +        }
             pub async fn init() -> Self {
    -            Self::init_inner(false).await
    +            #[cfg(feature = "embedded-db")]
    +            return Self::init_sqlite_db(false);
    +
    +            #[cfg(not(feature = "embedded-db"))]
    +            Self::init_postgres(false).await
             }
     
             pub async fn persistent() -> Self {
    -            Self::init_inner(true).await
    +            #[cfg(feature = "embedded-db")]
    +            return Self::init_sqlite_db(true);
    +
    +            #[cfg(not(feature = "embedded-db"))]
    +            Self::init_postgres(true).await
             }
     
    -        async fn init_inner(persistent: bool) -> Self {
    +        #[cfg(not(feature = "embedded-db"))]
    +        async fn init_postgres(persistent: bool) -> Self {
                 let docker_hostname = env::var("DOCKER_HOSTNAME");
                 // This picks an unused port on the current system.  If docker is
                 // configured to run on a different host then this may not find a
    @@ -1934,9 +2278,11 @@
                     .arg("-d")
                     .args(["-p", &format!("{port}:5432")])
                     .args(["-e", "POSTGRES_PASSWORD=password"]);
    +
                 if !persistent {
                     cmd.arg("--rm");
                 }
    +
                 let output = cmd.arg("postgres").output().unwrap();
                 let stdout = str::from_utf8(&output.stdout).unwrap();
                 let stderr = str::from_utf8(&output.stderr).unwrap();
    @@ -1959,28 +2305,50 @@
                 db
             }
     
    -        pub fn host(&self) -> String {
    +        #[cfg(not(feature = "embedded-db"))]
    +        pub fn host(&self) -> String {
                 self.host.clone()
             }
     
    -        pub fn port(&self) -> u16 {
    +        #[cfg(not(feature = "embedded-db"))]
    +        pub fn port(&self) -> u16 {
                 self.port
             }
     
    +        #[cfg(feature = "embedded-db")]
    +        pub fn path(&self) -> std::path::PathBuf {
    +            self.db_path.clone()
    +        }
    +
             pub fn config(&self) -> Config {
    -            Config::default()
    +            #[cfg(feature = "embedded-db")]
    +            let mut cfg: Config = {
    +                let db_path = self.db_path.to_string_lossy();
    +                let path = format!("sqlite:{db_path}");
    +                sqlx::sqlite::SqliteConnectOptions::from_str(&path)
    +                    .expect("invalid db path")
    +                    .create_if_missing(true)
    +                    .into()
    +            };
    +
    +            #[cfg(not(feature = "embedded-db"))]
    +            let mut cfg = Config::default()
                     .user("postgres")
                     .password("password")
                     .host(self.host())
    -                .port(self.port())
    -                .migrations(vec![Migration::unapplied(
    -                    "V11__create_test_merkle_tree_table.sql",
    -                    &TestMerkleTreeMigration::create("test_tree"),
    -                )
    -                .unwrap()])
    +                .port(self.port());
    +
    +            cfg = cfg.migrations(vec![Migration::unapplied(
    +                "V101__create_test_merkle_tree_table.sql",
    +                &TestMerkleTreeMigration::create("test_tree"),
    +            )
    +            .unwrap()]);
    +
    +            cfg
             }
     
    -        pub fn stop(&mut self) {
    +        #[cfg(not(feature = "embedded-db"))]
    +        pub fn stop_postgres(&mut self) {
                 tracing::info!(container = self.container_id, "stopping postgres");
                 let output = Command::new("docker")
                     .args(["stop", self.container_id.as_str()])
    @@ -1994,7 +2362,8 @@
                 );
             }
     
    -        pub async fn start(&mut self) {
    +        #[cfg(not(feature = "embedded-db"))]
    +        pub async fn start_postgres(&mut self) {
                 tracing::info!(container = self.container_id, "resuming postgres");
                 let output = Command::new("docker")
                     .args(["start", self.container_id.as_str()])
    @@ -2010,7 +2379,8 @@
                 self.wait_for_ready().await;
             }
     
    -        async fn wait_for_ready(&self) {
    +        #[cfg(not(feature = "embedded-db"))]
    +        async fn wait_for_ready(&self) {
                 let timeout_duration = Duration::from_secs(
                     env::var("SQL_TMP_DB_CONNECT_TIMEOUT")
                         .unwrap_or("60".to_string())
    @@ -2074,20 +2444,18 @@
             }
         }
     
    -    impl Drop for TmpDb {
    +    #[cfg(not(feature = "embedded-db"))]
    +    impl Drop for TmpDb {
             fn drop(&mut self) {
    -            self.stop();
    -            if self.persistent {
    -                let output = Command::new("docker")
    -                    .args(["container", "rm", self.container_id.as_str()])
    -                    .output()
    -                    .unwrap();
    -                assert!(
    -                    output.status.success(),
    -                    "error removing postgres docker {}: {}",
    -                    self.container_id,
    -                    str::from_utf8(&output.stderr).unwrap()
    -                );
    +            self.stop_postgres();
    +        }
    +    }
    +
    +    #[cfg(feature = "embedded-db")]
    +    impl Drop for TmpDb {
    +        fn drop(&mut self) {
    +            if !self.persistent {
    +                std::fs::remove_file(self.db_path.clone()).unwrap();
                 }
             }
         }
    @@ -2096,29 +2464,44 @@
     
         impl TestMerkleTreeMigration {
             fn create(name: &str) -> String {
    +            let (bit_vec, binary, hash_pk, root_stored_column) = if cfg!(feature = "embedded-db") {
    +                (
    +                    "TEXT",
    +                    "BLOB",
    +                    "INTEGER PRIMARY KEY AUTOINCREMENT",
    +                    " (json_extract(data, '$.test_merkle_tree_root'))",
    +                )
    +            } else {
    +                (
    +                    "BIT(8)",
    +                    "BYTEA",
    +                    "SERIAL PRIMARY KEY",
    +                    "(data->>'test_merkle_tree_root')",
    +                )
    +            };
    +
                 format!(
                     "CREATE TABLE IF NOT EXISTS hash
                 (
    -                id SERIAL PRIMARY KEY,
    -                value BYTEA  NOT NULL UNIQUE
    +                id {hash_pk},
    +                value {binary}  NOT NULL UNIQUE
                 );
    -        
    -
    +    
                 ALTER TABLE header
                 ADD column test_merkle_tree_root text
    -            GENERATED ALWAYS as (data->>'test_merkle_tree_root') STORED;
    +            GENERATED ALWAYS as {root_stored_column} STORED;
     
                 CREATE TABLE {name}
                 (
    -                path integer[] NOT NULL, 
    +                path JSONB NOT NULL, 
                     created BIGINT NOT NULL,
    -                hash_id INT NOT NULL REFERENCES hash (id),
    -                children INT[],
    -                children_bitvec BIT(8),
    -                index JSONB,
    -                entry JSONB 
    +                hash_id INT NOT NULL,
    +                children JSONB,
    +                children_bitvec {bit_vec},
    +                idx JSONB,
    +                entry JSONB,
    +                PRIMARY KEY (path, created)
                 );
    -            ALTER TABLE {name} ADD CONSTRAINT {name}_pk PRIMARY KEY (path, created);
                 CREATE INDEX {name}_created ON {name} (created);"
                 )
             }
    @@ -2147,21 +2530,18 @@
             setup_test();
     
             let db = TmpDb::init().await;
    -        let port = db.port();
    -        let host = &db.host();
    -
    -        let connect = |migrations: bool, custom_migrations| async move {
    -            let mut cfg = Config::default()
    -                .user("postgres")
    -                .password("password")
    -                .host(host)
    -                .port(port)
    -                .migrations(custom_migrations);
    -            if !migrations {
    -                cfg = cfg.no_migrations();
    +        let cfg = db.config();
    +
    +        let connect = |migrations: bool, custom_migrations| {
    +            let cfg = cfg.clone();
    +            async move {
    +                let mut cfg = cfg.migrations(custom_migrations);
    +                if !migrations {
    +                    cfg = cfg.no_migrations();
    +                }
    +                let client = SqlStorage::connect(cfg).await?;
    +                Ok::<_, Error>(client)
                 }
    -            let client = SqlStorage::connect(cfg).await?;
    -            Ok::<_, Error>(client)
             };
     
             // Connecting with migrations disabled should fail if the database is not already up to date
    @@ -2183,7 +2563,11 @@
                     "ALTER TABLE test ADD COLUMN data INTEGER;",
                 )
                 .unwrap(),
    -            Migration::unapplied("V998__create_test_table.sql", "CREATE TABLE test ();").unwrap(),
    +            Migration::unapplied(
    +                "V998__create_test_table.sql",
    +                "CREATE TABLE test (x bigint);",
    +            )
    +            .unwrap(),
             ];
             connect(true, migrations.clone()).await.unwrap();
     
    @@ -2197,6 +2581,7 @@
         }
     
         #[test]
    +    #[cfg(not(feature = "embedded-db"))]
         fn test_config_from_str() {
             let cfg = Config::from_str("postgresql://user:password@host:8080").unwrap();
             assert_eq!(cfg.db_opt.get_username(), "user");
    @@ -2204,6 +2589,13 @@
             assert_eq!(cfg.db_opt.get_port(), 8080);
         }
     
    +    #[test]
    +    #[cfg(feature = "embedded-db")]
    +    fn test_config_from_str() {
    +        let cfg = Config::from_str("sqlite://data.db").unwrap();
    +        assert_eq!(cfg.db_opt.get_filename().to_string_lossy(), "data.db");
    +    }
    +
         async fn vacuum(storage: &SqlStorage) {
             storage
                 .pool
    @@ -2220,14 +2612,7 @@
             setup_test();
     
             let db = TmpDb::init().await;
    -        let port = db.port();
    -        let host = &db.host();
    -
    -        let cfg = Config::default()
    -            .user("postgres")
    -            .password("password")
    -            .host(host)
    -            .port(port);
    +        let cfg = db.config();
     
             let mut storage = SqlStorage::connect(cfg).await.unwrap();
             let mut leaf = LeafQueryData::<MockTypes>::genesis::<TestVersions>(
    @@ -2395,14 +2780,7 @@
             setup_test();
     
             let db = TmpDb::init().await;
    -        let port = db.port();
    -        let host = &db.host();
    -
    -        let cfg = Config::default()
    -            .user("postgres")
    -            .password("password")
    -            .host(host)
    -            .port(port);
    +        let cfg = db.config();
     
             let storage = SqlStorage::connect(cfg).await.unwrap();
             assert!(storage
    diff --git a/src/hotshot_query_service/data_source/storage/sql/db.rs.html b/src/hotshot_query_service/data_source/storage/sql/db.rs.html
    index 025827dd2..96ab86c27 100644
    --- a/src/hotshot_query_service/data_source/storage/sql/db.rs.html
    +++ b/src/hotshot_query_service/data_source/storage/sql/db.rs.html
    @@ -38,6 +38,22 @@
     38
     39
     40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -50,24 +66,25 @@
     // You should have received a copy of the GNU General Public License along with this program. If not,
     // see <https://www.gnu.org/licenses/>.
     
    -/// The concrete database backing a SQL data source.
    +/// The underlying database type for a SQL data source.
     ///
    -/// Currently only Postgres is supported. In the future we can support SQLite as well by making this
    -/// an enum with variants for each (we'll then need to create enums and trait implementations for
    -/// all the associated types as well; it will be messy).
    +/// Currently, only PostgreSQL and SQLite are supported, with selection based on the "embedded-db" feature flag.
    +/// - When the "embedded-db" feature is enabled, SQLite is used.
    +/// - When it’s disabled, PostgreSQL is used.
     ///
    -/// The reason for taking this approach over sqlx's `Any` database is that we can support SQL types
    +/// ### Design Choice
    +/// The reason for taking this approach over sqlx's Any database is that we can support SQL types
     /// which are implemented for the two backends we care about (Postgres and SQLite) but not for _any_
     /// SQL database, such as MySQL. Crucially, JSON types fall in this category.
     ///
     /// The reason for taking this approach rather than writing all of our code to be generic over the
    -/// `Database` implementation is that `sqlx` does not have the necessary trait bounds on all of the
    -/// associated types (e.g. `Database::Connection` does not implement `Executor` for all possible
    -/// databases, the `Executor` impl lives on each concrete connection type) and Rust does not provide
    +/// Database implementation is that sqlx does not have the necessary trait bounds on all of the
    +/// associated types (e.g. Database::Connection does not implement Executor for all possible
    +/// databases, the Executor impl lives on each concrete connection type) and Rust does not provide
     /// a good way of encapsulating a collection of trait bounds on associated types. Thus, our function
     /// signatures become untenably messy with bounds like
     ///
    -/// ```
    +/// ```rust
     /// # use sqlx::{Database, Encode, Executor, IntoArguments, Type};
     /// fn foo<DB: Database>()
     /// where
    @@ -76,6 +93,21 @@
     ///     for<'a> i64: Type<DB> + Encode<'a, DB>,
     /// {}
     /// ```
    -/// etc.
    +
    +#[cfg(feature = "embedded-db")]
    +pub type Db = sqlx::Sqlite;
    +#[cfg(not(feature = "embedded-db"))]
     pub type Db = sqlx::Postgres;
    +
    +#[cfg(feature = "embedded-db")]
    +pub mod syntax_helpers {
    +    pub const MAX_FN: &str = "MAX";
    +    pub const BINARY_TYPE: &str = "BLOB";
    +}
    +
    +#[cfg(not(feature = "embedded-db"))]
    +pub mod syntax_helpers {
    +    pub const MAX_FN: &str = "GREATEST";
    +    pub const BINARY_TYPE: &str = "BYTEA";
    +}
     
    \ No newline at end of file diff --git a/src/hotshot_query_service/data_source/storage/sql/queries.rs.html b/src/hotshot_query_service/data_source/storage/sql/queries.rs.html index 8102e1ebf..6eb65b2c6 100644 --- a/src/hotshot_query_service/data_source/storage/sql/queries.rs.html +++ b/src/hotshot_query_service/data_source/storage/sql/queries.rs.html @@ -376,6 +376,7 @@ 376 377 378 +379
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -473,6 +474,7 @@
             self.arguments.add(arg).map_err(|err| QueryError::Error {
                 message: format!("{err:#}"),
             })?;
    +
             Ok(format!("${}", self.arguments.len()))
         }
     
    @@ -730,7 +732,7 @@
                 "SELECT {HEADER_COLUMNS}
                    FROM header AS h
                   WHERE {where_clause}
    -              ORDER BY h.height ASC
    +              ORDER BY h.height
                   LIMIT 1"
             );
             let row = query.query(&sql).fetch_one(self.as_mut()).await?;
    diff --git a/src/hotshot_query_service/data_source/storage/sql/queries/availability.rs.html b/src/hotshot_query_service/data_source/storage/sql/queries/availability.rs.html
    index f5e9c5433..360f55b6d 100644
    --- a/src/hotshot_query_service/data_source/storage/sql/queries/availability.rs.html
    +++ b/src/hotshot_query_service/data_source/storage/sql/queries/availability.rs.html
    @@ -408,7 +408,7 @@
                   FROM header AS h
                   JOIN payload AS p ON h.height = p.height
                   WHERE {where_clause}
    -              ORDER BY h.height ASC
    +              ORDER BY h.height
                   LIMIT 1"
             );
             let row = query.query(&sql).fetch_one(self.as_mut()).await?;
    @@ -430,7 +430,7 @@
                   FROM header AS h
                   JOIN payload AS p ON h.height = p.height
                   WHERE {where_clause}
    -              ORDER BY h.height ASC
    +              ORDER BY h.height
                   LIMIT 1"
             );
             let row = query.query(&sql).fetch_one(self.as_mut()).await?;
    @@ -476,7 +476,7 @@
                   FROM header AS h
                   JOIN vid AS v ON h.height = v.height
                   WHERE {where_clause}
    -              ORDER BY h.height ASC
    +              ORDER BY h.height
                   LIMIT 1"
             );
             let row = query.query(&sql).fetch_one(self.as_mut()).await?;
    @@ -514,7 +514,7 @@
         {
             let mut query = QueryBuilder::default();
             let where_clause = query.bounds_to_where_clause(range, "height")?;
    -        let sql = format!("SELECT {LEAF_COLUMNS} FROM leaf {where_clause} ORDER BY height ASC");
    +        let sql = format!("SELECT {LEAF_COLUMNS} FROM leaf {where_clause} ORDER BY height");
             Ok(query
                 .query(&sql)
                 .fetch(self.as_mut())
    @@ -538,7 +538,7 @@
                   FROM header AS h
                   JOIN payload AS p ON h.height = p.height
                   {where_clause}
    -              ORDER BY h.height ASC"
    +              ORDER BY h.height"
             );
             Ok(query
                 .query(&sql)
    @@ -563,7 +563,7 @@
                   FROM header AS h
                   JOIN payload AS p ON h.height = p.height
                   {where_clause}
    -              ORDER BY h.height ASC"
    +              ORDER BY h.height"
             );
             Ok(query
                 .query(&sql)
    @@ -613,7 +613,7 @@
                   FROM header AS h
                   JOIN vid AS v ON h.height = v.height
                   {where_clause}
    -              ORDER BY h.height ASC"
    +              ORDER BY h.height"
             );
             Ok(query
                 .query(&sql)
    @@ -659,12 +659,12 @@
             // ORDER BY ASC ensures that if there are duplicate transactions, we return the first
             // one.
             let sql = format!(
    -            "SELECT {BLOCK_COLUMNS}, t.index AS tx_index
    +            "SELECT {BLOCK_COLUMNS}, t.idx AS tx_index
                     FROM header AS h
                     JOIN payload AS p ON h.height = p.height
    -                JOIN transaction AS t ON t.block_height = h.height
    +                JOIN transactions AS t ON t.block_height = h.height
                     WHERE t.hash = {hash_param}
    -                ORDER BY t.block_height, t.index
    +                ORDER BY t.block_height, t.idx
                     LIMIT 1"
             );
             let row = query.query(&sql).fetch_one(self.as_mut()).await?;
    diff --git a/src/hotshot_query_service/data_source/storage/sql/queries/explorer.rs.html b/src/hotshot_query_service/data_source/storage/sql/queries/explorer.rs.html
    index aa238eb79..9f5b575e9 100644
    --- a/src/hotshot_query_service/data_source/storage/sql/queries/explorer.rs.html
    +++ b/src/hotshot_query_service/data_source/storage/sql/queries/explorer.rs.html
    @@ -571,6 +571,9 @@
     571
     572
     573
    +574
    +575
    +576
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -790,14 +793,14 @@
             // returned results based on.
             let transaction_target_query = match target {
                 TransactionIdentifier::Latest => query(
    -                "SELECT t.block_height AS height, t.index AS index FROM transaction AS t ORDER BY t.block_height DESC, t.index DESC LIMIT 1",
    +                "SELECT t.block_height AS height, t.idx AS \"index\" FROM transactions AS t ORDER BY t.block_height DESC, t.idx DESC LIMIT 1",
                 ),
                 TransactionIdentifier::HeightAndOffset(height, _) => query(
    -                "SELECT t.block_height AS height, t.index AS index FROM transaction AS t WHERE t.block_height = $1 ORDER BY t.block_height DESC, t.index DESC LIMIT 1",
    +                "SELECT t.block_height AS height, t.idx AS \"index\" FROM transactions AS t WHERE t.block_height = $1 ORDER BY t.block_height DESC, t.idx DESC LIMIT 1",
                 )
                 .bind(*height as i64),
                 TransactionIdentifier::Hash(hash) => query(
    -                "SELECT t.block_height AS height, t.index AS index FROM transaction AS t WHERE t.hash = $1 ORDER BY t.block_height DESC, t.index DESC LIMIT 1",
    +                "SELECT t.block_height AS height, t.idx AS \"index\" FROM transactions AS t WHERE t.hash = $1 ORDER BY t.block_height DESC, t.idx DESC LIMIT 1",
                 )
                 .bind(hash.to_string()),
             };
    @@ -811,7 +814,8 @@
             };
     
             let block_height = transaction_target.get::<i64, _>("height") as usize;
    -        let transaction_index = transaction_target.get::<Json<TransactionIndex<Types>>, _>("index");
    +        let transaction_index =
    +            transaction_target.get_unchecked::<Json<TransactionIndex<Types>>, _>("index");
             let offset = if let TransactionIdentifier::HeightAndOffset(_, offset) = target {
                 *offset
             } else {
    @@ -835,9 +839,9 @@
                             JOIN payload AS p ON h.height = p.height
                             WHERE h.height IN (
                                 SELECT t.block_height
    -                                FROM transaction AS t
    -                                WHERE (t.block_height, t.index) <= ({}, {})
    -                                ORDER BY t.block_height DESC, t.index DESC
    +                                FROM transactions AS t
    +                                WHERE (t.block_height, t.idx) <= ({}, {})
    +                                ORDER BY t.block_height DESC, t.idx DESC
                                     LIMIT {}
                             )
                             ORDER BY h.height DESC",
    @@ -911,7 +915,7 @@
                         JOIN payload AS p ON h.height = p.height
                         WHERE h.height = (
                             SELECT MAX(t1.block_height)
    -                            FROM transaction AS t1
    +                            FROM transactions AS t1
                         )
                         ORDER BY h.height DESC"
                 ),
    @@ -921,9 +925,9 @@
                         JOIN payload AS p ON h.height = p.height
                         WHERE h.height = (
                             SELECT t1.block_height
    -                            FROM transaction AS t1
    +                            FROM transactions AS t1
                                 WHERE t1.block_height = {}
    -                            ORDER BY t1.block_height, t1.index
    +                            ORDER BY t1.block_height, t1.idx
                                 OFFSET {}
                                 LIMIT 1
                         )
    @@ -937,9 +941,9 @@
                         JOIN payload AS p ON h.height = p.height
                         WHERE h.height = (
                             SELECT t1.block_height
    -                            FROM transaction AS t1
    +                            FROM transactions AS t1
                                 WHERE t1.hash = {}
    -                            ORDER BY t1.block_height DESC, t1.index DESC
    +                            ORDER BY t1.block_height DESC, t1.idx DESC
                                 LIMIT 1
                         )
                         ORDER BY h.height DESC",
    @@ -993,7 +997,7 @@
                         p.height = h.height
                     WHERE
                         h.height IN (SELECT height FROM header ORDER BY height DESC LIMIT 50)
    -                ORDER BY h.height ASC 
    +                ORDER BY h.height 
                     ",
                 )
                 .fetch(self.as_mut());
    @@ -1045,12 +1049,14 @@
     
             let latest_block: BlockDetail<Types> =
                 self.get_block_detail(BlockIdentifier::Latest).await?;
    +
             let latest_blocks: Vec<BlockSummary<Types>> = self
                 .get_block_summaries(GetBlockSummariesRequest(BlockRange {
                     target: BlockIdentifier::Latest,
                     num_blocks: NonZeroUsize::new(10).unwrap(),
                 }))
                 .await?;
    +
             let latest_transactions: Vec<TransactionSummary<Types>> = self
                 .get_transaction_summaries(GetTransactionSummariesRequest {
                     range: TransactionRange {
    @@ -1108,7 +1114,7 @@
                     "SELECT {BLOCK_COLUMNS}
                         FROM header AS h
                         JOIN payload AS p ON h.height = p.height
    -                    JOIN transaction AS t ON h.height = t.block_height
    +                    JOIN transactions AS t ON h.height = t.block_height
                         WHERE t.hash = $1
                         ORDER BY h.height DESC
                         LIMIT 5"
    diff --git a/src/hotshot_query_service/data_source/storage/sql/queries/node.rs.html b/src/hotshot_query_service/data_source/storage/sql/queries/node.rs.html
    index 0d6702928..7df6c569b 100644
    --- a/src/hotshot_query_service/data_source/storage/sql/queries/node.rs.html
    +++ b/src/hotshot_query_service/data_source/storage/sql/queries/node.rs.html
    @@ -583,7 +583,7 @@
                 "SELECT v.share AS share FROM vid AS v
                    JOIN header AS h ON v.height = h.height
                   WHERE {where_clause}
    -              ORDER BY h.height ASC
    +              ORDER BY h.height
                   LIMIT 1"
             );
             let (share_data,) = query
    @@ -624,7 +624,7 @@
                     (SELECT count(*) AS null_payloads FROM payload WHERE data IS NULL) AS p,
                     (SELECT count(*) AS total_vid FROM vid) AS v,
                     (SELECT count(*) AS null_vid FROM vid WHERE share IS NULL) AS vn,
    -                coalesce((SELECT last_height FROM pruned_height ORDER BY id DESC LIMIT 1)) as pruned_height
    +                (SELECT(SELECT last_height FROM pruned_height ORDER BY id DESC LIMIT 1) as pruned_height)
                 ";
             let row = query(sql)
                 .fetch_optional(self.as_mut())
    diff --git a/src/hotshot_query_service/data_source/storage/sql/queries/state.rs.html b/src/hotshot_query_service/data_source/storage/sql/queries/state.rs.html
    index e100cb5e0..ab93b7d06 100644
    --- a/src/hotshot_query_service/data_source/storage/sql/queries/state.rs.html
    +++ b/src/hotshot_query_service/data_source/storage/sql/queries/state.rs.html
    @@ -1286,6 +1286,111 @@
     1286
     1287
     1288
    +1289
    +1290
    +1291
    +1292
    +1293
    +1294
    +1295
    +1296
    +1297
    +1298
    +1299
    +1300
    +1301
    +1302
    +1303
    +1304
    +1305
    +1306
    +1307
    +1308
    +1309
    +1310
    +1311
    +1312
    +1313
    +1314
    +1315
    +1316
    +1317
    +1318
    +1319
    +1320
    +1321
    +1322
    +1323
    +1324
    +1325
    +1326
    +1327
    +1328
    +1329
    +1330
    +1331
    +1332
    +1333
    +1334
    +1335
    +1336
    +1337
    +1338
    +1339
    +1340
    +1341
    +1342
    +1343
    +1344
    +1345
    +1346
    +1347
    +1348
    +1349
    +1350
    +1351
    +1352
    +1353
    +1354
    +1355
    +1356
    +1357
    +1358
    +1359
    +1360
    +1361
    +1362
    +1363
    +1364
    +1365
    +1366
    +1367
    +1368
    +1369
    +1370
    +1371
    +1372
    +1373
    +1374
    +1375
    +1376
    +1377
    +1378
    +1379
    +1380
    +1381
    +1382
    +1383
    +1384
    +1385
    +1386
    +1387
    +1388
    +1389
    +1390
    +1391
    +1392
    +1393
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -1304,6 +1409,8 @@
         super::transaction::{query_as, Transaction, TransactionMode, Write},
         DecodeError, QueryBuilder,
     };
    +use crate::data_source::storage::sql::build_where_in;
    +use crate::data_source::storage::sql::sqlx::Row;
     use crate::{
         data_source::storage::{MerklizedStateHeightStorage, MerklizedStateStorage},
         merklized_state::{MerklizedState, Snapshot},
    @@ -1317,7 +1424,8 @@
         prelude::{MerkleNode, MerkleProof},
         DigestAlgorithm, MerkleCommitment, ToTraversalPath,
     };
    -use sqlx::{types::BitVec, FromRow};
    +use sqlx::types::BitVec;
    +use sqlx::types::JsonValue;
     use std::collections::{HashMap, HashSet, VecDeque};
     use std::sync::Arc;
     
    @@ -1344,38 +1452,44 @@
     
             // Get all the nodes in the path to the index.
             // Order by pos DESC is to return nodes from the leaf to the root
    -
             let (query, sql) = build_get_path_query(state_type, traversal_path.clone(), created)?;
    -        let nodes = query
    -            .query_as::<Node>(&sql)
    -            .fetch_all(self.as_mut())
    -            .await?;
    +        let rows = query.query(&sql).fetch_all(self.as_mut()).await?;
    +
    +        let nodes: Vec<Node> = rows.into_iter().map(|r| r.into()).collect();
     
             // insert all the hash ids to a hashset which is used to query later
             // HashSet is used to avoid duplicates
             let mut hash_ids = HashSet::new();
    -        nodes.iter().for_each(|n| {
    -            hash_ids.insert(n.hash_id);
    -            if let Some(children) = &n.children {
    +        for node in nodes.iter() {
    +            hash_ids.insert(node.hash_id);
    +            if let Some(children) = &node.children {
    +                let children: Vec<i32> =
    +                    serde_json::from_value(children.clone()).map_err(|e| QueryError::Error {
    +                        message: format!("Error deserializing 'children' into Vec<i32>: {e}"),
    +                    })?;
                     hash_ids.extend(children);
                 }
    -        });
    +        }
     
             // Find all the hash values and create a hashmap
             // Hashmap will be used to get the hash value of the nodes children and the node itself.
    -        let hashes: HashMap<i32, Vec<u8>> =
    -            query_as("SELECT id, value FROM hash WHERE id = ANY( $1)")
    -                .bind(hash_ids.into_iter().collect::<Vec<i32>>())
    +        let hashes = if !hash_ids.is_empty() {
    +            let (query, sql) = build_where_in("SELECT id, value FROM hash", "id", hash_ids)?;
    +            query
    +                .query_as(&sql)
                     .fetch(self.as_mut())
    -                .try_collect()
    -                .await?;
    +                .try_collect::<HashMap<i32, Vec<u8>>>()
    +                .await?
    +        } else {
    +            HashMap::new()
    +        };
     
             let mut proof_path = VecDeque::with_capacity(State::tree_height());
             for Node {
                 hash_id,
                 children,
                 children_bitvec,
    -            index,
    +            idx,
                 entry,
                 ..
             } in nodes.iter()
    @@ -1384,9 +1498,18 @@
                     let value = hashes.get(hash_id).ok_or(QueryError::Error {
                         message: format!("node's value references non-existent hash {hash_id}"),
                     })?;
    -                match (children, children_bitvec, index, entry) {
    +
    +                match (children, children_bitvec, idx, entry) {
                         // If the row has children then its a branch
                         (Some(children), Some(children_bitvec), None, None) => {
    +                        let children: Vec<i32> =
    +                            serde_json::from_value(children.clone()).map_err(|e| {
    +                                QueryError::Error {
    +                                    message: format!(
    +                                        "Error deserializing 'children' into Vec<i32>: {e}"
    +                                    ),
    +                                }
    +                            })?;
                             let mut children = children.iter();
     
                             // Reconstruct the Children MerkleNodes from storage.
    @@ -1581,7 +1704,9 @@
             };
     
             // Make sure the requested snapshot is up to date.
    +
             let height = self.get_last_state_height().await?;
    +
             if height < (created as usize) {
                 return Err(QueryError::NotFound);
             }
    @@ -1607,15 +1732,49 @@
     }
     
     // Represents a row in a state table
    -#[derive(Debug, Default, Clone, FromRow)]
    +#[derive(Debug, Default, Clone)]
     pub(crate) struct Node {
    -    pub(crate) path: Vec<i32>,
    +    pub(crate) path: JsonValue,
         pub(crate) created: i64,
         pub(crate) hash_id: i32,
    -    pub(crate) children: Option<Vec<i32>>,
    +    pub(crate) children: Option<JsonValue>,
         pub(crate) children_bitvec: Option<BitVec>,
    -    pub(crate) index: Option<serde_json::Value>,
    -    pub(crate) entry: Option<serde_json::Value>,
    +    pub(crate) idx: Option<JsonValue>,
    +    pub(crate) entry: Option<JsonValue>,
    +}
    +
    +#[cfg(feature = "embedded-db")]
    +impl From<sqlx::sqlite::SqliteRow> for Node {
    +    fn from(row: sqlx::sqlite::SqliteRow) -> Self {
    +        let bit_string: Option<String> = row.get_unchecked("children_bitvec");
    +        let children_bitvec: Option<BitVec> =
    +            bit_string.map(|b| b.chars().map(|c| c == '1').collect());
    +
    +        Self {
    +            path: row.get_unchecked("path"),
    +            created: row.get_unchecked("created"),
    +            hash_id: row.get_unchecked("hash_id"),
    +            children: row.get_unchecked("children"),
    +            children_bitvec,
    +            idx: row.get_unchecked("idx"),
    +            entry: row.get_unchecked("entry"),
    +        }
    +    }
    +}
    +
    +#[cfg(not(feature = "embedded-db"))]
    +impl From<sqlx::postgres::PgRow> for Node {
    +    fn from(row: sqlx::postgres::PgRow) -> Self {
    +        Self {
    +            path: row.get_unchecked("path"),
    +            created: row.get_unchecked("created"),
    +            hash_id: row.get_unchecked("hash_id"),
    +            children: row.get_unchecked("children"),
    +            children_bitvec: row.get_unchecked("children_bitvec"),
    +            idx: row.get_unchecked("idx"),
    +            entry: row.get_unchecked("entry"),
    +        }
    +    }
     }
     
     impl Node {
    @@ -1632,18 +1791,27 @@
                     "hash_id",
                     "children",
                     "children_bitvec",
    -                "index",
    +                "idx",
                     "entry",
                 ],
                 ["path", "created"],
                 nodes.into_iter().map(|n| {
    +                #[cfg(feature = "embedded-db")]
    +                let children_bitvec: Option<String> = n
    +                    .children_bitvec
    +                    .clone()
    +                    .map(|b| b.iter().map(|bit| if bit { '1' } else { '0' }).collect());
    +
    +                #[cfg(not(feature = "embedded-db"))]
    +                let children_bitvec = n.children_bitvec.clone();
    +
                     (
                         n.path.clone(),
                         n.created,
                         n.hash_id,
                         n.children.clone(),
    -                    n.children_bitvec.clone(),
    -                    n.index.clone(),
    +                    children_bitvec,
    +                    n.idx.clone(),
                         n.entry.clone(),
                     )
                 }),
    @@ -1659,15 +1827,20 @@
     ) -> QueryResult<(QueryBuilder<'q>, String)> {
         let mut query = QueryBuilder::default();
         let mut traversal_path = traversal_path.into_iter().map(|x| x as i32);
    -    let created = query.bind(created)?;
     
         // We iterate through the path vector skipping the first element after each iteration
         let len = traversal_path.len();
         let mut sub_queries = Vec::new();
    +
    +    query.bind(created)?;
    +
         for _ in 0..=len {
    -        let node_path = query.bind(traversal_path.clone().rev().collect::<Vec<_>>())?;
    +        let path = traversal_path.clone().rev().collect::<Vec<_>>();
    +        let path: serde_json::Value = path.into();
    +        let node_path = query.bind(path)?;
    +
             let sub_query = format!(
    -            "(SELECT * FROM {table} WHERE path = {node_path} AND created <= {created} ORDER BY created DESC LIMIT 1)",
    +            "SELECT * FROM (SELECT * FROM {table} WHERE path = {node_path} AND created <= $1 ORDER BY created DESC LIMIT 1)",
             );
     
             sub_queries.push(sub_query);
    @@ -1675,7 +1848,17 @@
         }
     
         let mut sql: String = sub_queries.join(" UNION ");
    -    sql.push_str("ORDER BY path DESC");
    +
    +    sql = format!("SELECT * FROM ({sql}) as t ");
    +
    +    // PostgreSQL already orders JSON arrays by length, so no additional function is needed
    +    // For SQLite, `length()` is used to sort by length.
    +    if cfg!(feature = "embedded-db") {
    +        sql.push_str("ORDER BY length(t.path) DESC");
    +    } else {
    +        sql.push_str("ORDER BY t.path DESC");
    +    }
    +
         Ok((query, sql))
     }
     
    @@ -1730,7 +1913,7 @@
                     [(
                         block_height as i64,
                         format!("randomHash{i}"),
    -                    "t",
    +                    "t".to_string(),
                         0,
                         test_data,
                     )],
    @@ -1793,7 +1976,13 @@
                 "header",
                 ["height", "hash", "payload_hash", "timestamp", "data"],
                 ["height"],
    -            [(2i64, "randomstring", "t", 0, test_data)],
    +            [(
    +                2i64,
    +                "randomstring".to_string(),
    +                "t".to_string(),
    +                0,
    +                test_data,
    +            )],
             )
             .await
             .unwrap();
    @@ -1826,14 +2015,10 @@
             // Find all the nodes of Index 0 in table
             let mut tx = storage.read().await.unwrap();
             let rows = query("SELECT * from test_tree where path = $1 ORDER BY created")
    -            .bind(node_path)
    +            .bind(serde_json::to_value(node_path).unwrap())
                 .fetch(tx.as_mut());
     
    -        let nodes: Vec<_> = rows
    -            .map(|res| Node::from_row(&res.unwrap()))
    -            .try_collect()
    -            .await
    -            .unwrap();
    +        let nodes: Vec<Node> = rows.map(|res| res.unwrap().into()).collect().await;
             // There should be only 2 versions of this node
             assert!(nodes.len() == 2, "incorrect number of nodes");
             assert_eq!(nodes[0].created, 1, "wrong block height");
    @@ -1888,7 +2073,13 @@
                 "header",
                 ["height", "hash", "payload_hash", "timestamp", "data"],
                 ["height"],
    -            [(block_height as i64, "randomString", "t", 0, test_data)],
    +            [(
    +                block_height as i64,
    +                "randomString".to_string(),
    +                "t".to_string(),
    +                0,
    +                test_data,
    +            )],
             )
             .await
             .unwrap();
    @@ -1953,8 +2144,8 @@
                     ["height"],
                     [(
                         2i64,
    -                    "randomString2",
    -                    "t",
    +                    "randomString2".to_string(),
    +                    "t".to_string(),
                         0,
                         serde_json::json!({ MockMerkleTree::header_state_commitment_field() : serde_json::to_value(test_tree.commitment()).unwrap()}),
                     )],
    @@ -2018,7 +2209,7 @@
                     [(
                         i as i64,
                         format!("hash{i}"),
    -                    "t",
    +                    "t".to_string(),
                         0,
                         serde_json::json!({ MockMerkleTree::header_state_commitment_field() : serde_json::to_value(test_tree.commitment()).unwrap()})
                     )],
    @@ -2084,7 +2275,13 @@
                 "header",
                 ["height", "hash", "payload_hash", "timestamp", "data"],
                 ["height"],
    -            [(block_height as i64, "randomString", "t", 0, test_data)],
    +            [(
    +                block_height as i64,
    +                "randomString".to_string(),
    +                "t".to_string(),
    +                0,
    +                test_data,
    +            )],
             )
             .await
             .unwrap();
    @@ -2150,7 +2347,7 @@
                     [(
                         block_height as i64,
                         format!("rarndomString{i}"),
    -                    "t",
    +                    "t".to_string(),
                         0,
                         test_data,
                     )],
    @@ -2212,7 +2409,13 @@
                 "header",
                 ["height", "hash", "payload_hash", "timestamp", "data"],
                 ["height"],
    -            [(block_height as i64, "randomStringgg", "t", 0, test_data)],
    +            [(
    +                block_height as i64,
    +                "randomStringgg".to_string(),
    +                "t".to_string(),
    +                0,
    +                test_data,
    +            )],
             )
             .await
             .unwrap();
    @@ -2243,7 +2446,13 @@
                 "header",
                 ["height", "hash", "payload_hash", "timestamp", "data"],
                 ["height"],
    -            [(2i64, "randomHashString", "t", 0, test_data)],
    +            [(
    +                2i64,
    +                "randomHashString".to_string(),
    +                "t".to_string(),
    +                0,
    +                test_data,
    +            )],
             )
             .await
             .unwrap();
    @@ -2263,12 +2472,12 @@
                 .rev()
                 .map(|n| *n as i32)
                 .collect::<Vec<_>>();
    -        tx.execute_one(
    +        tx.execute(
                 query(&format!(
                     "DELETE FROM {} WHERE created = 2 and path = $1",
                     MockMerkleTree::state_type()
                 ))
    -            .bind(node_path),
    +            .bind(serde_json::to_value(node_path).unwrap()),
             )
             .await
             .expect("failed to delete internal node");
    @@ -2364,7 +2573,7 @@
                     [(
                         block_height as i64,
                         format!("hash{block_height}"),
    -                    "hash",
    +                    "hash".to_string(),
                         0i64,
                         serde_json::json!({ MockMerkleTree::header_state_commitment_field() : serde_json::to_value(tree.commitment()).unwrap()}),
                     )],
    @@ -2487,8 +2696,8 @@
                     ["height"],
                     [(
                         0i64,
    -                    "hash",
    -                    "hash",
    +                    "hash".to_string(),
    +                    "hash".to_string(),
                         0,
                         serde_json::json!({ MockMerkleTree::header_state_commitment_field() : serde_json::to_value(test_tree.commitment()).unwrap()}),
                     )],
    @@ -2535,12 +2744,13 @@
                 // Now delete the leaf node for the last entry we inserted, corrupting the database.
                 let index = serde_json::to_value(tree_size - 1).unwrap();
                 let mut tx = storage.write().await.unwrap();
    -            tx.execute_one_with_retries(
    -                &format!(
    -                    "DELETE FROM {} WHERE index = $1",
    +
    +            tx.execute(
    +                query(&format!(
    +                    "DELETE FROM {} WHERE idx = $1",
                         MockMerkleTree::state_type()
    -                ),
    -                (index,),
    +                ))
    +                .bind(serde_json::to_value(index).unwrap()),
                 )
                 .await
                 .unwrap();
    diff --git a/src/hotshot_query_service/data_source/storage/sql/transaction.rs.html b/src/hotshot_query_service/data_source/storage/sql/transaction.rs.html
    index 2cd4810a8..8e4b7c934 100644
    --- a/src/hotshot_query_service/data_source/storage/sql/transaction.rs.html
    +++ b/src/hotshot_query_service/data_source/storage/sql/transaction.rs.html
    @@ -721,78 +721,6 @@
     721
     722
     723
    -724
    -725
    -726
    -727
    -728
    -729
    -730
    -731
    -732
    -733
    -734
    -735
    -736
    -737
    -738
    -739
    -740
    -741
    -742
    -743
    -744
    -745
    -746
    -747
    -748
    -749
    -750
    -751
    -752
    -753
    -754
    -755
    -756
    -757
    -758
    -759
    -760
    -761
    -762
    -763
    -764
    -765
    -766
    -767
    -768
    -769
    -770
    -771
    -772
    -773
    -774
    -775
    -776
    -777
    -778
    -779
    -780
    -781
    -782
    -783
    -784
    -785
    -786
    -787
    -788
    -789
    -790
    -791
    -792
    -793
    -794
    -795
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -815,6 +743,7 @@
     
     use super::{
         queries::{
    +        self,
             state::{build_hash_batch_insert, Node},
             DecodeError,
         },
    @@ -830,9 +759,9 @@
         },
         merklized_state::{MerklizedState, UpdateStateData},
         types::HeightIndexed,
    -    Header, Payload, QueryError, VidShare,
    +    Header, Payload, QueryError, QueryResult, VidShare,
     };
    -use anyhow::{bail, ensure, Context};
    +use anyhow::{bail, Context};
     use ark_serialize::CanonicalSerialize;
     use async_trait::async_trait;
     use committable::Committable;
    @@ -846,15 +775,14 @@
     };
     use itertools::Itertools;
     use jf_merkle_tree::prelude::{MerkleNode, MerkleProof};
    -use sqlx::{pool::Pool, types::BitVec, Encode, Execute, FromRow, Type};
    +use sqlx::types::BitVec;
    +pub use sqlx::Executor;
    +use sqlx::{pool::Pool, query_builder::Separated, Encode, FromRow, QueryBuilder, Type};
     use std::{
         collections::{HashMap, HashSet},
         marker::PhantomData,
    -    time::{Duration, Instant},
    +    time::Instant,
     };
    -use tokio::time::sleep;
    -
    -pub use sqlx::Executor;
     
     pub type Query<'q> = sqlx::query::Query<'q, Db, <Db as Database>::Arguments<'q>>;
     pub type QueryAs<'q, T> = sqlx::query::QueryAs<'q, Db, T, <Db as Database>::Arguments<'q>>;
    @@ -888,9 +816,12 @@
     }
     
     impl TransactionMode for Write {
    -    async fn begin(conn: &mut <Db as Database>::Connection) -> anyhow::Result<()> {
    -        conn.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE")
    +    #[allow(unused_variables)]
    +    async fn begin(conn: &mut <Db as Database>::Connection) -> anyhow::Result<()> {
    +        #[cfg(not(feature = "embedded-db"))]
    +        conn.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE")
                 .await?;
    +
             Ok(())
         }
     
    @@ -900,9 +831,12 @@
     }
     
     impl TransactionMode for Read {
    -    async fn begin(conn: &mut <Db as Database>::Connection) -> anyhow::Result<()> {
    -        conn.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY, DEFERRABLE")
    +    #[allow(unused_variables)]
    +    async fn begin(conn: &mut <Db as Database>::Connection) -> anyhow::Result<()> {
    +        #[cfg(not(feature = "embedded-db"))]
    +        conn.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY, DEFERRABLE")
                 .await?;
    +
             Ok(())
         }
     
    @@ -1022,9 +956,12 @@
     /// as long as the parameters outlive the duration of the query (the `'p: 'q`) bound on the
     /// [`bind`](Self::bind) function.
     pub trait Params<'p> {
    -    fn bind<'q>(self, q: Query<'q>) -> Query<'q>
    +    fn bind<'q, 'r>(
    +        self,
    +        q: &'q mut Separated<'r, 'p, Db, &'static str>,
    +    ) -> &'q mut Separated<'r, 'p, Db, &'static str>
         where
    -        'p: 'q;
    +        'p: 'r;
     }
     
     /// A collection of parameters with a statically known length.
    @@ -1036,19 +973,19 @@
     
     macro_rules! impl_tuple_params {
         ($n:literal, ($($t:ident,)+)) => {
    -        impl<'p, $($t),+> Params<'p> for ($($t,)+)
    +        impl<'p,  $($t),+> Params<'p> for ($($t,)+)
             where $(
    -            $t: 'p + for<'q> Encode<'q, Db> + Type<Db>
    -        ),+ {
    -            fn bind<'q>(self, q: Query<'q>) -> Query<'q>
    -            where
    -                'p: 'q
    -            {
    +            $t: 'p +  Encode<'p, Db> + Type<Db>
    +        ),+{
    +            fn bind<'q, 'r>(self, q: &'q mut Separated<'r, 'p, Db, &'static str>) ->   &'q mut Separated<'r, 'p, Db, &'static str>
    +            where 'p: 'r,
    +            {
                     #[allow(non_snake_case)]
                     let ($($t,)+) = self;
                     q $(
    -                    .bind($t)
    +                    .push_bind($t)
                     )+
    +
                 }
             }
     
    @@ -1069,117 +1006,37 @@
     impl_tuple_params!(7, (T1, T2, T3, T4, T5, T6, T7,));
     impl_tuple_params!(8, (T1, T2, T3, T4, T5, T6, T7, T8,));
     
    -impl<'p, T> Params<'p> for Vec<T>
    +pub fn build_where_in<'a, I>(
    +    query: &'a str,
    +    column: &'a str,
    +    values: I,
    +) -> QueryResult<(queries::QueryBuilder<'a>, String)>
     where
    -    T: Params<'p>,
    +    I: IntoIterator,
    +    I::Item: 'a + Encode<'a, Db> + Type<Db>,
     {
    -    fn bind<'q>(self, mut q: Query<'q>) -> Query<'q>
    -    where
    -        'p: 'q,
    -    {
    -        for params in self {
    -            q = params.bind(q);
    -        }
    -        q
    +    let mut builder = queries::QueryBuilder::default();
    +    let params = values
    +        .into_iter()
    +        .map(|v| Ok(format!("{} ", builder.bind(v)?)))
    +        .collect::<QueryResult<Vec<String>>>()?;
    +
    +    if params.is_empty() {
    +        return Err(QueryError::Error {
    +            message: "failed to build WHERE IN query. No parameter found ".to_string(),
    +        });
         }
    +
    +    let sql = format!(
    +        "{query} where {column} IN ({}) ",
    +        params.into_iter().join(",")
    +    );
    +
    +    Ok((builder, sql))
     }
     
     /// Low-level, general database queries and mutation.
     impl Transaction<Write> {
    -    /// Execute a statement that is expected to modify exactly one row.
    -    ///
    -    /// Returns an error if the database is not modified.
    -    pub async fn execute_one<'q, E>(&mut self, statement: E) -> anyhow::Result<()>
    -    where
    -        E: 'q + Execute<'q, Db>,
    -    {
    -        let nrows = self.execute_many(statement).await?;
    -        if nrows > 1 {
    -            // If more than one row is affected, we don't return an error, because clearly
    -            // _something_ happened and modified the database. So we don't necessarily want the
    -            // caller to retry. But we do log an error, because it seems the query did something
    -            // different than the caller intended.
    -            tracing::error!("statement modified more rows ({nrows}) than expected (1)");
    -        }
    -        Ok(())
    -    }
    -
    -    /// Execute a statement that is expected to modify exactly one row.
    -    ///
    -    /// Returns an error if the database is not modified. Retries several times before failing.
    -    pub async fn execute_one_with_retries<'q>(
    -        &mut self,
    -        statement: &'q str,
    -        params: impl Params<'q> + Clone,
    -    ) -> anyhow::Result<()> {
    -        let interval = Duration::from_secs(1);
    -        let mut retries = 5;
    -
    -        while let Err(err) = self
    -            .execute_one(params.clone().bind(query(statement)))
    -            .await
    -        {
    -            tracing::error!(
    -                %statement,
    -                "error in statement execution ({retries} tries remaining): {err}"
    -            );
    -            if retries == 0 {
    -                return Err(err);
    -            }
    -            retries -= 1;
    -            sleep(interval).await;
    -        }
    -
    -        Ok(())
    -    }
    -
    -    /// Execute a statement that is expected to modify at least one row.
    -    ///
    -    /// Returns an error if the database is not modified.
    -    pub async fn execute_many<'q, E>(&mut self, statement: E) -> anyhow::Result<u64>
    -    where
    -        E: 'q + Execute<'q, Db>,
    -    {
    -        let nrows = self.execute(statement).await?.rows_affected();
    -        ensure!(nrows > 0, "statement failed: 0 rows affected");
    -        Ok(nrows)
    -    }
    -
    -    /// Execute a statement that is expected to modify at least one row.
    -    ///
    -    /// Returns an error if the database is not modified. Retries several times before failing.
    -    pub async fn execute_many_with_retries<'q, 'p>(
    -        &mut self,
    -        statement: &'q str,
    -        params: impl Params<'p> + Clone,
    -    ) -> anyhow::Result<u64>
    -    where
    -        'p: 'q,
    -    {
    -        let interval = Duration::from_secs(1);
    -        let mut retries = 5;
    -
    -        loop {
    -            match self
    -                .execute_many(params.clone().bind(query(statement)))
    -                .await
    -            {
    -                Ok(nrows) => return Ok(nrows),
    -                Err(err) => {
    -                    tracing::error!(
    -                        %statement,
    -                        "error in statement execution ({retries} tries remaining): {err}"
    -                    );
    -                    if retries == 0 {
    -                        return Err(err);
    -                    }
    -                    retries -= 1;
    -                    sleep(interval).await;
    -                }
    -            }
    -        }
    -    }
    -
         pub async fn upsert<'p, const N: usize, R>(
             &mut self,
             table: &str,
    @@ -1195,35 +1052,31 @@
                 .iter()
                 .map(|col| format!("{col} = excluded.{col}"))
                 .join(",");
    -        let columns = columns.into_iter().join(",");
    +        let columns_str = columns
    +            .into_iter()
    +            .map(|col| format!("\"{col}\""))
    +            .join(",");
             let pk = pk.into_iter().join(",");
     
    -        let mut values = vec![];
    -        let mut params = vec![];
    +        let mut query_builder =
    +            QueryBuilder::new(format!("INSERT INTO \"{table}\" ({columns_str}) "));
             let mut num_rows = 0;
    -        for (row, entries) in rows.into_iter().enumerate() {
    -            let start = row * N;
    -            let end = (row + 1) * N;
    -            let row_params = (start..end).map(|i| format!("${}", i + 1)).join(",");
     
    -            values.push(format!("({row_params})"));
    -            params.push(entries);
    +        query_builder.push_values(rows, |mut b, row| {
                 num_rows += 1;
    -        }
    +            row.bind(&mut b);
    +        });
     
             if num_rows == 0 {
                 tracing::warn!("trying to upsert 0 rows, this has no effect");
                 return Ok(());
             }
    -        tracing::debug!("upserting {num_rows} rows");
    -
    -        let values = values.into_iter().join(",");
    -        let stmt = format!(
    -            "INSERT INTO {table} ({columns})
    -                  VALUES {values}
    -             ON CONFLICT ({pk}) DO UPDATE SET {set_columns}"
    -        );
    -        let rows_modified = self.execute_many_with_retries(&stmt, params).await?;
    +        query_builder.push(format!(" ON CONFLICT ({pk}) DO UPDATE SET {set_columns}"));
    +
    +        let res = self.execute(query_builder.build()).await?;
    +        let stmt = query_builder.sql();
    +        let rows_modified = res.rows_affected() as usize;
    +
             if rows_modified != num_rows {
                 tracing::error!(
                     stmt,
    @@ -1314,13 +1167,14 @@
             // The header and payload tables should already have been initialized when we inserted the
             // corresponding leaf. All we have to do is add the payload itself and its size.
             let payload = block.payload.encode();
    +
             self.upsert(
                 "payload",
                 ["height", "data", "size", "num_transactions"],
                 ["height"],
                 [(
                     block.height() as i64,
    -                payload.as_ref(),
    +                payload.as_ref().to_vec(),
                     block.size() as i32,
                     block.num_transactions() as i32,
                 )],
    @@ -1336,9 +1190,9 @@
             }
             if !rows.is_empty() {
                 self.upsert(
    -                "transaction",
    -                ["hash", "block_height", "index"],
    -                ["block_height", "index"],
    +                "transactions",
    +                ["hash", "block_height", "idx"],
    +                ["block_height", "idx"],
                     rows,
                 )
                 .await?;
    @@ -1425,7 +1279,7 @@
                         nodes.push((
                             Node {
                                 path: node_path,
    -                            index: Some(index),
    +                            idx: Some(index),
                                 ..Default::default()
                             },
                             None,
    @@ -1453,7 +1307,7 @@
                         nodes.push((
                             Node {
                                 path,
    -                            index: Some(index),
    +                            idx: Some(index),
                                 entry: Some(entry),
                                 ..Default::default()
                             },
    @@ -1545,10 +1399,12 @@
                             message: "Missing child hash".to_string(),
                         })?;
     
    -                node.children = Some(children_hashes);
    +                node.children = Some(children_hashes.into());
                 }
             }
    +
             Node::upsert(name, nodes.into_iter().map(|(n, _, _)| n), self).await?;
    +
             Ok(())
         }
     }
    diff --git a/src/hotshot_query_service/fetching/provider/query_service.rs.html b/src/hotshot_query_service/fetching/provider/query_service.rs.html
    index c2d5db872..91359f61b 100644
    --- a/src/hotshot_query_service/fetching/provider/query_service.rs.html
    +++ b/src/hotshot_query_service/fetching/provider/query_service.rs.html
    @@ -1777,6 +1777,8 @@
     1777
     1778
     1779
    +1780
    +1781
     
    // Copyright (c) 2022 Espresso Systems (espressosys.com)
     // This file is part of the HotShot Query Service library.
     //
    @@ -2914,6 +2916,8 @@
             tracing::info!("retrieve from storage");
             let fetch = data_source.get_leaf(1).await;
             assert_eq!(leaves[0], fetch.try_resolve().ok().unwrap());
    +
    +        drop(db);
         }
     
         #[tokio::test(flavor = "multi_thread")]
    diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js
    index 2fd9de76f..9d845f34f 100644
    --- a/trait.impl/core/clone/trait.Clone.js
    +++ b/trait.impl/core/clone/trait.Clone.js
    @@ -1,9 +1,9 @@
     (function() {
    -    var implementors = Object.fromEntries([["hotshot_query_service",[["impl Clone for Error"],["impl Clone for FailableAction"],["impl Clone for DataSource"],["impl Clone for Error"],["impl Clone for QueryError"],["impl Clone for CurrencyCode"],["impl Clone for Error"],["impl Clone for GetBlockDetailError"],["impl Clone for GetBlockSummariesError"],["impl Clone for GetExplorerSummaryError"],["impl Clone for GetSearchResultsError"],["impl Clone for GetTransactionDetailError"],["impl Clone for GetTransactionSummariesError"],["impl Clone for Error"],["impl Clone for Error"],["impl Clone for Error"],["impl Clone for Limits"],["impl Clone for RequestSnafu"],["impl Clone for NoStorage"],["impl Clone for PrunerCfg"],["impl Clone for Config"],["impl Clone for Read"],["impl Clone for Write"],["impl Clone for MetricsDataSource"],["impl Clone for CurrencyMismatchError"],["impl Clone for InvalidCurrencyCodeError"],["impl Clone for MonetaryValue"],["impl Clone for Timestamp"],["impl Clone for NoFetching"],["impl Clone for LeafRequest"],["impl Clone for PayloadRequest"],["impl Clone for VidCommonRequest"],["impl Clone for Counter"],["impl Clone for CounterFamily"],["impl Clone for Gauge"],["impl Clone for GaugeFamily"],["impl Clone for Histogram"],["impl Clone for HistogramFamily"],["impl Clone for PrometheusMetrics"],["impl Clone for TextFamily"],["impl Clone for Limits"],["impl Clone for QuerySnafu"],["impl Clone for RequestSnafu"],["impl Clone for SyncStatus"],["impl Clone for MissingSnafu"],["impl Clone for NotFoundSnafu"],["impl Clone for BackgroundTask"],["impl Clone for MockNodeImpl"],["impl Clone for MockTypes"],["impl Clone for MockVersions"],["impl<D: Clone> Clone for ApiState<D>"],["impl<D: Clone, U: Clone> Clone for ExtensibleDataSource<D, U>"],["impl<P> Clone for TestProvider<P>"],["impl<S: Clone> Clone for FailStorage<S>"],["impl<T, C> Clone for Fetcher<T, C>"],["impl<T: MerklizedState<Types, ARITY>, Types: NodeType, const ARITY: usize> Clone for Snapshot<Types, T, ARITY>"],["impl<T: Clone> Clone for TimeWindowQueryData<T>"],["impl<Types> Clone for PayloadMetadata<Types>
    where\n Types: NodeType + Clone,
    "],["impl<Types> Clone for VidCommonMetadata<Types>
    where\n Types: NodeType + Clone,
    "],["impl<Types> Clone for AnyProvider<Types>
    where\n Types: NodeType,
    "],["impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>
    where\n Types: NodeType,
    "],["impl<Types, S, P> Clone for Pruner<Types, S, P>
    where\n Types: NodeType,
    "],["impl<Types: Clone + NodeType> Clone for BlockIdentifier<Types>"],["impl<Types: Clone + NodeType> Clone for TransactionIdentifier<Types>"],["impl<Types: Clone + NodeType> Clone for BlockInfo<Types>"],["impl<Types: Clone + NodeType> Clone for BlockQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for BlockSummaryQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for InconsistentLeafError<Types>"],["impl<Types: Clone + NodeType> Clone for LeafQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for PayloadQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for TransactionQueryData<Types>
    where\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<Types: Clone + NodeType> Clone for TransactionSummaryQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for VidCommonQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for BlockRange<Types>"],["impl<Types: Clone + NodeType> Clone for TransactionRange<Types>"],["impl<Types: NodeType> Clone for BlockId<Types>"],["impl<Types: NodeType> Clone for LeafId<Types>"],["impl<Types: NodeType> Clone for WindowStart<Types>"],["impl<Ver: Clone + StaticVersionType> Clone for QueryServiceProvider<Ver>"],["impl<__T0: Clone> Clone for FetchBlockSnafu<__T0>"],["impl<__T0: Clone> Clone for FetchLeafSnafu<__T0>"],["impl<__T0: Clone> Clone for FetchTransactionSnafu<__T0>"],["impl<__T0: Clone> Clone for QueryVidSnafu<__T0>"],["impl<__T0: Clone> Clone for ErrorSnafu<__T0>"],["impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone> Clone for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone> Clone for QueryWindowSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone, __T2: Clone> Clone for RangeLimitSnafu<__T0, __T1, __T2>"]]]]); + var implementors = Object.fromEntries([["hotshot_query_service",[["impl Clone for Error"],["impl Clone for FailableAction"],["impl Clone for DataSource"],["impl Clone for Error"],["impl Clone for QueryError"],["impl Clone for CurrencyCode"],["impl Clone for Error"],["impl Clone for GetBlockDetailError"],["impl Clone for GetBlockSummariesError"],["impl Clone for GetExplorerSummaryError"],["impl Clone for GetSearchResultsError"],["impl Clone for GetTransactionDetailError"],["impl Clone for GetTransactionSummariesError"],["impl Clone for Error"],["impl Clone for Error"],["impl Clone for Error"],["impl Clone for Limits"],["impl Clone for RequestSnafu"],["impl Clone for NoStorage"],["impl Clone for PrunerCfg"],["impl Clone for Config"],["impl Clone for Read"],["impl Clone for SqlStorage"],["impl Clone for Write"],["impl Clone for MetricsDataSource"],["impl Clone for CurrencyMismatchError"],["impl Clone for InvalidCurrencyCodeError"],["impl Clone for MonetaryValue"],["impl Clone for Timestamp"],["impl Clone for NoFetching"],["impl Clone for LeafRequest"],["impl Clone for PayloadRequest"],["impl Clone for VidCommonRequest"],["impl Clone for Counter"],["impl Clone for CounterFamily"],["impl Clone for Gauge"],["impl Clone for GaugeFamily"],["impl Clone for Histogram"],["impl Clone for HistogramFamily"],["impl Clone for PrometheusMetrics"],["impl Clone for TextFamily"],["impl Clone for Limits"],["impl Clone for QuerySnafu"],["impl Clone for RequestSnafu"],["impl Clone for SyncStatus"],["impl Clone for MissingSnafu"],["impl Clone for NotFoundSnafu"],["impl Clone for BackgroundTask"],["impl Clone for MockNodeImpl"],["impl Clone for MockTypes"],["impl Clone for MockVersions"],["impl<D: Clone> Clone for ApiState<D>"],["impl<D: Clone, U: Clone> Clone for ExtensibleDataSource<D, U>"],["impl<P> Clone for TestProvider<P>"],["impl<S: Clone> Clone for FailStorage<S>"],["impl<T, C> Clone for Fetcher<T, C>"],["impl<T: MerklizedState<Types, ARITY>, Types: NodeType, const ARITY: usize> Clone for Snapshot<Types, T, ARITY>"],["impl<T: Clone> Clone for TimeWindowQueryData<T>"],["impl<Types> Clone for PayloadMetadata<Types>
    where\n Types: NodeType + Clone,
    "],["impl<Types> Clone for VidCommonMetadata<Types>
    where\n Types: NodeType + Clone,
    "],["impl<Types> Clone for AnyProvider<Types>
    where\n Types: NodeType,
    "],["impl<Types, S, P> Clone for FetchingDataSource<Types, S, P>
    where\n Types: NodeType,
    "],["impl<Types, S, P> Clone for Pruner<Types, S, P>
    where\n Types: NodeType,
    "],["impl<Types: Clone + NodeType> Clone for BlockIdentifier<Types>"],["impl<Types: Clone + NodeType> Clone for TransactionIdentifier<Types>"],["impl<Types: Clone + NodeType> Clone for BlockInfo<Types>"],["impl<Types: Clone + NodeType> Clone for BlockQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for BlockSummaryQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for InconsistentLeafError<Types>"],["impl<Types: Clone + NodeType> Clone for LeafQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for PayloadQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for TransactionQueryData<Types>
    where\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<Types: Clone + NodeType> Clone for TransactionSummaryQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for VidCommonQueryData<Types>"],["impl<Types: Clone + NodeType> Clone for BlockRange<Types>"],["impl<Types: Clone + NodeType> Clone for TransactionRange<Types>"],["impl<Types: NodeType> Clone for BlockId<Types>"],["impl<Types: NodeType> Clone for LeafId<Types>"],["impl<Types: NodeType> Clone for WindowStart<Types>"],["impl<Ver: Clone + StaticVersionType> Clone for QueryServiceProvider<Ver>"],["impl<__T0: Clone> Clone for FetchBlockSnafu<__T0>"],["impl<__T0: Clone> Clone for FetchLeafSnafu<__T0>"],["impl<__T0: Clone> Clone for FetchTransactionSnafu<__T0>"],["impl<__T0: Clone> Clone for QueryVidSnafu<__T0>"],["impl<__T0: Clone> Clone for ErrorSnafu<__T0>"],["impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone> Clone for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone> Clone for CustomSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone> Clone for QueryWindowSnafu<__T0, __T1>"],["impl<__T0: Clone, __T1: Clone, __T2: Clone> Clone for RangeLimitSnafu<__T0, __T1, __T2>"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[35734]} \ No newline at end of file +//{"start":57,"fragment_lengths":[36072]} \ No newline at end of file diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js index e410d6d26..2ee6c5739 100644 --- a/trait.impl/core/convert/trait.From.js +++ b/trait.impl/core/convert/trait.From.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["hotshot_query_service",[["impl From<(String, StatusCode)> for Error"],["impl From<(String, StatusCode)> for Error"],["impl From<(String, StatusCode)> for Error"],["impl From<(String, StatusCode)> for Error"],["impl From<Error> for Error"],["impl From<QueryError> for GetBlockDetailError"],["impl From<QueryError> for GetBlockSummariesError"],["impl From<QueryError> for GetExplorerSummaryError"],["impl From<QueryError> for GetSearchResultsError"],["impl From<QueryError> for GetTransactionDetailError"],["impl From<QueryError> for GetTransactionSummariesError"],["impl From<QueryError> for Error"],["impl From<QueryError> for Error"],["impl From<CurrencyCode> for u16"],["impl From<CurrencyCode> for String"],["impl From<Error> for Error"],["impl From<GetBlockDetailError> for GetExplorerSummaryError"],["impl From<GetBlockSummariesError> for GetExplorerSummaryError"],["impl From<GetTransactionSummariesError> for GetExplorerSummaryError"],["impl From<TimestampConversionError> for QueryError"],["impl From<TimestampConversionError> for GetTransactionDetailError"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<i128> for MonetaryValue"],["impl From<usize> for LeafRequest"],["impl From<LeafRequest> for usize"],["impl From<String> for Error"],["impl From<TryFromIntError> for TimestampConversionError"],["impl From<ComponentRange> for TimestampConversionError"],["impl From<Error> for QueryError"],["impl From<Error> for GetBlockDetailError"],["impl From<Error> for GetBlockSummariesError"],["impl From<Error> for GetExplorerSummaryError"],["impl From<Error> for GetSearchResultsError"],["impl From<Error> for GetTransactionDetailError"],["impl From<Error> for GetTransactionSummariesError"],["impl From<Error> for MetricsError"],["impl From<PgConnectOptions> for Config"],["impl From<RequestError> for Error"],["impl From<RequestError> for Error"],["impl From<RequestError> for Error"],["impl From<RequestError> for Error"],["impl<D> From<ApiState<D>> for Arc<D>"],["impl<D> From<Arc<D>> for ApiState<D>"],["impl<D> From<D> for ApiState<D>"],["impl<S> From<S> for FailStorage<S>"],["impl<Types> From<BlockQueryData<Types>> for PayloadMetadata<Types>
    where\n Types: NodeType,
    "],["impl<Types> From<VidCommonQueryData<Types>> for VidCommonMetadata<Types>
    where\n Types: NodeType,
    "],["impl<Types: NodeType> From<usize> for BlockId<Types>"],["impl<Types: NodeType> From<usize> for LeafId<Types>"],["impl<Types: NodeType> From<BlockQueryData<Types>> for BlockSummaryQueryData<Types>
    where\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<Types: NodeType> From<BlockQueryData<Types>> for PayloadQueryData<Types>"],["impl<Types: NodeType> From<LeafQueryData<Types>> for BlockInfo<Types>"],["impl<Types: NodeType> From<BlockDetail<Types>> for BlockDetailResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: NodeType> From<ExplorerSummary<Types>> for ExplorerSummaryResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: NodeType> From<SearchResult<Types>> for SearchResultResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: NodeType> From<Vec<BlockSummary<Types>>> for BlockSummaryResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: NodeType> From<Vec<TransactionSummary<Types>>> for TransactionSummariesResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: NodeType> From<Commitment<<Types as NodeType>::BlockHeader>> for BlockId<Types>"],["impl<Types: NodeType> From<Commitment<<Types as NodeType>::BlockHeader>> for WindowStart<Types>"],["impl<Types: NodeType> From<Commitment<Leaf<Types>>> for LeafId<Types>"]]]]); + var implementors = Object.fromEntries([["hotshot_query_service",[["impl From<(String, StatusCode)> for Error"],["impl From<(String, StatusCode)> for Error"],["impl From<(String, StatusCode)> for Error"],["impl From<(String, StatusCode)> for Error"],["impl From<Error> for Error"],["impl From<QueryError> for GetBlockDetailError"],["impl From<QueryError> for GetBlockSummariesError"],["impl From<QueryError> for GetExplorerSummaryError"],["impl From<QueryError> for GetSearchResultsError"],["impl From<QueryError> for GetTransactionDetailError"],["impl From<QueryError> for GetTransactionSummariesError"],["impl From<QueryError> for Error"],["impl From<QueryError> for Error"],["impl From<CurrencyCode> for u16"],["impl From<CurrencyCode> for String"],["impl From<Error> for Error"],["impl From<GetBlockDetailError> for GetExplorerSummaryError"],["impl From<GetBlockSummariesError> for GetExplorerSummaryError"],["impl From<GetTransactionSummariesError> for GetExplorerSummaryError"],["impl From<TimestampConversionError> for QueryError"],["impl From<TimestampConversionError> for GetTransactionDetailError"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<i128> for MonetaryValue"],["impl From<usize> for LeafRequest"],["impl From<LeafRequest> for usize"],["impl From<String> for Error"],["impl From<TryFromIntError> for TimestampConversionError"],["impl From<ComponentRange> for TimestampConversionError"],["impl From<Error> for QueryError"],["impl From<Error> for GetBlockDetailError"],["impl From<Error> for GetBlockSummariesError"],["impl From<Error> for GetExplorerSummaryError"],["impl From<Error> for GetSearchResultsError"],["impl From<Error> for GetTransactionDetailError"],["impl From<Error> for GetTransactionSummariesError"],["impl From<Error> for MetricsError"],["impl From<RequestError> for Error"],["impl From<RequestError> for Error"],["impl From<RequestError> for Error"],["impl From<RequestError> for Error"],["impl From<SqliteConnectOptions> for Config"],["impl<D> From<ApiState<D>> for Arc<D>"],["impl<D> From<Arc<D>> for ApiState<D>"],["impl<D> From<D> for ApiState<D>"],["impl<S> From<S> for FailStorage<S>"],["impl<Types> From<BlockQueryData<Types>> for PayloadMetadata<Types>
    where\n Types: NodeType,
    "],["impl<Types> From<VidCommonQueryData<Types>> for VidCommonMetadata<Types>
    where\n Types: NodeType,
    "],["impl<Types: NodeType> From<usize> for BlockId<Types>"],["impl<Types: NodeType> From<usize> for LeafId<Types>"],["impl<Types: NodeType> From<BlockQueryData<Types>> for BlockSummaryQueryData<Types>
    where\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<Types: NodeType> From<BlockQueryData<Types>> for PayloadQueryData<Types>"],["impl<Types: NodeType> From<LeafQueryData<Types>> for BlockInfo<Types>"],["impl<Types: NodeType> From<BlockDetail<Types>> for BlockDetailResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: NodeType> From<ExplorerSummary<Types>> for ExplorerSummaryResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: NodeType> From<SearchResult<Types>> for SearchResultResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: NodeType> From<Vec<BlockSummary<Types>>> for BlockSummaryResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: NodeType> From<Vec<TransactionSummary<Types>>> for TransactionSummariesResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: NodeType> From<Commitment<<Types as NodeType>::BlockHeader>> for BlockId<Types>"],["impl<Types: NodeType> From<Commitment<<Types as NodeType>::BlockHeader>> for WindowStart<Types>"],["impl<Types: NodeType> From<Commitment<Leaf<Types>>> for LeafId<Types>"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[31064]} \ No newline at end of file +//{"start":57,"fragment_lengths":[31068]} \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js index 843f63e99..bf4bfe19f 100644 --- a/trait.impl/core/fmt/trait.Debug.js +++ b/trait.impl/core/fmt/trait.Debug.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["hotshot_query_service",[["impl Debug for Error"],["impl Debug for FailableAction"],["impl Debug for DataSource"],["impl Debug for Error"],["impl Debug for QueryError"],["impl Debug for CurrencyCode"],["impl Debug for Error"],["impl Debug for GetBlockDetailError"],["impl Debug for GetBlockSummariesError"],["impl Debug for GetExplorerSummaryError"],["impl Debug for GetSearchResultsError"],["impl Debug for GetTransactionDetailError"],["impl Debug for GetTransactionSummariesError"],["impl Debug for TimestampConversionError"],["impl Debug for TransactionSummaryFilter"],["impl Debug for Error"],["impl Debug for MetricsError"],["impl Debug for Error"],["impl Debug for Error"],["impl Debug for Limits"],["impl Debug for Options"],["impl Debug for RequestSnafu"],["impl Debug for NoStorage"],["impl Debug for PrunerCfg"],["impl Debug for Config"],["impl Debug for Pruner"],["impl Debug for Read"],["impl Debug for SqlStorage"],["impl Debug for Write"],["impl Debug for TmpDb"],["impl Debug for MetricsDataSource"],["impl Debug for CurrencyMismatchError"],["impl Debug for ExplorerHistograms"],["impl Debug for FeeAttribution"],["impl Debug for GenesisOverview"],["impl Debug for InvalidCurrencyCodeError"],["impl Debug for MonetaryValue"],["impl Debug for Timestamp"],["impl Debug for NoFetching"],["impl Debug for LeafRequest"],["impl Debug for PayloadRequest"],["impl Debug for VidCommonRequest"],["impl Debug for Counter"],["impl Debug for CounterFamily"],["impl Debug for Gauge"],["impl Debug for GaugeFamily"],["impl Debug for Histogram"],["impl Debug for HistogramFamily"],["impl Debug for PrometheusMetrics"],["impl Debug for TextFamily"],["impl Debug for Limits"],["impl Debug for Options"],["impl Debug for QuerySnafu"],["impl Debug for RequestSnafu"],["impl Debug for SyncStatus"],["impl Debug for MissingSnafu"],["impl Debug for NotFoundSnafu"],["impl Debug for BackgroundTask"],["impl Debug for MockNodeImpl"],["impl Debug for MockTypes"],["impl Debug for MockVersions"],["impl<'q> Debug for QueryBuilder<'q>"],["impl<D: Debug> Debug for ApiState<D>"],["impl<D: Debug, U: Debug> Debug for ExtensibleDataSource<D, U>"],["impl<Mode: Debug> Debug for Transaction<Mode>"],["impl<P> Debug for TestProvider<P>
    where\n P: Debug,
    "],["impl<S: Debug> Debug for FailStorage<S>"],["impl<T, C> Debug for Fetcher<T, C>"],["impl<T: Debug + Revert> Debug for Transaction<T>"],["impl<T: Debug> Debug for Transaction<T>"],["impl<T: Debug> Debug for TimeWindowQueryData<T>"],["impl<T: Send + 'static> Debug for Task<T>"],["impl<Types> Debug for PayloadMetadata<Types>
    where\n Types: NodeType + Debug,
    "],["impl<Types> Debug for VidCommonMetadata<Types>
    where\n Types: NodeType + Debug,
    "],["impl<Types> Debug for FileSystemStorageInner<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,\n HashMap<LeafHash<Types>, u64>: Debug,\n HashMap<BlockHash<Types>, u64>: Debug,\n HashMap<TransactionHash<Types>, u64>: Debug,\n LedgerLog<LeafQueryData<Types>>: Debug,\n LedgerLog<BlockQueryData<Types>>: Debug,\n LedgerLog<(VidCommonQueryData<Types>, Option<VidShare>)>: Debug,
    "],["impl<Types> Debug for AnyProvider<Types>
    where\n Types: NodeType,
    "],["impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>
    where\n Types: NodeType,\n S: Debug,\n P: Debug,
    "],["impl<Types, S, P> Debug for Pruner<Types, S, P>
    where\n Types: NodeType,\n S: Debug,\n P: Debug,
    "],["impl<Types: Debug + NodeType> Debug for BlockIdentifier<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionIdentifier<Types>"],["impl<Types: Debug + NodeType> Debug for BlockInfo<Types>"],["impl<Types: Debug + NodeType> Debug for BlockQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for BlockSummaryQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for InconsistentLeafError<Types>"],["impl<Types: Debug + NodeType> Debug for LeafQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for PayloadQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionQueryData<Types>
    where\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<Types: Debug + NodeType> Debug for TransactionSummaryQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for VidCommonQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for FileSystemStorage<Types>
    where\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<Types: Debug + NodeType> Debug for BlockDetail<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: Debug + NodeType> Debug for BlockDetailResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: Debug + NodeType> Debug for BlockRange<Types>"],["impl<Types: Debug + NodeType> Debug for BlockSummary<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: Debug + NodeType> Debug for BlockSummaryResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: Debug + NodeType> Debug for ExplorerSummary<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for ExplorerSummaryResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for GetBlockSummariesRequest<Types>"],["impl<Types: Debug + NodeType> Debug for GetTransactionSummariesRequest<Types>"],["impl<Types: Debug + NodeType> Debug for SearchResult<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for SearchResultResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for TransactionDetail<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionDetailResponse<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionRange<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionSummariesResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for TransactionSummary<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: NodeType> Debug for BlockId<Types>"],["impl<Types: NodeType> Debug for LeafId<Types>"],["impl<Types: NodeType> Debug for WindowStart<Types>"],["impl<Types: NodeType, T: MerklizedState<Types, ARITY>, const ARITY: usize> Debug for Snapshot<Types, T, ARITY>"],["impl<Ver: Debug + StaticVersionType> Debug for QueryServiceProvider<Ver>"],["impl<__T0: Debug> Debug for FetchBlockSnafu<__T0>"],["impl<__T0: Debug> Debug for FetchLeafSnafu<__T0>"],["impl<__T0: Debug> Debug for FetchTransactionSnafu<__T0>"],["impl<__T0: Debug> Debug for QueryVidSnafu<__T0>"],["impl<__T0: Debug> Debug for ErrorSnafu<__T0>"],["impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>"],["impl<__T0: Debug, __T1: Debug> Debug for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>"],["impl<__T0: Debug, __T1: Debug> Debug for QueryWindowSnafu<__T0, __T1>"],["impl<__T0: Debug, __T1: Debug, __T2: Debug> Debug for RangeLimitSnafu<__T0, __T1, __T2>"]]]]); + var implementors = Object.fromEntries([["hotshot_query_service",[["impl Debug for Error"],["impl Debug for FailableAction"],["impl Debug for DataSource"],["impl Debug for Error"],["impl Debug for QueryError"],["impl Debug for CurrencyCode"],["impl Debug for Error"],["impl Debug for GetBlockDetailError"],["impl Debug for GetBlockSummariesError"],["impl Debug for GetExplorerSummaryError"],["impl Debug for GetSearchResultsError"],["impl Debug for GetTransactionDetailError"],["impl Debug for GetTransactionSummariesError"],["impl Debug for TimestampConversionError"],["impl Debug for TransactionSummaryFilter"],["impl Debug for Error"],["impl Debug for MetricsError"],["impl Debug for Error"],["impl Debug for Error"],["impl Debug for Limits"],["impl Debug for Options"],["impl Debug for RequestSnafu"],["impl Debug for NoStorage"],["impl Debug for PrunerCfg"],["impl Debug for Pruner"],["impl Debug for Read"],["impl Debug for SqlStorage"],["impl Debug for Write"],["impl Debug for TmpDb"],["impl Debug for MetricsDataSource"],["impl Debug for CurrencyMismatchError"],["impl Debug for ExplorerHistograms"],["impl Debug for FeeAttribution"],["impl Debug for GenesisOverview"],["impl Debug for InvalidCurrencyCodeError"],["impl Debug for MonetaryValue"],["impl Debug for Timestamp"],["impl Debug for NoFetching"],["impl Debug for LeafRequest"],["impl Debug for PayloadRequest"],["impl Debug for VidCommonRequest"],["impl Debug for Counter"],["impl Debug for CounterFamily"],["impl Debug for Gauge"],["impl Debug for GaugeFamily"],["impl Debug for Histogram"],["impl Debug for HistogramFamily"],["impl Debug for PrometheusMetrics"],["impl Debug for TextFamily"],["impl Debug for Limits"],["impl Debug for Options"],["impl Debug for QuerySnafu"],["impl Debug for RequestSnafu"],["impl Debug for SyncStatus"],["impl Debug for MissingSnafu"],["impl Debug for NotFoundSnafu"],["impl Debug for BackgroundTask"],["impl Debug for MockNodeImpl"],["impl Debug for MockTypes"],["impl Debug for MockVersions"],["impl<'q> Debug for QueryBuilder<'q>"],["impl<D: Debug> Debug for ApiState<D>"],["impl<D: Debug, U: Debug> Debug for ExtensibleDataSource<D, U>"],["impl<Mode: Debug> Debug for Transaction<Mode>"],["impl<P> Debug for TestProvider<P>
    where\n P: Debug,
    "],["impl<S: Debug> Debug for FailStorage<S>"],["impl<T, C> Debug for Fetcher<T, C>"],["impl<T: Debug + Revert> Debug for Transaction<T>"],["impl<T: Debug> Debug for Transaction<T>"],["impl<T: Debug> Debug for TimeWindowQueryData<T>"],["impl<T: Send + 'static> Debug for Task<T>"],["impl<Types> Debug for PayloadMetadata<Types>
    where\n Types: NodeType + Debug,
    "],["impl<Types> Debug for VidCommonMetadata<Types>
    where\n Types: NodeType + Debug,
    "],["impl<Types> Debug for FileSystemStorageInner<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,\n HashMap<LeafHash<Types>, u64>: Debug,\n HashMap<BlockHash<Types>, u64>: Debug,\n HashMap<TransactionHash<Types>, u64>: Debug,\n LedgerLog<LeafQueryData<Types>>: Debug,\n LedgerLog<BlockQueryData<Types>>: Debug,\n LedgerLog<(VidCommonQueryData<Types>, Option<VidShare>)>: Debug,
    "],["impl<Types> Debug for AnyProvider<Types>
    where\n Types: NodeType,
    "],["impl<Types, S, P> Debug for FetchingDataSource<Types, S, P>
    where\n Types: NodeType,\n S: Debug,\n P: Debug,
    "],["impl<Types, S, P> Debug for Pruner<Types, S, P>
    where\n Types: NodeType,\n S: Debug,\n P: Debug,
    "],["impl<Types: Debug + NodeType> Debug for BlockIdentifier<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionIdentifier<Types>"],["impl<Types: Debug + NodeType> Debug for BlockInfo<Types>"],["impl<Types: Debug + NodeType> Debug for BlockQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for BlockSummaryQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for InconsistentLeafError<Types>"],["impl<Types: Debug + NodeType> Debug for LeafQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for PayloadQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionQueryData<Types>
    where\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<Types: Debug + NodeType> Debug for TransactionSummaryQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for VidCommonQueryData<Types>"],["impl<Types: Debug + NodeType> Debug for FileSystemStorage<Types>
    where\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<Types: Debug + NodeType> Debug for BlockDetail<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: Debug + NodeType> Debug for BlockDetailResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: Debug + NodeType> Debug for BlockRange<Types>"],["impl<Types: Debug + NodeType> Debug for BlockSummary<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: Debug + NodeType> Debug for BlockSummaryResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,
    "],["impl<Types: Debug + NodeType> Debug for ExplorerSummary<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for ExplorerSummaryResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for GetBlockSummariesRequest<Types>"],["impl<Types: Debug + NodeType> Debug for GetTransactionSummariesRequest<Types>"],["impl<Types: Debug + NodeType> Debug for SearchResult<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for SearchResultResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for TransactionDetail<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionDetailResponse<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionRange<Types>"],["impl<Types: Debug + NodeType> Debug for TransactionSummariesResponse<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: Debug + NodeType> Debug for TransactionSummary<Types>
    where\n Header<Types>: ExplorerHeader<Types>,\n Transaction<Types>: ExplorerTransaction,
    "],["impl<Types: NodeType> Debug for BlockId<Types>"],["impl<Types: NodeType> Debug for LeafId<Types>"],["impl<Types: NodeType> Debug for WindowStart<Types>"],["impl<Types: NodeType, T: MerklizedState<Types, ARITY>, const ARITY: usize> Debug for Snapshot<Types, T, ARITY>"],["impl<Ver: Debug + StaticVersionType> Debug for QueryServiceProvider<Ver>"],["impl<__T0: Debug> Debug for FetchBlockSnafu<__T0>"],["impl<__T0: Debug> Debug for FetchLeafSnafu<__T0>"],["impl<__T0: Debug> Debug for FetchTransactionSnafu<__T0>"],["impl<__T0: Debug> Debug for QueryVidSnafu<__T0>"],["impl<__T0: Debug> Debug for ErrorSnafu<__T0>"],["impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>"],["impl<__T0: Debug, __T1: Debug> Debug for InvalidTransactionIndexSnafu<__T0, __T1>"],["impl<__T0: Debug, __T1: Debug> Debug for CustomSnafu<__T0, __T1>"],["impl<__T0: Debug, __T1: Debug> Debug for QueryWindowSnafu<__T0, __T1>"],["impl<__T0: Debug, __T1: Debug, __T2: Debug> Debug for RangeLimitSnafu<__T0, __T1, __T2>"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[59266]} \ No newline at end of file +//{"start":57,"fragment_lengths":[58944]} \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 26c73bda7..a9c4d1f62 100644 --- a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["hotshot_query_service",[["impl !RefUnwindSafe for DataSource",1,["hotshot_query_service::data_source::storage::no_storage::testing::DataSource"]],["impl !RefUnwindSafe for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl !RefUnwindSafe for NoStorage",1,["hotshot_query_service::data_source::storage::no_storage::NoStorage"]],["impl !RefUnwindSafe for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl !RefUnwindSafe for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl !RefUnwindSafe for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl !RefUnwindSafe for CounterFamily",1,["hotshot_query_service::metrics::CounterFamily"]],["impl !RefUnwindSafe for GaugeFamily",1,["hotshot_query_service::metrics::GaugeFamily"]],["impl !RefUnwindSafe for HistogramFamily",1,["hotshot_query_service::metrics::HistogramFamily"]],["impl !RefUnwindSafe for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl !RefUnwindSafe for TextFamily",1,["hotshot_query_service::metrics::TextFamily"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::availability::Error"]],["impl RefUnwindSafe for FailableAction",1,["hotshot_query_service::data_source::storage::fail_storage::FailableAction"]],["impl RefUnwindSafe for Storage",1,["hotshot_query_service::data_source::storage::no_storage::testing::Storage"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::error::Error"]],["impl RefUnwindSafe for QueryError",1,["hotshot_query_service::QueryError"]],["impl RefUnwindSafe for CurrencyCode",1,["hotshot_query_service::explorer::currency::CurrencyCode"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::explorer::Error"]],["impl RefUnwindSafe for GetBlockDetailError",1,["hotshot_query_service::explorer::query_data::GetBlockDetailError"]],["impl RefUnwindSafe for GetBlockSummariesError",1,["hotshot_query_service::explorer::query_data::GetBlockSummariesError"]],["impl RefUnwindSafe for GetExplorerSummaryError",1,["hotshot_query_service::explorer::query_data::GetExplorerSummaryError"]],["impl RefUnwindSafe for GetSearchResultsError",1,["hotshot_query_service::explorer::query_data::GetSearchResultsError"]],["impl RefUnwindSafe for GetTransactionDetailError",1,["hotshot_query_service::explorer::query_data::GetTransactionDetailError"]],["impl RefUnwindSafe for GetTransactionSummariesError",1,["hotshot_query_service::explorer::query_data::GetTransactionSummariesError"]],["impl RefUnwindSafe for TimestampConversionError",1,["hotshot_query_service::explorer::query_data::TimestampConversionError"]],["impl RefUnwindSafe for TransactionSummaryFilter",1,["hotshot_query_service::explorer::query_data::TransactionSummaryFilter"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::merklized_state::Error"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::node::Error"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::status::Error"]],["impl RefUnwindSafe for Limits",1,["hotshot_query_service::availability::query_data::Limits"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::availability::Options"]],["impl RefUnwindSafe for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl RefUnwindSafe for PrunerCfg",1,["hotshot_query_service::data_source::storage::pruning::PrunerCfg"]],["impl RefUnwindSafe for Pruner",1,["hotshot_query_service::data_source::storage::sql::Pruner"]],["impl RefUnwindSafe for Read",1,["hotshot_query_service::data_source::storage::sql::transaction::Read"]],["impl RefUnwindSafe for Write",1,["hotshot_query_service::data_source::storage::sql::transaction::Write"]],["impl RefUnwindSafe for TestMerkleTreeMigration",1,["hotshot_query_service::data_source::storage::sql::testing::TestMerkleTreeMigration"]],["impl RefUnwindSafe for TmpDb",1,["hotshot_query_service::data_source::storage::sql::testing::TmpDb"]],["impl RefUnwindSafe for CurrencyMismatchError",1,["hotshot_query_service::explorer::currency::CurrencyMismatchError"]],["impl RefUnwindSafe for ExplorerHistograms",1,["hotshot_query_service::explorer::query_data::ExplorerHistograms"]],["impl RefUnwindSafe for FeeAttribution",1,["hotshot_query_service::explorer::query_data::FeeAttribution"]],["impl RefUnwindSafe for GenesisOverview",1,["hotshot_query_service::explorer::query_data::GenesisOverview"]],["impl RefUnwindSafe for InvalidCurrencyCodeError",1,["hotshot_query_service::explorer::currency::InvalidCurrencyCodeError"]],["impl RefUnwindSafe for MonetaryValue",1,["hotshot_query_service::explorer::monetary_value::MonetaryValue"]],["impl RefUnwindSafe for Timestamp",1,["hotshot_query_service::explorer::query_data::Timestamp"]],["impl RefUnwindSafe for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl RefUnwindSafe for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl RefUnwindSafe for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl RefUnwindSafe for VidCommonRequest",1,["hotshot_query_service::fetching::request::VidCommonRequest"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::merklized_state::Options"]],["impl RefUnwindSafe for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl RefUnwindSafe for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl RefUnwindSafe for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl RefUnwindSafe for Limits",1,["hotshot_query_service::node::query_data::Limits"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::node::Options"]],["impl RefUnwindSafe for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl RefUnwindSafe for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl RefUnwindSafe for SyncStatus",1,["hotshot_query_service::node::query_data::SyncStatus"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::status::Options"]],["impl RefUnwindSafe for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl RefUnwindSafe for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::Options"]],["impl RefUnwindSafe for BackgroundTask",1,["hotshot_query_service::task::BackgroundTask"]],["impl RefUnwindSafe for MockNodeImpl",1,["hotshot_query_service::testing::mocks::MockNodeImpl"]],["impl RefUnwindSafe for MockTypes",1,["hotshot_query_service::testing::mocks::MockTypes"]],["impl RefUnwindSafe for MockVersions",1,["hotshot_query_service::testing::mocks::MockVersions"]],["impl<'a> !RefUnwindSafe for Transaction<'a>",1,["hotshot_query_service::data_source::storage::no_storage::Transaction"]],["impl<'a, T> !RefUnwindSafe for Transaction<'a, T>",1,["hotshot_query_service::data_source::storage::no_storage::testing::Transaction"]],["impl<'q> !RefUnwindSafe for QueryBuilder<'q>",1,["hotshot_query_service::data_source::storage::sql::queries::QueryBuilder"]],["impl<D> !RefUnwindSafe for MockNetwork<D>",1,["hotshot_query_service::testing::consensus::MockNetwork"]],["impl<D> RefUnwindSafe for ApiState<D>
    where\n D: RefUnwindSafe,
    ",1,["hotshot_query_service::ApiState"]],["impl<D, U> RefUnwindSafe for ExtensibleDataSource<D, U>
    where\n D: RefUnwindSafe,\n U: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Mode> !RefUnwindSafe for Transaction<Mode>",1,["hotshot_query_service::data_source::storage::sql::transaction::Transaction"]],["impl<P> !RefUnwindSafe for TestProvider<P>",1,["hotshot_query_service::fetching::provider::testing::TestProvider"]],["impl<S> !RefUnwindSafe for FailStorage<S>",1,["hotshot_query_service::data_source::storage::fail_storage::FailStorage"]],["impl<T> !RefUnwindSafe for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<T> !RefUnwindSafe for Transaction<T>",1,["hotshot_query_service::data_source::storage::fail_storage::Transaction"]],["impl<T> RefUnwindSafe for Transaction<T>
    where\n T: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::storage::fs::Transaction"]],["impl<T> RefUnwindSafe for TimeWindowQueryData<T>
    where\n T: RefUnwindSafe,
    ",1,["hotshot_query_service::node::query_data::TimeWindowQueryData"]],["impl<T> RefUnwindSafe for Task<T>",1,["hotshot_query_service::task::Task"]],["impl<T, C> !RefUnwindSafe for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl<Types> !RefUnwindSafe for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl<Types> !RefUnwindSafe for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl<Types> RefUnwindSafe for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<Types> RefUnwindSafe for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> RefUnwindSafe for BlockIdentifier<Types>",1,["hotshot_query_service::explorer::query_data::BlockIdentifier"]],["impl<Types> RefUnwindSafe for TransactionIdentifier<Types>",1,["hotshot_query_service::explorer::query_data::TransactionIdentifier"]],["impl<Types> RefUnwindSafe for WindowStart<Types>",1,["hotshot_query_service::node::data_source::WindowStart"]],["impl<Types> RefUnwindSafe for BlockInfo<Types>
    where\n <Types as NodeType>::View: RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: RefUnwindSafe,\n Types: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::data_source::BlockInfo"]],["impl<Types> RefUnwindSafe for BlockQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> RefUnwindSafe for BlockSummaryQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::BlockSummaryQueryData"]],["impl<Types> RefUnwindSafe for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> RefUnwindSafe for LeafQueryData<Types>
    where\n <Types as NodeType>::View: RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: RefUnwindSafe,\n Types: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> RefUnwindSafe for PayloadMetadata<Types>",1,["hotshot_query_service::availability::query_data::PayloadMetadata"]],["impl<Types> RefUnwindSafe for PayloadQueryData<Types>
    where\n <Types as NodeType>::BlockPayload: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> RefUnwindSafe for TransactionQueryData<Types>
    where\n <Types as NodeType>::BlockPayload: for<'de> Sized,\n <Types as NodeType>::Transaction: RefUnwindSafe,\n <<Types as NodeType>::BlockPayload as QueryablePayload<Types>>::InclusionProof: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl<Types> RefUnwindSafe for TransactionSummaryQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::Transaction: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::TransactionSummaryQueryData"]],["impl<Types> RefUnwindSafe for VidCommonMetadata<Types>",1,["hotshot_query_service::availability::query_data::VidCommonMetadata"]],["impl<Types> RefUnwindSafe for VidCommonQueryData<Types>",1,["hotshot_query_service::availability::query_data::VidCommonQueryData"]],["impl<Types> RefUnwindSafe for FileSystemStorageInner<Types>
    where\n <Types as NodeType>::BlockPayload: for<'de> Sized + RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::View: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: RefUnwindSafe,\n Types: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorageInner"]],["impl<Types> RefUnwindSafe for BlockDetail<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::BlockDetail"]],["impl<Types> RefUnwindSafe for BlockDetailResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::BlockDetailResponse"]],["impl<Types> RefUnwindSafe for BlockRange<Types>",1,["hotshot_query_service::explorer::query_data::BlockRange"]],["impl<Types> RefUnwindSafe for BlockSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::BlockSummary"]],["impl<Types> RefUnwindSafe for BlockSummaryResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::BlockSummaryResponse"]],["impl<Types> RefUnwindSafe for ExplorerSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: RefUnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::ExplorerSummary"]],["impl<Types> RefUnwindSafe for ExplorerSummaryResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: RefUnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::ExplorerSummaryResponse"]],["impl<Types> RefUnwindSafe for GetBlockSummariesRequest<Types>",1,["hotshot_query_service::explorer::query_data::GetBlockSummariesRequest"]],["impl<Types> RefUnwindSafe for GetTransactionSummariesRequest<Types>",1,["hotshot_query_service::explorer::query_data::GetTransactionSummariesRequest"]],["impl<Types> RefUnwindSafe for SearchResult<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::SearchResult"]],["impl<Types> RefUnwindSafe for SearchResultResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::SearchResultResponse"]],["impl<Types> RefUnwindSafe for TransactionDetail<Types>",1,["hotshot_query_service::explorer::query_data::TransactionDetail"]],["impl<Types> RefUnwindSafe for TransactionDetailResponse<Types>
    where\n <Types as NodeType>::Transaction: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::TransactionDetailResponse"]],["impl<Types> RefUnwindSafe for TransactionRange<Types>",1,["hotshot_query_service::explorer::query_data::TransactionRange"]],["impl<Types> RefUnwindSafe for TransactionSummariesResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::TransactionSummariesResponse"]],["impl<Types> RefUnwindSafe for TransactionSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::TransactionSummary"]],["impl<Types, S, P> !RefUnwindSafe for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<Types, S, P> RefUnwindSafe for Builder<Types, S, P>
    where\n S: RefUnwindSafe,\n P: RefUnwindSafe,\n Types: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> RefUnwindSafe for Pruner<Types, S, P>
    where\n Types: RefUnwindSafe,\n S: RefUnwindSafe,\n P: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::fetching::Pruner"]],["impl<Types, T, const ARITY: usize> RefUnwindSafe for Snapshot<Types, T, ARITY>
    where\n <T as MerklizedState<Types, ARITY>>::Commit: RefUnwindSafe,
    ",1,["hotshot_query_service::merklized_state::data_source::Snapshot"]],["impl<Ver> !RefUnwindSafe for QueryServiceProvider<Ver>",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl<__T0> RefUnwindSafe for FetchBlockSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> RefUnwindSafe for FetchLeafSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> RefUnwindSafe for FetchTransactionSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0> RefUnwindSafe for QueryVidSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::node::QueryVidSnafu"]],["impl<__T0> RefUnwindSafe for ErrorSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::ErrorSnafu"]],["impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<__T0, __T1> RefUnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,
    ",1,["hotshot_query_service::node::CustomSnafu"]],["impl<__T0, __T1> RefUnwindSafe for QueryWindowSnafu<__T0, __T1>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,
    ",1,["hotshot_query_service::node::QueryWindowSnafu"]],["impl<__T0, __T1, __T2> RefUnwindSafe for RangeLimitSnafu<__T0, __T1, __T2>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,\n __T2: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::RangeLimitSnafu"]]]]]); + var implementors = Object.fromEntries([["hotshot_query_service",[["impl !RefUnwindSafe for DataSource",1,["hotshot_query_service::data_source::storage::no_storage::testing::DataSource"]],["impl !RefUnwindSafe for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl !RefUnwindSafe for NoStorage",1,["hotshot_query_service::data_source::storage::no_storage::NoStorage"]],["impl !RefUnwindSafe for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl !RefUnwindSafe for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl !RefUnwindSafe for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl !RefUnwindSafe for CounterFamily",1,["hotshot_query_service::metrics::CounterFamily"]],["impl !RefUnwindSafe for GaugeFamily",1,["hotshot_query_service::metrics::GaugeFamily"]],["impl !RefUnwindSafe for HistogramFamily",1,["hotshot_query_service::metrics::HistogramFamily"]],["impl !RefUnwindSafe for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl !RefUnwindSafe for TextFamily",1,["hotshot_query_service::metrics::TextFamily"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::availability::Error"]],["impl RefUnwindSafe for FailableAction",1,["hotshot_query_service::data_source::storage::fail_storage::FailableAction"]],["impl RefUnwindSafe for Storage",1,["hotshot_query_service::data_source::storage::no_storage::testing::Storage"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::error::Error"]],["impl RefUnwindSafe for QueryError",1,["hotshot_query_service::QueryError"]],["impl RefUnwindSafe for CurrencyCode",1,["hotshot_query_service::explorer::currency::CurrencyCode"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::explorer::Error"]],["impl RefUnwindSafe for GetBlockDetailError",1,["hotshot_query_service::explorer::query_data::GetBlockDetailError"]],["impl RefUnwindSafe for GetBlockSummariesError",1,["hotshot_query_service::explorer::query_data::GetBlockSummariesError"]],["impl RefUnwindSafe for GetExplorerSummaryError",1,["hotshot_query_service::explorer::query_data::GetExplorerSummaryError"]],["impl RefUnwindSafe for GetSearchResultsError",1,["hotshot_query_service::explorer::query_data::GetSearchResultsError"]],["impl RefUnwindSafe for GetTransactionDetailError",1,["hotshot_query_service::explorer::query_data::GetTransactionDetailError"]],["impl RefUnwindSafe for GetTransactionSummariesError",1,["hotshot_query_service::explorer::query_data::GetTransactionSummariesError"]],["impl RefUnwindSafe for TimestampConversionError",1,["hotshot_query_service::explorer::query_data::TimestampConversionError"]],["impl RefUnwindSafe for TransactionSummaryFilter",1,["hotshot_query_service::explorer::query_data::TransactionSummaryFilter"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::merklized_state::Error"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::node::Error"]],["impl RefUnwindSafe for Error",1,["hotshot_query_service::status::Error"]],["impl RefUnwindSafe for Limits",1,["hotshot_query_service::availability::query_data::Limits"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::availability::Options"]],["impl RefUnwindSafe for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl RefUnwindSafe for PrunerCfg",1,["hotshot_query_service::data_source::storage::pruning::PrunerCfg"]],["impl RefUnwindSafe for Pruner",1,["hotshot_query_service::data_source::storage::sql::Pruner"]],["impl RefUnwindSafe for Read",1,["hotshot_query_service::data_source::storage::sql::transaction::Read"]],["impl RefUnwindSafe for Write",1,["hotshot_query_service::data_source::storage::sql::transaction::Write"]],["impl RefUnwindSafe for TestMerkleTreeMigration",1,["hotshot_query_service::data_source::storage::sql::testing::TestMerkleTreeMigration"]],["impl RefUnwindSafe for TmpDb",1,["hotshot_query_service::data_source::storage::sql::testing::TmpDb"]],["impl RefUnwindSafe for CurrencyMismatchError",1,["hotshot_query_service::explorer::currency::CurrencyMismatchError"]],["impl RefUnwindSafe for ExplorerHistograms",1,["hotshot_query_service::explorer::query_data::ExplorerHistograms"]],["impl RefUnwindSafe for FeeAttribution",1,["hotshot_query_service::explorer::query_data::FeeAttribution"]],["impl RefUnwindSafe for GenesisOverview",1,["hotshot_query_service::explorer::query_data::GenesisOverview"]],["impl RefUnwindSafe for InvalidCurrencyCodeError",1,["hotshot_query_service::explorer::currency::InvalidCurrencyCodeError"]],["impl RefUnwindSafe for MonetaryValue",1,["hotshot_query_service::explorer::monetary_value::MonetaryValue"]],["impl RefUnwindSafe for Timestamp",1,["hotshot_query_service::explorer::query_data::Timestamp"]],["impl RefUnwindSafe for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl RefUnwindSafe for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl RefUnwindSafe for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl RefUnwindSafe for VidCommonRequest",1,["hotshot_query_service::fetching::request::VidCommonRequest"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::merklized_state::Options"]],["impl RefUnwindSafe for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl RefUnwindSafe for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl RefUnwindSafe for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl RefUnwindSafe for Limits",1,["hotshot_query_service::node::query_data::Limits"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::node::Options"]],["impl RefUnwindSafe for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl RefUnwindSafe for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl RefUnwindSafe for SyncStatus",1,["hotshot_query_service::node::query_data::SyncStatus"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::status::Options"]],["impl RefUnwindSafe for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl RefUnwindSafe for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl RefUnwindSafe for Options",1,["hotshot_query_service::Options"]],["impl RefUnwindSafe for BackgroundTask",1,["hotshot_query_service::task::BackgroundTask"]],["impl RefUnwindSafe for MockNodeImpl",1,["hotshot_query_service::testing::mocks::MockNodeImpl"]],["impl RefUnwindSafe for MockTypes",1,["hotshot_query_service::testing::mocks::MockTypes"]],["impl RefUnwindSafe for MockVersions",1,["hotshot_query_service::testing::mocks::MockVersions"]],["impl<'a> !RefUnwindSafe for Transaction<'a>",1,["hotshot_query_service::data_source::storage::no_storage::Transaction"]],["impl<'a, T> !RefUnwindSafe for Transaction<'a, T>",1,["hotshot_query_service::data_source::storage::no_storage::testing::Transaction"]],["impl<'q> RefUnwindSafe for QueryBuilder<'q>",1,["hotshot_query_service::data_source::storage::sql::queries::QueryBuilder"]],["impl<D> !RefUnwindSafe for MockNetwork<D>",1,["hotshot_query_service::testing::consensus::MockNetwork"]],["impl<D> RefUnwindSafe for ApiState<D>
    where\n D: RefUnwindSafe,
    ",1,["hotshot_query_service::ApiState"]],["impl<D, U> RefUnwindSafe for ExtensibleDataSource<D, U>
    where\n D: RefUnwindSafe,\n U: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Mode> !RefUnwindSafe for Transaction<Mode>",1,["hotshot_query_service::data_source::storage::sql::transaction::Transaction"]],["impl<P> !RefUnwindSafe for TestProvider<P>",1,["hotshot_query_service::fetching::provider::testing::TestProvider"]],["impl<S> !RefUnwindSafe for FailStorage<S>",1,["hotshot_query_service::data_source::storage::fail_storage::FailStorage"]],["impl<T> !RefUnwindSafe for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<T> !RefUnwindSafe for Transaction<T>",1,["hotshot_query_service::data_source::storage::fail_storage::Transaction"]],["impl<T> RefUnwindSafe for Transaction<T>
    where\n T: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::storage::fs::Transaction"]],["impl<T> RefUnwindSafe for TimeWindowQueryData<T>
    where\n T: RefUnwindSafe,
    ",1,["hotshot_query_service::node::query_data::TimeWindowQueryData"]],["impl<T> RefUnwindSafe for Task<T>",1,["hotshot_query_service::task::Task"]],["impl<T, C> !RefUnwindSafe for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl<Types> !RefUnwindSafe for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl<Types> !RefUnwindSafe for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl<Types> RefUnwindSafe for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<Types> RefUnwindSafe for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> RefUnwindSafe for BlockIdentifier<Types>",1,["hotshot_query_service::explorer::query_data::BlockIdentifier"]],["impl<Types> RefUnwindSafe for TransactionIdentifier<Types>",1,["hotshot_query_service::explorer::query_data::TransactionIdentifier"]],["impl<Types> RefUnwindSafe for WindowStart<Types>",1,["hotshot_query_service::node::data_source::WindowStart"]],["impl<Types> RefUnwindSafe for BlockInfo<Types>
    where\n <Types as NodeType>::View: RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: RefUnwindSafe,\n Types: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::data_source::BlockInfo"]],["impl<Types> RefUnwindSafe for BlockQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> RefUnwindSafe for BlockSummaryQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::BlockSummaryQueryData"]],["impl<Types> RefUnwindSafe for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> RefUnwindSafe for LeafQueryData<Types>
    where\n <Types as NodeType>::View: RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::BlockPayload: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: RefUnwindSafe,\n Types: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> RefUnwindSafe for PayloadMetadata<Types>",1,["hotshot_query_service::availability::query_data::PayloadMetadata"]],["impl<Types> RefUnwindSafe for PayloadQueryData<Types>
    where\n <Types as NodeType>::BlockPayload: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> RefUnwindSafe for TransactionQueryData<Types>
    where\n <Types as NodeType>::BlockPayload: for<'de> Sized,\n <Types as NodeType>::Transaction: RefUnwindSafe,\n <<Types as NodeType>::BlockPayload as QueryablePayload<Types>>::InclusionProof: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl<Types> RefUnwindSafe for TransactionSummaryQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::Transaction: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::TransactionSummaryQueryData"]],["impl<Types> RefUnwindSafe for VidCommonMetadata<Types>",1,["hotshot_query_service::availability::query_data::VidCommonMetadata"]],["impl<Types> RefUnwindSafe for VidCommonQueryData<Types>",1,["hotshot_query_service::availability::query_data::VidCommonQueryData"]],["impl<Types> RefUnwindSafe for FileSystemStorageInner<Types>
    where\n <Types as NodeType>::BlockPayload: for<'de> Sized + RefUnwindSafe,\n <Types as NodeType>::BlockHeader: RefUnwindSafe,\n <Types as NodeType>::View: RefUnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: RefUnwindSafe,\n Types: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorageInner"]],["impl<Types> RefUnwindSafe for BlockDetail<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::BlockDetail"]],["impl<Types> RefUnwindSafe for BlockDetailResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::BlockDetailResponse"]],["impl<Types> RefUnwindSafe for BlockRange<Types>",1,["hotshot_query_service::explorer::query_data::BlockRange"]],["impl<Types> RefUnwindSafe for BlockSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::BlockSummary"]],["impl<Types> RefUnwindSafe for BlockSummaryResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::BlockSummaryResponse"]],["impl<Types> RefUnwindSafe for ExplorerSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: RefUnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::ExplorerSummary"]],["impl<Types> RefUnwindSafe for ExplorerSummaryResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: RefUnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::ExplorerSummaryResponse"]],["impl<Types> RefUnwindSafe for GetBlockSummariesRequest<Types>",1,["hotshot_query_service::explorer::query_data::GetBlockSummariesRequest"]],["impl<Types> RefUnwindSafe for GetTransactionSummariesRequest<Types>",1,["hotshot_query_service::explorer::query_data::GetTransactionSummariesRequest"]],["impl<Types> RefUnwindSafe for SearchResult<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::SearchResult"]],["impl<Types> RefUnwindSafe for SearchResultResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: RefUnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::SearchResultResponse"]],["impl<Types> RefUnwindSafe for TransactionDetail<Types>",1,["hotshot_query_service::explorer::query_data::TransactionDetail"]],["impl<Types> RefUnwindSafe for TransactionDetailResponse<Types>
    where\n <Types as NodeType>::Transaction: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::TransactionDetailResponse"]],["impl<Types> RefUnwindSafe for TransactionRange<Types>",1,["hotshot_query_service::explorer::query_data::TransactionRange"]],["impl<Types> RefUnwindSafe for TransactionSummariesResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::TransactionSummariesResponse"]],["impl<Types> RefUnwindSafe for TransactionSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: RefUnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::TransactionSummary"]],["impl<Types, S, P> !RefUnwindSafe for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<Types, S, P> RefUnwindSafe for Builder<Types, S, P>
    where\n S: RefUnwindSafe,\n P: RefUnwindSafe,\n Types: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> RefUnwindSafe for Pruner<Types, S, P>
    where\n Types: RefUnwindSafe,\n S: RefUnwindSafe,\n P: RefUnwindSafe,
    ",1,["hotshot_query_service::data_source::fetching::Pruner"]],["impl<Types, T, const ARITY: usize> RefUnwindSafe for Snapshot<Types, T, ARITY>
    where\n <T as MerklizedState<Types, ARITY>>::Commit: RefUnwindSafe,
    ",1,["hotshot_query_service::merklized_state::data_source::Snapshot"]],["impl<Ver> !RefUnwindSafe for QueryServiceProvider<Ver>",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl<__T0> RefUnwindSafe for FetchBlockSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> RefUnwindSafe for FetchLeafSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> RefUnwindSafe for FetchTransactionSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0> RefUnwindSafe for QueryVidSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::node::QueryVidSnafu"]],["impl<__T0> RefUnwindSafe for ErrorSnafu<__T0>
    where\n __T0: RefUnwindSafe,
    ",1,["hotshot_query_service::ErrorSnafu"]],["impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<__T0, __T1> RefUnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> RefUnwindSafe for CustomSnafu<__T0, __T1>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,
    ",1,["hotshot_query_service::node::CustomSnafu"]],["impl<__T0, __T1> RefUnwindSafe for QueryWindowSnafu<__T0, __T1>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,
    ",1,["hotshot_query_service::node::QueryWindowSnafu"]],["impl<__T0, __T1, __T2> RefUnwindSafe for RangeLimitSnafu<__T0, __T1, __T2>
    where\n __T0: RefUnwindSafe,\n __T1: RefUnwindSafe,\n __T2: RefUnwindSafe,
    ",1,["hotshot_query_service::availability::RangeLimitSnafu"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[85722]} \ No newline at end of file +//{"start":57,"fragment_lengths":[85721]} \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index 2488e9b9e..48a70085d 100644 --- a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["hotshot_query_service",[["impl !UnwindSafe for DataSource",1,["hotshot_query_service::data_source::storage::no_storage::testing::DataSource"]],["impl !UnwindSafe for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl !UnwindSafe for NoStorage",1,["hotshot_query_service::data_source::storage::no_storage::NoStorage"]],["impl !UnwindSafe for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl !UnwindSafe for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl !UnwindSafe for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl !UnwindSafe for CounterFamily",1,["hotshot_query_service::metrics::CounterFamily"]],["impl !UnwindSafe for GaugeFamily",1,["hotshot_query_service::metrics::GaugeFamily"]],["impl !UnwindSafe for HistogramFamily",1,["hotshot_query_service::metrics::HistogramFamily"]],["impl !UnwindSafe for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl !UnwindSafe for TextFamily",1,["hotshot_query_service::metrics::TextFamily"]],["impl UnwindSafe for Error",1,["hotshot_query_service::availability::Error"]],["impl UnwindSafe for FailableAction",1,["hotshot_query_service::data_source::storage::fail_storage::FailableAction"]],["impl UnwindSafe for Storage",1,["hotshot_query_service::data_source::storage::no_storage::testing::Storage"]],["impl UnwindSafe for Error",1,["hotshot_query_service::error::Error"]],["impl UnwindSafe for QueryError",1,["hotshot_query_service::QueryError"]],["impl UnwindSafe for CurrencyCode",1,["hotshot_query_service::explorer::currency::CurrencyCode"]],["impl UnwindSafe for Error",1,["hotshot_query_service::explorer::Error"]],["impl UnwindSafe for GetBlockDetailError",1,["hotshot_query_service::explorer::query_data::GetBlockDetailError"]],["impl UnwindSafe for GetBlockSummariesError",1,["hotshot_query_service::explorer::query_data::GetBlockSummariesError"]],["impl UnwindSafe for GetExplorerSummaryError",1,["hotshot_query_service::explorer::query_data::GetExplorerSummaryError"]],["impl UnwindSafe for GetSearchResultsError",1,["hotshot_query_service::explorer::query_data::GetSearchResultsError"]],["impl UnwindSafe for GetTransactionDetailError",1,["hotshot_query_service::explorer::query_data::GetTransactionDetailError"]],["impl UnwindSafe for GetTransactionSummariesError",1,["hotshot_query_service::explorer::query_data::GetTransactionSummariesError"]],["impl UnwindSafe for TimestampConversionError",1,["hotshot_query_service::explorer::query_data::TimestampConversionError"]],["impl UnwindSafe for TransactionSummaryFilter",1,["hotshot_query_service::explorer::query_data::TransactionSummaryFilter"]],["impl UnwindSafe for Error",1,["hotshot_query_service::merklized_state::Error"]],["impl UnwindSafe for Error",1,["hotshot_query_service::node::Error"]],["impl UnwindSafe for Error",1,["hotshot_query_service::status::Error"]],["impl UnwindSafe for Limits",1,["hotshot_query_service::availability::query_data::Limits"]],["impl UnwindSafe for Options",1,["hotshot_query_service::availability::Options"]],["impl UnwindSafe for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl UnwindSafe for PrunerCfg",1,["hotshot_query_service::data_source::storage::pruning::PrunerCfg"]],["impl UnwindSafe for Pruner",1,["hotshot_query_service::data_source::storage::sql::Pruner"]],["impl UnwindSafe for Read",1,["hotshot_query_service::data_source::storage::sql::transaction::Read"]],["impl UnwindSafe for Write",1,["hotshot_query_service::data_source::storage::sql::transaction::Write"]],["impl UnwindSafe for TestMerkleTreeMigration",1,["hotshot_query_service::data_source::storage::sql::testing::TestMerkleTreeMigration"]],["impl UnwindSafe for TmpDb",1,["hotshot_query_service::data_source::storage::sql::testing::TmpDb"]],["impl UnwindSafe for CurrencyMismatchError",1,["hotshot_query_service::explorer::currency::CurrencyMismatchError"]],["impl UnwindSafe for ExplorerHistograms",1,["hotshot_query_service::explorer::query_data::ExplorerHistograms"]],["impl UnwindSafe for FeeAttribution",1,["hotshot_query_service::explorer::query_data::FeeAttribution"]],["impl UnwindSafe for GenesisOverview",1,["hotshot_query_service::explorer::query_data::GenesisOverview"]],["impl UnwindSafe for InvalidCurrencyCodeError",1,["hotshot_query_service::explorer::currency::InvalidCurrencyCodeError"]],["impl UnwindSafe for MonetaryValue",1,["hotshot_query_service::explorer::monetary_value::MonetaryValue"]],["impl UnwindSafe for Timestamp",1,["hotshot_query_service::explorer::query_data::Timestamp"]],["impl UnwindSafe for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl UnwindSafe for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl UnwindSafe for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl UnwindSafe for VidCommonRequest",1,["hotshot_query_service::fetching::request::VidCommonRequest"]],["impl UnwindSafe for Options",1,["hotshot_query_service::merklized_state::Options"]],["impl UnwindSafe for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl UnwindSafe for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl UnwindSafe for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl UnwindSafe for Limits",1,["hotshot_query_service::node::query_data::Limits"]],["impl UnwindSafe for Options",1,["hotshot_query_service::node::Options"]],["impl UnwindSafe for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl UnwindSafe for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl UnwindSafe for SyncStatus",1,["hotshot_query_service::node::query_data::SyncStatus"]],["impl UnwindSafe for Options",1,["hotshot_query_service::status::Options"]],["impl UnwindSafe for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl UnwindSafe for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl UnwindSafe for Options",1,["hotshot_query_service::Options"]],["impl UnwindSafe for BackgroundTask",1,["hotshot_query_service::task::BackgroundTask"]],["impl UnwindSafe for MockNodeImpl",1,["hotshot_query_service::testing::mocks::MockNodeImpl"]],["impl UnwindSafe for MockTypes",1,["hotshot_query_service::testing::mocks::MockTypes"]],["impl UnwindSafe for MockVersions",1,["hotshot_query_service::testing::mocks::MockVersions"]],["impl<'a> !UnwindSafe for Transaction<'a>",1,["hotshot_query_service::data_source::storage::no_storage::Transaction"]],["impl<'a, T> !UnwindSafe for Transaction<'a, T>",1,["hotshot_query_service::data_source::storage::no_storage::testing::Transaction"]],["impl<'q> !UnwindSafe for QueryBuilder<'q>",1,["hotshot_query_service::data_source::storage::sql::queries::QueryBuilder"]],["impl<D> !UnwindSafe for MockNetwork<D>",1,["hotshot_query_service::testing::consensus::MockNetwork"]],["impl<D> UnwindSafe for ApiState<D>
    where\n D: RefUnwindSafe,
    ",1,["hotshot_query_service::ApiState"]],["impl<D, U> UnwindSafe for ExtensibleDataSource<D, U>
    where\n D: UnwindSafe,\n U: UnwindSafe,
    ",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Mode> !UnwindSafe for Transaction<Mode>",1,["hotshot_query_service::data_source::storage::sql::transaction::Transaction"]],["impl<P> !UnwindSafe for TestProvider<P>",1,["hotshot_query_service::fetching::provider::testing::TestProvider"]],["impl<S> !UnwindSafe for FailStorage<S>",1,["hotshot_query_service::data_source::storage::fail_storage::FailStorage"]],["impl<T> !UnwindSafe for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<T> !UnwindSafe for Transaction<T>",1,["hotshot_query_service::data_source::storage::fail_storage::Transaction"]],["impl<T> UnwindSafe for Transaction<T>
    where\n T: UnwindSafe,
    ",1,["hotshot_query_service::data_source::storage::fs::Transaction"]],["impl<T> UnwindSafe for TimeWindowQueryData<T>
    where\n T: UnwindSafe,
    ",1,["hotshot_query_service::node::query_data::TimeWindowQueryData"]],["impl<T> UnwindSafe for Task<T>",1,["hotshot_query_service::task::Task"]],["impl<T, C> !UnwindSafe for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl<Types> !UnwindSafe for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl<Types> !UnwindSafe for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl<Types> UnwindSafe for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<Types> UnwindSafe for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> UnwindSafe for BlockIdentifier<Types>",1,["hotshot_query_service::explorer::query_data::BlockIdentifier"]],["impl<Types> UnwindSafe for TransactionIdentifier<Types>",1,["hotshot_query_service::explorer::query_data::TransactionIdentifier"]],["impl<Types> UnwindSafe for WindowStart<Types>",1,["hotshot_query_service::node::data_source::WindowStart"]],["impl<Types> UnwindSafe for BlockInfo<Types>
    where\n <Types as NodeType>::View: UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: UnwindSafe,\n Types: UnwindSafe,
    ",1,["hotshot_query_service::availability::data_source::BlockInfo"]],["impl<Types> UnwindSafe for BlockQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> UnwindSafe for BlockSummaryQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::BlockSummaryQueryData"]],["impl<Types> UnwindSafe for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> UnwindSafe for LeafQueryData<Types>
    where\n <Types as NodeType>::View: UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: UnwindSafe,\n Types: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> UnwindSafe for PayloadMetadata<Types>",1,["hotshot_query_service::availability::query_data::PayloadMetadata"]],["impl<Types> UnwindSafe for PayloadQueryData<Types>
    where\n <Types as NodeType>::BlockPayload: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> UnwindSafe for TransactionQueryData<Types>
    where\n <Types as NodeType>::BlockPayload: for<'de> Sized,\n <Types as NodeType>::Transaction: UnwindSafe,\n <<Types as NodeType>::BlockPayload as QueryablePayload<Types>>::InclusionProof: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl<Types> UnwindSafe for TransactionSummaryQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::Transaction: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::TransactionSummaryQueryData"]],["impl<Types> UnwindSafe for VidCommonMetadata<Types>",1,["hotshot_query_service::availability::query_data::VidCommonMetadata"]],["impl<Types> UnwindSafe for VidCommonQueryData<Types>",1,["hotshot_query_service::availability::query_data::VidCommonQueryData"]],["impl<Types> UnwindSafe for FileSystemStorageInner<Types>
    where\n <Types as NodeType>::BlockPayload: for<'de> Sized + UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::View: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: UnwindSafe,\n Types: UnwindSafe,
    ",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorageInner"]],["impl<Types> UnwindSafe for BlockDetail<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::BlockDetail"]],["impl<Types> UnwindSafe for BlockDetailResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: UnwindSafe,
    ",1,["hotshot_query_service::explorer::BlockDetailResponse"]],["impl<Types> UnwindSafe for BlockRange<Types>",1,["hotshot_query_service::explorer::query_data::BlockRange"]],["impl<Types> UnwindSafe for BlockSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::BlockSummary"]],["impl<Types> UnwindSafe for BlockSummaryResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::BlockSummaryResponse"]],["impl<Types> UnwindSafe for ExplorerSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: UnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::ExplorerSummary"]],["impl<Types> UnwindSafe for ExplorerSummaryResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: UnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::ExplorerSummaryResponse"]],["impl<Types> UnwindSafe for GetBlockSummariesRequest<Types>",1,["hotshot_query_service::explorer::query_data::GetBlockSummariesRequest"]],["impl<Types> UnwindSafe for GetTransactionSummariesRequest<Types>",1,["hotshot_query_service::explorer::query_data::GetTransactionSummariesRequest"]],["impl<Types> UnwindSafe for SearchResult<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::SearchResult"]],["impl<Types> UnwindSafe for SearchResultResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::SearchResultResponse"]],["impl<Types> UnwindSafe for TransactionDetail<Types>",1,["hotshot_query_service::explorer::query_data::TransactionDetail"]],["impl<Types> UnwindSafe for TransactionDetailResponse<Types>
    where\n <Types as NodeType>::Transaction: UnwindSafe,
    ",1,["hotshot_query_service::explorer::TransactionDetailResponse"]],["impl<Types> UnwindSafe for TransactionRange<Types>",1,["hotshot_query_service::explorer::query_data::TransactionRange"]],["impl<Types> UnwindSafe for TransactionSummariesResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::TransactionSummariesResponse"]],["impl<Types> UnwindSafe for TransactionSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::TransactionSummary"]],["impl<Types, S, P> !UnwindSafe for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<Types, S, P> UnwindSafe for Builder<Types, S, P>
    where\n S: UnwindSafe,\n P: UnwindSafe,\n Types: UnwindSafe,
    ",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> UnwindSafe for Pruner<Types, S, P>
    where\n Types: UnwindSafe,\n S: UnwindSafe,\n P: UnwindSafe,
    ",1,["hotshot_query_service::data_source::fetching::Pruner"]],["impl<Types, T, const ARITY: usize> UnwindSafe for Snapshot<Types, T, ARITY>
    where\n <T as MerklizedState<Types, ARITY>>::Commit: UnwindSafe,
    ",1,["hotshot_query_service::merklized_state::data_source::Snapshot"]],["impl<Ver> !UnwindSafe for QueryServiceProvider<Ver>",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl<__T0> UnwindSafe for FetchBlockSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> UnwindSafe for FetchLeafSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> UnwindSafe for FetchTransactionSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0> UnwindSafe for QueryVidSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::node::QueryVidSnafu"]],["impl<__T0> UnwindSafe for ErrorSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::ErrorSnafu"]],["impl<__T0, __T1> UnwindSafe for CustomSnafu<__T0, __T1>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,
    ",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<__T0, __T1> UnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,
    ",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> UnwindSafe for CustomSnafu<__T0, __T1>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,
    ",1,["hotshot_query_service::node::CustomSnafu"]],["impl<__T0, __T1> UnwindSafe for QueryWindowSnafu<__T0, __T1>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,
    ",1,["hotshot_query_service::node::QueryWindowSnafu"]],["impl<__T0, __T1, __T2> UnwindSafe for RangeLimitSnafu<__T0, __T1, __T2>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,\n __T2: UnwindSafe,
    ",1,["hotshot_query_service::availability::RangeLimitSnafu"]]]]]); + var implementors = Object.fromEntries([["hotshot_query_service",[["impl !UnwindSafe for DataSource",1,["hotshot_query_service::data_source::storage::no_storage::testing::DataSource"]],["impl !UnwindSafe for MetricsError",1,["hotshot_query_service::metrics::MetricsError"]],["impl !UnwindSafe for NoStorage",1,["hotshot_query_service::data_source::storage::no_storage::NoStorage"]],["impl !UnwindSafe for Config",1,["hotshot_query_service::data_source::storage::sql::Config"]],["impl !UnwindSafe for SqlStorage",1,["hotshot_query_service::data_source::storage::sql::SqlStorage"]],["impl !UnwindSafe for MetricsDataSource",1,["hotshot_query_service::data_source::metrics::MetricsDataSource"]],["impl !UnwindSafe for CounterFamily",1,["hotshot_query_service::metrics::CounterFamily"]],["impl !UnwindSafe for GaugeFamily",1,["hotshot_query_service::metrics::GaugeFamily"]],["impl !UnwindSafe for HistogramFamily",1,["hotshot_query_service::metrics::HistogramFamily"]],["impl !UnwindSafe for PrometheusMetrics",1,["hotshot_query_service::metrics::PrometheusMetrics"]],["impl !UnwindSafe for TextFamily",1,["hotshot_query_service::metrics::TextFamily"]],["impl UnwindSafe for Error",1,["hotshot_query_service::availability::Error"]],["impl UnwindSafe for FailableAction",1,["hotshot_query_service::data_source::storage::fail_storage::FailableAction"]],["impl UnwindSafe for Storage",1,["hotshot_query_service::data_source::storage::no_storage::testing::Storage"]],["impl UnwindSafe for Error",1,["hotshot_query_service::error::Error"]],["impl UnwindSafe for QueryError",1,["hotshot_query_service::QueryError"]],["impl UnwindSafe for CurrencyCode",1,["hotshot_query_service::explorer::currency::CurrencyCode"]],["impl UnwindSafe for Error",1,["hotshot_query_service::explorer::Error"]],["impl UnwindSafe for GetBlockDetailError",1,["hotshot_query_service::explorer::query_data::GetBlockDetailError"]],["impl UnwindSafe for GetBlockSummariesError",1,["hotshot_query_service::explorer::query_data::GetBlockSummariesError"]],["impl UnwindSafe for GetExplorerSummaryError",1,["hotshot_query_service::explorer::query_data::GetExplorerSummaryError"]],["impl UnwindSafe for GetSearchResultsError",1,["hotshot_query_service::explorer::query_data::GetSearchResultsError"]],["impl UnwindSafe for GetTransactionDetailError",1,["hotshot_query_service::explorer::query_data::GetTransactionDetailError"]],["impl UnwindSafe for GetTransactionSummariesError",1,["hotshot_query_service::explorer::query_data::GetTransactionSummariesError"]],["impl UnwindSafe for TimestampConversionError",1,["hotshot_query_service::explorer::query_data::TimestampConversionError"]],["impl UnwindSafe for TransactionSummaryFilter",1,["hotshot_query_service::explorer::query_data::TransactionSummaryFilter"]],["impl UnwindSafe for Error",1,["hotshot_query_service::merklized_state::Error"]],["impl UnwindSafe for Error",1,["hotshot_query_service::node::Error"]],["impl UnwindSafe for Error",1,["hotshot_query_service::status::Error"]],["impl UnwindSafe for Limits",1,["hotshot_query_service::availability::query_data::Limits"]],["impl UnwindSafe for Options",1,["hotshot_query_service::availability::Options"]],["impl UnwindSafe for RequestSnafu",1,["hotshot_query_service::availability::RequestSnafu"]],["impl UnwindSafe for PrunerCfg",1,["hotshot_query_service::data_source::storage::pruning::PrunerCfg"]],["impl UnwindSafe for Pruner",1,["hotshot_query_service::data_source::storage::sql::Pruner"]],["impl UnwindSafe for Read",1,["hotshot_query_service::data_source::storage::sql::transaction::Read"]],["impl UnwindSafe for Write",1,["hotshot_query_service::data_source::storage::sql::transaction::Write"]],["impl UnwindSafe for TestMerkleTreeMigration",1,["hotshot_query_service::data_source::storage::sql::testing::TestMerkleTreeMigration"]],["impl UnwindSafe for TmpDb",1,["hotshot_query_service::data_source::storage::sql::testing::TmpDb"]],["impl UnwindSafe for CurrencyMismatchError",1,["hotshot_query_service::explorer::currency::CurrencyMismatchError"]],["impl UnwindSafe for ExplorerHistograms",1,["hotshot_query_service::explorer::query_data::ExplorerHistograms"]],["impl UnwindSafe for FeeAttribution",1,["hotshot_query_service::explorer::query_data::FeeAttribution"]],["impl UnwindSafe for GenesisOverview",1,["hotshot_query_service::explorer::query_data::GenesisOverview"]],["impl UnwindSafe for InvalidCurrencyCodeError",1,["hotshot_query_service::explorer::currency::InvalidCurrencyCodeError"]],["impl UnwindSafe for MonetaryValue",1,["hotshot_query_service::explorer::monetary_value::MonetaryValue"]],["impl UnwindSafe for Timestamp",1,["hotshot_query_service::explorer::query_data::Timestamp"]],["impl UnwindSafe for NoFetching",1,["hotshot_query_service::fetching::provider::NoFetching"]],["impl UnwindSafe for LeafRequest",1,["hotshot_query_service::fetching::request::LeafRequest"]],["impl UnwindSafe for PayloadRequest",1,["hotshot_query_service::fetching::request::PayloadRequest"]],["impl UnwindSafe for VidCommonRequest",1,["hotshot_query_service::fetching::request::VidCommonRequest"]],["impl UnwindSafe for Options",1,["hotshot_query_service::merklized_state::Options"]],["impl UnwindSafe for Counter",1,["hotshot_query_service::metrics::Counter"]],["impl UnwindSafe for Gauge",1,["hotshot_query_service::metrics::Gauge"]],["impl UnwindSafe for Histogram",1,["hotshot_query_service::metrics::Histogram"]],["impl UnwindSafe for Limits",1,["hotshot_query_service::node::query_data::Limits"]],["impl UnwindSafe for Options",1,["hotshot_query_service::node::Options"]],["impl UnwindSafe for QuerySnafu",1,["hotshot_query_service::node::QuerySnafu"]],["impl UnwindSafe for RequestSnafu",1,["hotshot_query_service::node::RequestSnafu"]],["impl UnwindSafe for SyncStatus",1,["hotshot_query_service::node::query_data::SyncStatus"]],["impl UnwindSafe for Options",1,["hotshot_query_service::status::Options"]],["impl UnwindSafe for MissingSnafu",1,["hotshot_query_service::MissingSnafu"]],["impl UnwindSafe for NotFoundSnafu",1,["hotshot_query_service::NotFoundSnafu"]],["impl UnwindSafe for Options",1,["hotshot_query_service::Options"]],["impl UnwindSafe for BackgroundTask",1,["hotshot_query_service::task::BackgroundTask"]],["impl UnwindSafe for MockNodeImpl",1,["hotshot_query_service::testing::mocks::MockNodeImpl"]],["impl UnwindSafe for MockTypes",1,["hotshot_query_service::testing::mocks::MockTypes"]],["impl UnwindSafe for MockVersions",1,["hotshot_query_service::testing::mocks::MockVersions"]],["impl<'a> !UnwindSafe for Transaction<'a>",1,["hotshot_query_service::data_source::storage::no_storage::Transaction"]],["impl<'a, T> !UnwindSafe for Transaction<'a, T>",1,["hotshot_query_service::data_source::storage::no_storage::testing::Transaction"]],["impl<'q> UnwindSafe for QueryBuilder<'q>",1,["hotshot_query_service::data_source::storage::sql::queries::QueryBuilder"]],["impl<D> !UnwindSafe for MockNetwork<D>",1,["hotshot_query_service::testing::consensus::MockNetwork"]],["impl<D> UnwindSafe for ApiState<D>
    where\n D: RefUnwindSafe,
    ",1,["hotshot_query_service::ApiState"]],["impl<D, U> UnwindSafe for ExtensibleDataSource<D, U>
    where\n D: UnwindSafe,\n U: UnwindSafe,
    ",1,["hotshot_query_service::data_source::extension::ExtensibleDataSource"]],["impl<Mode> !UnwindSafe for Transaction<Mode>",1,["hotshot_query_service::data_source::storage::sql::transaction::Transaction"]],["impl<P> !UnwindSafe for TestProvider<P>",1,["hotshot_query_service::fetching::provider::testing::TestProvider"]],["impl<S> !UnwindSafe for FailStorage<S>",1,["hotshot_query_service::data_source::storage::fail_storage::FailStorage"]],["impl<T> !UnwindSafe for Fetch<T>",1,["hotshot_query_service::availability::fetch::Fetch"]],["impl<T> !UnwindSafe for Transaction<T>",1,["hotshot_query_service::data_source::storage::fail_storage::Transaction"]],["impl<T> UnwindSafe for Transaction<T>
    where\n T: UnwindSafe,
    ",1,["hotshot_query_service::data_source::storage::fs::Transaction"]],["impl<T> UnwindSafe for TimeWindowQueryData<T>
    where\n T: UnwindSafe,
    ",1,["hotshot_query_service::node::query_data::TimeWindowQueryData"]],["impl<T> UnwindSafe for Task<T>",1,["hotshot_query_service::task::Task"]],["impl<T, C> !UnwindSafe for Fetcher<T, C>",1,["hotshot_query_service::fetching::Fetcher"]],["impl<Types> !UnwindSafe for FileSystemStorage<Types>",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorage"]],["impl<Types> !UnwindSafe for AnyProvider<Types>",1,["hotshot_query_service::fetching::provider::any::AnyProvider"]],["impl<Types> UnwindSafe for BlockId<Types>",1,["hotshot_query_service::availability::data_source::BlockId"]],["impl<Types> UnwindSafe for LeafId<Types>",1,["hotshot_query_service::availability::data_source::LeafId"]],["impl<Types> UnwindSafe for BlockIdentifier<Types>",1,["hotshot_query_service::explorer::query_data::BlockIdentifier"]],["impl<Types> UnwindSafe for TransactionIdentifier<Types>",1,["hotshot_query_service::explorer::query_data::TransactionIdentifier"]],["impl<Types> UnwindSafe for WindowStart<Types>",1,["hotshot_query_service::node::data_source::WindowStart"]],["impl<Types> UnwindSafe for BlockInfo<Types>
    where\n <Types as NodeType>::View: UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: UnwindSafe,\n Types: UnwindSafe,
    ",1,["hotshot_query_service::availability::data_source::BlockInfo"]],["impl<Types> UnwindSafe for BlockQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::BlockQueryData"]],["impl<Types> UnwindSafe for BlockSummaryQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::BlockSummaryQueryData"]],["impl<Types> UnwindSafe for InconsistentLeafError<Types>",1,["hotshot_query_service::availability::query_data::InconsistentLeafError"]],["impl<Types> UnwindSafe for LeafQueryData<Types>
    where\n <Types as NodeType>::View: UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::BlockPayload: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: UnwindSafe,\n Types: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::LeafQueryData"]],["impl<Types> UnwindSafe for PayloadMetadata<Types>",1,["hotshot_query_service::availability::query_data::PayloadMetadata"]],["impl<Types> UnwindSafe for PayloadQueryData<Types>
    where\n <Types as NodeType>::BlockPayload: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::PayloadQueryData"]],["impl<Types> UnwindSafe for TransactionQueryData<Types>
    where\n <Types as NodeType>::BlockPayload: for<'de> Sized,\n <Types as NodeType>::Transaction: UnwindSafe,\n <<Types as NodeType>::BlockPayload as QueryablePayload<Types>>::InclusionProof: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::TransactionQueryData"]],["impl<Types> UnwindSafe for TransactionSummaryQueryData<Types>
    where\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::Transaction: UnwindSafe,
    ",1,["hotshot_query_service::availability::query_data::TransactionSummaryQueryData"]],["impl<Types> UnwindSafe for VidCommonMetadata<Types>",1,["hotshot_query_service::availability::query_data::VidCommonMetadata"]],["impl<Types> UnwindSafe for VidCommonQueryData<Types>",1,["hotshot_query_service::availability::query_data::VidCommonQueryData"]],["impl<Types> UnwindSafe for FileSystemStorageInner<Types>
    where\n <Types as NodeType>::BlockPayload: for<'de> Sized + UnwindSafe,\n <Types as NodeType>::BlockHeader: UnwindSafe,\n <Types as NodeType>::View: UnwindSafe,\n <<Types as NodeType>::SignatureKey as SignatureKey>::QcType: UnwindSafe,\n Types: UnwindSafe,
    ",1,["hotshot_query_service::data_source::storage::fs::FileSystemStorageInner"]],["impl<Types> UnwindSafe for BlockDetail<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::BlockDetail"]],["impl<Types> UnwindSafe for BlockDetailResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: UnwindSafe,
    ",1,["hotshot_query_service::explorer::BlockDetailResponse"]],["impl<Types> UnwindSafe for BlockRange<Types>",1,["hotshot_query_service::explorer::query_data::BlockRange"]],["impl<Types> UnwindSafe for BlockSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::BlockSummary"]],["impl<Types> UnwindSafe for BlockSummaryResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::BlockSummaryResponse"]],["impl<Types> UnwindSafe for ExplorerSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: UnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::ExplorerSummary"]],["impl<Types> UnwindSafe for ExplorerSummaryResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::WalletAddress: UnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::ExplorerSummaryResponse"]],["impl<Types> UnwindSafe for GetBlockSummariesRequest<Types>",1,["hotshot_query_service::explorer::query_data::GetBlockSummariesRequest"]],["impl<Types> UnwindSafe for GetTransactionSummariesRequest<Types>",1,["hotshot_query_service::explorer::query_data::GetTransactionSummariesRequest"]],["impl<Types> UnwindSafe for SearchResult<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::SearchResult"]],["impl<Types> UnwindSafe for SearchResultResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::BlockHeader as ExplorerHeader<Types>>::ProposerId: UnwindSafe,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::SearchResultResponse"]],["impl<Types> UnwindSafe for TransactionDetail<Types>",1,["hotshot_query_service::explorer::query_data::TransactionDetail"]],["impl<Types> UnwindSafe for TransactionDetailResponse<Types>
    where\n <Types as NodeType>::Transaction: UnwindSafe,
    ",1,["hotshot_query_service::explorer::TransactionDetailResponse"]],["impl<Types> UnwindSafe for TransactionRange<Types>",1,["hotshot_query_service::explorer::query_data::TransactionRange"]],["impl<Types> UnwindSafe for TransactionSummariesResponse<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::TransactionSummariesResponse"]],["impl<Types> UnwindSafe for TransactionSummary<Types>
    where\n <Types as NodeType>::BlockHeader: for<'de> Sized,\n <<Types as NodeType>::Transaction as ExplorerTransaction>::NamespaceId: UnwindSafe,
    ",1,["hotshot_query_service::explorer::query_data::TransactionSummary"]],["impl<Types, S, P> !UnwindSafe for FetchingDataSource<Types, S, P>",1,["hotshot_query_service::data_source::fetching::FetchingDataSource"]],["impl<Types, S, P> UnwindSafe for Builder<Types, S, P>
    where\n S: UnwindSafe,\n P: UnwindSafe,\n Types: UnwindSafe,
    ",1,["hotshot_query_service::data_source::fetching::Builder"]],["impl<Types, S, P> UnwindSafe for Pruner<Types, S, P>
    where\n Types: UnwindSafe,\n S: UnwindSafe,\n P: UnwindSafe,
    ",1,["hotshot_query_service::data_source::fetching::Pruner"]],["impl<Types, T, const ARITY: usize> UnwindSafe for Snapshot<Types, T, ARITY>
    where\n <T as MerklizedState<Types, ARITY>>::Commit: UnwindSafe,
    ",1,["hotshot_query_service::merklized_state::data_source::Snapshot"]],["impl<Ver> !UnwindSafe for QueryServiceProvider<Ver>",1,["hotshot_query_service::fetching::provider::query_service::QueryServiceProvider"]],["impl<__T0> UnwindSafe for FetchBlockSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::availability::FetchBlockSnafu"]],["impl<__T0> UnwindSafe for FetchLeafSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::availability::FetchLeafSnafu"]],["impl<__T0> UnwindSafe for FetchTransactionSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::availability::FetchTransactionSnafu"]],["impl<__T0> UnwindSafe for QueryVidSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::node::QueryVidSnafu"]],["impl<__T0> UnwindSafe for ErrorSnafu<__T0>
    where\n __T0: UnwindSafe,
    ",1,["hotshot_query_service::ErrorSnafu"]],["impl<__T0, __T1> UnwindSafe for CustomSnafu<__T0, __T1>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,
    ",1,["hotshot_query_service::availability::CustomSnafu"]],["impl<__T0, __T1> UnwindSafe for InvalidTransactionIndexSnafu<__T0, __T1>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,
    ",1,["hotshot_query_service::availability::InvalidTransactionIndexSnafu"]],["impl<__T0, __T1> UnwindSafe for CustomSnafu<__T0, __T1>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,
    ",1,["hotshot_query_service::node::CustomSnafu"]],["impl<__T0, __T1> UnwindSafe for QueryWindowSnafu<__T0, __T1>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,
    ",1,["hotshot_query_service::node::QueryWindowSnafu"]],["impl<__T0, __T1, __T2> UnwindSafe for RangeLimitSnafu<__T0, __T1, __T2>
    where\n __T0: UnwindSafe,\n __T1: UnwindSafe,\n __T2: UnwindSafe,
    ",1,["hotshot_query_service::availability::RangeLimitSnafu"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[83922]} \ No newline at end of file +//{"start":57,"fragment_lengths":[83921]} \ No newline at end of file diff --git a/trait.impl/sqlx_core/from_row/trait.FromRow.js b/trait.impl/sqlx_core/from_row/trait.FromRow.js index 861c71bbd..4457c6c57 100644 --- a/trait.impl/sqlx_core/from_row/trait.FromRow.js +++ b/trait.impl/sqlx_core/from_row/trait.FromRow.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["hotshot_query_service",[["impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for BlockQueryData<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for LeafQueryData<Types>
    where\n Types: NodeType,
    "],["impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for PayloadMetadata<Types>
    where\n Types: NodeType,
    "],["impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for PayloadQueryData<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for VidCommonMetadata<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for VidCommonQueryData<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for BlockDetail<Types>
    where\n Types: NodeType,\n Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>,\n Payload<Types>: QueryablePayload<Types>,\n BalanceAmount<Types>: Into<MonetaryValue>,
    "],["impl<'r, Types> FromRow<'r, <Postgres as Database>::Row> for BlockSummary<Types>
    where\n Types: NodeType,\n Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>,\n Payload<Types>: QueryablePayload<Types>,
    "]]]]); + var implementors = Object.fromEntries([["hotshot_query_service",[["impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockQueryData<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for LeafQueryData<Types>
    where\n Types: NodeType,
    "],["impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for PayloadMetadata<Types>
    where\n Types: NodeType,
    "],["impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for PayloadQueryData<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for VidCommonMetadata<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for VidCommonQueryData<Types>
    where\n Types: NodeType,\n Payload<Types>: QueryablePayload<Types>,
    "],["impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockDetail<Types>
    where\n Types: NodeType,\n Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>,\n Payload<Types>: QueryablePayload<Types>,\n BalanceAmount<Types>: Into<MonetaryValue>,
    "],["impl<'r, Types> FromRow<'r, <Sqlite as Database>::Row> for BlockSummary<Types>
    where\n Types: NodeType,\n Header<Types>: QueryableHeader<Types> + ExplorerHeader<Types>,\n Payload<Types>: QueryablePayload<Types>,
    "]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[9245]} \ No newline at end of file +//{"start":57,"fragment_lengths":[10605]} \ No newline at end of file diff --git a/type.impl/hotshot_query_service/data_source/sql/type.SqlDataSource.js b/type.impl/hotshot_query_service/data_source/sql/type.SqlDataSource.js index 8b0105691..801c23ad6 100644 --- a/type.impl/hotshot_query_service/data_source/sql/type.SqlDataSource.js +++ b/type.impl/hotshot_query_service/data_source/sql/type.SqlDataSource.js @@ -1,9 +1,9 @@ (function() { - var type_impls = Object.fromEntries([["hotshot_query_service",[["
    source§

    impl<P: AvailabilityProvider<MockTypes> + Default> DataSourceLifeCycle for SqlDataSource<MockTypes, P>

    source§

    type Storage = TmpDb

    Backing storage for the data source. Read more
    source§

    fn create<'async_trait>(\n _node_id: usize,\n) -> Pin<Box<dyn Future<Output = Self::Storage> + Send + 'async_trait>>
    where\n Self: 'async_trait,

    source§

    fn connect<'life0, 'async_trait>(\n tmp_db: &'life0 Self::Storage,\n) -> Pin<Box<dyn Future<Output = Self> + Send + 'async_trait>>
    where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn reset<'life0, 'async_trait>(\n tmp_db: &'life0 Self::Storage,\n) -> Pin<Box<dyn Future<Output = Self> + Send + 'async_trait>>
    where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn handle_event<'life0, 'life1, 'async_trait>(\n &'life0 self,\n event: &'life1 Event<MockTypes>,\n) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
    where\n Self: 'async_trait,\n 'life0: 'async_trait,\n 'life1: 'async_trait,

    source§

    fn setup<'life0, 'async_trait>(\n _network: &'life0 mut MockNetwork<Self>,\n) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
    where\n Self: 'async_trait,\n 'life0: 'async_trait,

    Setup runs after setting up the network but before starting a test.
    ","DataSourceLifeCycle","hotshot_query_service::testing::consensus::MockSqlDataSource"],["
    source§

    impl<Types, P: AvailabilityProvider<Types>> SqlDataSource<Types, P>
    where\n Types: NodeType,\n Header<Types>: QueryableHeader<Types>,\n Payload<Types>: QueryablePayload<Types>,

    source

    pub async fn connect(\n config: Config,\n provider: P,\n) -> Result<Builder<Types, P>, Error>

    Connect to a remote database.

    \n

    This function returns a fetching::Builder which can be used to set options on the\nunderlying FetchingDataSource, before constructing the SqlDataSource with\nbuild. For a convenient constructor that uses the default\nfetching options, see Config::connect.

    \n
    ",0,"hotshot_query_service::testing::consensus::MockSqlDataSource"]]]]); + var type_impls = Object.fromEntries([["hotshot_query_service",[["
    source§

    impl<P: AvailabilityProvider<MockTypes> + Default> DataSourceLifeCycle for SqlDataSource<MockTypes, P>

    source§

    type Storage = TmpDb

    Backing storage for the data source. Read more
    source§

    fn create<'async_trait>(\n _node_id: usize,\n) -> Pin<Box<dyn Future<Output = Self::Storage> + Send + 'async_trait>>
    where\n Self: 'async_trait,

    source§

    fn connect<'life0, 'async_trait>(\n tmp_db: &'life0 Self::Storage,\n) -> Pin<Box<dyn Future<Output = Self> + Send + 'async_trait>>
    where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn reset<'life0, 'async_trait>(\n tmp_db: &'life0 Self::Storage,\n) -> Pin<Box<dyn Future<Output = Self> + Send + 'async_trait>>
    where\n Self: 'async_trait,\n 'life0: 'async_trait,

    source§

    fn handle_event<'life0, 'life1, 'async_trait>(\n &'life0 self,\n event: &'life1 Event<MockTypes>,\n) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
    where\n Self: 'async_trait,\n 'life0: 'async_trait,\n 'life1: 'async_trait,

    source§

    fn setup<'life0, 'async_trait>(\n _network: &'life0 mut MockNetwork<Self>,\n) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
    where\n Self: 'async_trait,\n 'life0: 'async_trait,

    Setup runs after setting up the network but before starting a test.
    ","DataSourceLifeCycle","hotshot_query_service::testing::consensus::MockSqlDataSource"],["
    source§

    impl<Types, P: AvailabilityProvider<Types>> SqlDataSource<Types, P>
    where\n Types: NodeType,\n Header<Types>: QueryableHeader<Types>,\n Payload<Types>: QueryablePayload<Types>,

    source

    pub async fn connect(\n config: Config,\n provider: P,\n) -> Result<Builder<Types, P>, Error>

    Connect to a remote database.

    \n

    This function returns a fetching::Builder which can be used to set options on the\nunderlying FetchingDataSource, before constructing the SqlDataSource with\nbuild. For a convenient constructor that uses the default\nfetching options, see Config::connect.

    \n
    ",0,"hotshot_query_service::testing::consensus::MockSqlDataSource"]]]]); if (window.register_type_impls) { window.register_type_impls(type_impls); } else { window.pending_type_impls = type_impls; } })() -//{"start":55,"fragment_lengths":[13756]} \ No newline at end of file +//{"start":55,"fragment_lengths":[13733]} \ No newline at end of file diff --git a/type.impl/hotshot_query_service/data_source/storage/sql/struct.Config.js b/type.impl/hotshot_query_service/data_source/storage/sql/struct.Config.js new file mode 100644 index 000000000..27d54070d --- /dev/null +++ b/type.impl/hotshot_query_service/data_source/storage/sql/struct.Config.js @@ -0,0 +1,9 @@ +(function() { + var type_impls = Object.fromEntries([["hotshot_query_service",[["
    source§

    impl Clone for Config

    source§

    fn clone(&self) -> Config

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","hotshot_query_service::data_source::sql::Config"],["
    source§

    impl Config

    source

    pub fn busy_timeout(self, timeout: Duration) -> Self

    source

    pub fn db_path(self, path: PathBuf) -> Self

    ",0,"hotshot_query_service::data_source::sql::Config"],["
    source§

    impl Config

    source

    pub fn pool(self, pool: Pool<Db>) -> Self

    Sets the database connection pool\nThis allows reusing an existing connection pool when building a new SqlStorage instance.

    \n
    source

    pub fn reset_schema(self) -> Self

    Reset the schema on connection.

    \n

    When this Config is used to connect a\nSqlDataSource, if this option is set, the relevant\nschema will first be dropped and then recreated, yielding a completely\nfresh instance of the query service.

    \n

    This is a particularly useful capability for development and staging environments. Still, it\nmust be used with extreme caution, as using this will irrevocably delete any data pertaining\nto the query service in the database.

    \n
    source

    pub fn migrations(self, migrations: impl IntoIterator<Item = Migration>) -> Self

    Add custom migrations to run when connecting to the database.

    \n
    source

    pub fn no_migrations(self) -> Self

    Skip all migrations when connecting to the database.

    \n
    source

    pub fn pruner_cfg(self, cfg: PrunerCfg) -> Result<Self, Error>

    Enable pruning with a given configuration.

    \n

    If archive was previously specified, this will override it.

    \n
    source

    pub fn archive(self) -> Self

    Disable pruning and reconstruct previously pruned data.

    \n

    While running without pruning is the default behavior, the default will not try to\nreconstruct data that was pruned in a previous run where pruning was enabled. This option\ninstructs the service to run without pruning and reconstruct all previously pruned data by\nfetching from peers.

    \n

    If pruner_cfg was previously specified, this will override it.

    \n
    source

    pub fn idle_connection_timeout(self, timeout: Duration) -> Self

    Set the maximum idle time of a connection.

    \n

    Any connection which has been open and unused longer than this duration will be\nautomatically closed to reduce load on the server.

    \n
    source

    pub fn connection_timeout(self, timeout: Duration) -> Self

    Set the maximum lifetime of a connection.

    \n

    Any connection which has been open longer than this duration will be automatically closed\n(and, if needed, replaced), even if it is otherwise healthy. It is good practice to refresh\neven healthy connections once in a while (e.g. daily) in case of resource leaks in the\nserver implementation.

    \n
    source

    pub fn min_connections(self, min: u32) -> Self

    Set the minimum number of connections to maintain at any time.

    \n

    The data source will, to the best of its ability, maintain at least min open connections\nat all times. This can be used to reduce the latency hit of opening new connections when at\nleast this many simultaneous connections are frequently needed.

    \n
    source

    pub fn max_connections(self, max: u32) -> Self

    Set the maximum number of connections to maintain at any time.

    \n

    Once max connections are in use simultaneously, further attempts to acquire a connection\n(or begin a transaction) will block until one of the existing connections is released.

    \n
    source

    pub fn slow_statement_threshold(self, threshold: Duration) -> Self

    Log at WARN level any time a SQL statement takes longer than threshold.

    \n

    The default threshold is 1s.

    \n
    ",0,"hotshot_query_service::data_source::sql::Config"],["
    source§

    impl Default for Config

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    ","Default","hotshot_query_service::data_source::sql::Config"],["
    source§

    impl From<SqliteConnectOptions> for Config

    source§

    fn from(db_opt: SqliteConnectOptions) -> Self

    Converts to this type from the input type.
    ","From","hotshot_query_service::data_source::sql::Config"],["
    source§

    impl FromStr for Config

    source§

    type Err = <SqliteConnectOptions as FromStr>::Err

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","hotshot_query_service::data_source::sql::Config"]]]]); + if (window.register_type_impls) { + window.register_type_impls(type_impls); + } else { + window.pending_type_impls = type_impls; + } +})() +//{"start":55,"fragment_lengths":[20671]} \ No newline at end of file diff --git a/type.impl/hotshot_query_service/data_source/storage/sql/struct.Sqlite.js b/type.impl/hotshot_query_service/data_source/storage/sql/struct.Sqlite.js new file mode 100644 index 000000000..4a1fec4b6 --- /dev/null +++ b/type.impl/hotshot_query_service/data_source/storage/sql/struct.Sqlite.js @@ -0,0 +1,9 @@ +(function() { + var type_impls = Object.fromEntries([["hotshot_query_service",[["
    §

    impl Database for Sqlite

    §

    type Connection = SqliteConnection

    The concrete Connection implementation for this database.
    §

    type TransactionManager = SqliteTransactionManager

    The concrete TransactionManager implementation for this database.
    §

    type Row = SqliteRow

    The concrete Row implementation for this database.
    §

    type QueryResult = SqliteQueryResult

    The concrete QueryResult implementation for this database.
    §

    type Column = SqliteColumn

    The concrete Column implementation for this database.
    §

    type TypeInfo = SqliteTypeInfo

    The concrete TypeInfo implementation for this database.
    §

    type Value = SqliteValue

    The concrete type used to hold an owned copy of the not-yet-decoded value that was\nreceived from the database.
    §

    type ValueRef<'r> = SqliteValueRef<'r>

    The concrete type used to hold a reference to the not-yet-decoded value that has just been\nreceived from the database.
    §

    type Arguments<'q> = SqliteArguments<'q>

    The concrete Arguments implementation for this database.
    §

    type ArgumentBuffer<'q> = Vec<SqliteArgumentValue<'q>>

    The concrete type used as a buffer for arguments while encoding.
    §

    type Statement<'q> = SqliteStatement<'q>

    The concrete Statement implementation for this database.
    §

    const NAME: &'static str = "SQLite"

    The display name for this database driver.
    §

    const URL_SCHEMES: &'static [&'static str] = _

    The schemes for database URLs that should match this driver.
    ","Database","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl Debug for Sqlite

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl MigrateDatabase for Sqlite

    §

    fn create_database(\n url: &str,\n) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

    §

    fn database_exists(\n url: &str,\n) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + '_>>

    §

    fn drop_database(\n url: &str,\n) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

    §

    fn force_drop_database(\n _url: &str,\n) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

    ","MigrateDatabase","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl TestSupport for Sqlite

    §

    fn test_context(\n args: &TestArgs,\n) -> Pin<Box<dyn Future<Output = Result<TestContext<Sqlite>, Error>> + Send + '_>>

    Get parameters to construct a Pool suitable for testing. Read more
    §

    fn cleanup_test(\n db_name: &str,\n) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

    §

    fn cleanup_test_dbs() -> Pin<Box<dyn Future<Output = Result<Option<usize>, Error>> + Send>>

    Cleanup any test databases that are no longer in-use. Read more
    §

    fn snapshot(\n _conn: &mut <Sqlite as Database>::Connection,\n) -> Pin<Box<dyn Future<Output = Result<FixtureSnapshot<Sqlite>, Error>> + Send + '_>>

    Take a snapshot of the current state of the database (data only). Read more
    ","TestSupport","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl TypeChecking for Sqlite

    §

    const PARAM_CHECKING: ParamChecking = ::sqlx_core::type_checking::ParamChecking::Weak

    Describes how the database in question typechecks query parameters.
    §

    fn param_type_for_id(\n info: &<Sqlite as Database>::TypeInfo,\n) -> Option<&'static str>

    Get the full path of the Rust type that corresponds to the given TypeInfo, if applicable. Read more
    §

    fn return_type_for_id(\n info: &<Sqlite as Database>::TypeInfo,\n) -> Option<&'static str>

    Get the full path of the Rust type that corresponds to the given TypeInfo, if applicable. Read more
    §

    fn get_feature_gate(\n _info: &<Sqlite as Database>::TypeInfo,\n) -> Option<&'static str>

    Get the name of the Cargo feature gate that must be enabled to process the given TypeInfo,\nif applicable.
    §

    fn fmt_value_debug(value: &<Sqlite as Database>::Value) -> FmtValue<'_, Sqlite>

    If value is a well-known type, decode and format it using Debug. Read more
    ","TypeChecking","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl HasStatementCache for Sqlite

    ","HasStatementCache","hotshot_query_service::data_source::storage::sql::db::Db"]]]]); + if (window.register_type_impls) { + window.register_type_impls(type_impls); + } else { + window.pending_type_impls = type_impls; + } +})() +//{"start":55,"fragment_lengths":[27686]} \ No newline at end of file diff --git a/type.impl/sqlx_postgres/database/struct.Postgres.js b/type.impl/sqlx_postgres/database/struct.Postgres.js deleted file mode 100644 index 57c3bf3d5..000000000 --- a/type.impl/sqlx_postgres/database/struct.Postgres.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var type_impls = Object.fromEntries([["hotshot_query_service",[["
    §

    impl Database for Postgres

    §

    type Connection = PgConnection

    The concrete Connection implementation for this database.
    §

    type TransactionManager = PgTransactionManager

    The concrete TransactionManager implementation for this database.
    §

    type Row = PgRow

    The concrete Row implementation for this database.
    §

    type QueryResult = PgQueryResult

    The concrete QueryResult implementation for this database.
    §

    type Column = PgColumn

    The concrete Column implementation for this database.
    §

    type TypeInfo = PgTypeInfo

    The concrete TypeInfo implementation for this database.
    §

    type Value = PgValue

    The concrete type used to hold an owned copy of the not-yet-decoded value that was\nreceived from the database.
    §

    type ValueRef<'r> = PgValueRef<'r>

    The concrete type used to hold a reference to the not-yet-decoded value that has just been\nreceived from the database.
    §

    type Arguments<'q> = PgArguments

    The concrete Arguments implementation for this database.
    §

    type ArgumentBuffer<'q> = PgArgumentBuffer

    The concrete type used as a buffer for arguments while encoding.
    §

    type Statement<'q> = PgStatement<'q>

    The concrete Statement implementation for this database.
    §

    const NAME: &'static str = "PostgreSQL"

    The display name for this database driver.
    §

    const URL_SCHEMES: &'static [&'static str] = _

    The schemes for database URLs that should match this driver.
    ","Database","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl Debug for Postgres

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl MigrateDatabase for Postgres

    §

    fn create_database(\n url: &str,\n) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

    §

    fn database_exists(\n url: &str,\n) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + '_>>

    §

    fn drop_database(\n url: &str,\n) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

    §

    fn force_drop_database(\n url: &str,\n) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

    ","MigrateDatabase","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl TestSupport for Postgres

    §

    fn test_context(\n args: &TestArgs,\n) -> Pin<Box<dyn Future<Output = Result<TestContext<Postgres>, Error>> + Send + '_>>

    Get parameters to construct a Pool suitable for testing. Read more
    §

    fn cleanup_test(\n db_name: &str,\n) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>

    §

    fn cleanup_test_dbs() -> Pin<Box<dyn Future<Output = Result<Option<usize>, Error>> + Send>>

    Cleanup any test databases that are no longer in-use. Read more
    §

    fn snapshot(\n _conn: &mut <Postgres as Database>::Connection,\n) -> Pin<Box<dyn Future<Output = Result<FixtureSnapshot<Postgres>, Error>> + Send + '_>>

    Take a snapshot of the current state of the database (data only). Read more
    ","TestSupport","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl TypeChecking for Postgres

    §

    const PARAM_CHECKING: ParamChecking = ::sqlx_core::type_checking::ParamChecking::Strong

    Describes how the database in question typechecks query parameters.
    §

    fn param_type_for_id(\n info: &<Postgres as Database>::TypeInfo,\n) -> Option<&'static str>

    Get the full path of the Rust type that corresponds to the given TypeInfo, if applicable. Read more
    §

    fn return_type_for_id(\n info: &<Postgres as Database>::TypeInfo,\n) -> Option<&'static str>

    Get the full path of the Rust type that corresponds to the given TypeInfo, if applicable. Read more
    §

    fn get_feature_gate(\n info: &<Postgres as Database>::TypeInfo,\n) -> Option<&'static str>

    Get the name of the Cargo feature gate that must be enabled to process the given TypeInfo,\nif applicable.
    §

    fn fmt_value_debug(\n value: &<Postgres as Database>::Value,\n) -> FmtValue<'_, Postgres>

    If value is a well-known type, decode and format it using Debug. Read more
    ","TypeChecking","hotshot_query_service::data_source::storage::sql::db::Db"],["
    §

    impl HasStatementCache for Postgres

    ","HasStatementCache","hotshot_query_service::data_source::storage::sql::db::Db"]]]]); - if (window.register_type_impls) { - window.register_type_impls(type_impls); - } else { - window.pending_type_impls = type_impls; - } -})() -//{"start":55,"fragment_lengths":[25144]} \ No newline at end of file