New Release: Vault Phase 1 (real vault)

I’ve come across that one from time to time (although I didn’t check the vault log). Generally fixed with a reboot.

I’ve just created an account with both secret and password = testing12345. Do you want to see if you can login using those?

3 Likes

Thanks, but I am trying to access my own local vault built from source.

1 Like

Apart from what @JPL suggested, you can run any of the CLIs with RUST_LOG=trace (or ‘debug’) and see if you get more info

1 Like

Here are logs from safe_vault and safe-authenticator-cli, but I can’t interpret them:

safe_vault with -vvvv

TRACE 2019-10-01T20:59:24Z [src/chunk_store.rs:94] Creating ChunkStore at /tmp/safe_vault/chunks/login_packets
TRACE 2019-10-01T20:59:24Z [src/utils.rs:26] Creating database at /tmp/safe_vault/immutable_data.db
TRACE 2019-10-01T20:59:24Z [src/utils.rs:26] Creating database at /tmp/safe_vault/full_adults.db
TRACE 2019-10-01T20:59:24Z [src/chunk_store.rs:94] Creating ChunkStore at /tmp/safe_vault/chunks/immutable
TRACE 2019-10-01T20:59:24Z [src/chunk_store.rs:94] Creating ChunkStore at /tmp/safe_vault/chunks/mutable
TRACE 2019-10-01T20:59:24Z [src/chunk_store.rs:94] Creating ChunkStore at /tmp/safe_vault/chunks/append_only
TRACE 2019-10-01T20:59:24Z [src/utils.rs:26] Creating database at /tmp/safe_vault/coins.db
INFO 2019-10-01T20:59:55Z [src/client_handler.rs:153] ad4370..: Connected to new client on 116.203.42.154:443
TRACE 2019-10-01T20:59:55Z [src/vault.rs:222] Node(ad4370..): Succesfully sent message to: 116.203.42.154:443
INFO 2019-10-01T20:59:56Z [src/client_handler.rs:700] ad4370..: Accepted Client(Bls(80e3bc..)) on 116.203.42.154:443.
TRACE 2019-10-01T20:59:56Z [src/client_handler.rs:260] ad4370..: Received (Request::CreateBalance MessageId(6e29ed..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T20:59:56Z [src/client_handler.rs:750] ad4370..: Received (Request::CreateBalance MessageId(6e29ed..)) from src 80e3bc.. (client Client(Bls(80e3bc..)))
TRACE 2019-10-01T20:59:56Z [src/client_handler.rs:1212] ad4370..: Setting balance to 10.000000000 for Bls(80e3bc..)
TRACE 2019-10-01T20:59:56Z [src/client_handler.rs:856] ad4370..: Received (Response::Transaction(Success) MessageId(6e29ed..)) to Client(Bls(80e3bc..)) from ad4370..
TRACE 2019-10-01T20:59:56Z [src/vault.rs:222] Node(ad4370..): Succesfully sent message to: 116.203.42.154:443
TRACE 2019-10-01T20:59:56Z [src/vault.rs:222] Node(ad4370..): Succesfully sent message to: 116.203.42.154:443
INFO 2019-10-01T20:59:56Z [src/client_handler.rs:157] ad4370..: Networking error: Connection was actively cancelled
INFO 2019-10-01T20:59:56Z [src/client_handler.rs:159] ad4370..: Disconnected from Client(Bls(80e3bc..)) on 116.203.42.154:443
INFO 2019-10-01T20:59:57Z [src/client_handler.rs:153] ad4370..: Connected to new client on 116.203.42.154:443
TRACE 2019-10-01T20:59:57Z [src/vault.rs:222] Node(ad4370..): Succesfully sent message to: 116.203.42.154:443
INFO 2019-10-01T20:59:57Z [src/client_handler.rs:700] ad4370..: Accepted Client(Bls(80e3bc..)) on 116.203.42.154:443.
TRACE 2019-10-01T20:59:57Z [src/client_handler.rs:260] ad4370..: Received (Request::CreateLoginPacket MessageId(baa831..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T20:59:58Z [src/client_handler.rs:1237] ad4370..: Client(Bls(80e3bc..)) is paying 0.000000001 coins
TRACE 2019-10-01T20:59:58Z [src/client_handler.rs:1212] ad4370..: Setting balance to 9.999999999 for Bls(80e3bc..)
TRACE 2019-10-01T20:59:58Z [src/client_handler.rs:750] ad4370..: Received (Request::CreateLoginPacket MessageId(baa831..)) from src 80e3bc.. (client Client(Bls(80e3bc..)))
TRACE 2019-10-01T20:59:58Z [src/client_handler.rs:856] ad4370..: Received (Response::Mutation(Success) MessageId(baa831..)) to Client(Bls(80e3bc..)) from c77dec..
TRACE 2019-10-01T20:59:58Z [src/vault.rs:222] Node(ad4370..): Succesfully sent message to: 116.203.42.154:443
INFO 2019-10-01T20:59:58Z [src/client_handler.rs:157] ad4370..: Networking error: Connection was actively cancelled
INFO 2019-10-01T20:59:58Z [src/client_handler.rs:159] ad4370..: Disconnected from Client(Bls(80e3bc..)) on 116.203.42.154:443
INFO 2019-10-01T20:59:58Z [src/client_handler.rs:153] ad4370..: Connected to new client on 116.203.42.154:443
TRACE 2019-10-01T20:59:58Z [src/vault.rs:222] Node(ad4370..): Succesfully sent message to: 116.203.42.154:443
INFO 2019-10-01T20:59:58Z [src/client_handler.rs:700] ad4370..: Accepted Client(Bls(80e3bc..)) on 116.203.42.154:443.
TRACE 2019-10-01T20:59:58Z [src/client_handler.rs:260] ad4370..: Received (Request::GetMDataValue MessageId(040f78..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T20:59:59Z [src/data_handler.rs:86] ad4370..: Received (Request::GetMDataValue MessageId(040f78..)) from src 80e3bc.. (client Client(Bls(80e3bc..)))
TRACE 2019-10-01T20:59:59Z [src/client_handler.rs:856] ad4370..: Received (Response::GetMDataValue(NoSuchData) MessageId(040f78..)) to Client(Bls(80e3bc..)) from 06a33b..
TRACE 2019-10-01T20:59:59Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(e5739c..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T20:59:59Z [src/vault.rs:222] Node(ad4370..): Succesfully sent message to: 116.203.42.154:443
TRACE 2019-10-01T20:59:59Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(447f8d..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T20:59:59Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(130c77..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T21:00:00Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(414ee2..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T21:00:00Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(96a86f..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T21:00:00Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(f183de..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T21:00:01Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(54ee91..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T21:00:01Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(89c8a0..)) from Client(Bls(80e3bc..))
TRACE 2019-10-01T21:00:01Z [src/client_handler.rs:260] ad4370..: Received (Request::PutMData MessageId(5a577e..)) from Client(Bls(80e3bc..))
INFO 2019-10-01T21:02:58Z [src/client_handler.rs:157] ad4370..: Networking error: Connection was actively cancelled
INFO 2019-10-01T21:02:58Z [src/client_handler.rs:159] ad4370..: Disconnected from Client(Bls(80e3bc..)) on 116.203.42.154:443

safe_auth with RUST_LOG=trace (only lines containing safe_core)

[2019-10-01T20:59:55Z TRACE safe_core::client] Create test balance of 10.000000000 for SecretKey("...")
[2019-10-01T20:59:55Z TRACE safe_core::config_handler] Not available: /root/.config/safe_core/safe_core.config
[2019-10-01T20:59:55Z TRACE safe_core::config_handler] Reading: /root/.config/safe_vault/vault_connection_info.config
[2019-10-01T20:59:55Z TRACE safe_core::connection_manager] Trying to bootstrap with group Client(Bls(80e3bc..))
[2019-10-01T20:59:55Z TRACE safe_core::connection_manager::connection_group] 0: Bootstrapped
[2019-10-01T20:59:55Z TRACE safe_core::connection_manager::connection_group] 0: Message from V4(116.203.42.154:5483): [ 00 00 00 00..e8 0f 47 2c ]. Have we handled challenge? false
[2019-10-01T20:59:55Z TRACE safe_core::connection_manager::connection_group] Got the challenge
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] 0: Sent user message
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(6e29ed..)
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] 0: Sent user message
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] 0: Message from V4(116.203.42.154:5483): [ 02 00 00 00..02 00 00 00 ]. Have we handled challenge? true
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] Got transaction notification: Notification(Transaction { id: 3541782569029540645, amount: 10.000000000 })
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] 0: Message from V4(116.203.42.154:5483): [ 01 00 00 00..87 89 93 7a ]. Have we handled challenge? true
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] 0: Response from: V4(116.203.42.154:5483), msg_id: MessageId(6e29ed..), resp: Response::Transaction(Success)
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager] Disconnecting group Client(Bls(80e3bc..))
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] 0: Terminating connection
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager::connection_group] 0: Successfully disconnected
[2019-10-01T20:59:56Z TRACE safe_core::connection_manager] Dropped ConnectionManager - terminating gracefully
[2019-10-01T20:59:57Z TRACE safe_core::config_handler] Not available: /root/.config/safe_core/safe_core.config
[2019-10-01T20:59:57Z TRACE safe_core::config_handler] Reading: /root/.config/safe_vault/vault_connection_info.config
[2019-10-01T20:59:57Z TRACE safe_core::connection_manager] Trying to bootstrap with group Client(Bls(80e3bc..))
[2019-10-01T20:59:57Z TRACE safe_core::connection_manager::connection_group] 1: Bootstrapped
[2019-10-01T20:59:57Z TRACE safe_core::connection_manager::connection_group] 1: Message from V4(116.203.42.154:5483): [ 00 00 00 00..b2 9b d9 a2 ]. Have we handled challenge? false
[2019-10-01T20:59:57Z TRACE safe_core::connection_manager::connection_group] Got the challenge
[2019-10-01T20:59:57Z TRACE safe_core::connection_manager::connection_group] 1: Sent user message
[2019-10-01T20:59:57Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(baa831..)
[2019-10-01T20:59:57Z TRACE safe_core::connection_manager::connection_group] 1: Sent user message
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 1: Message from V4(116.203.42.154:5483): [ 01 00 00 00..6d 5e 09 19 ]. Have we handled challenge? true
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 1: Response from: V4(116.203.42.154:5483), msg_id: MessageId(baa831..), resp: Response::Mutation(Success)
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager] Disconnecting group Client(Bls(80e3bc..))
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 1: Terminating connection
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 1: Successfully disconnected
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager] Trying to bootstrap with group Client(Bls(80e3bc..))
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 2: Bootstrapped
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 2: Message from V4(116.203.42.154:5483): [ 00 00 00 00..02 dc 2b 65 ]. Have we handled challenge? false
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] Got the challenge
[2019-10-01T20:59:58Z TRACE safe_core::client] Fetch MDataValue for 06a33b..
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(040f78..)
[2019-10-01T20:59:58Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: d39403.., tag: 15000 }, enc_info: Some((Key(****), Nonce([96, 130, 124, 152, 40, 1, 206, 203, 127, 230, 91, 112, 197, 127, 155, 174, 0, 237, 132, 252, 1, 116, 140, 38]))), new_enc_info: None }
[2019-10-01T20:59:58Z TRACE safe_core::client] Put Sequenced MData at d39403..
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(e5739c..)
[2019-10-01T20:59:58Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Message from V4(116.203.42.154:5483): [ 01 00 00 00..af e1 ce 47 ]. Have we handled challenge? true
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Response from: V4(116.203.42.154:5483), msg_id: MessageId(040f78..), resp: Response::GetMDataValue(NoSuchData)
[2019-10-01T20:59:59Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: 389259.., tag: 15000 }, enc_info: Some((Key(****), Nonce([176, 228, 7, 168, 138, 6, 37, 118, 204, 247, 5, 213, 56, 90, 24, 49, 76, 81, 242, 146, 245, 192, 225, 198]))), new_enc_info: None }
[2019-10-01T20:59:59Z TRACE safe_core::client] Put Sequenced MData at 389259..
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(447f8d..)
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:59Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: 32fa09.., tag: 15000 }, enc_info: Some((Key(****), Nonce([162, 59, 12, 225, 29, 228, 194, 59, 152, 134, 100, 37, 211, 116, 173, 208, 35, 28, 98, 236, 43, 140, 221, 95]))), new_enc_info: None }
[2019-10-01T20:59:59Z TRACE safe_core::client] Put Sequenced MData at 32fa09..
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(130c77..)
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:59Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: 777f2c.., tag: 15000 }, enc_info: Some((Key(****), Nonce([147, 207, 221, 165, 101, 133, 31, 248, 224, 87, 212, 99, 69, 190, 68, 128, 17, 99, 170, 54, 126, 155, 152, 87]))), new_enc_info: None }
[2019-10-01T20:59:59Z TRACE safe_core::client] Put Sequenced MData at 777f2c..
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(414ee2..)
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:59Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: 8f2ca9.., tag: 15000 }, enc_info: None, new_enc_info: None }
[2019-10-01T20:59:59Z TRACE safe_core::client] Put Sequenced MData at 8f2ca9..
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(96a86f..)
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:59Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: b00e71.., tag: 15000 }, enc_info: Some((Key(****), Nonce([7, 119, 158, 185, 253, 38, 185, 181, 48, 71, 84, 62, 35, 172, 193, 146, 239, 17, 70, 221, 51, 226, 182, 220]))), new_enc_info: None }
[2019-10-01T20:59:59Z TRACE safe_core::client] Put Sequenced MData at b00e71..
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(f183de..)
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:59Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: 8c1ab5.., tag: 15000 }, enc_info: Some((Key(****), Nonce([62, 138, 206, 227, 27, 202, 117, 38, 204, 17, 193, 200, 130, 206, 11, 156, 212, 135, 240, 117, 155, 89, 54, 208]))), new_enc_info: None }
[2019-10-01T20:59:59Z TRACE safe_core::client] Put Sequenced MData at 8c1ab5..
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(54ee91..)
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:59Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: 6abcd6.., tag: 15000 }, enc_info: Some((Key(****), Nonce([244, 123, 246, 234, 3, 217, 151, 94, 227, 127, 7, 85, 138, 165, 120, 14, 200, 60, 63, 123, 126, 213, 79, 42]))), new_enc_info: None }
[2019-10-01T20:59:59Z TRACE safe_core::client] Put Sequenced MData at 6abcd6..
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(89c8a0..)
[2019-10-01T20:59:59Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T20:59:59Z TRACE safe_core::nfs::dir] Creating new directory: MDataInfo { address: Seq { name: 06a33b.., tag: 15000 }, enc_info: Some((Key(****), Nonce([230, 239, 231, 5, 31, 175, 24, 210, 141, 236, 87, 246, 189, 227, 192, 105, 184, 124, 102, 119, 153, 218, 166, 192]))), new_enc_info: None }
[2019-10-01T20:59:59Z TRACE safe_core::client] Put Sequenced MData at 06a33b..
[2019-10-01T21:00:00Z TRACE safe_core::connection_manager::connection_group] Sending message MessageId(5a577e..)
[2019-10-01T21:00:00Z TRACE safe_core::connection_manager::connection_group] 2: Sent user message
[2019-10-01T21:02:58Z TRACE safe_core::nfs::dir] Error: Request has timed out - CoreError::RequestTimeout
[2019-10-01T21:02:58Z DEBUG safe_core::event_loop] Exiting Core Event Loop
[2019-10-01T21:02:58Z TRACE safe_core::connection_manager] Dropped ConnectionManager - terminating gracefully
[2019-10-01T21:02:58Z TRACE safe_core::connection_manager::connection_group] Gracefully terminating quic-p2p event loop

I don’t see anything that could explain it, it seems like safe_auth is sending several messages to create a MD, that’s not what I see in my local instances when creating an account. Are you experiencing this also with safe_auth and safe_vault downloaded from the GH releases? do you still see that time out error in the console?

I have done tests with all possible combinations of binaries downloaded from github or rebuilt from source. The results are the following:

  • rebuild auth + rebuild vault => NOK
  • binary auth + rebuild vault => NOK
  • binary auth + binary vault => OK
  • rebuild auth + binary vault => OK

This means that my configuration is correct because I got some successful cases, but the problem is rebuilding vault from source.

Then I discovered that there is a phase1 branch in safe_vault repo, so I tried compiling this branch instead of master. But unfortunately the generated exe doesn’t work too.

The conclusion is that I am unable to build a vault from source that works with authenticator.

And this was only a preliminary step because I would like the vault to be compatible also with safe_cli rebuilt from source and with SAFE Browser V0.15.0 (Pweb).

4 Likes

I’m not aware of the details in vault development so I’m not sure if the code in master is still backward compatible with v0.19.2, from your analysis/test it seems it’s probably not, so you could try building from source using tag https://github.com/maidsafe/safe_vault/tree/0.19.2, but I’m not sure what you are trying to achieve as that would give you just the same binary/functionality as the one you download from github releases

This tag is the same as phase1 branch (with latest commit 61c20dd). I just want to be able to build a vault from source so that I can modify it (for example getting statistics).

4 Likes

I just tried building and running safe_vault from tag 0.19.2 just with cargo build and I’m able to login with safe_auth v0.3.0

5 Likes

Are you building a target for Windows or Linux?

What’s the estimate on a phase 2 release?

[edit]

Two more months it is.

Hi all, an updated vault_connection_info.config file has been uploaded to our GitHub release here.

If you want to use the shared vault please ensure you download this latest version and save it in the appropriate location for your operating system. See the OP for full details on how to use the shared vault.

8 Likes

Once BLS, Node Ageing and Vaults 2 are done. You can follow progress on the Project Plan

3 Likes

Sorry I didn’t have time to test it, but now I can confirm these versions are working. For anyone interested the command to checkout a tagged version is:

  • For safe_vault: git checkout tags/0.19.2 -b test
  • For safe-authenticator-cli: git checkout tags/0.3.0 -b test

Only concern is that current versions of safe_vault and safe-authenticator-cli are still not working together.

6 Likes

On Linux, more precisely Ubuntu 18.04.

2 Likes

Do applications like chat work with the shared vault by the way?

Assuming you mean web based, there’s not enough of the API exposed in the browser yet to do much more than create and view files/containers, create and view NRS names - which is enough for me to have a read only version of Solid Filemanager working (safe://solid-filemanager on the shared vault, as well as alpha 2).

Using the Rust APIs everything you’d need is there.

So we’re waiting on the ffi being expanded for the different languages, and JavaScript in the browser.

3 Likes

Are you able to login with solid-filemanager using the shared vault? The login button is unresponsive for me (Ubuntu 19.4).

It does work on Ubuntu although I find the authenticator losses contact with the browser quite easily, so try restarting one or both.

You don’t need to be logged in to use the app though, if you type a valid URI such as safe://dweb or safe://solid-filemanager you can browse the filesystem by clicking “Open Directory”.

1 Like

Hi all, another updated vault_connection_info.config file has been uploaded to our GitHub release here.

If you want to use the shared vault please ensure you download this latest version and save it in the appropriate location for your operating system. See the OP for full details on how to use the shared vault.

7 Likes