Skip to content
MarshallBelles edited this page Oct 30, 2021 · 15 revisions

Overview

This reference documents all the methods available in the SDK, and explains in detail how these methods work. SDKs are open source, and you can use them according to either the MIT / APACHE2.0 license at your preference.

The client library specifications can be found on the docs.rs page

Getting Started

Installing

Visit the Crates.io page to check the latest version.

Add the following to your Cargo.toml, replacing * with your version of choice.

flow-rust-sdk = "*"

Importing the Library

To import and build the library, run cargo test or cargo build inside your project directory.

Connect

The library uses gRPC to communicate with the access nodes and it must be configured with an access node API URL.

📖 Access API URLs can be found here. An error will be returned if the host is unreachable. The Access Nodes hosted by DapperLabs are accessible at:

  • Testnet access.devnet.nodes.onflow.org:9000
  • Mainnet access.mainnet.nodes.onflow.org:9000
  • Local Emulator 127.0.0.1:3569

To establish a connection, you should first instantiate a FlowConnection like so:

use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;
    Ok(())
}

Querying the Flow Network

After you have established a connection with an access node, you can query the Flow network to retrieve data about blocks, accounts, events and transactions. We will explore how to retrieve each of these entities in the sections below.

Get Blocks

Query the network for block by id, height or get the latest block.

📖 Block ID is the SHA3-256 hash of the entire block payload. This hash is stored as an ID field on any block response object (ie. response from GetLatestBlock).

📖 Block height expresses the height of the block on the chain. The latest block height is increased by one for every valid block produced.

Examples

This example depicts ways to get the latest block as well as any other block by height or ID:

use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;

    let get_latest_block_response = connection.get_block(None, None, None).await?;

    println!("{:?}", get_latest_block_response);
    Ok(())
}

Result output:

flow-rust-sdk-example % cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.11s
     Running `target/debug/flow-rust-sdk-example`
BlockResponse { block: Some(Block { id: [123, 196, 47, 232, 93, 50, 202, 81, 55, 105, 167, 79, 151, 247, 225, 167, 186, 214, 201, 64, 127, 13, 147, 76, 42, 166, 69, 239, 156, 246, 19, 199], parent_id: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], height: 0, timestamp: Some(Timestamp { seconds: 1545258750, nanos: 42 }), collection_guarantees: [], block_seals: [], signatures: [[]] }) }

Get Account

Retrieve any account from Flow network's latest block or from a specified block height.

📖 Account address is a unique account identifier. Be mindful about the 0x prefix, you should use the prefix as a default representation but be careful and safely handle user inputs without the prefix.

An account includes the following data:

  • Address: the account address.
  • Balance: balance of the account.
  • Contracts: list of contracts deployed to the account.
  • Keys: list of keys associated with the account.

Examples

Example depicts ways to get an account at the latest block and at a specific block height:

use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;

    // make sure you sanitize your inputs and remove the 0x before trying to get_account
    let get_account_response = connection.get_account("f8d6e0586b0a20c7").await?;

    println!("{:?}", get_account_response);
    Ok(())
}

Result output:

flow-rust-sdk-example % cargo run
   Compiling flow-rust-sdk-example v1.2.0 (/Users/marshallbelles/flow-rust-sdk-example)
    Finished dev [unoptimized + debuginfo] target(s) in 1.66s
     Running `target/debug/flow-rust-sdk-example`
AccountResponse { account: Some(Account { address: [248, 214, 224, 88, 107, 10, 32, 199], balance: 999999999999700000, code: [], keys: [AccountKey { id: 0, public_key: [239, 16, 12, 42, 141, 4, 222, 96, 44, 213, 152, 151, 224, 128, 1, 207, 87, 202, 21, 60, 182, 249, 8, 57, 24, 205, 225, 236, 125, 231, 116, 24, 162, 194, 54, 247, 137, 155, 63, 120, 109, 8, 161, 180, 89, 39, 53, 227, 167, 70, 28, 62, 147, 63, 66, 12, 249, 186, 190, 53, 10, 190, 12, 90], sign_algo: 2, hash_algo: 3, weight: 1000, sequence_number: 0, revoked: false }], contracts: {"FlowStorageFees": [47, 42, 10, 32, 42, 32, 84, 104, 101, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 32, 115, 109, 97, 114, 116, 32, 99, 111, 110, 116, 114, 97, 99, 116, 10, 32, 42, 10, 32, 42, 32, 65, 110, 32, 97, 99, 99, 111, 117, 110, 116, 39, 115, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 32, 100, 101, 116, 101, 114, 109, 105, 110, 101, 115, 32, 117, 112, 32, 116, 111, 32, 104, 111, 119, 32, 109, 117, 99, 104, 32, 115, 116, 111, 114, 97, 103, 101, 32, 111, 110, 32, 99, 104, 97, 105, 110, 32, 105, 116, 32, 99, 97, 110, 32, 117, 115, 101, 46, 32, 10, 32, 42, 32, 65, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 32, 105, 115, 32, 99, 97, 108, 99, 117, 108, 97, 116, 101, 100, 32, 98, 121, 32, 109, 117, 108, 116, 105, 112, 108, 121, 105, 110, 103, 32, 116, 104, 101, 32, 97, 109, 111, 117, 110, 116, 32, 111, 102, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 102, 108, 111, 119, 32, 119, 105, 116, 104, 32, 96, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 46, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 96, 10, 32, 42, 32, 84, 104, 101, 32, 109, 105, 110, 105, 109, 117, 109, 32, 97, 109, 111, 117, 110, 116, 32, 111, 102, 32, 102, 108, 111, 119, 32, 116, 111, 107, 101, 110, 115, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 102, 111, 114, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 32, 105, 115, 32, 96, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 96, 32, 116, 104, 105, 115, 32, 105, 115, 32, 112, 97, 105, 100, 32, 100, 117, 114, 105, 110, 103, 32, 97, 99, 99, 111, 117, 110, 116, 32, 99, 114, 101, 97, 116, 105, 111, 110, 44, 32, 98, 121, 32, 116, 104, 101, 32, 99, 114, 101, 97, 116, 111, 114, 46, 10, 32, 42, 32, 10, 32, 42, 32, 65, 116, 32, 116, 104, 101, 32, 101, 110, 100, 32, 111, 102, 32, 97, 108, 108, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 115, 44, 32, 97, 110, 121, 32, 97, 99, 99, 111, 117, 110, 116, 32, 116, 104, 97, 116, 32, 104, 97, 100, 32, 97, 110, 121, 32, 118, 97, 108, 117, 101, 32, 99, 104, 97, 110, 103, 101, 100, 32, 105, 110, 32, 116, 104, 101, 105, 114, 32, 115, 116, 111, 114, 97, 103, 101, 32, 10, 32, 42, 32, 104, 97, 115, 32, 116, 104, 101, 105, 114, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 32, 99, 104, 101, 99, 107, 101, 100, 32, 97, 103, 97, 105, 110, 115, 116, 32, 116, 104, 101, 105, 114, 32, 115, 116, 111, 114, 97, 103, 101, 32, 117, 115, 101, 100, 32, 97, 110, 100, 32, 116, 104, 101, 105, 114, 32, 109, 97, 105, 110, 32, 102, 108, 111, 119, 32, 116, 111, 107, 101, 110, 32, 118, 97, 117, 108, 116, 32, 97, 103, 97, 105, 110, 115, 116, 32, 116, 104, 101, 32, 109, 105, 110, 105, 109, 117, 109, 32, 114, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 46, 10, 32, 42, 32, 73, 102, 32, 97, 110, 121, 32, 97, 99, 99, 111, 117, 110, 116, 32, 102, 97, 105, 108, 115, 32, 116, 104, 105, 115, 32, 99, 104, 101, 99, 107, 32, 116, 104, 101, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 32, 119, 105, 108, 32, 102, 97, 105, 108, 46, 10, 32, 42, 32, 10, 32, 42, 32, 65, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 109, 111, 118, 105, 110, 103, 47, 100, 101, 108, 101, 116, 105, 110, 103, 32, 105, 116, 115, 32, 96, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 96, 32, 114, 101, 115, 111, 117, 114, 99, 101, 32, 119, 105, 108, 108, 32, 114, 101, 115, 117, 108, 116, 32, 10, 32, 42, 32, 105, 110, 32, 116, 104, 101, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 32, 102, 97, 105, 108, 105, 110, 103, 32, 98, 101, 99, 97, 117, 115, 101, 32, 116, 104, 101, 32, 97, 99, 99, 111, 117, 110, 116, 32, 119, 105, 108, 108, 32, 104, 97, 118, 101, 32, 110, 111, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 46, 10, 32, 42, 32, 10, 32, 42, 47, 10, 10, 105, 109, 112, 111, 114, 116, 32, 70, 117, 110, 103, 105, 98, 108, 101, 84, 111, 107, 101, 110, 32, 102, 114, 111, 109, 32, 48, 120, 101, 101, 56, 50, 56, 53, 54, 98, 102, 50, 48, 101, 50, 97, 97, 54, 10, 105, 109, 112, 111, 114, 116, 32, 70, 108, 111, 119, 84, 111, 107, 101, 110, 32, 102, 114, 111, 109, 32, 48, 120, 48, 97, 101, 53, 51, 99, 98, 54, 101, 51, 102, 52, 50, 97, 55, 57, 10, 10, 112, 117, 98, 32, 99, 111, 110, 116, 114, 97, 99, 116, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 32, 123, 10, 10, 32, 32, 32, 32, 47, 47, 32, 69, 109, 105, 116, 116, 101, 100, 32, 119, 104, 101, 110, 32, 116, 104, 101, 32, 97, 109, 111, 117, 110, 116, 32, 111, 102, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 104, 97, 115, 32, 112, 101, 114, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 70, 108, 111, 119, 32, 116, 111, 107, 101, 110, 32, 99, 104, 97, 110, 103, 101, 115, 10, 32, 32, 32, 32, 112, 117, 98, 32, 101, 118, 101, 110, 116, 32, 83, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 67, 104, 97, 110, 103, 101, 100, 40, 95, 32, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 58, 32, 85, 70, 105, 120, 54, 52, 41, 10, 10, 32, 32, 32, 32, 47, 47, 32, 69, 109, 105, 116, 116, 101, 100, 32, 119, 104, 101, 110, 32, 116, 104, 101, 32, 109, 105, 110, 105, 109, 117, 109, 32, 97, 109, 111, 117, 110, 116, 32, 111, 102, 32, 70, 108, 111, 119, 32, 116, 111, 107, 101, 110, 115, 32, 116, 104, 97, 116, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 110, 101, 101, 100, 115, 32, 116, 111, 32, 104, 97, 118, 101, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 102, 111, 114, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 32, 99, 104, 97, 110, 103, 101, 115, 46, 10, 32, 32, 32, 32, 112, 117, 98, 32, 101, 118, 101, 110, 116, 32, 77, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 67, 104, 97, 110, 103, 101, 100, 40, 95, 32, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 58, 32, 85, 70, 105, 120, 54, 52, 41, 10, 10, 32, 32, 32, 32, 47, 47, 32, 68, 101, 102, 105, 110, 101, 115, 32, 104, 111, 119, 32, 109, 117, 99, 104, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 32, 101, 118, 101, 114, 121, 32, 97, 99, 99, 111, 117, 110, 116, 32, 104, 97, 115, 32, 112, 101, 114, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 70, 108, 111, 119, 32, 116, 111, 107, 101, 110, 46, 10, 32, 32, 32, 32, 47, 47, 32, 100, 101, 102, 105, 110, 105, 116, 105, 111, 110, 32, 105, 115, 32, 119, 114, 105, 116, 116, 101, 110, 32, 112, 101, 114, 32, 117, 110, 105, 116, 32, 111, 102, 32, 102, 108, 111, 119, 32, 105, 110, 115, 116, 101, 97, 100, 32, 111, 102, 32, 116, 104, 101, 32, 105, 110, 118, 101, 114, 115, 101, 44, 32, 10, 32, 32, 32, 32, 47, 47, 32, 115, 111, 32, 116, 104, 101, 114, 101, 32, 105, 115, 32, 110, 111, 32, 108, 111, 115, 115, 32, 111, 102, 32, 112, 114, 101, 99, 105, 115, 105, 111, 110, 32, 99, 97, 108, 99, 117, 108, 97, 116, 105, 110, 103, 32, 115, 116, 111, 114, 97, 103, 101, 32, 102, 114, 111, 109, 32, 102, 108, 111, 119, 44, 32, 10, 32, 32, 32, 32, 47, 47, 32, 98, 117, 116, 32, 116, 104, 101, 114, 101, 32, 105, 115, 32, 108, 111, 115, 115, 32, 111, 102, 32, 112, 114, 101, 99, 105, 115, 105, 111, 110, 32, 119, 104, 101, 110, 32, 99, 97, 108, 99, 117, 108, 97, 116, 105, 110, 103, 32, 102, 108, 111, 119, 32, 112, 101, 114, 32, 115, 116, 111, 114, 97, 103, 101, 46, 10, 32, 32, 32, 32, 112, 117, 98, 32, 118, 97, 114, 32, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 58, 32, 85, 70, 105, 120, 54, 52, 10, 10, 32, 32, 32, 32, 47, 47, 32, 68, 101, 102, 105, 110, 101, 115, 32, 116, 104, 101, 32, 109, 105, 110, 105, 109, 117, 109, 32, 97, 109, 111, 117, 110, 116, 32, 111, 102, 32, 70, 108, 111, 119, 32, 116, 111, 107, 101, 110, 115, 32, 116, 104, 97, 116, 32, 101, 118, 101, 114, 121, 32, 97, 99, 99, 111, 117, 110, 116, 32, 110, 101, 101, 100, 115, 32, 116, 111, 32, 104, 97, 118, 101, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 102, 111, 114, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 46, 10, 32, 32, 32, 32, 47, 47, 32, 73, 102, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 104, 97, 115, 32, 108, 101, 115, 115, 32, 116, 104, 101, 110, 32, 116, 104, 105, 115, 32, 97, 109, 111, 117, 110, 116, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 98, 121, 32, 116, 104, 101, 32, 101, 110, 100, 32, 111, 102, 32, 97, 110, 121, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 32, 105, 116, 32, 112, 97, 114, 116, 105, 99, 105, 112, 97, 116, 101, 100, 32, 105, 110, 44, 32, 116, 104, 101, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 32, 119, 105, 108, 108, 32, 102, 97, 105, 108, 46, 10, 32, 32, 32, 32, 112, 117, 98, 32, 118, 97, 114, 32, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 58, 32, 85, 70, 105, 120, 54, 52, 10, 10, 32, 32, 32, 32, 47, 47, 32, 65, 110, 32, 97, 100, 109, 105, 110, 105, 115, 116, 114, 97, 116, 111, 114, 32, 114, 101, 115, 111, 117, 114, 99, 101, 32, 116, 104, 97, 116, 32, 99, 97, 110, 32, 99, 104, 97, 110, 103, 101, 32, 116, 104, 101, 32, 112, 97, 114, 97, 109, 101, 116, 101, 114, 115, 32, 111, 102, 32, 116, 104, 101, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 32, 115, 109, 97, 114, 116, 32, 99, 111, 110, 116, 114, 97, 99, 116, 46, 10, 32, 32, 32, 32, 112, 117, 98, 32, 114, 101, 115, 111, 117, 114, 99, 101, 32, 65, 100, 109, 105, 110, 105, 115, 116, 114, 97, 116, 111, 114, 32, 123, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 67, 104, 97, 110, 103, 101, 115, 32, 116, 104, 101, 32, 97, 109, 111, 117, 110, 116, 32, 111, 102, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 104, 97, 115, 32, 112, 101, 114, 32, 97, 99, 99, 111, 117, 110, 116, 115, 39, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 115, 116, 111, 114, 97, 103, 101, 32, 70, 76, 79, 87, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 115, 101, 116, 83, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 40, 95, 32, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 58, 32, 85, 70, 105, 120, 54, 52, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 32, 61, 61, 32, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 32, 61, 32, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 109, 105, 116, 32, 83, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 67, 104, 97, 110, 103, 101, 100, 40, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 67, 104, 97, 110, 103, 101, 115, 32, 116, 104, 101, 32, 109, 105, 110, 105, 109, 117, 109, 32, 97, 109, 111, 117, 110, 116, 32, 111, 102, 32, 70, 76, 79, 87, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 104, 97, 115, 32, 116, 111, 32, 104, 97, 118, 101, 32, 114, 101, 115, 101, 114, 118, 101, 100, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 115, 101, 116, 77, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 40, 95, 32, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 58, 32, 85, 70, 105, 120, 54, 52, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 61, 61, 32, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 61, 32, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 109, 105, 116, 32, 77, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 67, 104, 97, 110, 103, 101, 100, 40, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 97, 99, 99, 101, 115, 115, 40, 99, 111, 110, 116, 114, 97, 99, 116, 41, 32, 105, 110, 105, 116, 40, 41, 123, 125, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 32, 82, 101, 116, 117, 114, 110, 115, 32, 109, 101, 103, 97, 98, 121, 116, 101, 115, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 99, 97, 108, 99, 117, 108, 97, 116, 101, 65, 99, 99, 111, 117, 110, 116, 67, 97, 112, 97, 99, 105, 116, 121, 40, 95, 32, 97, 99, 99, 111, 117, 110, 116, 65, 100, 100, 114, 101, 115, 115, 58, 32, 65, 100, 100, 114, 101, 115, 115, 41, 58, 32, 85, 70, 105, 120, 54, 52, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 98, 97, 108, 97, 110, 99, 101, 82, 101, 102, 32, 61, 32, 103, 101, 116, 65, 99, 99, 111, 117, 110, 116, 40, 97, 99, 99, 111, 117, 110, 116, 65, 100, 100, 114, 101, 115, 115, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 103, 101, 116, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 60, 38, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 123, 70, 117, 110, 103, 105, 98, 108, 101, 84, 111, 107, 101, 110, 46, 66, 97, 108, 97, 110, 99, 101, 125, 62, 40, 47, 112, 117, 98, 108, 105, 99, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 66, 97, 108, 97, 110, 99, 101, 41, 33, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 98, 111, 114, 114, 111, 119, 40, 41, 32, 63, 63, 32, 112, 97, 110, 105, 99, 40, 34, 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 98, 111, 114, 114, 111, 119, 32, 70, 76, 79, 87, 32, 98, 97, 108, 97, 110, 99, 101, 32, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 34, 41, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 103, 101, 116, 32, 97, 100, 100, 114, 101, 115, 115, 32, 116, 111, 107, 101, 110, 32, 98, 97, 108, 97, 110, 99, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 98, 97, 108, 97, 110, 99, 101, 82, 101, 102, 46, 98, 97, 108, 97, 110, 99, 101, 32, 60, 32, 115, 101, 108, 102, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 105, 102, 32, 60, 32, 116, 104, 101, 110, 32, 109, 105, 110, 105, 109, 117, 109, 32, 114, 101, 116, 117, 114, 110, 32, 48, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 48, 46, 48, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 114, 101, 116, 117, 114, 110, 32, 98, 97, 108, 97, 110, 99, 101, 32, 109, 117, 108, 116, 105, 112, 108, 105, 101, 100, 32, 119, 105, 116, 104, 32, 109, 101, 103, 97, 98, 121, 116, 101, 115, 32, 112, 101, 114, 32, 102, 108, 111, 119, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 98, 97, 108, 97, 110, 99, 101, 82, 101, 102, 46, 98, 97, 108, 97, 110, 99, 101, 32, 42, 32, 115, 101, 108, 102, 46, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 32, 65, 109, 111, 117, 110, 116, 32, 105, 110, 32, 70, 108, 111, 119, 32, 116, 111, 107, 101, 110, 115, 10, 32, 32, 32, 32, 47, 47, 32, 82, 101, 116, 117, 114, 110, 115, 32, 109, 101, 103, 97, 98, 121, 116, 101, 115, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 102, 108, 111, 119, 84, 111, 83, 116, 111, 114, 97, 103, 101, 67, 97, 112, 97, 99, 105, 116, 121, 40, 95, 32, 97, 109, 111, 117, 110, 116, 58, 32, 85, 70, 105, 120, 54, 52, 41, 58, 32, 85, 70, 105, 120, 54, 52, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 97, 109, 111, 117, 110, 116, 32, 42, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 32, 65, 109, 111, 117, 110, 116, 32, 105, 110, 32, 109, 101, 103, 97, 98, 121, 116, 101, 115, 10, 32, 32, 32, 32, 47, 47, 32, 82, 101, 116, 117, 114, 110, 115, 32, 70, 108, 111, 119, 32, 116, 111, 107, 101, 110, 115, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 115, 116, 111, 114, 97, 103, 101, 67, 97, 112, 97, 99, 105, 116, 121, 84, 111, 70, 108, 111, 119, 40, 95, 32, 97, 109, 111, 117, 110, 116, 58, 32, 85, 70, 105, 120, 54, 52, 41, 58, 32, 85, 70, 105, 120, 54, 52, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 32, 61, 61, 32, 48, 46, 48, 32, 97, 115, 32, 85, 70, 105, 120, 54, 52, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 48, 46, 48, 32, 97, 115, 32, 85, 70, 105, 120, 54, 52, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 112, 111, 115, 115, 105, 98, 108, 101, 32, 108, 111, 115, 115, 32, 111, 102, 32, 112, 114, 101, 99, 105, 115, 105, 111, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 112, 117, 116, 116, 105, 110, 103, 32, 116, 104, 101, 32, 114, 101, 115, 117, 108, 116, 32, 98, 97, 99, 107, 32, 105, 110, 116, 111, 32, 96, 102, 108, 111, 119, 84, 111, 83, 116, 111, 114, 97, 103, 101, 67, 97, 112, 97, 99, 105, 116, 121, 96, 32, 109, 105, 103, 104, 116, 32, 110, 111, 116, 32, 121, 105, 101, 108, 100, 32, 116, 104, 101, 32, 115, 97, 109, 101, 32, 114, 101, 115, 117, 108, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 97, 109, 111, 117, 110, 116, 32, 47, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 32, 99, 111, 110, 118, 101, 114, 116, 115, 32, 115, 116, 111, 114, 97, 103, 101, 32, 117, 115, 101, 100, 32, 102, 114, 111, 109, 32, 85, 73, 110, 116, 54, 52, 32, 66, 121, 116, 101, 115, 32, 116, 111, 32, 85, 70, 105, 120, 54, 52, 32, 77, 101, 103, 97, 98, 121, 116, 101, 115, 46, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 99, 111, 110, 118, 101, 114, 116, 85, 73, 110, 116, 54, 52, 83, 116, 111, 114, 97, 103, 101, 66, 121, 116, 101, 115, 84, 111, 85, 70, 105, 120, 54, 52, 77, 101, 103, 97, 98, 121, 116, 101, 115, 40, 95, 32, 115, 116, 111, 114, 97, 103, 101, 58, 32, 85, 73, 110, 116, 54, 52, 41, 58, 32, 85, 70, 105, 120, 54, 52, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 115, 97, 102, 101, 32, 99, 111, 110, 118, 101, 114, 116, 32, 85, 73, 110, 116, 54, 52, 32, 116, 111, 32, 85, 70, 105, 120, 54, 52, 32, 40, 119, 105, 116, 104, 111, 117, 116, 32, 111, 118, 101, 114, 102, 108, 111, 119, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 102, 32, 61, 32, 85, 70, 105, 120, 54, 52, 40, 115, 116, 111, 114, 97, 103, 101, 32, 37, 32, 49, 48, 48, 48, 48, 48, 48, 48, 48, 32, 97, 115, 32, 85, 73, 110, 116, 54, 52, 41, 32, 42, 32, 48, 46, 48, 48, 48, 48, 48, 48, 48, 49, 32, 97, 115, 32, 85, 70, 105, 120, 54, 52, 32, 43, 32, 85, 70, 105, 120, 54, 52, 40, 115, 116, 111, 114, 97, 103, 101, 32, 47, 32, 49, 48, 48, 48, 48, 48, 48, 48, 48, 32, 97, 115, 32, 85, 73, 110, 116, 54, 52, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 100, 101, 99, 105, 109, 97, 108, 32, 112, 111, 105, 110, 116, 32, 99, 111, 114, 114, 101, 99, 116, 105, 111, 110, 46, 32, 77, 101, 103, 97, 98, 121, 116, 101, 115, 32, 116, 111, 32, 98, 121, 116, 101, 115, 32, 104, 97, 118, 101, 32, 97, 32, 99, 111, 110, 118, 101, 114, 115, 105, 111, 110, 32, 111, 102, 32, 49, 48, 94, 45, 54, 32, 119, 104, 105, 108, 101, 32, 85, 70, 105, 120, 54, 52, 32, 109, 105, 110, 105, 109, 117, 109, 32, 118, 97, 108, 117, 101, 32, 105, 115, 32, 49, 48, 94, 45, 56, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 115, 116, 111, 114, 97, 103, 101, 77, 98, 32, 61, 32, 102, 32, 42, 32, 49, 48, 48, 46, 48, 32, 97, 115, 32, 85, 70, 105, 120, 54, 52, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 115, 116, 111, 114, 97, 103, 101, 77, 98, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 32, 71, 101, 116, 115, 32, 34, 97, 118, 97, 105, 108, 97, 98, 108, 101, 34, 32, 98, 97, 108, 97, 110, 99, 101, 32, 111, 102, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 10, 32, 32, 32, 32, 47, 47, 32, 84, 104, 101, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 32, 98, 97, 108, 97, 110, 99, 101, 32, 105, 115, 32, 105, 116, 115, 32, 100, 101, 102, 97, 117, 108, 116, 32, 116, 111, 107, 101, 110, 32, 98, 97, 108, 97, 110, 99, 101, 32, 109, 105, 110, 117, 115, 32, 119, 104, 97, 116, 32, 105, 115, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 102, 111, 114, 32, 115, 116, 111, 114, 97, 103, 101, 46, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 100, 101, 102, 97, 117, 108, 116, 84, 111, 107, 101, 110, 65, 118, 97, 105, 108, 97, 98, 108, 101, 66, 97, 108, 97, 110, 99, 101, 40, 95, 32, 97, 99, 99, 111, 117, 110, 116, 65, 100, 100, 114, 101, 115, 115, 58, 32, 65, 100, 100, 114, 101, 115, 115, 41, 58, 32, 85, 70, 105, 120, 54, 52, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 103, 101, 116, 32, 98, 97, 108, 97, 110, 99, 101, 32, 111, 102, 32, 97, 99, 99, 111, 117, 110, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 97, 99, 99, 116, 32, 61, 32, 103, 101, 116, 65, 99, 99, 111, 117, 110, 116, 40, 97, 99, 99, 111, 117, 110, 116, 65, 100, 100, 114, 101, 115, 115, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 98, 97, 108, 97, 110, 99, 101, 82, 101, 102, 32, 61, 32, 97, 99, 99, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 103, 101, 116, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 40, 47, 112, 117, 98, 108, 105, 99, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 66, 97, 108, 97, 110, 99, 101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 98, 111, 114, 114, 111, 119, 60, 38, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 123, 70, 117, 110, 103, 105, 98, 108, 101, 84, 111, 107, 101, 110, 46, 66, 97, 108, 97, 110, 99, 101, 125, 62, 40, 41, 33, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 98, 97, 108, 97, 110, 99, 101, 32, 61, 32, 98, 97, 108, 97, 110, 99, 101, 82, 101, 102, 46, 98, 97, 108, 97, 110, 99, 101, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 103, 101, 116, 32, 104, 111, 119, 32, 109, 117, 99, 104, 32, 115, 104, 111, 117, 108, 100, 32, 98, 101, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 102, 111, 114, 32, 115, 116, 111, 114, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 61, 32, 115, 101, 108, 102, 46, 115, 116, 111, 114, 97, 103, 101, 67, 97, 112, 97, 99, 105, 116, 121, 84, 111, 70, 108, 111, 119, 40, 115, 101, 108, 102, 46, 99, 111, 110, 118, 101, 114, 116, 85, 73, 110, 116, 54, 52, 83, 116, 111, 114, 97, 103, 101, 66, 121, 116, 101, 115, 84, 111, 85, 70, 105, 120, 54, 52, 77, 101, 103, 97, 98, 121, 116, 101, 115, 40, 97, 99, 99, 116, 46, 115, 116, 111, 114, 97, 103, 101, 85, 115, 101, 100, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 97, 116, 32, 108, 101, 97, 115, 116, 32, 115, 101, 108, 102, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 115, 104, 111, 117, 108, 100, 32, 98, 101, 32, 114, 101, 115, 101, 114, 118, 101, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 60, 32, 115, 101, 108, 102, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 61, 32, 115, 101, 108, 102, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 98, 97, 108, 97, 110, 99, 101, 32, 99, 111, 117, 108, 100, 32, 98, 101, 32, 108, 101, 115, 115, 32, 116, 104, 97, 116, 32, 119, 104, 97, 116, 32, 116, 104, 101, 32, 97, 99, 99, 111, 117, 110, 116, 32, 110, 101, 101, 100, 115, 32, 116, 111, 32, 104, 97, 118, 101, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 102, 111, 114, 32, 115, 116, 111, 114, 97, 103, 101, 46, 32, 73, 110, 32, 116, 104, 97, 116, 32, 99, 97, 115, 101, 32, 114, 101, 116, 117, 114, 110, 32, 48, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 62, 32, 98, 97, 108, 97, 110, 99, 101, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 48, 46, 48, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 98, 97, 108, 97, 110, 99, 101, 32, 45, 32, 114, 101, 115, 101, 114, 118, 101, 100, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 105, 110, 105, 116, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 108, 102, 46, 115, 116, 111, 114, 97, 103, 101, 77, 101, 103, 97, 66, 121, 116, 101, 115, 80, 101, 114, 82, 101, 115, 101, 114, 118, 101, 100, 70, 76, 79, 87, 32, 61, 32, 49, 46, 48, 32, 47, 47, 32, 49, 32, 77, 98, 32, 112, 101, 114, 32, 49, 32, 70, 108, 111, 119, 32, 116, 111, 107, 101, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 108, 102, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 61, 32, 48, 46, 48, 32, 47, 47, 32, 111, 114, 32, 48, 32, 107, 98, 32, 111, 102, 32, 109, 105, 110, 105, 109, 117, 109, 32, 115, 116, 111, 114, 97, 103, 101, 32, 114, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 97, 100, 109, 105, 110, 32, 60, 45, 32, 99, 114, 101, 97, 116, 101, 32, 65, 100, 109, 105, 110, 105, 115, 116, 114, 97, 116, 111, 114, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 46, 115, 97, 118, 101, 40, 60, 45, 97, 100, 109, 105, 110, 44, 32, 116, 111, 58, 32, 47, 115, 116, 111, 114, 97, 103, 101, 47, 115, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 65, 100, 109, 105, 110, 41, 10, 32, 32, 32, 32, 125, 10, 125], "FlowServiceAccount": [105, 109, 112, 111, 114, 116, 32, 70, 117, 110, 103, 105, 98, 108, 101, 84, 111, 107, 101, 110, 32, 102, 114, 111, 109, 32, 48, 120, 101, 101, 56, 50, 56, 53, 54, 98, 102, 50, 48, 101, 50, 97, 97, 54, 10, 105, 109, 112, 111, 114, 116, 32, 70, 108, 111, 119, 84, 111, 107, 101, 110, 32, 102, 114, 111, 109, 32, 48, 120, 48, 97, 101, 53, 51, 99, 98, 54, 101, 51, 102, 52, 50, 97, 55, 57, 10, 105, 109, 112, 111, 114, 116, 32, 70, 108, 111, 119, 70, 101, 101, 115, 32, 102, 114, 111, 109, 32, 48, 120, 101, 53, 97, 56, 98, 55, 102, 50, 51, 101, 56, 98, 53, 52, 56, 102, 10, 105, 109, 112, 111, 114, 116, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 32, 102, 114, 111, 109, 32, 48, 120, 102, 56, 100, 54, 101, 48, 53, 56, 54, 98, 48, 97, 50, 48, 99, 55, 10, 10, 112, 117, 98, 32, 99, 111, 110, 116, 114, 97, 99, 116, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 32, 123, 10, 10, 32, 32, 32, 32, 112, 117, 98, 32, 101, 118, 101, 110, 116, 32, 84, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 85, 112, 100, 97, 116, 101, 100, 40, 110, 101, 119, 70, 101, 101, 58, 32, 85, 70, 105, 120, 54, 52, 41, 10, 10, 32, 32, 32, 32, 112, 117, 98, 32, 101, 118, 101, 110, 116, 32, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 70, 101, 101, 85, 112, 100, 97, 116, 101, 100, 40, 110, 101, 119, 70, 101, 101, 58, 32, 85, 70, 105, 120, 54, 52, 41, 10, 10, 32, 32, 32, 32, 112, 117, 98, 32, 101, 118, 101, 110, 116, 32, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 65, 100, 100, 101, 100, 40, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 58, 32, 65, 100, 100, 114, 101, 115, 115, 41, 10, 10, 32, 32, 32, 32, 112, 117, 98, 32, 101, 118, 101, 110, 116, 32, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 82, 101, 109, 111, 118, 101, 100, 40, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 58, 32, 65, 100, 100, 114, 101, 115, 115, 41, 10, 10, 32, 32, 32, 32, 112, 117, 98, 32, 101, 118, 101, 110, 116, 32, 73, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 85, 112, 100, 97, 116, 101, 100, 40, 105, 115, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 58, 32, 66, 111, 111, 108, 41, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 65, 32, 102, 105, 120, 101, 100, 45, 114, 97, 116, 101, 32, 102, 101, 101, 32, 99, 104, 97, 114, 103, 101, 100, 32, 116, 111, 32, 101, 120, 101, 99, 117, 116, 101, 32, 97, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 10, 32, 32, 32, 32, 112, 117, 98, 32, 118, 97, 114, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 58, 32, 85, 70, 105, 120, 54, 52, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 65, 32, 102, 105, 120, 101, 100, 45, 114, 97, 116, 101, 32, 102, 101, 101, 32, 99, 104, 97, 114, 103, 101, 100, 32, 116, 111, 32, 99, 114, 101, 97, 116, 101, 32, 97, 32, 110, 101, 119, 32, 97, 99, 99, 111, 117, 110, 116, 10, 32, 32, 32, 32, 112, 117, 98, 32, 118, 97, 114, 32, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 70, 101, 101, 58, 32, 85, 70, 105, 120, 54, 52, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 84, 104, 101, 32, 108, 105, 115, 116, 32, 111, 102, 32, 97, 99, 99, 111, 117, 110, 116, 32, 97, 100, 100, 114, 101, 115, 115, 101, 115, 32, 116, 104, 97, 116, 32, 104, 97, 118, 101, 32, 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, 32, 116, 111, 32, 99, 114, 101, 97, 116, 101, 32, 97, 99, 99, 111, 117, 110, 116, 115, 10, 32, 32, 32, 32, 97, 99, 99, 101, 115, 115, 40, 99, 111, 110, 116, 114, 97, 99, 116, 41, 32, 118, 97, 114, 32, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 115, 58, 32, 123, 65, 100, 100, 114, 101, 115, 115, 58, 32, 66, 111, 111, 108, 125, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 73, 110, 105, 116, 105, 97, 108, 105, 122, 101, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 119, 105, 116, 104, 32, 97, 32, 70, 108, 111, 119, 84, 111, 107, 101, 110, 32, 86, 97, 117, 108, 116, 32, 97, 110, 100, 32, 112, 117, 98, 108, 105, 115, 104, 32, 99, 97, 112, 97, 98, 105, 108, 105, 116, 105, 101, 115, 46, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 105, 110, 105, 116, 68, 101, 102, 97, 117, 108, 116, 84, 111, 107, 101, 110, 40, 95, 32, 97, 99, 99, 116, 58, 32, 65, 117, 116, 104, 65, 99, 99, 111, 117, 110, 116, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 67, 114, 101, 97, 116, 101, 32, 97, 32, 110, 101, 119, 32, 70, 108, 111, 119, 84, 111, 107, 101, 110, 32, 86, 97, 117, 108, 116, 32, 97, 110, 100, 32, 115, 97, 118, 101, 32, 105, 116, 32, 105, 110, 32, 115, 116, 111, 114, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 97, 99, 99, 116, 46, 115, 97, 118, 101, 40, 60, 45, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 86, 97, 117, 108, 116, 40, 41, 44, 32, 116, 111, 58, 32, 47, 115, 116, 111, 114, 97, 103, 101, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 86, 97, 117, 108, 116, 41, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 67, 114, 101, 97, 116, 101, 32, 97, 32, 112, 117, 98, 108, 105, 99, 32, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 32, 116, 111, 32, 116, 104, 101, 32, 86, 97, 117, 108, 116, 32, 116, 104, 97, 116, 32, 111, 110, 108, 121, 32, 101, 120, 112, 111, 115, 101, 115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 116, 104, 101, 32, 100, 101, 112, 111, 115, 105, 116, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 116, 104, 114, 111, 117, 103, 104, 32, 116, 104, 101, 32, 82, 101, 99, 101, 105, 118, 101, 114, 32, 105, 110, 116, 101, 114, 102, 97, 99, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 97, 99, 99, 116, 46, 108, 105, 110, 107, 60, 38, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 123, 70, 117, 110, 103, 105, 98, 108, 101, 84, 111, 107, 101, 110, 46, 82, 101, 99, 101, 105, 118, 101, 114, 125, 62, 40, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 112, 117, 98, 108, 105, 99, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 82, 101, 99, 101, 105, 118, 101, 114, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 58, 32, 47, 115, 116, 111, 114, 97, 103, 101, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 86, 97, 117, 108, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 41, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 67, 114, 101, 97, 116, 101, 32, 97, 32, 112, 117, 98, 108, 105, 99, 32, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 32, 116, 111, 32, 116, 104, 101, 32, 86, 97, 117, 108, 116, 32, 116, 104, 97, 116, 32, 111, 110, 108, 121, 32, 101, 120, 112, 111, 115, 101, 115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 116, 104, 101, 32, 98, 97, 108, 97, 110, 99, 101, 32, 102, 105, 101, 108, 100, 32, 116, 104, 114, 111, 117, 103, 104, 32, 116, 104, 101, 32, 66, 97, 108, 97, 110, 99, 101, 32, 105, 110, 116, 101, 114, 102, 97, 99, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 97, 99, 99, 116, 46, 108, 105, 110, 107, 60, 38, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 123, 70, 117, 110, 103, 105, 98, 108, 101, 84, 111, 107, 101, 110, 46, 66, 97, 108, 97, 110, 99, 101, 125, 62, 40, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 112, 117, 98, 108, 105, 99, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 66, 97, 108, 97, 110, 99, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 97, 114, 103, 101, 116, 58, 32, 47, 115, 116, 111, 114, 97, 103, 101, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 86, 97, 117, 108, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 41, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 71, 101, 116, 32, 116, 104, 101, 32, 100, 101, 102, 97, 117, 108, 116, 32, 116, 111, 107, 101, 110, 32, 98, 97, 108, 97, 110, 99, 101, 32, 111, 110, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 100, 101, 102, 97, 117, 108, 116, 84, 111, 107, 101, 110, 66, 97, 108, 97, 110, 99, 101, 40, 95, 32, 97, 99, 99, 116, 58, 32, 80, 117, 98, 108, 105, 99, 65, 99, 99, 111, 117, 110, 116, 41, 58, 32, 85, 70, 105, 120, 54, 52, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 98, 97, 108, 97, 110, 99, 101, 82, 101, 102, 32, 61, 32, 97, 99, 99, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 103, 101, 116, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 40, 47, 112, 117, 98, 108, 105, 99, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 66, 97, 108, 97, 110, 99, 101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 98, 111, 114, 114, 111, 119, 60, 38, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 123, 70, 117, 110, 103, 105, 98, 108, 101, 84, 111, 107, 101, 110, 46, 66, 97, 108, 97, 110, 99, 101, 125, 62, 40, 41, 33, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 98, 97, 108, 97, 110, 99, 101, 82, 101, 102, 46, 98, 97, 108, 97, 110, 99, 101, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 82, 101, 116, 117, 114, 110, 32, 97, 32, 114, 101, 102, 101, 114, 101, 110, 99, 101, 32, 116, 111, 32, 116, 104, 101, 32, 100, 101, 102, 97, 117, 108, 116, 32, 116, 111, 107, 101, 110, 32, 118, 97, 117, 108, 116, 32, 111, 110, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 100, 101, 102, 97, 117, 108, 116, 84, 111, 107, 101, 110, 86, 97, 117, 108, 116, 40, 95, 32, 97, 99, 99, 116, 58, 32, 65, 117, 116, 104, 65, 99, 99, 111, 117, 110, 116, 41, 58, 32, 38, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 97, 99, 99, 116, 46, 98, 111, 114, 114, 111, 119, 60, 38, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 62, 40, 102, 114, 111, 109, 58, 32, 47, 115, 116, 111, 114, 97, 103, 101, 47, 102, 108, 111, 119, 84, 111, 107, 101, 110, 86, 97, 117, 108, 116, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 63, 63, 32, 112, 97, 110, 105, 99, 40, 34, 85, 110, 97, 98, 108, 101, 32, 116, 111, 32, 98, 111, 114, 114, 111, 119, 32, 114, 101, 102, 101, 114, 101, 110, 99, 101, 32, 116, 111, 32, 116, 104, 101, 32, 100, 101, 102, 97, 117, 108, 116, 32, 116, 111, 107, 101, 110, 32, 118, 97, 117, 108, 116, 34, 41, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 67, 97, 108, 108, 101, 100, 32, 119, 104, 101, 110, 32, 97, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 32, 105, 115, 32, 115, 117, 98, 109, 105, 116, 116, 101, 100, 32, 116, 111, 32, 100, 101, 100, 117, 99, 116, 32, 116, 104, 101, 32, 102, 101, 101, 10, 32, 32, 32, 32, 47, 47, 47, 32, 102, 114, 111, 109, 32, 116, 104, 101, 32, 65, 117, 116, 104, 65, 99, 99, 111, 117, 110, 116, 32, 116, 104, 97, 116, 32, 115, 117, 98, 109, 105, 116, 116, 101, 100, 32, 105, 116, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 100, 101, 100, 117, 99, 116, 84, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 40, 95, 32, 97, 99, 99, 116, 58, 32, 65, 117, 116, 104, 65, 99, 99, 111, 117, 110, 116, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 115, 101, 108, 102, 46, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 32, 61, 61, 32, 85, 70, 105, 120, 54, 52, 40, 48, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 111, 107, 101, 110, 86, 97, 117, 108, 116, 32, 61, 32, 115, 101, 108, 102, 46, 100, 101, 102, 97, 117, 108, 116, 84, 111, 107, 101, 110, 86, 97, 117, 108, 116, 40, 97, 99, 99, 116, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 102, 101, 101, 86, 97, 117, 108, 116, 32, 60, 45, 32, 116, 111, 107, 101, 110, 86, 97, 117, 108, 116, 46, 119, 105, 116, 104, 100, 114, 97, 119, 40, 97, 109, 111, 117, 110, 116, 58, 32, 115, 101, 108, 102, 46, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 41, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 70, 101, 101, 115, 46, 100, 101, 112, 111, 115, 105, 116, 40, 102, 114, 111, 109, 58, 32, 60, 45, 102, 101, 101, 86, 97, 117, 108, 116, 41, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 45, 32, 68, 101, 100, 117, 99, 116, 115, 32, 116, 104, 101, 32, 97, 99, 99, 111, 117, 110, 116, 32, 99, 114, 101, 97, 116, 105, 111, 110, 32, 102, 101, 101, 32, 102, 114, 111, 109, 32, 97, 32, 112, 97, 121, 101, 114, 32, 97, 99, 99, 111, 117, 110, 116, 46, 10, 32, 32, 32, 32, 47, 47, 47, 32, 45, 32, 73, 110, 105, 116, 115, 32, 116, 104, 101, 32, 100, 101, 102, 97, 117, 108, 116, 32, 116, 111, 107, 101, 110, 46, 10, 32, 32, 32, 32, 47, 47, 47, 32, 45, 32, 73, 110, 105, 116, 115, 32, 97, 99, 99, 111, 117, 110, 116, 32, 115, 116, 111, 114, 97, 103, 101, 32, 99, 97, 112, 97, 99, 105, 116, 121, 46, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 115, 101, 116, 117, 112, 78, 101, 119, 65, 99, 99, 111, 117, 110, 116, 40, 110, 101, 119, 65, 99, 99, 111, 117, 110, 116, 58, 32, 65, 117, 116, 104, 65, 99, 99, 111, 117, 110, 116, 44, 32, 112, 97, 121, 101, 114, 58, 32, 65, 117, 116, 104, 65, 99, 99, 111, 117, 110, 116, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 33, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 105, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 40, 112, 97, 121, 101, 114, 46, 97, 100, 100, 114, 101, 115, 115, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, 110, 105, 99, 40, 34, 65, 99, 99, 111, 117, 110, 116, 32, 110, 111, 116, 32, 97, 117, 116, 104, 111, 114, 105, 122, 101, 100, 32, 116, 111, 32, 99, 114, 101, 97, 116, 101, 32, 97, 99, 99, 111, 117, 110, 116, 115, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 70, 101, 101, 32, 60, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, 110, 105, 99, 40, 34, 65, 99, 99, 111, 117, 110, 116, 32, 99, 114, 101, 97, 116, 105, 111, 110, 32, 102, 101, 101, 115, 32, 115, 101, 116, 117, 112, 32, 105, 110, 99, 111, 114, 114, 101, 99, 116, 108, 121, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 116, 111, 107, 101, 110, 86, 97, 117, 108, 116, 32, 61, 32, 115, 101, 108, 102, 46, 100, 101, 102, 97, 117, 108, 116, 84, 111, 107, 101, 110, 86, 97, 117, 108, 116, 40, 112, 97, 121, 101, 114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 102, 101, 101, 86, 97, 117, 108, 116, 32, 60, 45, 32, 116, 111, 107, 101, 110, 86, 97, 117, 108, 116, 46, 119, 105, 116, 104, 100, 114, 97, 119, 40, 97, 109, 111, 117, 110, 116, 58, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 70, 101, 101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 115, 116, 111, 114, 97, 103, 101, 70, 101, 101, 86, 97, 117, 108, 116, 32, 60, 45, 32, 40, 102, 101, 101, 86, 97, 117, 108, 116, 46, 119, 105, 116, 104, 100, 114, 97, 119, 40, 97, 109, 111, 117, 110, 116, 58, 32, 70, 108, 111, 119, 83, 116, 111, 114, 97, 103, 101, 70, 101, 101, 115, 46, 109, 105, 110, 105, 109, 117, 109, 83, 116, 111, 114, 97, 103, 101, 82, 101, 115, 101, 114, 118, 97, 116, 105, 111, 110, 41, 32, 97, 115, 33, 32, 64, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 86, 97, 117, 108, 116, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 70, 101, 101, 115, 46, 100, 101, 112, 111, 115, 105, 116, 40, 102, 114, 111, 109, 58, 32, 60, 45, 102, 101, 101, 86, 97, 117, 108, 116, 41, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 105, 110, 105, 116, 68, 101, 102, 97, 117, 108, 116, 84, 111, 107, 101, 110, 40, 110, 101, 119, 65, 99, 99, 111, 117, 110, 116, 41, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 118, 97, 117, 108, 116, 82, 101, 102, 32, 61, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 100, 101, 102, 97, 117, 108, 116, 84, 111, 107, 101, 110, 86, 97, 117, 108, 116, 40, 110, 101, 119, 65, 99, 99, 111, 117, 110, 116, 41, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 117, 108, 116, 82, 101, 102, 46, 100, 101, 112, 111, 115, 105, 116, 40, 102, 114, 111, 109, 58, 32, 60, 45, 115, 116, 111, 114, 97, 103, 101, 70, 101, 101, 86, 97, 117, 108, 116, 41, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 82, 101, 116, 117, 114, 110, 115, 32, 116, 114, 117, 101, 32, 105, 102, 32, 116, 104, 101, 32, 103, 105, 118, 101, 110, 32, 97, 100, 100, 114, 101, 115, 115, 32, 105, 115, 32, 112, 101, 114, 109, 105, 116, 116, 101, 100, 32, 116, 111, 32, 99, 114, 101, 97, 116, 101, 32, 97, 99, 99, 111, 117, 110, 116, 115, 44, 32, 102, 97, 108, 115, 101, 32, 111, 116, 104, 101, 114, 119, 105, 115, 101, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 105, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 40, 95, 32, 97, 100, 100, 114, 101, 115, 115, 58, 32, 65, 100, 100, 114, 101, 115, 115, 41, 58, 32, 66, 111, 111, 108, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 73, 102, 32, 97, 99, 99, 111, 117, 110, 116, 32, 99, 114, 101, 97, 116, 105, 111, 110, 32, 105, 115, 32, 110, 111, 116, 32, 114, 101, 115, 116, 114, 105, 99, 116, 101, 100, 44, 32, 116, 104, 101, 110, 32, 97, 110, 121, 111, 110, 101, 32, 99, 97, 110, 32, 99, 114, 101, 97, 116, 101, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 33, 115, 101, 108, 102, 46, 105, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 116, 114, 117, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 115, 91, 97, 100, 100, 114, 101, 115, 115, 93, 32, 63, 63, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 73, 115, 32, 116, 114, 117, 101, 32, 105, 102, 32, 110, 101, 119, 32, 97, 99, 99, 111, 110, 116, 115, 32, 99, 97, 110, 32, 111, 110, 108, 121, 32, 98, 101, 32, 99, 114, 101, 97, 116, 101, 100, 32, 98, 121, 32, 97, 112, 112, 114, 111, 118, 101, 100, 32, 97, 99, 99, 111, 117, 110, 116, 115, 32, 96, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 115, 96, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 105, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 40, 41, 58, 32, 66, 111, 111, 108, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 46, 99, 111, 112, 121, 60, 66, 111, 111, 108, 62, 40, 102, 114, 111, 109, 58, 32, 47, 115, 116, 111, 114, 97, 103, 101, 47, 105, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 41, 32, 63, 63, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 32, 65, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 32, 114, 101, 115, 111, 117, 114, 99, 101, 32, 116, 111, 32, 99, 104, 97, 110, 103, 101, 32, 116, 104, 101, 32, 102, 105, 101, 108, 100, 115, 32, 111, 102, 32, 116, 104, 101, 32, 99, 111, 110, 116, 114, 97, 99, 116, 10, 32, 32, 32, 32, 47, 47, 47, 32, 82, 101, 116, 117, 114, 110, 115, 32, 97, 108, 108, 32, 97, 100, 100, 114, 101, 115, 115, 101, 115, 32, 112, 101, 114, 109, 105, 116, 116, 101, 100, 32, 116, 111, 32, 99, 114, 101, 97, 116, 101, 32, 97, 99, 99, 111, 117, 110, 116, 115, 10, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 103, 101, 116, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 115, 40, 41, 58, 32, 91, 65, 100, 100, 114, 101, 115, 115, 93, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 115, 46, 107, 101, 121, 115, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 47, 47, 32, 65, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 32, 114, 101, 115, 111, 117, 114, 99, 101, 32, 116, 111, 32, 99, 104, 97, 110, 103, 101, 32, 116, 104, 101, 32, 102, 105, 101, 108, 100, 115, 32, 111, 102, 32, 116, 104, 101, 32, 99, 111, 110, 116, 114, 97, 99, 116, 10, 32, 32, 32, 32, 112, 117, 98, 32, 114, 101, 115, 111, 117, 114, 99, 101, 32, 65, 100, 109, 105, 110, 105, 115, 116, 114, 97, 116, 111, 114, 32, 123, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 47, 32, 83, 101, 116, 115, 32, 116, 104, 101, 32, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 32, 102, 101, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 115, 101, 116, 84, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 40, 95, 32, 110, 101, 119, 70, 101, 101, 58, 32, 85, 70, 105, 120, 54, 52, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 32, 61, 32, 110, 101, 119, 70, 101, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 109, 105, 116, 32, 84, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 85, 112, 100, 97, 116, 101, 100, 40, 110, 101, 119, 70, 101, 101, 58, 32, 110, 101, 119, 70, 101, 101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 47, 32, 83, 101, 116, 115, 32, 116, 104, 101, 32, 97, 99, 99, 111, 117, 110, 116, 32, 99, 114, 101, 97, 116, 105, 111, 110, 32, 102, 101, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 115, 101, 116, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 70, 101, 101, 40, 95, 32, 110, 101, 119, 70, 101, 101, 58, 32, 85, 70, 105, 120, 54, 52, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 70, 101, 101, 32, 61, 32, 110, 101, 119, 70, 101, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 109, 105, 116, 32, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 70, 101, 101, 85, 112, 100, 97, 116, 101, 100, 40, 110, 101, 119, 70, 101, 101, 58, 32, 110, 101, 119, 70, 101, 101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 47, 32, 65, 100, 100, 115, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 97, 100, 100, 114, 101, 115, 115, 32, 97, 115, 32, 97, 110, 32, 97, 117, 116, 104, 111, 114, 105, 122, 101, 100, 32, 97, 99, 99, 111, 117, 110, 116, 32, 99, 114, 101, 97, 116, 111, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 97, 100, 100, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 40, 95, 32, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 58, 32, 65, 100, 100, 114, 101, 115, 115, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 115, 91, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 93, 32, 61, 32, 116, 114, 117, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 109, 105, 116, 32, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 65, 100, 100, 101, 100, 40, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 58, 32, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 47, 32, 82, 101, 109, 111, 118, 101, 115, 32, 97, 110, 32, 97, 99, 99, 111, 117, 110, 116, 32, 97, 100, 100, 114, 101, 115, 115, 32, 97, 115, 32, 97, 110, 32, 97, 117, 116, 104, 111, 114, 105, 122, 101, 100, 32, 97, 99, 99, 111, 117, 110, 116, 32, 99, 114, 101, 97, 116, 111, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 114, 101, 109, 111, 118, 101, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 40, 95, 32, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 58, 32, 65, 100, 100, 114, 101, 115, 115, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 115, 46, 114, 101, 109, 111, 118, 101, 40, 107, 101, 121, 58, 32, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 109, 105, 116, 32, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 82, 101, 109, 111, 118, 101, 100, 40, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 58, 32, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 112, 117, 98, 32, 102, 117, 110, 32, 115, 101, 116, 73, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 40, 95, 32, 101, 110, 97, 98, 108, 101, 100, 58, 32, 66, 111, 111, 108, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 112, 97, 116, 104, 32, 61, 32, 47, 115, 116, 111, 114, 97, 103, 101, 47, 105, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 111, 108, 100, 86, 97, 108, 117, 101, 32, 61, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 97, 99, 99, 111, 117, 110, 116, 46, 108, 111, 97, 100, 60, 66, 111, 111, 108, 62, 40, 102, 114, 111, 109, 58, 32, 112, 97, 116, 104, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 99, 99, 111, 117, 110, 116, 46, 97, 99, 99, 111, 117, 110, 116, 46, 115, 97, 118, 101, 60, 66, 111, 111, 108, 62, 40, 101, 110, 97, 98, 108, 101, 100, 44, 32, 116, 111, 58, 32, 112, 97, 116, 104, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 101, 110, 97, 98, 108, 101, 100, 32, 33, 61, 32, 111, 108, 100, 86, 97, 108, 117, 101, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 109, 105, 116, 32, 73, 115, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 85, 112, 100, 97, 116, 101, 100, 40, 105, 115, 82, 101, 115, 116, 114, 105, 99, 116, 101, 100, 58, 32, 101, 110, 97, 98, 108, 101, 100, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 105, 110, 105, 116, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 108, 102, 46, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 70, 101, 101, 32, 61, 32, 48, 46, 48, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 105, 111, 110, 70, 101, 101, 32, 61, 32, 48, 46, 48, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 115, 32, 61, 32, 123, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 108, 101, 116, 32, 97, 100, 109, 105, 110, 32, 60, 45, 32, 99, 114, 101, 97, 116, 101, 32, 65, 100, 109, 105, 110, 105, 115, 116, 114, 97, 116, 111, 114, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 97, 100, 109, 105, 110, 46, 97, 100, 100, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 111, 114, 40, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 46, 97, 100, 100, 114, 101, 115, 115, 41, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 108, 102, 46, 97, 99, 99, 111, 117, 110, 116, 46, 115, 97, 118, 101, 40, 60, 45, 97, 100, 109, 105, 110, 44, 32, 116, 111, 58, 32, 47, 115, 116, 111, 114, 97, 103, 101, 47, 102, 108, 111, 119, 83, 101, 114, 118, 105, 99, 101, 65, 100, 109, 105, 110, 41, 10, 32, 32, 32, 32, 125, 10, 125, 10]} }) }

Get Transactions

Retrieve transactions from the network by providing a transaction ID. After a transaction has been submitted, you can also get the transaction result to check the status.

📖 Transaction ID is a hash of the encoded transaction payload and can be calculated before submitting the transaction to the network.

⚠️ The transaction ID provided must be from the current spork.

📖 Transaction status represents the state of transaction in the blockchain. Status can change until is finalized.

Status Final Description
UNKNOWN The transaction has not yet been seen by the network
PENDING The transaction has not yet been included in a block
FINALIZED The transaction has been included in a block
EXECUTED The transaction has been executed but the result has not yet been sealed
SEALED The transaction has been executed and the result is sealed in a block
EXPIRED The transaction reference block is outdated before being executed
use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;

    let get_account_response = connection.get_transaction_result(hex::decode("1c1b1e76b591f78d27a2dc5f78bb8dbebccca587c068925924b36334ae1c2b4a")?).await?;

    println!("{:?}", get_account_response);
    Ok(())
}

Example output from a create_account transaction:

flow-rust-sdk-example % cargo run
   Compiling flow-rust-sdk-example v1.2.0 (/Users/marshallbelles/flow-rust-sdk-example)
    Finished dev [unoptimized + debuginfo] target(s) in 1.58s
     Running `target/debug/flow-rust-sdk-example`
TransactionResultResponse { status: Sealed, status_code: 0, error_message: "", events: [Event { r#type: "A.0ae53cb6e3f42a79.FlowToken.TokensWithdrawn", transaction_id: [28, 27, 30, 118, 181, 145, 247, 141, 39, 162, 220, 95, 120, 187, 141, 190, 188, 204, 165, 135, 192, 104, 146, 89, 36, 179, 99, 52, 174, 28, 43, 74], transaction_index: 1, event_index: 0, payload: [123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 118, 101, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 105, 100, 34, 58, 34, 65, 46, 48, 97, 101, 53, 51, 99, 98, 54, 101, 51, 102, 52, 50, 97, 55, 57, 46, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 84, 111, 107, 101, 110, 115, 87, 105, 116, 104, 100, 114, 97, 119, 110, 34, 44, 34, 102, 105, 101, 108, 100, 115, 34, 58, 91, 123, 34, 110, 97, 109, 101, 34, 58, 34, 97, 109, 111, 117, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 70, 105, 120, 54, 52, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 46, 48, 48, 49, 48, 48, 48, 48, 48, 34, 125, 125, 44, 123, 34, 110, 97, 109, 101, 34, 58, 34, 102, 114, 111, 109, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 79, 112, 116, 105, 111, 110, 97, 108, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 65, 100, 100, 114, 101, 115, 115, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 120, 102, 56, 100, 54, 101, 48, 53, 56, 54, 98, 48, 97, 50, 48, 99, 55, 34, 125, 125, 125, 93, 125, 125, 10] }, Event { r#type: "A.0ae53cb6e3f42a79.FlowToken.TokensWithdrawn", transaction_id: [28, 27, 30, 118, 181, 145, 247, 141, 39, 162, 220, 95, 120, 187, 141, 190, 188, 204, 165, 135, 192, 104, 146, 89, 36, 179, 99, 52, 174, 28, 43, 74], transaction_index: 1, event_index: 1, payload: [123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 118, 101, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 105, 100, 34, 58, 34, 65, 46, 48, 97, 101, 53, 51, 99, 98, 54, 101, 51, 102, 52, 50, 97, 55, 57, 46, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 84, 111, 107, 101, 110, 115, 87, 105, 116, 104, 100, 114, 97, 119, 110, 34, 44, 34, 102, 105, 101, 108, 100, 115, 34, 58, 91, 123, 34, 110, 97, 109, 101, 34, 58, 34, 97, 109, 111, 117, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 70, 105, 120, 54, 52, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 46, 48, 48, 49, 48, 48, 48, 48, 48, 34, 125, 125, 44, 123, 34, 110, 97, 109, 101, 34, 58, 34, 102, 114, 111, 109, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 79, 112, 116, 105, 111, 110, 97, 108, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 110, 117, 108, 108, 125, 125, 93, 125, 125, 10] }, Event { r#type: "A.0ae53cb6e3f42a79.FlowToken.TokensDeposited", transaction_id: [28, 27, 30, 118, 181, 145, 247, 141, 39, 162, 220, 95, 120, 187, 141, 190, 188, 204, 165, 135, 192, 104, 146, 89, 36, 179, 99, 52, 174, 28, 43, 74], transaction_index: 1, event_index: 2, payload: [123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 118, 101, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 105, 100, 34, 58, 34, 65, 46, 48, 97, 101, 53, 51, 99, 98, 54, 101, 51, 102, 52, 50, 97, 55, 57, 46, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 84, 111, 107, 101, 110, 115, 68, 101, 112, 111, 115, 105, 116, 101, 100, 34, 44, 34, 102, 105, 101, 108, 100, 115, 34, 58, 91, 123, 34, 110, 97, 109, 101, 34, 58, 34, 97, 109, 111, 117, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 70, 105, 120, 54, 52, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 46, 48, 48, 48, 48, 48, 48, 48, 48, 34, 125, 125, 44, 123, 34, 110, 97, 109, 101, 34, 58, 34, 116, 111, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 79, 112, 116, 105, 111, 110, 97, 108, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 65, 100, 100, 114, 101, 115, 115, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 120, 101, 53, 97, 56, 98, 55, 102, 50, 51, 101, 56, 98, 53, 52, 56, 102, 34, 125, 125, 125, 93, 125, 125, 10] }, Event { r#type: "A.e5a8b7f23e8b548f.FlowFees.TokensDeposited", transaction_id: [28, 27, 30, 118, 181, 145, 247, 141, 39, 162, 220, 95, 120, 187, 141, 190, 188, 204, 165, 135, 192, 104, 146, 89, 36, 179, 99, 52, 174, 28, 43, 74], transaction_index: 1, event_index: 3, payload: [123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 118, 101, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 105, 100, 34, 58, 34, 65, 46, 101, 53, 97, 56, 98, 55, 102, 50, 51, 101, 56, 98, 53, 52, 56, 102, 46, 70, 108, 111, 119, 70, 101, 101, 115, 46, 84, 111, 107, 101, 110, 115, 68, 101, 112, 111, 115, 105, 116, 101, 100, 34, 44, 34, 102, 105, 101, 108, 100, 115, 34, 58, 91, 123, 34, 110, 97, 109, 101, 34, 58, 34, 97, 109, 111, 117, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 70, 105, 120, 54, 52, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 46, 48, 48, 48, 48, 48, 48, 48, 48, 34, 125, 125, 93, 125, 125, 10] }, Event { r#type: "A.0ae53cb6e3f42a79.FlowToken.TokensDeposited", transaction_id: [28, 27, 30, 118, 181, 145, 247, 141, 39, 162, 220, 95, 120, 187, 141, 190, 188, 204, 165, 135, 192, 104, 146, 89, 36, 179, 99, 52, 174, 28, 43, 74], transaction_index: 1, event_index: 4, payload: [123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 118, 101, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 105, 100, 34, 58, 34, 65, 46, 48, 97, 101, 53, 51, 99, 98, 54, 101, 51, 102, 52, 50, 97, 55, 57, 46, 70, 108, 111, 119, 84, 111, 107, 101, 110, 46, 84, 111, 107, 101, 110, 115, 68, 101, 112, 111, 115, 105, 116, 101, 100, 34, 44, 34, 102, 105, 101, 108, 100, 115, 34, 58, 91, 123, 34, 110, 97, 109, 101, 34, 58, 34, 97, 109, 111, 117, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 70, 105, 120, 54, 52, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 46, 48, 48, 49, 48, 48, 48, 48, 48, 34, 125, 125, 44, 123, 34, 110, 97, 109, 101, 34, 58, 34, 116, 111, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 79, 112, 116, 105, 111, 110, 97, 108, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 65, 100, 100, 114, 101, 115, 115, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 120, 48, 49, 99, 102, 48, 101, 50, 102, 50, 102, 55, 49, 53, 52, 53, 48, 34, 125, 125, 125, 93, 125, 125, 10] }, Event { r#type: "flow.AccountCreated", transaction_id: [28, 27, 30, 118, 181, 145, 247, 141, 39, 162, 220, 95, 120, 187, 141, 190, 188, 204, 165, 135, 192, 104, 146, 89, 36, 179, 99, 52, 174, 28, 43, 74], transaction_index: 1, event_index: 5, payload: [123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 118, 101, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 105, 100, 34, 58, 34, 102, 108, 111, 119, 46, 65, 99, 99, 111, 117, 110, 116, 67, 114, 101, 97, 116, 101, 100, 34, 44, 34, 102, 105, 101, 108, 100, 115, 34, 58, 91, 123, 34, 110, 97, 109, 101, 34, 58, 34, 97, 100, 100, 114, 101, 115, 115, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 65, 100, 100, 114, 101, 115, 115, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 120, 48, 49, 99, 102, 48, 101, 50, 102, 50, 102, 55, 49, 53, 52, 53, 48, 34, 125, 125, 93, 125, 125, 10] }, Event { r#type: "flow.AccountKeyAdded", transaction_id: [28, 27, 30, 118, 181, 145, 247, 141, 39, 162, 220, 95, 120, 187, 141, 190, 188, 204, 165, 135, 192, 104, 146, 89, 36, 179, 99, 52, 174, 28, 43, 74], transaction_index: 1, event_index: 6, payload: [123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 118, 101, 110, 116, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 105, 100, 34, 58, 34, 102, 108, 111, 119, 46, 65, 99, 99, 111, 117, 110, 116, 75, 101, 121, 65, 100, 100, 101, 100, 34, 44, 34, 102, 105, 101, 108, 100, 115, 34, 58, 91, 123, 34, 110, 97, 109, 101, 34, 58, 34, 97, 100, 100, 114, 101, 115, 115, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 65, 100, 100, 114, 101, 115, 115, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 48, 120, 48, 49, 99, 102, 48, 101, 50, 102, 50, 102, 55, 49, 53, 52, 53, 48, 34, 125, 125, 44, 123, 34, 110, 97, 109, 101, 34, 58, 34, 112, 117, 98, 108, 105, 99, 75, 101, 121, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 65, 114, 114, 97, 121, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 91, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 52, 56, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 55, 49, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 56, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 54, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 51, 57, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 54, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 52, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 52, 49, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 50, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 57, 54, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 52, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 49, 51, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 53, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 53, 49, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 50, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 50, 56, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 48, 55, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 56, 55, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 48, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 49, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 54, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 56, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 52, 57, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 56, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 53, 55, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 48, 53, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 50, 53, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 51, 54, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 50, 53, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 51, 49, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 49, 54, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 54, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 57, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 53, 52, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 52, 55, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 51, 55, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 53, 53, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 54, 51, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 50, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 48, 57, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 56, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 54, 49, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 56, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 56, 57, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 51, 57, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 53, 51, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 50, 55, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 54, 55, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 55, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 56, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 54, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 52, 55, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 54, 51, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 54, 54, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 52, 57, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 56, 54, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 57, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 53, 51, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 57, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 57, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 51, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 49, 51, 48, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 51, 34, 125, 44, 123, 34, 116, 121, 112, 101, 34, 58, 34, 85, 73, 110, 116, 56, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 50, 51, 50, 34, 125, 93, 125, 125, 93, 125, 125, 10] }] }

Get Events

Retrieve events by a given type in a specified block height range or through a list of block IDs.

📖 Event type is a string that follow a standard format:

A.{contract address}.{contract name}.{event name}

Please read more about events in the documentation. The exception to this standard are core events, and you should read more about them in this document.

📖 Block height range expresses the height of the start and end block in the chain.

Examples

Example depicts ways to get events within block range or by block IDs:

use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;

    let current_block = connection.get_block(None, None, None).await?.block.unwrap();
    let get_event_response = connection.get_events_for_block_ids("A.f8d6e0586b0a20c7.FlowToken.TokensDeposited", vec![current_block.id]).await?;

    println!("{:?}", get_event_response);
    Ok(())
}

Example output:

flow-rust-sdk-example % cargo run
   Compiling flow-rust-sdk-example v1.2.0 (/Users/marshallbelles/flow-rust-sdk-example)
    Finished dev [unoptimized + debuginfo] target(s) in 1.47s
     Running `target/debug/flow-rust-sdk-example`
EventsResponse { results: [Result { block_id: [25, 92, 87, 52, 96, 192, 159, 157, 155, 244, 220, 159, 178, 103, 175, 38, 142, 36, 116, 247, 15, 253, 9, 118, 241, 192, 52, 177, 107, 214, 5, 239], block_height: 1, events: [], block_timestamp: Some(Timestamp { seconds: 1635528675, nanos: 264376000 }) }] }

Get Collections

Retrieve a batch of transactions that have been included in the same block, known as collections. Collections are used to improve consensus throughput by increasing the number of transactions per block and they act as a link between a block and a transaction.

📖 Collection ID is SHA3-256 hash of the collection payload.

Example retrieving a collection:

use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;

    let get_event_response = connection.get_collection(hex::decode("COLLECTION_HEX_ENCODED_ID")?).await?;

    println!("{:?}", get_event_response);
    Ok(())
}

Execute Scripts

Scripts allow you to write arbitrary non-mutating Cadence code on the Flow blockchain and return data. You can learn more about Cadence and scripts here.

We can execute a script using the latest state of the Flow blockchain or we can choose to execute the script at a specific time in history defined by a block height or block ID.

📖 Block ID is SHA3-256 hash of the entire block payload, but you can get that value from the block response properties.

📖 Block height expresses the height of the block in the chain.

use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;

    // Simple script with one argument
    let script = b"
        pub fun main(a: Int64): Int64 {
            return a + 10
        }
    ";

    let arg1 = Argument::int64(5).encode();
    let script_execution_result = connection.execute_script(script.to_vec(), vec![arg1], None, None).await?;

    println!("{:?}", from_slice::<Value>(&script_execution_result.value)?);
    Ok(())
}

Example output:

flow-rust-sdk-example % cargo run
   Compiling flow-rust-sdk-example v1.2.0 (/Users/marshallbelles/flow-rust-sdk-example)
    Finished dev [unoptimized + debuginfo] target(s) in 1.29s
     Running `target/debug/flow-rust-sdk-example`
Object({"type": String("Int64"), "value": String("15")})

More complex example:

use flow_rust_sdk::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut connection = FlowConnection::new("grpc://localhost:3569").await?;

    // complex script
    let script = b"
    pub struct User {
            pub var balance: UFix64
            pub var address: Address
            pub var name: String

            init(name: String, address: Address, balance: UFix64) {
                self.name = name
                self.address = address
                self.balance = balance
            }
        }

        pub fun main(name: String): User {
            return User(
                name: name,
                address: 0x1,
                balance: 10.0
            )
        }
    ";

    let arg1 = Argument::str("my name").encode_str();
    let script_execution_result = connection
        .execute_script(script.to_vec(), vec![arg1], None, None)
        .await?;

    println!("{:?}", from_slice::<Value>(&script_execution_result.value)?);
    Ok(())
}

Example output:

flow-rust-sdk-example % cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.11s
     Running `target/debug/flow-rust-sdk-example`
Object({"type": String("Struct"), "value": Object({"fields": Array([Object({"name": String("balance"), "value": Object({"type": String("UFix64"), "value": String("10.00000000")})}), Object({"name": String("address"), "value": Object({"type": String("Address"), "value": String("0x0000000000000001")})}), Object({"name": String("name"), "value": Object({"type": String("String"), "value": String("my name")})})]), "id": String("s.54a919087a668e0c201ef7ac4a37d080207114b50de2fa9736752934bd2f97b6.User")})})

Mutate Flow Network

Flow, like most blockchains, allows anybody to submit a transaction that mutates the shared global chain state. A transaction is an object that holds a payload, which describes the state mutation, and one or more authorizations that permit the transaction to mutate the state owned by specific accounts.

Transaction data is composed and signed with help of the SDK. The signed payload of transaction then gets submitted to the access node API. If a transaction is invalid or the correct number of authorizing signatures are not provided, it gets rejected.

Executing a transaction requires couple of steps:

Transactions

A transaction is nothing more than a signed set of data that includes script code which are instructions on how to mutate the network state and properties that define and limit it's execution. All these properties are explained bellow.

📖 Script field is the portion of the transaction that describes the state mutation logic. On Flow, transaction logic is written in Cadence. Here is an example transaction script:

transaction(greeting: String) {
  execute {
    log(greeting.concat(", World!"))
  }
}

📖 Arguments. A transaction can accept zero or more arguments that are passed into the Cadence script. The arguments on the transaction must match the number and order declared in the Cadence script. Sample script from above accepts a single String argument.

📖 Proposal key must be provided to act as a sequence number and prevent reply and other potential attacks.

Each account key maintains a separate transaction sequence counter; the key that lends its sequence number to a transaction is called the proposal key.

A proposal key contains three fields:

  • Account address
  • Key index
  • Sequence number

A transaction is only valid if its declared sequence number matches the current on-chain sequence number for that key. The sequence number increments by one after the transaction is executed.

📖 Payer is the account that pays the fees for the transaction. A transaction must specify exactly one payer. The payer is only responsible for paying the network and gas fees; the transaction is not authorized to access resources or code stored in the payer account.

📖 Authorizers are accounts that authorize a transaction to read and mutate their resources. A transaction can specify zero or more authorizers, depending on how many accounts the transaction needs to access.

The number of authorizers on the transaction must match the number of AuthAccount parameters declared in the prepare statement of the Cadence script.

Example transaction with multiple authorizers:

transaction {
  prepare(authorizer1: AuthAccount, authorizer2: AuthAccount) { }
}

📖 Gas limit is the limit on the amount of computation a transaction requires, and it will abort if it exceeds its gas limit. Cadence uses metering to measure the number of operations per transaction. You can read more about it in the Cadence documentation.

The gas limit depends on the complexity of the transaction script. Until dedicated gas estimation tooling exists, it's best to use the emulator to test complex transactions and determine a safe limit.

📖 Reference block specifies an expiration window (measured in blocks) during which a transaction is considered valid by the network. A transaction will be rejected if it is submitted past its expiry block. Flow calculates transaction expiry using the reference block field on a transaction. A transaction expires after 600 blocks are committed on top of the reference block, which takes about 10 minutes at average Mainnet block rates.

Build Transactions

Building a transaction involves setting the required properties explained above and producing a transaction object.

Here we define a simple transaction script that will be used to execute on the network and serve as a good learning example.

transaction(greeting: String) {

  let guest: Address

  prepare(authorizer: AuthAccount) {
    self.guest = authorizer.address
  }

  execute {
    log(greeting.concat(",").concat(guest.toString()))
  }
}
    // we need to know who is paying for the transaction, along with their signing key
    let payer = "f8d6e0586b0a20c7";
    let payer_private_key = "324db577a741a9b7a2eb6cef4e37e72ff01a554bdbe4bd77ef9afe1cb00d3cec";
    let payer_private_key_id = 0;
    let account: flow::Account = connection.get_account(payer).await?.account.unwrap();
    let proposer = flow::TransactionProposalKey {
        address: hex::decode(payer).unwrap(),
        key_id: payer_private_key_id,
        sequence_number: account.keys[payer_private_key_id as usize].sequence_number as u64,
    };

    let transaction = b"
    transaction(greeting: String) {

        let guest: Address
      
        prepare(authorizer: AuthAccount) {
          self.guest = authorizer.address
        }
      
        execute {
          log(greeting.concat(\",\").concat(guest.toString()))
        }
      }
    ";

    let latest_block = connection.get_block(None, None, None).await?.block.unwrap();
    let arg1 = Argument::str("hello world!").encode_str();
    let built_transaction = build_transaction(transaction.to_vec(), vec![arg1], latest_block.id, 9999, proposer, vec![payer.to_owned()], payer.to_owned()).await?;

Sign Transactions

Flow introduces new concepts that allow for more flexibility when creating and signing transactions. Before trying the examples below, we recommend that you read through the transaction signature documentation.

After you have successfully built a transaction the next step in the process is to sign it. Flow transactions have envelope and payload signatures, and you should learn about them in the signature documentation.

Signatures can be generated more securely using keys stored in a hardware device such as an HSM. The crypto.Signer interface is intended to be flexible enough to support a variety of signer implementations and is not limited to in-memory implementations.

Simple signature example:

    let signature = Sign {
        address: payer.to_owned(),
        key_id: payer_private_key_id,
        private_key: payer_private_key.to_owned(),
    };
    // here we place the signature within the Vector that is passed for the envelope signatures.
    let signed_transaction = sign_transaction(built_transaction, vec![], vec![&signature]).await?;

Flow supports great flexibility when it comes to transaction signing. We can define multiple authorizers (multi-sig transactions) and even choose who will pay for the transaction. We will explore advanced signing scenarios bellow.

  • Proposer, payer and authorizer are the same account (0x01).
  • Only the envelope must be signed.
  • Proposal key must have full signing weight.
Account Key ID Weight
0x01 1 1.0
    let signature = Sign {
        address: "01".to_owned(), // don't pass in the 0x prefix
        key_id: 1,
        private_key: "324db577a741a9b7a2eb6cef4e37e72ff01a554bdbe4bd77ef9afe1cb00d3cec".to_owned(),
    };
    // here we place the signature within the Vector that is passed for the envelope signatures.
    let signed_transaction = sign_transaction(built_transaction, vec![], vec![&signature]).await?;
  • Proposer, payer and authorizer are the same account (0x01).
  • Only the envelope must be signed.
  • Each key has weight 0.5, so two signatures are required.
Account Key ID Weight
0x01 1 0.5
0x01 2 0.5
    let signature1 = Sign {
        address: "01".to_owned(),
        key_id: 1,
        private_key: "324db577a741a9b7a2eb6cef4e37e72ff01a554bdbe4bd77ef9afe1cb00d3cec".to_owned(),
    };
    let signature2 = Sign {
        address: "01".to_owned(),
        key_id: 2,
        private_key: "e408a21f73615f2a312c936818c50ff2225c16d772dbe0bd2b867ae40d9b5f0f".to_owned(),
    };
    // here we place both signatures within the Vector that is passed for the envelope signatures.
    let signed_transaction = sign_transaction(built_transaction, vec![], vec![&signature1, &signature2]).await?;
  • Proposer and authorizer are the same account (0x01).
  • Payer is a separate account (0x02).
  • Account 0x01 signs the payload.
  • Account 0x02 signs the envelope.
    • Account 0x02 must sign last since it is the payer.
Account Key ID Weight
0x01 1 1.0
0x02 3 1.0
    let signature1 = Sign {
        address: "01".to_owned(),
        key_id: 1,
        private_key: "324db577a741a9b7a2eb6cef4e37e72ff01a554bdbe4bd77ef9afe1cb00d3cec".to_owned(),
    };
    let signature2 = Sign {
        address: "02".to_owned(),
        key_id: 3,
        private_key: "d48276bee1a95dd0e217dc22ac1338a694bfc5543fb202c1d8deecffd0f86282".to_owned(),
    };
    // here we place both signatures within the Vector that is passed for the envelope signatures.
    let signed_transaction = sign_transaction(built_transaction, vec![], vec![&signature1, &signature2]).await?;
  • Proposer and authorizer are the same account (0x01).
  • Payer is a separate account (0x02).
  • Account 0x01 signs the payload.
  • Account 0x02 signs the envelope.
    • Account 0x02 must sign last since it is the payer.
  • Account 0x02 is also an authorizer to show how to include two AuthAccounts into an transaction
Account Key ID Weight
0x01 1 1.0
0x02 3 1.0
// In this more complicated example, we will need to specify both keys as authorizers when building the transaction
let built_transaction = build_transaction(transaction.to_vec(), vec![], latest_block.id, 9999, proposer, vec!["01".to_owned(), "02".to_owned()], payer.to_owned()).await?;

// then the signing part is actually simple
    let signature1 = Sign {
        address: "01".to_owned(),
        key_id: 1,
        private_key: "324db577a741a9b7a2eb6cef4e37e72ff01a554bdbe4bd77ef9afe1cb00d3cec".to_owned(),
    };
    let signature2 = Sign {
        address: "02".to_owned(),
        key_id: 3,
        private_key: "d48276bee1a95dd0e217dc22ac1338a694bfc5543fb202c1d8deecffd0f86282".to_owned(),
    };
    let signed_transaction = sign_transaction(built_transaction, vec![&signature1], vec![&signature2]).await?;
  • Proposer and authorizer are the same account (0x01).
  • Payer is a separate account (0x02).
  • Account 0x01 signs the payload.
  • Account 0x02 signs the envelope.
    • Account 0x02 must sign last since it is the payer.
  • Both accounts must sign twice (once with each of their keys).
Account Key ID Weight
0x01 1 0.5
0x01 2 0.5
0x02 3 0.5
0x02 4 0.5
    let key1sig = Sign {
        address: "01".to_owned(),
        key_id: 1,
        private_key: "324db577a741a9b7a2eb6cef4e37e72ff01a554bdbe4bd77ef9afe1cb00d3cec".to_owned(),
    };
    let key2sig = Sign {
        address: "01".to_owned(),
        key_id: 2,
        private_key: "e408a21f73615f2a312c936818c50ff2225c16d772dbe0bd2b867ae40d9b5f0f".to_owned(),
    };
    let key3sig = Sign {
        address: "02".to_owned(),
        key_id: 3,
        private_key: "d48276bee1a95dd0e217dc22ac1338a694bfc5543fb202c1d8deecffd0f86282".to_owned(),
    };
    let key4sig = Sign {
        address: "02".to_owned(),
        key_id: 4,
        private_key: "38eb2ded396c557affdcca9596bcf7e8643dcc433157acdee93357c7be7693ae".to_owned(),
    };

    let signed_transaction = sign_transaction(built_transaction, vec![&key1sig, &key2sig], vec![&key3sig, &key4sig]).await?;

Send Transactions

After a transaction has been built and signed, it can be sent to the Flow blockchain where it will be executed. If sending was successful you can then retrieve the transaction result.

    let transaction_response = connection.send_transaction(signed_transaction).await?;

Create Accounts

On Flow, account creation happens inside a transaction. Because the network allows for a many-to-many relationship between public keys and accounts, it's not possible to derive a new account address from a public key offline.

The Flow VM uses a deterministic address generation algorithm to assigen account addresses on chain. You can find more details about address generation in the accounts & keys documentation.

Public Key

Flow uses ECDSA key pairs to control access to user accounts. Each key pair can be used in combination with the SHA2-256 or SHA3-256 hashing algorithms.

⚠️ You'll need to authorize at least one public key to control your new account.

⚠️ The Flow-Rust-SDK ONLY supports the SHA3-256 hashing algorithm.

Flow represents ECDSA public keys in raw form without additional metadata. Each key is a single byte slice containing a concatenation of its X and Y components in big-endian byte form.

A Flow account can contain zero (not possible to control) or more public keys, referred to as account keys. Read more about accounts in the documentation.

An account key contains the following data:

  • Raw public key (described above)
  • Signature algorithm
  • Hash algorithm
  • Weight (integer between 0-1000)

Account creation happens inside a transaction, which means that somebody must pay to submit that transaction to the network. We'll call this person the account creator. Make sure you have read sending a transaction section first.

    let result = connection.create_account(public_keys, payer, payer_private_key, payer_private_key_id).await?;

Full account creation example

After the account creation transaction has been submitted you can retrieve the new account address by getting the transaction result.

The new account address will be emitted in a system-level flow.AccountCreated event.

Generate Keys

Flow uses ECDSA signatures to control access to user accounts. Each key pair can be used in combination with the SHA2-256 or SHA3-256 hashing algorithms.

⚠️ The Flow-Rust-SDK ONLY supports the ECDSA P-256 elliptic curve with SHA3-256 Hashing.

⚠️ SECURITY WARNING - the elliptic curve arithmetic used to generate keys has never been independently audited. Use at your own risk.

Here's how to generate an ECDSA private key for the P-256 (secp256r1) curve.

    let private_key = SigningKey::random(&mut OsRng).to_bytes();
    println!("{}", hex::encode(private_key)); // print the hex encoded bytes

The example above uses an ECDSA key pair on the P-256 (secp256r1) elliptic curve. Flow also supports the secp256k1 curve used by Bitcoin and Ethereum. Read more about supported algorithms here.