bepaald / signalbackup-tools

Tool to work with Signal Backup files.
GNU General Public License v3.0
783 stars 37 forks source link

multiple errors and warnings with desktopimport and htmlexport #94

Closed Meteor0id closed 8 months ago

Meteor0id commented 1 year ago
Error : During sqlite3_prepare_v2(): near "rowid": syntax error
  Query: "SELECT DATETIME(ROUND(messages.sent_at/1000),'unixepoch','localtime'),messages.body,COALESCE(conversations.profileFullName,conversations.name) AS correspondent FROM messages LEFT JOIN conversations ON json_extract(messages.json, '$.conversationId') == conversations.idWHERE rowid = 107445"

I am using --importfromdesktop and --exporthtml

Whitespace missing between conversations.id and WHERE

bepaald commented 1 year ago

Thanks! That's a stupid mistake, but I don't think I ever got in that code path...

I am using --importfromdesktop and --exporthtml

You are a brave soul. :-)

Sorry for all the little bugs, but keep 'em coming if you find more! Thanks again!

Meteor0id commented 1 year ago

Don't say sorry. You are making a very useful tool, developing it super fast and all for free. Thank you so much for doing this.

I've taken a look what else the output contains and there are warnings and errors plenty (which I mean as a compliment, the output is very verbose), I just don't know which are worth reporting. Here is another sql syntax error though:

Error : Group V1 type not yet supported
ID AS STRING: <redacted>
ID IN HEX: <redacted>
Error : During sqlite3_prepare_v2(): near ")": syntax error
  Query: "SELECT _id,group_id FROM groups WHERE LOWER(group_id) == LOWER(?))"
(no results)
Trying to match conversation (35/141)

I also often see these:

Error : Asked to find recipient._id for empty uuid. Refusing

Failed to open image for reading: C:\Users\myusername/AppData/Roaming/Signal Beta/attachments.noindex/
Error: Trying to set attachment data. Skipping.
Dealing with thread 53
Error: File exists. Not overwriting
bepaald commented 1 year ago

Thanks for your kind words.

Here is another sql syntax error though:

Thanks. Another stupid typo in a bit of code I can't reach because my Desktop DB is too new to contain any v1 groups. That particular query was only there to test matching a groupV1 conversation, so it won't actually change anything, but if you now get some output in place of syntax error and no results, I could probably match that thread to something in the Android database.

I also often see these:

Error : Asked to find recipient._id for empty uuid. Refusing

Failed to open image for reading: C:\Users\myusername/AppData/Roaming/Signal Beta/attachments.noindex/ Error: Trying to set attachment data. Skipping.

Yeah, these were mentioned in #57 as well.. Again, I suspect it's a very old (long-existing) Desktop DB, which did not have uuid's? The second one, I have no idea yet. Is the Signal Desktop installation that you're importing still active? That is, can you just open the program and look at the messages? Maybe then we can figure out what is happening with these attachments.

Dealing with thread 53 Error: File exists. Not overwriting

This is a new one. When I looked at the code last night I could not figure out how it got there: If the output directory was not empty it should have error-ed earlier, unless --overwrite or --append was added, in which case this error should not be printed. But I'll look at it again later today. Can you tell me anything about the command line you are running? Is the output directory empty when you start, and are you adding --append/overwrite?

I may have more comments/questions when I get home from work in a couple of hours.

bepaald commented 1 year ago

I'll reopen this, so you can keep posting these issues here as you find them, until it's fixed or we give up.

bepaald commented 1 year ago

Error: File exists. Not overwriting

That one should be fixed.

Failed to open image for reading: C:\Users\myusername/AppData/Roaming/Signal Beta/attachments.noindex/ Error: Trying to set attachment data. Skipping.

So, normally (at least in my somewhat new database), every message in the database has a json string that - if the message has an attachment - contains some information about the attachment, among which a 'path' variable. This is the path of the actual attachment data which I then try to place in the Android backup.

The error indicates to me the 'path' in this case is actually empty (the C:/[...]attachments.noindex/ is actually just the default, hardcoded part of the path, the path as read from the database should follow after). I have now added some code that prints all the relevant message's info when it unexpectedly finds an empty attachment path. This will probably be a lot of output, but it should contain enough information for you to determine which message it is, so maybe you can open Signal Desktop and check if there is actually an attachment there? For example there is source which should be the phone number of the sender and sent_at which should be a timestamp (UNIX time in milliseconds, probably UTC). Although I'd also gladly look at it, obviously do not just post that output here as it may contain sensitive info (like the phone numbers, but also message contents).

Error : Asked to find recipient._id for empty uuid. Refusing

I would love to get a bit more context for this one. Maybe from the Trying to match conversation (n/N) before it, until the Trying to match conversation (n+1/N) after it, if possible? But, of course, censor (parts of) lines as you feel necessary.

Error : Group V1 type not yet supported ID AS STRING: ID IN HEX: Error : During sqlite3_prepare_v2(): near ")": syntax error Query: "SELECT _id,group_id FROM groups WHERE LOWER(group_id) == LOWER(?))" (no results)

A small addition, if you still get (no results) from the current version, I would love to see the ID IN HEX (or the ID IN STRING if it is readable). I expect it to be just a random (hexencoded) bytes, and feel free to scramble them around or replace part with x's, but even just the length could be a hint as to what the id refers to (I'm just trying to verify it's a groupV1 id).

Thanks!

Meteor0id commented 1 year ago

The tool now crashes as soon as it is supposed to print data about the attachment the output ends with this:

WarningReaction author not found. Skipping
Error: Expected attachment, but 'messages.json$.attachments[0].path is empty!
Here is the message full data:

No message data is shown, nothing happens the tool just terminates

bepaald commented 1 year ago

Well, that's no good. And very strange that it just terminates without any error at all. Unfortunately I'm not at home right now, so I'll have to look at it tomorrow.

bepaald commented 1 year ago

Are you, by the way, compiling this program yourself or using the windows release?

Meteor0id commented 1 year ago

I am using the windows release. I retried and figured that it's not the tool crashing, it's a problem with writing the output to file. I run

signalbackup-tools_win.exe "%inputpath%" %passphrase% --importfromdesktop --exporthtml "exported signal backups\android_and_desktop\%datetime%_TEMP" > logfile_%datetime%.txt 2>&1

Not sure how I will log the output now, but the tool works.

bepaald commented 1 year ago

Yeah that makes sense. The problem is this line https://github.com/bepaald/signalbackup-tools/blob/d5cc05c10b99bb4d3d5fa651abfd283bb47befce/signalbackup/insertattachments.cc#L67 that is supposed to be printLineMode instead of prettyPrint (it's much too much output for prettyPrint, I should also fix that function to nicely handle a case like this).

Anyway, it's a simple edit, so if you were compiling yourself you could fix it, but I can't build a windows binary where I am now, so it'll have to wait.

bepaald commented 1 year ago

Ok, so this is fixed. While I was at it, I also tried to have it print the time of the message in human readable form and the name of the conversation (chat partner or group name). I hope it works, it might create new errors if more information is unexpectedly missing from the database (like the attachment path is).

Meteor0id commented 1 year ago

So i looked up a random case of attachment not found and found the message on desktop. This one had a body text. In this case it was in a group I have left. The attachment image was blurred with a download button. when i pressed it the image preview disappeared leaving only the text. Odd way to handle a missing attachment, but seems signal desktop can't fetch it when asked to.

not sure when i get around to looking into other errors

bepaald commented 1 year ago

So i looked up a random case of attachment not found and found the message on desktop. This one had a body text. In this case it was in a group I have left. The attachment image was blurred with a download button. when i pressed it the image preview disappeared leaving only the text. Odd way to handle a missing attachment, but seems signal desktop can't fetch it when asked to.

Ok thanks. I thought maybe it was a database structure-thing where old attachments may have been stored differently, but that seems not to be the case. I guess I could probably silently skip attachments with missing paths then. In the Android db similar things can happen, but at least there is a field in the database indicating whether an attachment was downloaded successfully to check (pending_push), but I can't find anything similar in the Desktop db.

not sure when i get around to looking into other errors

By all means, take your time. I'm just happy to get some help on the outstanding issues with the desktop import.

Meteor0id commented 1 year ago

All I got for you are some snippets of the output I am seeing. I would be surprised if it is of any use but knock yourself out.

again this was with --importfromdesktop and --exporthtml

Warning: Unsupported messagetype 'profile-change'. Skipping message.
Trying to match conversation (27/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: d0172eed-1f2f-4a<redacted>)
 - Importing 0 messages into thread._id 1194
Trying to match conversation (28/141) (type: group)
Error : Failed to base64 decode data: (hex:) 27 04 xx xx xx a4 78 58 c2 a6 xx xx xx xx xx xx xx xx xx c2 bd
Error : Conversation is 'group'-type, but groupId unexpectedly was not base64 data. Maybe this is a groupV1 group? Here is the data: 
'¢<redacted>
Trying to match conversation (29/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: d33668e1-df3e-41<redacted>)
 - Importing 33 messages into thread._id 1195
Error : Asked to find recipient._id for empty uuid. Refusing
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"attachments":[],"author":"+316xxxxxxxx","id":157xxxxxxxxxx,"text":"Ik moet alleen wel m'n dochter van school halen om 14u"}
Trying to match conversation (30/141) (type: private)
 - Importing 3 messages into thread._id 19
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Trying to match conversation (31/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: d3e6f948-80a1-4a<redacted>)
 - Importing 48 messages into thread._id 1196
Trying to match conversation (32/141) (type: private)
Error : Failed to determine uuid. Skipping.
Trying to match conversation (33/141) (type: private)
 - Importing 69 messages into thread._id 312
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Error : Asked to find recipient._id for empty uuid. Refusing
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"attachments":[],"author":"+39xxxxxxxxx","id":157xxxxxxxxxx,"text":"If you are <redacted>"}
Trying to match conversation (34/141) (type: group)
Error : Group V1 type not yet supported
ID AS STRING: ¼K«®àÝ<redacted>
ID IN HEX: c2bcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc3a7
(no results)
Trying to match conversation (35/141) (type: group)
Error : Group V1 type not yet supported
ID AS STRING: €<redacted>
ID IN HEX: c280xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc2b2
(no results)
Trying to match conversation (36/141) (type: group)
Error : Group V1 type not yet supported
ID AS STRING: ÿ¦ÿæ<redacted>
ID IN HEX: c3bfxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx784f
(no results)
Trying to match conversation (37/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 5d9e50de-f0ec-4a<redacted>)
 - Importing 160 messages into thread._id 1197
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Warning: Unsupported messagetype 'verified-change'. Skipping message.
Warning: Unsupported messagetype 'verified-change'. Skipping message.
Warning: Unsupported messagetype 'verified-change'. Skipping message.
Warning: Unsupported messagetype 'verified-change'. Skipping message.
Error : Asked to find recipient._id for empty uuid. Refusing
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"id":158xxxxxxxxxx,"author":"+316xxxxxxxx","text":"Spam is meer een Amerikaans issue denk ik. Ik heb er hier vrijwel nooit last mee gehad (een keer op een prepaid nummer dat blijkbaar kort daarvoor van iemand geweest was die wat rekeningen niet betaald had).","attachments":[]}
Warning : Got empty author uuid, here is some additional info:
json_extract(json, '$.reactions')
[{"emoji":"😂","remove":false,"targetAuthorE164":"+316xxxxxxxx","targetAuthorUuid":"5d9e50de-f0ec-4a<redacted>","targetTimestamp":158xxxxxxxxxx,"timestamp":158xxxxxxxxxx,"fromId":"+316xxxxxxxx","fromSync":true}]
Inserting 1 message reactions.
Error : Asked to find recipient._id for empty uuid. Refusing
WarningReaction author not found. Skipping
Warning : Got empty author uuid, here is some additional info:
json_extract(json, '$.reactions')
[{"emoji":"👍","remove":false,"targetAuthorE164":"+316xxxxxxxx","targetAuthorUuid":"5d9e50de-f0ec-4a<redacted>","targetTimestamp":158xxxxxxxxxx,"timestamp":158xxxxxxxxxx,"fromId":"+316xxxxxxxx","fromSync":true}]
Inserting 1 message reactions.
Error : Asked to find recipient._id for empty uuid. Refusing
WarningReaction author not found. Skipping
Error : Asked to find recipient._id for empty uuid. Refusing
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"id":158xxxxxxxxxx,"author":"+316xxxxxxxx","authorUuid":null,"text":"Waarom krijgen wij zo'n waarschuwing? Dat hoort toch alleen te gebeuren was iemand is geverifieerd?","attachments":[]}
Trying to match conversation (38/141) (type: private)

And often these but I guess that's just info Signal hasn't got anymore.

Failed to finding recipient for uuid: 2173xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: 000Bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: 6D7Bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: 6151xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: 2173xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: 031Axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: D017xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: 6A8Axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: 5641xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: BB66xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.
Failed to finding recipient for uuid: 5D9Exxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WARNING Failed to find recipient for mention. Skipping.

and a few times this for a file which does not exist

Failed to open image for reading: C:\Users\myusername/AppData/Roaming/Signal Beta/attachments.noindex/6f\6fb1b8a50axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Trying to set attachment data. Skipping.
Corresponding message:
--------------------------------------------------------------------------------
| DATETIME(ROUND(messages.sent_at/1000),'unixepo[...] |   body | correspondent |
--------------------------------------------------------------------------------
|                                 2022-04-15 07:39:50 | (NULL) |           ..  |
--------------------------------------------------------------------------------

And some of these Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!8223e1b8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)

bepaald commented 1 year ago

All I got for you are some snippets of the output I am seeing. I would be surprised if it is of any use but knock yourself out.

Thanks, that was very helpful. I see that in the old database, some correspondents are referenced by phone number instead of UUID. So, I'm now trying to match Desktop-recipients to Android-recipients by phone number if the uuid is empty. That hopefully clears up a bunch of the uuid-errors. Though, the recipient must still actually be present in the Android backup.

I also removed the debug output when attachments are not found, there does not appear to be a bug in that code: if an attachment does not exist it can never be imported.

The two mysteries I see in this output are.

1:

Error : Failed to base64 decode data: (hex:) 27 04 xx xx xx a4 78 58 c2 a6 xx xx xx xx xx xx xx xx xx c2 bd Error : Conversation is 'group'-type, but groupId unexpectedly was not base64 data. Maybe this is a groupV1 group? Here is the data:

In this part of the code, I've already checked the groupVersion field, and it's supposed to be > 1. In my database, the groupId is base64 encoded data, but here it is something else...

and 2:

Error : Group V1 type not yet supported ID AS STRING: ÿ¦ÿæ ID IN HEX: c3bfxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx784f

So in this part of the code, groupVersion <= 1, so I was hoping for a v1 group, which I think I should be able to handle (I just don't have any in my Desktop database), but this appears to have the wrong ID length for a V1 group (and also the wrong length for a V2 group).

For both these cases I've added some more output which might help tell me how to handle them.

It would be great if you could provide some more of these snippets from the current version. I hope the phone-matching code works properly (I'm unfortunately unable to really test it, because my database doesn't have that format).

Thanks for your trouble!

BTW: I see no output from the --exporthtml part, is that running without warnings/errors?

Meteor0id commented 1 year ago

I also removed the debug output when attachments are not found, there does not appear to be a bug in that code: if an attachment does not exist it can never be imported. But you could still take the blurred preview right? At least showing in the html output that there was an attachment there, but it can't be recovered. I haven't checked, maybe you already do this. Definitely do not discard the whole message, there might be text accompanying the attachment / media which can still be preserved and exported. Again maybe you already do that haven't had time to check.

The first group you mentioned appears to be an old test group we used to have. I can't be sure if we ever converted it to a groupv2 (the group title says group v1 but that might not be true at this time). I have redacted a bunch of things but knowing which group this is I think I could do show more data if you need it. It was a group used specifically in the time groups v2 were being created, so there could be some weirdness to it because of our testing. I never used a modified client though, always official beta releases.

Trying to match conversation (28/141) (type: group)
Error : Failed to base64 decode data: (hex:) 27 04 c2 a2 c3 xx xx xx xx xx xx xx xx xx 9a 6d 04 2a 61 c2 bd
Error : Conversation is 'group'-type, but groupId unexpectedly was not base64 data. Maybe this is a groupV1 group? Here is the data: 
 === Row 1/1 ===
                  id : 765554b5-6700-454d-8919-8xxxxxxxxxx1
                json : {"unreadCount":0,"verified":0,"messageCount":1581,"sentMessageCount":24,"active_at":1624369027699,"avatar":{"hash":"1uSxxxxxxxxxx8WCv4cei6/m+SQY3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCZ2l7ceNwVchh+nxxxxxxxxCftw==","path":"56\\56ef44a4eb3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7899e96e991b3c6d8f6314d"},"color":"A160","draft":"","draftAttachments":[],"draftChanged":false,"draftTimestamp":null,"expireTimer":604800,"groupId":"PLqnwxxxxxxxxxxxxxxxxxxxxxxxxxxxx1GQ/fyz/0A=","id":"765554b5-6700-454d-xxxx-xxxxxxxxxxxx","isArchived":true,"lastMessage":"Je kunt geen berichten verzenden omdat je de groep hebt verlaten.","lastMessageStatus":null,"left":true,"name":"Signal friends (old GV1)","quotedMessageId":null,"sealedSender":0,"timestamp":1651801176073,"type":"group","version":2,"inbox_position":46,"profileSharing":true,"messageCountBeforeMessageRequests":1581,"markedUnread":false,"muteExpiresAt":0,"messageRequestResponseType":1,"revision":13,"groupVersion":2,"masterKey":"LfxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxPZwM4=","publicParams":"ADxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxybtRkP38s/9AJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTZ+vklUijQkky84QLnzsq2/v3qxxxxxxxxxxxxxxxxxxxxi1d9YkYSA==","secretParams":"AxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxALSLJu1GQ/fxx/0BxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaYBtcU/rcxxxxxxxxxxxxxxv/7AQ3Kh+Fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsq2/v3xxxxxxxxxxxxxxxxxxxxMi1d9YkYSA==","previousGroupV1Id":"'\u0xxxxäxX¦\u0xxxx3šm\u0004*a½","previousGroupV1Members":["2e2aadd2-daab-4f3a-a34f-fxxxxxxxxxxe","41e8eb5b-28f9-4eac-bf18-6xxxxxxxxxx4","fabfbb53-303f-4f3d-b1a2-fxxxxxxxxxx9","caa145a7-26a7-4efd-84ea-0xxxxxxxxxxc"],"accessControl":{"attributes":2,"members":2,"addFromInviteLink":4},"membersV2":[],"pendingMembersV2":[],"pendingAdminApprovalV2":[],"bannedMembersV2":[],"announcementsOnly":false,"hideStory":false,"dontNotifyForMentionsIfMuted":false,"storageVersion":18164,"storageID":"ogWcxxxxxxxxxxxxxxxxPA=="}
           active_at : 1624369027699
                type : group
             members : 
                name : Signal friends (old GV1)
         profileName : (NULL)
   profileFamilyName : (NULL)
     profileFullName : (NULL)
                e164 : (NULL)
                uuid : (NULL)
             groupId : 'xxxxxxxxxx*a½
profileLastFetchedAt : (NULL)
Trying to match conversation (29/141) (type: private)

So in this part of the code, groupVersion <= 1, so I was hoping for a v1 group, which I think I should be able to handle (I just don't have any in my Desktop database), but this appears to have the wrong ID length for a V1 group (and also the wrong length for a V2 group).

Trying to match conversation (36/141) (type: group) Error : Group V1 type not yet supported === Row 1/1 === id : e0023f82-c2eb-4020-8736-1xxxxxxxxxxa json : {"unreadCount":0,"verified":0,"messageCount":1,"sentMessageCount":0,"color":"A120","id":"e0023f82-c2eb-4020-8736-1xxxxxxxxxxa","lastMessage":"","lastMessageStatus":null,"left":true,"members":["203fc354-2fe0-495b-b417-exxxxxxxxxx8"],"name":"test","sealedSender":0,"timestamp":null,"type":"group","version":2,"groupId":"ÿ¦ÿæxxxxxxxxx\u00050xO","isArchived":false,"profileSharing":false,"messageCountBeforeMessageRequests":1,"derivedGroupV2Id":"0K5aC+GxxxxxxxxxxN+96xxxxxxxxxxI+BnxXbsGs+8=","markedUnread":false,"needsStorageServiceSync":false,"storageID":"vxxxxxxxxxxGbR9y+jD8LA==","muteExpiresAt":0,"active_at":null,"draft":"","draftBodyRanges":[],"draftChanged":false,"draftTimestamp":null,"lastMessageDeletedForEveryone":false} active_at : (NULL) type : group members : 203fc354-2fe0-495b-b417-exxxxxxxxxx8 name : test profileName : (NULL) profileFamilyName : (NULL) profileFullName : (NULL) e164 : (NULL) uuid : (NULL) groupId : ÿ¦ÿæxxxxxxxxxxxO profileLastFetchedAt : (NULL) Trying to match conversation (37/141) (type: private)

bepaald commented 1 year ago

But you could still take the blurred preview right? At least showing in the html output that there was an attachment there, but it can't be recovered. I haven't checked, maybe you already do this. Definitely do not discard the whole message, there might be text accompanying the attachment / media which can still be preserved and exported. Again maybe you already do that haven't had time to check.

The blurred preview is not an actual image, its a blurhash, putting that into the Android backup will not help much, and I don't think I will be writing an implementation of that very soon. The message is not discarded, only the attachment is left out.

I think I fixed that first group (the expected base64 encoded data appears to be in the json in this case).

For the second, I see a derivedGroupV2Id in the json which the code is now trying to use, but some more data is printed when no match is found.

I was thinking: If and when we get through all unexpected errors/warnings, I could maybe add a --forceaddunknownrecipients options to insert all the recipients that are not in the Android backup into it. I'm not doing that by default because the idea of the --importformdesktop function is to generate a safe, working Android backup (which this probably won't do). But in your case, adding the recipients with only an id and a name would probably be enough to get the --exporthtml function to handle them mostly correctly.

Meteor0id commented 1 year ago

The blurred preview is not an actual image, its a blurhash, putting that into the Android backup will not help much, and I don't think I will be writing an implementation of that very soon. The message is not discarded, only the attachment is left out.

Just some placeholder than to show there used to be some attachment here.

And also placeholders for deleted messages as far as there is still some timestamp in the database

but that's a feature request off-topic

I was thinking: If and when we get through all unexpected errors/warnings, I could maybe add a --forceaddunknownrecipients options to insert all the recipients that are not in the Android backup into it. I'm not doing that by default because the idea of the --importformdesktop function is to generate a safe, working Android backup (which this probably won't do). But in your case, adding the recipients with only an id and a name would probably be enough to get the --exporthtml function to handle them mostly correctly.

great idea, and throw a fat warning "are you sure" if they use --forceaddunknownrecipients without one of the export options, because why would you. btw you are getting through most of the errors and warnings I am seeing pretty fast so you might get to that point soon. I'll go see how much is left. I saw a lot of failed to find uuids still but maybe that's not something we can help.

Meteor0id commented 1 year ago

getting

Error: Failed to set address of incoming group message. Skipping
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

on Trying to match conversation (121/141) (type: group)

will come back with snippets of other errors later

bepaald commented 1 year ago

Just some placeholder than to show there used to be some attachment here.

Yeah, I was thinking about how to do that. Not really keen on (designing and) distributing an image next to the program, it would complicate packaging a lot. I'd probably add an option for a user to supply their own placeholder image for missing attachments. It's kind of hacky, but it would easily allow having different placeholder images for different missing media types.

And also placeholders for deleted messages as far as there is still some timestamp in the database

Remote deleted messages should already export correctly I think (the ones that are still visible as 'this message was deleted'). Messages that are actually fully deleted (not visible in any way) are not in the database anymore.

btw you are getting through most of the errors and warnings I am seeing pretty fast so you might get to that point soon.

I'll believe it when I see it :-)

I'll go see how much is left. I saw a lot of failed to find uuids still but maybe that's not something we can help.

Yeah, so these are supposed to be recipients that appear in the desktop database in some way (message sender, quote author, whatever) that can not be matched to any recipient in the Android backup. If you have any reason to believe these recipients are definitely in the Android backup, there may be more bugs happening...

Error: Failed to set address of incoming group message. Skipping terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

So, I think the error and the terminate are actually not related? The error is probably another place where I'm looking for a UUID while only a phonenumber is available. I've added some code again, to give me more information.

The std::bad_alloc is going to be a nasty problem, I have no idea where it is coming from (I'm not explicitly allocating memory in the top-level function). I've added a verbose mode to try to pinpoint where this error occurs, though I expect that I will have to repeat that several times to get to the bottom of it... So, please run with --verbose added. Also, the verbose-flag has effect on more functions than just --importfromdesktop, so expect a LOT of output...

Meteor0id commented 1 year ago

Yeah, I was thinking about how to do that. Not really keen on (designing and) distributing an image next to the program, it would complicate packaging a lot. I'd probably add an option for a user to supply their own placeholder image for missing attachments. It's kind of hacky, but it would easily allow having different placeholder images for different missing media types.

in HTML output you could just render a square with the text "video unavaialble" or "image unavailable" or "pdf unavailable" in it. No need to have an actual image anywhere, just a placeholder you render in the output.

The std::bad_alloc is going to be a nasty problem, I have no idea where it is coming from

I suspect it might have to do with insufficient memory on my device when I have a lot of tabs open in my browser. I reran the same version of your tool which I used in the last test and this time it passed normally.

Will do more testing later

bepaald commented 1 year ago

in HTML output you could just render a square with the text "video unavaialble" or "image unavailable" or "pdf unavailable" in it. No need to have an actual image anywhere, just a placeholder you render in the output.

Yeah, I need to think about this. When skipping the missing attachments during import, as I do now, there is no way for the exporthtml-function to know an attachment is missing. It's the job of --importfromdesktop to create a valid and (as much as possible) equivalent Android backup, so setting some custom flags to mark the missing attachment isn't really an option for me. Besides, missing attachments aren't rendered on Android or Desktop anyway (except possibly a blurhash (but only if it's an image attachment and you don't click the download button), so in a way, it's behaving correctly now.

I did add a test for a pending field on the missing attachments (this has an equivalent in the Android db), to which I maybe saw some references in SignalDesktop's source code. So if you run this again and see a Pending: 1 after either the Attachment not found or the Error: Trying to set attachment data. that would be useful information.

I suspect it might have to do with insufficient memory on my device when I have a lot of tabs open in my browser. I reran the same version of your tool which I used in the last test and this time it passed normally.

I was secretly hoping it was something like that. Good news for me! :-)

I did actually also change the way I insert attachments on import (not reading them in memory as they are found, but delaying this until they are exported and then dropping them immediately after writing). This was already the way I handled attachments in every other function of this program, but not --importfromdesktop for some reason. It should (depending of the amount of attachments in the database) help quite a bit with this programs memory usage.

Meteor0id commented 1 year ago

So if you run this again and see a Pending: 1 after either the Attachment not found or the Error: Trying to set attachment data. that would be useful information.

I see quite a few of those, but there is no additional info on those (maybe I need to run --verbose?). Also some Pending: 0.

other things: Still loads of

Failed to finding recipient for uuid: A1E6xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"id":1638xxxxxxxx1,"authorUuid":"A1E6xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","text":"In the string \"Your safety number with [1 %s] changed, likely because they reinstalled Signal or changed devices....\" do you think it is ok to use the variable twice instead of translating \"they\"? I see some translations are using \"he or she\" but I think using the variable (profile name) would work just as well.","attachments":[],"bodyRanges":[],"referencedMessageNotFound":false,"isViewOnce":false,"messageId":""}

Here is a tiny snippet to show some of the things I am seeing. Note the empty message type.

Warning: Attachment not found.
Pending: 0
Warning: Attachment not found.
Pending: 0
Warning: Unsupported messagetype ''. Skipping message.
Trying to match conversation (68/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 4001xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
 - Importing 2 messages into thread._id 1206
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Trying to match conversation (69/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: b502xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
 - Importing 8 messages into thread._id 1207
Inserting 1 message reactions.
Trying to match conversation (70/141) (type: private)

Another snippet


FRAME 98279 (100.0%)... 
FRAME 98280 (100.0%)... 
FRAME 98281 (100.0%)... Read entire backup file...

done!
Trying to match conversation (1/141) (type: private)
 - Importing 3853 messages into thread._id 1108
Inserting 1 message reactions.
Inserting 1 message reactions.
Inserting 1 message reactions.
Inserting 1 message reactions.
Inserting 1 message reactions.
Warning: Attachment not found.
Pending: 0
Warning: Attachment not found.
Pending: 0
Warning: Attachment not found.
Pending: 0
File unexpectedly small
Trying to match conversation (2/141) (type: group)
Failed to finding recipient for uuid: __signal_group__v2__!100axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error : Group V1 type not yet supported
 === Row 1/1 ===
                  id : ddefxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                json : {"unreadCount":0,"verified":0,"messageCount":2,"sentMessageCount":0,"color":"A170","id":"ddefxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","lastMessage":"","lastMessageStatus":null,"left":true,"members":["d608xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","792bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","e1cbxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],"name":"geheime xxx inlichtingen kanaal","sealedSender":0,"timestamp":null,"type":"group","version":2,"groupId":"¿U6xxxxxxxxxxxþŠ\u0013êÓi_","messageCountBeforeMessageRequests":2,"derivedGroupV2Id":"EAqLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxLAbI=","isArchived":false,"markedUnread":false,"muteExpiresAt":0,"profileSharing":false,"active_at":null,"draft":"","draftBodyRanges":[],"draftChanged":false,"draftTimestamp":null,"lastMessageDeletedForEveryone":false,"storageVersion":18164,"storageID":"pRssxxxxxxxxxxxxxxxxuA=="}
           active_at : (NULL)
                type : group
             members : d608xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 792bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx e1cbxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                name : geheime xxx inlichtingen kanaal
         profileName : (NULL)
   profileFamilyName : (NULL)
     profileFullName : (NULL)
                e164 : (NULL)
                uuid : (NULL)
             groupId : ¿U6xxxxxxxxxxÓi_
profileLastFetchedAt : (NULL)
        HEX(groupId) : C2BFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5F
Trying to match conversation (3/141) (type: group)
Failed to finding recipient for uuid: __signal_group__v2__!c66fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Warning: Chat partner was not found in recipient-table. Creating is not (yet?) supported. Skipping. (id: __signal_group__v2__!c66fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx412f)
Trying to match conversation (4/141) (type: group)
Failed to finding recipient for uuid: __signal_group__v2__!9f09xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error : Group V1 type not yet supported
 === Row 1/1 ===
                  id : eb24xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                json : {"unreadCount":0,"verified":0,"messageCount":3,"sentMessageCount":0,"active_at":1549330648092,"color":"A110","id":"eb24xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","lastMessage":"Veiligheidsnummer met Nina is veranderd","lastMessageStatus":null,"left":false,"members":["c231xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","0ec3xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","8f12xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","7ceaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","6a85xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],"name":"sleepwet fotos","sealedSender":0,"timestamp":null,"type":"group","version":2,"groupId":"¹º3xxxxxxx\u0005Þ­Ä?","messageCountBeforeMessageRequests":3,"derivedGroupV2Id":"nwlZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGE=","isArchived":false,"markedUnread":false,"muteExpiresAt":0,"profileSharing":false,"storageVersion":18164,"storageID":"Xxxxxxk+gxxxxxxxxxxxew=="}
           active_at : 1549330648092
                type : group
             members : c231xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 0ec3xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 8f12xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 7ceaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 6a85xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                name : sleepwet fotos
         profileName : (NULL)
   profileFamilyName : (NULL)
     profileFullName : (NULL)
                e164 : (NULL)
                uuid : (NULL)
             groupId : ¹º3xxxxxxxxxx?
profileLastFetchedAt : (NULL)
        HEX(groupId) : C2B9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx90
Trying to match conversation (5/141) (type: group)
 - Importing 315 messages into thread._id 2
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'group-v1-migration'. Skipping message.
Warning: Unsupported messagetype 'group-v2-change'. Skipping.
Warning: Unsupported messagetype 'group-v2-change'. Skipping.
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'keychange'. Skipping message.
Warning: Unsupported messagetype 'group-v2-change'. Skipping.
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Error : Asked to find recipient._id for empty uuid. Refusing
Error: Failed to set address of incoming group message. Skipping
Some more info: 
 === Row 1/1 ===
                     rowid : 31
                        id : 2e57xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                      json : {"attachments":[{"caption":null,"contentType":"image/png","digest":{},"fileName":null,"flags":null,"height":2160,"id":"74xxxxxxxxxxxxxxx11","key":{},"path":"89\\8988xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxce","size":251113,"thumbnail":{"contentType":"image/png","height":150,"path":"42\\42d3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx99","width":150},"width":1080}],"body":"","contact":[],"conversationId":"9b30xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","decrypted_at":1550191560448,"errors":[],"flags":0,"hasAttachments":1,"hasVisualMediaAttachments":1,"id":"2e57xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","preview":[],"quote":null,"received_at":1550191560294,"schemaVersion":10,"sent_at":1549635208654,"source":"+316xxxxxxxx","sourceDevice":1,"timestamp":1550191560294,"type":"incoming","unidentifiedDeliveryReceived":true,"readStatus":0,"seenStatus":0}
                readStatus : 0
                expires_at : (NULL)
                   sent_at : 1549635208654
             schemaVersion : 10
            conversationId : 9b30xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
               received_at : 1550191560294
                    source : 316xxxxxxxx [NOTE THIS IS A PHONE NUMBER WITHOUT A + IN FRONT OF IT, IF ANYONE CARES TO KNOW]
            hasAttachments : 1
        hasFileAttachments : (NULL)
 hasVisualMediaAttachments : 1
               expireTimer : (NULL)
  expirationStartTimestamp : (NULL)
                      type : incoming
                      body : 
              messageTimer : (NULL)
         messageTimerStart : (NULL)
     messageTimerExpiresAt : (NULL)
                  isErased : (NULL)
                isViewOnce : (NULL)
                sourceUuid : (NULL)
                serverGuid : (NULL)
              sourceDevice : 1
                   storyId : (NULL)
                   isStory : 0
       isChangeCreatedByUs : 0
     isTimerChangeFromSync : 0
         isGroupLeaveEvent : 0
isGroupLeaveEventFromOther : 0
                seenStatus : 0
   storyDistributionListId : (NULL)
                    callId : (NULL)
                  callMode : (NULL)
      shouldAffectActivity : 1
       shouldAffectPreview : 1
    isUserInitiatedMessage : 1
                 expiresAt : 9007199254740991
bepaald commented 1 year ago

I see quite a few of those, but there is no additional info on those (maybe I need to run --verbose?). Also some Pending: 0.

Ok, that's good, at least for the Pending: 1's I could set the pending flag in the Android db and add some placeholder text in the HTML output.

Here is a tiny snippet to show some of the things I am seeing. Note the empty message type.

Yeah that's interesting, I will probably need to output some more info to find out what that is.

I'm afraid trying to match the group-V1 groups does not seem to be working.

I also see some UUID's being matched in uppercase, I had not seen this before until recently, but then did made sure the matching was case-insensitive. But I'll double check to see if that's working.

With that last snippet I should be able to correctly set the incoming group message address, there does not appear to be a uuid for that message, but I should be able to match by phone number, which I now know is in source.

Not sure when I'll have time, but I'll try to work through these things one by one and let you know.

At some point, it might also be interesting to export the Android backup's database (--output [somedirectory] --onlydb) and inspect it with sqlite to see what contacts are actually in there (SELECT DISTINCT COALESCE(uuid,group_id) FROM recipient). Maybe you can confirm that all the Failed to finding recipient for uuid (which I now see is a typo, haha) are indeed not there.

Thanks!

bepaald commented 1 year ago

Ok, I am now

Let's see what errors you are seeing now...

I've also double-checked and I believe I am really doing SELECT LOWER(uuid)... everywhere, so if you still see Failed to finding recipient for uuid: A1E6xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx with uppercase uuid's I would love to know.

I also have a few SIM cards on the way (hopefully, they don't always arrive), so I could generate and handle some more message types (key changes) in the near future.

Meteor0id commented 1 year ago
Trying to match conversation (50/141) (type: group)
 - Importing 8 messages into thread._id 993
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Warning: Unsupported messagetype 'group-v1-migration'. Some more info:
 === Row 1/1 ===
                     rowid : 21797
                        id : 2ea1xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxd8
                      json : {"id":"2ea1xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxd8","schemaVersion":10,"type":"group-v1-migration","groupMigration":{"areWeInvited":false,"invitedMembers":[],"droppedMemberIds":[]},"conversationId":"ff0axxxx-xxxx-xxxx-xxxx-xxxxxxxxxx01","received_at":1625859418234,"received_at_ms":1625521875266,"sent_at":1625521875266,"readStatus":0,"seenStatus":2}
                readStatus : 0
                expires_at : (NULL)
                   sent_at : 1625521875266
             schemaVersion : 10
            conversationId : ff0axxxx-xxxx-xxxx-xxxx-xxxxxxxxxx01
               received_at : 1625859418234
                    source : (NULL)
            hasAttachments : 0
        hasFileAttachments : 0
 hasVisualMediaAttachments : 0
               expireTimer : (NULL)
  expirationStartTimestamp : (NULL)
                      type : group-v1-migration
                      body : (NULL)
              messageTimer : (NULL)
         messageTimerStart : (NULL)
     messageTimerExpiresAt : (NULL)
                  isErased : 0
                isViewOnce : 0
                sourceUuid : (NULL)
                serverGuid : (NULL)
              sourceDevice : (NULL)
                   storyId : (NULL)
                   isStory : 0
       isChangeCreatedByUs : 0
     isTimerChangeFromSync : 0
         isGroupLeaveEvent : 0
isGroupLeaveEventFromOther : 0
                seenStatus : 2
   storyDistributionListId : (NULL)
                    callId : (NULL)
                  callMode : (NULL)
      shouldAffectActivity : 0
       shouldAffectPreview : 0
    isUserInitiatedMessage : 0
                 expiresAt : 9007199254740991
Skipping message.
Warning: Unsupported messagetype 'group-v2-change'. Skipping.
Trying to match conversation (51/141) (type: group)

Note also the typo "messagetype". In Dutch we pull nouns together but in English it should be "message type" ;)

I also have a few SIM cards on the way (hopefully, they don't always arrive) Curious about this, do you need a specific kind of sim card or are you looking to get an anonymous sim card?

Trying to match conversation (4/141) (type: group) Failed to find recipient for uuid: __signal_groupv2!9f09xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Error : Group V1 type not yet supported Possible group id: C2B9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx90 Trying to match conversation (5/141) (type: group)

Only one single case of trying with phone number:

Trying to match conversation (32/141) (type: private)
Warning : Failed to determine uuid. Trying with phone number...
Warning: Failed to find matching thread for conversation, creating. (id: )
 - Importing 35 messages into thread._id 1200
Trying to match conversation (33/141) (type: private)

The id is not getting printed btw.

Warning: Unsupported messagetype 'verified-change'. Skipping message.
Warning: Unsupported messagetype 'group-v2-change'. Skipping.
Warning: Unsupported messagetype (empty type). Printing info:
 === Row 1/1 ===
                     rowid : 5408
                        id : f240xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx73
                      json : {"timestamp":1601133013242,"attachments":[],"conversationId":"800cxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxa4","sent_at":1601133006834,"received_at":1601133006834,"flags":2,"expirationTimerUpdate":{"expireTimer":604800,"source":"+79xxxxxxxxx","fromSync":false,"fromGroupUpdate":true},"schemaVersion":10,"id":"f240xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx73","hasAttachments":0,"contact":[],"readStatus":0,"seenStatus":0}
                readStatus : 0
                expires_at : (NULL)
                   sent_at : 1601133006834
             schemaVersion : 10
            conversationId : 800cxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxa4
               received_at : 1601133006834
                    source : (NULL)
            hasAttachments : 0
        hasFileAttachments : (NULL)
 hasVisualMediaAttachments : (NULL)
               expireTimer : (NULL)
  expirationStartTimestamp : (NULL)
                      type : (NULL)
                      body : (NULL)
              messageTimer : (NULL)
         messageTimerStart : (NULL)
     messageTimerExpiresAt : (NULL)
                  isErased : (NULL)
                isViewOnce : (NULL)
                sourceUuid : (NULL)
                serverGuid : (NULL)
              sourceDevice : (NULL)
                   storyId : (NULL)
                   isStory : 0
       isChangeCreatedByUs : 0
     isTimerChangeFromSync : 0
         isGroupLeaveEvent : 0
isGroupLeaveEventFromOther : 0
                seenStatus : 0
   storyDistributionListId : (NULL)
                    callId : (NULL)
                  callMode : (NULL)
      shouldAffectActivity : 1
       shouldAffectPreview : 1
    isUserInitiatedMessage : 1
                 expiresAt : 9007199254740991
Skipping message.
Trying to match conversation (63/141) (type: group)

Another:

Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Unsupported messagetype (empty type). Printing info:
 === Row 1/1 ===
                     rowid : 59858
                        id : a5f4xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxaf
                      json : {"timestamp":1635780458395,"attachments":[],"readStatus":0,"conversationId":"0be8xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx02","sent_at":1635780456705,"received_at":1629736595676,"received_at_ms":1635780456705,"flags":2,"expirationTimerUpdate":{"expireTimer":2419200,"source":"+491xxxxxxxxx","fromSync":false,"fromGroupUpdate":false},"schemaVersion":10,"id":"a5f4xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxaf","hasAttachments":0,"contact":[],"seenStatus":0}
                readStatus : 0
                expires_at : (NULL)
                   sent_at : 1635780456705
             schemaVersion : 10
            conversationId : 0be8xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx02
               received_at : 1629736595676
                    source : (NULL)
            hasAttachments : 0
        hasFileAttachments : 0
 hasVisualMediaAttachments : 0
               expireTimer : (NULL)
  expirationStartTimestamp : (NULL)
                      type : (NULL)
                      body : (NULL)
              messageTimer : (NULL)
         messageTimerStart : (NULL)
     messageTimerExpiresAt : (NULL)
                  isErased : 0
                isViewOnce : 0
                sourceUuid : (NULL)
                serverGuid : (NULL)
              sourceDevice : (NULL)
                   storyId : (NULL)
                   isStory : 0
       isChangeCreatedByUs : 0
     isTimerChangeFromSync : 0
         isGroupLeaveEvent : 0
isGroupLeaveEventFromOther : 0
                seenStatus : 0
   storyDistributionListId : (NULL)
                    callId : (NULL)
                  callMode : (NULL)
      shouldAffectActivity : 1
       shouldAffectPreview : 1
    isUserInitiatedMessage : 1
                 expiresAt : 9007199254740991
Skipping message.
Trying to match conversation (68/141) (type: private)
Trying to match conversation (112/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 84e4xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxe6)
 - Importing 54 messages into thread._id 1257
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Warning: Unsupported messagetype 'profile-change'. Skipping message.
Warning: Unsupported messagetype 'change-number-notification'. Skipping message.
Warning: Unsupported messagetype (empty type). Printing info:
 === Row 1/1 ===
                     rowid : 96842
                        id : 088fxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxfb
                      json : {"timestamp":1646954492822,"attachments":[],"readStatus":0,"conversationId":"4bdaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxaf","sent_at":1646954491912,"received_at":1629736774436,"received_at_ms":1646954491912,"flags":2,"expirationTimerUpdate":{"expireTimer":85750661,"source":"2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbe","fromSync":false,"fromGroupUpdate":false},"schemaVersion":10,"id":"088fxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxfb","hasAttachments":0,"contact":[],"seenStatus":0}
                readStatus : 0
                expires_at : (NULL)
                   sent_at : 1646954491912
             schemaVersion : 10
            conversationId : 4bdaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxaf
               received_at : 1629736774436
                    source : (NULL)
            hasAttachments : 0
        hasFileAttachments : 0
 hasVisualMediaAttachments : 0
               expireTimer : (NULL)
  expirationStartTimestamp : (NULL)
                      type : (NULL)
                      body : (NULL)
              messageTimer : (NULL)
         messageTimerStart : (NULL)
     messageTimerExpiresAt : (NULL)
                  isErased : 0
                isViewOnce : 0
                sourceUuid : (NULL)
                serverGuid : (NULL)
              sourceDevice : (NULL)
                   storyId : (NULL)
                   isStory : 0
       isChangeCreatedByUs : 0
     isTimerChangeFromSync : 0
         isGroupLeaveEvent : 0
isGroupLeaveEventFromOther : 0
                seenStatus : 0
   storyDistributionListId : (NULL)
                    callId : (NULL)
                  callMode : (NULL)
      shouldAffectActivity : 1
       shouldAffectPreview : 1
    isUserInitiatedMessage : 1
                 expiresAt : 9007199254740991
Skipping message.
Warning: Unsupported messagetype (empty type). Printing info:
 === Row 1/1 ===
                     rowid : 107111
                        id : 1467xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx41
                      json : {"timestamp":1649694328779,"attachments":[],"readStatus":0,"conversationId":"4bdaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxaf","sent_at":1649594778322,"received_at":1649432459933,"received_at_ms":1649694313146,"flags":2,"expirationTimerUpdate":{"source":"+316xxxxxxxx","fromSync":false,"fromGroupUpdate":false},"schemaVersion":10,"id":"1467xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx41","hasAttachments":0,"contact":[],"seenStatus":0}
                readStatus : 0
                expires_at : (NULL)
                   sent_at : 1649594778322
             schemaVersion : 10
            conversationId : 4bdaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxaf
               received_at : 1649432459933
                    source : (NULL)
            hasAttachments : 0
        hasFileAttachments : 0
 hasVisualMediaAttachments : 0
               expireTimer : (NULL)
  expirationStartTimestamp : (NULL)
                      type : (NULL)
                      body : (NULL)
              messageTimer : (NULL)
         messageTimerStart : (NULL)
     messageTimerExpiresAt : (NULL)
                  isErased : 0
                isViewOnce : 0
                sourceUuid : (NULL)
                serverGuid : (NULL)
              sourceDevice : (NULL)
                   storyId : (NULL)
                   isStory : 0
       isChangeCreatedByUs : 0
     isTimerChangeFromSync : 0
         isGroupLeaveEvent : 0
isGroupLeaveEventFromOther : 0
                seenStatus : 0
   storyDistributionListId : (NULL)
                    callId : (NULL)
                  callMode : (NULL)
      shouldAffectActivity : 1
       shouldAffectPreview : 1
    isUserInitiatedMessage : 1
                 expiresAt : 9007199254740991
Skipping message.
Trying to match conversation (113/141) (type: private)
Inserting 1 message reactions.
Inserting 2 message reactions.
Inserting 1 message reactions.
Warning: Failed to get number of attachment in quoted message. Skipping
Inserting 2 message reactions.
Inserting 2 message reactions.

Inserting 1 message reactions.
Inserting 1 message reactions.
Inserting 1 message reactions.
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Inserting 1 message reactions.
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Warning: Failed to find quote author. skipping

And finally a surprise all the way at the bottom of the log:

Dealing with thread 1262
Dealing with thread 1263
Dealing with thread 1264
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

I'll run it again and see if the bad_alloc happens again. Will edit this comment this in a few minutes.

Edit: completed successfully without bad_alloc the second time

Meteor0id commented 1 year ago

Have you actually run into confirmed cases of a missing attachment in Android? If so, there is this ticket on Signal Android repository: https://github.com/signalapp/Signal-Android/issues/12823

I have seen it for certain on Desktop, but am not sure about Android. I thought I had reported it on Desktop but I can't find it back.

Meteor0id commented 1 year ago

At some point, it might also be interesting to export the Android backup's database (--output [somedirectory] --onlydb) and inspect it with sqlite to see what contacts are actually in there (SELECT DISTINCT COALESCE(uuid,group_id) FROM recipient). Maybe you can confirm that all the Failed to finding recipient for uuid (which I now see is a typo, haha) are indeed not there.

Most uuids are indeed not in the recipient table, but a few are.

Failed to find recipient for uuid: a79exxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

actually is in recipients, but the tool does not find it. I see nothing unusual about that entry. All I can think of is that there are coincidentally two UUIDs starting with a79e and the one I found is not the one the tool is looking for.

Failed to find recipient for uuid: __signal_group__v2__!858bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Failed to find recipient for uuid: __signal_group__v2__!b218xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

actually are in recipients (only the uuid part, not the __signal_group__v2__! prefix), but the tool does not find it. I noticed group_id for this entry is NULL.

bepaald commented 1 year ago

Note also the typo "messagetype". In Dutch we pull nouns together but in English it should be "message type" ;)

fixed

Curious about this, do you need a specific kind of sim card or are you looking to get an anonymous sim card?

No, I'm just aiming for the cheapest one. I only need a number to receive the registration sms, so I don't want any type of subscription, and don't actually put any money onto the prepaid cards (which is why they expire after some time, then they will still work fine for signal, but I can't reinstall because I can't receive the sms anymore. But for some tests I really need to reinstall). I used to get prepaid cards from HEMA for 1 euro (pretty much anonymously, paying cash in store) but they don't have those anymore. Usually there's a provider offering them for under 5 euro, the ones on the way now were actually free! But it's not uncommon for some not to arrive.

Only one single case of trying with phone number: The id is not getting printed btw.

That looks good actually, the matching by phone worked. I've changed the output in the phone case to not show the empty id.

The empty types: They all seem to be expiration timer updates. What I'm not sure about is it's format, I see "expireTimer":85750661. If I set an expiration, for example to one day, I get a timer of 86400: 1 day in seconds. But looking at your value (and the Signal Desktop source code) I expected the value to be in milliseconds. But even then it's still a weird value since it's actually in millisecond precision. Maybe you could find these messages and tell what they look like? From the timestamps (of the last two you posted) they were sent 23 aug 2021 18:39:34 CEST and 10 apr 2022 14:46:18 CEST respectively, in some 1-on1 conversation (you may have the source phone number in your output, though it might be your own).

terminate called after throwing an instance of 'std::bad_alloc'

Oops. So, while I said earlier that I already was memory-friendly everywhere except for the bad_alloc you encountered before. Turns out, I also had an opportunity to drop attachment data during HTML export that I wasn't using. So, now you should not run into memory problems anymore.

Have you actually run into confirmed cases of a missing attachment in Android?

Well, yeah, personally just the one I described in my previous message. It has part.pending_push set to 3 (= TRANSFER_PROGRESS_FAILED), but I only know that because I inspected the decrypted sql database. Looking at the phone I wouldn't know there was an attachment.

Most uuids are indeed not in the recipient table, but a few are. actually is in recipients, but the tool does not find it. I see nothing unusual about that entry. All I can think of is that there are coincidentally two UUIDs starting with a79e and the one I found is not the one the tool is looking for. actually are in recipients (only the uuid part, not the __signal_groupv2! prefix), but the tool does not find it. I noticed group_id for this entry is NULL.

Hmmm, I would guess all of these might actually just be uuid's that start with the same two (hex) digits? Did you actually check the full uuid, or just the non-x part printed by the import function? Could you check with the full uuid's? You can dump the decrypted desktop db by running signalbackup-tools [input] [passphrase] --dumpdesktopdb [/path/to/signaldesktop/data] [/path/to/signaldesktop/data] (yes, that command needs a dummy Android backup as input and the signal desktop path twice :S ). Alternatively, I could just remove the xxx censoring in a next update if you want, just let me know.

The group-v1-migration info was useful as well, I will deal with that later though.

Have you, by the way, looked at the generated HTML as well? Does that look more or less ok so far?

bepaald commented 1 year ago

I found an old note by myself yesterday with some info on the way the group v1 id is stored in the Desktop database. So I think I finally managed to get that working. (The solution, if anyone cares, was that while the data is just binary bytes, these bytes are for some bad reason treated as chars and utf8 encoded (so any byte above 0x80 took up two bytes). Makes no sense to me, but what do I know.)

So if you run this again, also look out for the Group V1 type not yet supported message and see if any matches are printed now. Of course, for matches to happen these groups then also need to exist in your Android backup, do you happen to remember if there were any groups that did not start with '__signal_group__v2__!' when you checked?

Meteor0id commented 1 year ago

current version terminates with

Trying to match conversation (6/141) (type: private)
 - Importing 6 messages into thread._id 59
Error : After sqlite3_step(): NOT NULL constraint failed: message.date_sent
  Query: "INSERT INTO message(thread_id, date_sent, date_received, type, recipient_id, recipient_device_id, read) VALUES (?, ?, ?, ?, ?, ?, ?)"
Error: Inserting keychange into mms
bepaald commented 1 year ago

Thanks, that's unexpected. I use the sent_at field to get the timestamp of every single message this function imports, but for this keychange message, it's apparently not set.

This sent_at has its own field in the messages table, but it is also doubled in the json string in that same table. So last night I pushed a change to use that one if the first is NULL. If both turn out to be NULL, it now prints the message data to the terminal so we can see how I can get a timestamp from it. So please run again at your convenience.

Meteor0id commented 1 year ago

Still terminating very early:

Error: Failed to set address of incoming group message. Skipping
Warning: Unsupported message type 'group-v1-migration'. Some more info:
Error : During sqlite3_prepare_v2(): near "AS": syntax error
  Query: "SELECT json_extract(json, '$.groupMigration.areWeInvited' AS areWeInvited,json_extract(json, '$.groupMigration.invitedMembers' AS invitedMembers,json_extract(json, '$.groupMigration.droppedMemberIds' AS droppedmemberIds FROM messages WHERE rowid = ?"
(no results)
Skipping message.
Trying to match conversation (6/141) (type: private)
 - Importing 6 messages into thread._id 59
Error : After sqlite3_step(): NOT NULL constraint failed: message.date_sent
  Query: "INSERT INTO message(thread_id, date_sent, date_received, type, recipient_id, recipient_device_id, read) VALUES (?, ?, ?, ?, ?, ?, ?)"
Error: Inserting keychange into mms
 === Row 1/1 ===
                     rowid : 5258
                        id : f5f9xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx87
                      json : {"conversationId":"7ceaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxec","type":"keychange","sent_at":null,"received_at":1597850064575,"key_changed":"+316xxxxxxx1","unread":1,"id":"f5f9xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx87","schemaVersion":10,"attachments":[],"hasAttachments":0,"contact":[],"readStatus":0,"seenStatus":2}
                readStatus : 0
                expires_at : (NULL)
                   sent_at : (NULL)
             schemaVersion : 10
            conversationId : 7ceaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxec
               received_at : 1597850064575
                    source : (NULL)
            hasAttachments : 0
        hasFileAttachments : (NULL)
 hasVisualMediaAttachments : (NULL)
               expireTimer : (NULL)
  expirationStartTimestamp : (NULL)
                      type : keychange
                      body : (NULL)
              messageTimer : (NULL)
         messageTimerStart : (NULL)
     messageTimerExpiresAt : (NULL)
                  isErased : (NULL)
                isViewOnce : (NULL)
                sourceUuid : (NULL)
                serverGuid : (NULL)
              sourceDevice : (NULL)
                   storyId : (NULL)
                   isStory : 0
       isChangeCreatedByUs : 0
     isTimerChangeFromSync : 0
         isGroupLeaveEvent : 0
isGroupLeaveEventFromOther : 0
                seenStatus : 2
   storyDistributionListId : (NULL)
                    callId : (NULL)
                  callMode : (NULL)
      shouldAffectActivity : 0
       shouldAffectPreview : 0
    isUserInitiatedMessage : 0
                 expiresAt : 9007199254740991
bepaald commented 1 year ago

Thanks, the termination is hopefully fixed now. Also took care of this one Error : During sqlite3_prepare_v2(): near "AS": syntax error (forgot some brackets).

Meteor0id commented 1 year ago
FRAME 25778 (099.9%)... 
FRAME 25779 (100.0%)... 
FRAME 25780 (100.0%)... Read entire backup file...

done!
Trying to match conversation (1/141) (type: private)
 - Importing 4011 messages into thread._id 1108
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Trying to match conversation (2/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!100axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: C2BFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5F
Trying to match conversation (3/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!c66fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf)
 - Importing 2281 messages into thread._id 1184
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : []
droppedmemberIds : []
Skipping message.
Warning: Unsupported message type 'group-v2-change'. Skipping... (this warning will be shown only once)
Trying to match conversation (4/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!9f09xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: C2B9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx90
Trying to match conversation (5/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!889exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2)
 - Importing 315 messages into thread._id 1185
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : [{"addedByUserId":"2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbe","conversationId":"d608xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx6a","timestamp":1614770366146,"role":2},{"addedByUserId":"2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbe","conversationId":"0ec3xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxa6","timestamp":1614770366146,"role":2},{"addedByUserId":"2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbe","conversationId":"acc3xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxa7","timestamp":1614770366146,"role":2},{"addedByUserId":"2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbe","conversationId":"4437xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxe1","timestamp":1614770366146,"role":2},{"addedByUserId":"2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbe","conversationId":"7ceaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxec","timestamp":1614770366146,"role":2}]
droppedmemberIds : ["8f12xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxce","5040xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx6d","6a85xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx37"]
Skipping message.
Trying to match conversation (6/141) (type: private)
 - Importing 6 messages into thread._id 59
Trying to match conversation (7/141) (type: private)
 - Importing 3 messages into thread._id 27
Trying to match conversation (8/141) (type: private)
 - Importing 1 messages into thread._id 49
Trying to match conversation (9/141) (type: private)
 - Importing 4 messages into thread._id 1167
Trying to match conversation (10/141) (type: private)
 - Importing 176 messages into thread._id 1126
Warning: Attachment not found.
Trying to match conversation (11/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: fb6axxxx-xxxx-xxxx-xxxx-xxxxxxxxxx88)
 - Importing 4 messages into thread._id 1186
Trying to match conversation (12/141) (type: private)
 - Importing 473 messages into thread._id 1116
Trying to match conversation (13/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 16a1xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx20)
 - Importing 12 messages into thread._id 1187
Trying to match conversation (14/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 5dbaxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx47)
 - Importing 5 messages into thread._id 1188
Trying to match conversation (15/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: ff2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbb)
 - Importing 7 messages into thread._id 1189
Trying to match conversation (16/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: baa9xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx47)
 - Importing 7 messages into thread._id 1190
Trying to match conversation (17/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: a004xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxfd)
 - Importing 1 messages into thread._id 1191
Trying to match conversation (18/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 56fdxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxda)
 - Importing 12 messages into thread._id 1192
Trying to match conversation (19/141) (type: private)
 - Importing 70 messages into thread._id 1098
Trying to match conversation (20/141) (type: private)
 - Importing 26 messages into thread._id 1096
Trying to match conversation (21/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 7164xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx55)
 - Importing 4 messages into thread._id 1193
Trying to match conversation (22/141) (type: private)
 - Importing 2 messages into thread._id 33
Trying to match conversation (23/141) (type: private)
 - Importing 1 messages into thread._id 24
Trying to match conversation (24/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 9e5bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx4d)
 - Importing 1 messages into thread._id 1194
Trying to match conversation (25/141) (type: private)
 - Importing 1 messages into thread._id 28
Trying to match conversation (26/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 031axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxc0)
 - Importing 95 messages into thread._id 1195
Trying to match conversation (27/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: d017xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbb)
 - Importing 0 messages into thread._id 1196
Trying to match conversation (28/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!3cbaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0)
 - Importing 72 messages into thread._id 1197
Failed to find recipient for uuid: c3b7xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: c3b7xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : []
droppedmemberIds : ["41e8xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx94","fabfxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx79","caa1xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx4c"]
Skipping message.
Warning: Unsupported message type (empty type).
 === Row 1/1 ===
                flags : 2
expirationTimerUpdate : {"expireTimer":604800,"fromGroupUpdate":false,"fromSync":false,"source":"+467xxxxxxxx4"}
          expireTimer : 604800
      fromGroupUpdate : 0
Skipping message.
Trying to match conversation (29/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: d336xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxa1)
 - Importing 33 messages into thread._id 1198
Trying to match conversation (30/141) (type: private)
 - Importing 3 messages into thread._id 19
Trying to match conversation (31/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: d3e6xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx43)
 - Importing 48 messages into thread._id 1199
Trying to match conversation (32/141) (type: private)
Warning: Failed to determine uuid. Trying with phone number...
Warning: Failed to find matching thread for conversation, creating. (from e164)
 - Importing 35 messages into thread._id 1200
Trying to match conversation (33/141) (type: private)
 - Importing 69 messages into thread._id 312
Trying to match conversation (34/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!2704xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: C2BCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxA7
Trying to match conversation (35/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!a28bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: C280xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxB2
Trying to match conversation (36/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!d0aexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: C3BFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4F
Trying to match conversation (37/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 5d9exxxx-xxxx-xxxx-xxxx-xxxxxxxxxxc1)
 - Importing 160 messages into thread._id 1201
Trying to match conversation (38/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: fda9xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx64)
 - Importing 0 messages into thread._id 1202
Trying to match conversation (39/141) (type: private)
 - Importing 1 messages into thread._id 22
Trying to match conversation (40/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: b2e9xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx5f)
 - Importing 25 messages into thread._id 1203
Trying to match conversation (41/141) (type: group)
 - Importing 10 messages into thread._id 992
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : (NULL)
  invitedMembers : (NULL)
droppedmemberIds : (NULL)
Skipping message.
Trying to match conversation (42/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 5641xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxfc)
 - Importing 236 messages into thread._id 1204
Trying to match conversation (43/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 6d7bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxc9)
 - Importing 80 messages into thread._id 1205
Trying to match conversation (44/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!8f96xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb)
 - Importing 29 messages into thread._id 1206
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : []
droppedmemberIds : []
Skipping message.
Trying to match conversation (45/141) (type: group)
 - Importing 23 messages into thread._id 991
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : []
droppedmemberIds : []
Skipping message.
Trying to match conversation (46/141) (type: private)
 - Importing 17 messages into thread._id 1094
Trying to match conversation (47/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 65f4xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxea)
 - Importing 14 messages into thread._id 1207
Trying to match conversation (48/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 5cb4xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx1f)
 - Importing 1 messages into thread._id 1208
Trying to match conversation (49/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 9122xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxfc)
 - Importing 4 messages into thread._id 1209
Trying to match conversation (50/141) (type: group)
 - Importing 8 messages into thread._id 993
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : []
droppedmemberIds : []
Skipping message.
Trying to match conversation (51/141) (type: group)
 - Importing 36 messages into thread._id 994
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : []
droppedmemberIds : []
Skipping message.
Trying to match conversation (52/141) (type: private)
 - Importing 1 messages into thread._id 53
Trying to match conversation (53/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!8a8fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: C2B9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx17
Trying to match conversation (54/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!19a5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc)
 - Importing 21 messages into thread._id 1210
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : []
droppedmemberIds : []
Skipping message.
Trying to match conversation (55/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 40d2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx71)
 - Importing 2 messages into thread._id 1211
Trying to match conversation (56/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!dc3bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0)
 - Importing 191 messages into thread._id 1212
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : [{"addedByUserId":"000bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxe6","uuid":"40d2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx71","timestamp":1651801628714,"role":2}]
droppedmemberIds : []
Skipping message.
Trying to match conversation (57/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: cd81xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx74)
 - Importing 3 messages into thread._id 1213
Trying to match conversation (58/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 9ddbxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx63)
 - Importing 1 messages into thread._id 1214
Trying to match conversation (59/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: dd41xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx99)
 - Importing 1 messages into thread._id 1215
Trying to match conversation (60/141) (type: private)
 - Importing 358 messages into thread._id 1097
Trying to match conversation (61/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!858bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: C391xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8D
Trying to match conversation (62/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!102dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6)
 - Importing 34 messages into thread._id 1216
Warning: Unsupported message type 'group-v1-migration'. Some more info:
 === Row 1/1 ===
    areWeInvited : 0
  invitedMembers : []
droppedmemberIds : ["8a61xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxc5","1818xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxd7"]
Skipping message.
Warning: Unsupported message type (empty type).
 === Row 1/1 ===
                flags : 2
expirationTimerUpdate : {"expireTimer":604800,"source":"+796xxxxxxx0","fromSync":false,"fromGroupUpdate":true}
          expireTimer : 604800
      fromGroupUpdate : 1
Skipping message.
Trying to match conversation (63/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!d1b7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: 0265xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1E
Trying to match conversation (64/141) (type: group)
Failed to find recipient for uuid: __signal_group__v2__!b218xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Error: Group V1 type not yet supported
       Possible group id: 4F08xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5F
Trying to match conversation (65/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!5504xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb)
 - Importing 183 messages into thread._id 1217
Warning: Unsupported message type 'timer-notification'. Skipping... (this warning will be shown only once)
Warning: Failed to get number of attachments in quoted message. Skipping
Warning: Failed to get number of attachments in quoted message. Skipping
Trying to match conversation (66/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!a2eexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6)
 - Importing 4361 messages into thread._id 1218
Failed to find recipient for uuid: 8892xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 8892xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: a767xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: a767xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Warning: Unsupported message type 'change-number-notification'. Skipping message. (this warning will be shown only once)
Failed to find recipient for uuid: 2322xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Warning: Unsupported message type 'delivery-issue'. Skipping message. (this warning will be shown only once)
Trying to match conversation (67/141) (type: private)
 - Importing 12 messages into thread._id 1110
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Unsupported message type (empty type).
 === Row 1/1 ===
                flags : 2
expirationTimerUpdate : {"expireTimer":2419200,"source":"+491xxxxxxxx7","fromSync":false,"fromGroupUpdate":false}
          expireTimer : 2419200
      fromGroupUpdate : 0
Skipping message.
Trying to match conversation (68/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 4001xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxc3)
 - Importing 2 messages into thread._id 1219
Trying to match conversation (69/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: b502xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx72)
 - Importing 8 messages into thread._id 1220
Trying to match conversation (70/141) (type: private)
 - Importing 26 messages into thread._id 1153
Trying to match conversation (71/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 8c4fxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx18)
 - Importing 4 messages into thread._id 1221
Trying to match conversation (72/141) (type: private)
 - Importing 6 messages into thread._id 1113
Trying to match conversation (73/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 0f23xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxdc)
 - Importing 8 messages into thread._id 1222
Trying to match conversation (74/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!0697xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc)
 - Importing 3436 messages into thread._id 1223
Warning: Failed to get number of attachments in quoted message. Skipping
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Trying to match conversation (75/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 56fbxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx3c)
 - Importing 171 messages into thread._id 1224
Trying to match conversation (76/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: fa76xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx6b)
 - Importing 5 messages into thread._id 1225
Trying to match conversation (77/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 95b4xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx03)
 - Importing 23 messages into thread._id 1226
Trying to match conversation (78/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 2e0cxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx0a)
 - Importing 0 messages into thread._id 1227
Trying to match conversation (79/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 97ccxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx9e)
 - Importing 1 messages into thread._id 1228
Trying to match conversation (80/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: aea9xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxd7)
 - Importing 0 messages into thread._id 1229
Trying to match conversation (81/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: b308xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx91)
 - Importing 11 messages into thread._id 1230
Trying to match conversation (82/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!e178xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8)
 - Importing 1835 messages into thread._id 1231
Warning: Failed to get number of attachments in quoted message. Skipping
Warning: Failed to get number of attachments in quoted message. Skipping
Warning: Failed to get number of attachments in quoted message. Skipping
Warning: Failed to get number of attachments in quoted message. Skipping
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Trying to match conversation (83/141) (type: group)
 - Importing 0 messages into thread._id 998
Trying to match conversation (84/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 6e42xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx54)
 - Importing 23 messages into thread._id 1232
Trying to match conversation (85/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!bb94xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6)
 - Importing 3 messages into thread._id 1233
Trying to match conversation (86/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!17e4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1)
 - Importing 49 messages into thread._id 1234
Trying to match conversation (87/141) (type: group)
 - Importing 125 messages into thread._id 995
Trying to match conversation (88/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!75b5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6)
 - Importing 69 messages into thread._id 1235
Trying to match conversation (89/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!9153xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3)
 - Importing 14 messages into thread._id 1236
Trying to match conversation (90/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 7b7bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx6c)
 - Importing 31 messages into thread._id 1237
Trying to match conversation (91/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: d5a5xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxf8)
 - Importing 3 messages into thread._id 1238
Trying to match conversation (92/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: f8cexxxx-xxxx-xxxx-xxxx-xxxxxxxxxx04)
 - Importing 126 messages into thread._id 1239
Trying to match conversation (93/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!9177xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf)
 - Importing 0 messages into thread._id 1240
Trying to match conversation (94/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 8f4cxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx97)
 - Importing 14 messages into thread._id 1241
Trying to match conversation (95/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 7c05xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxd2)
 - Importing 7 messages into thread._id 1242
Trying to match conversation (96/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!4bcfxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7)
 - Importing 1372 messages into thread._id 1243
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Failed to get number of attachments in quoted message. Skipping
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Failed to get number of attachments in quoted message. Skipping
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Warning: Attachment not found.
Trying to match conversation (97/141) (type: private)
 - Importing 7 messages into thread._id 1103
Trying to match conversation (98/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: e21axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxf7)
 - Importing 43 messages into thread._id 1244
Trying to match conversation (99/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!62f3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7)
 - Importing 0 messages into thread._id 1245
Trying to match conversation (100/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!7b9bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb)
 - Importing 35 messages into thread._id 1246
Trying to match conversation (101/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 412exxxx-xxxx-xxxx-xxxx-xxxxxxxxxxa7)
 - Importing 0 messages into thread._id 1247
Trying to match conversation (102/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 5aa2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxa1)
 - Importing 12 messages into thread._id 1248
Trying to match conversation (103/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: ccc6xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxf3)
 - Importing 6 messages into thread._id 1249
Trying to match conversation (104/141) (type: private)
 - Importing 20 messages into thread._id 1106
Trying to match conversation (105/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: c4a2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxa8)
 - Importing 0 messages into thread._id 1250
Trying to match conversation (106/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!3cbcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3)
 - Importing 74 messages into thread._id 1251
Trying to match conversation (107/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!6244xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3)
 - Importing 332 messages into thread._id 1252
Failed to find recipient for uuid: d16axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Trying to match conversation (108/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 6e6dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxb5)
 - Importing 10 messages into thread._id 1253
Trying to match conversation (109/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: ea30xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx6d)
 - Importing 3 messages into thread._id 1254
Trying to match conversation (110/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 99b2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx3d)
 - Importing 3 messages into thread._id 1255
Trying to match conversation (111/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 1117xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx17)
 - Importing 1 messages into thread._id 1256
Trying to match conversation (112/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 84e4xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxe6)
 - Importing 54 messages into thread._id 1257
Warning: Unsupported message type (empty type).
 === Row 1/1 ===
                flags : 2
expirationTimerUpdate : {"expireTimer":85750661,"source":"2e2axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbe","fromSync":false,"fromGroupUpdate":false}
          expireTimer : 85750661
      fromGroupUpdate : 0
Skipping message.
Warning: Unsupported message type (empty type).
 === Row 1/1 ===
                flags : 2
expirationTimerUpdate : {"source":"+316xxxxxxx3","fromSync":false,"fromGroupUpdate":false}
          expireTimer : (NULL)
      fromGroupUpdate : 0
Skipping message.
Trying to match conversation (113/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 5ee7xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx59)
 - Importing 2 messages into thread._id 1258
Trying to match conversation (114/141) (type: private)
 - Importing 1 messages into thread._id 990
Trying to match conversation (115/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: a76bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx3f)
 - Importing 2 messages into thread._id 1259
Trying to match conversation (116/141) (type: group)
 - Importing 40 messages into thread._id 1062
Trying to match conversation (117/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: fcfbxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxbe)
 - Importing 17 messages into thread._id 1260
Trying to match conversation (118/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: ad6fxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx4f)
 - Importing 5 messages into thread._id 1261
Trying to match conversation (119/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!021bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6)
 - Importing 2 messages into thread._id 1262
Trying to match conversation (120/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!68d5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8)
 - Importing 746 messages into thread._id 1263
Trying to match conversation (121/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!a3b5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb)
 - Importing 4860 messages into thread._id 1264
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e001xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e567xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e567xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e567xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e567xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e567xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e567xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e001xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: e001xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: d716xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: d716xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 81fdxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: d716xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 7cdfxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: f9ffxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: f9ffxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"id":1649xxxxxxxx1,"authorUuid":"38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxad","text":"[redacted]","attachments":[],"bodyRanges":[],"referencedMessageNotFound":false,"isViewOnce":false,"messageId":""}
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"id":1649xxxxxxxx1,"authorUuid":"38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxad","text":"[redacted]","attachments":[],"bodyRanges":[],"referencedMessageNotFound":false,"isViewOnce":false,"messageId":""}
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"id":1649xxxxxxxx2,"authorUuid":"38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxad","text":"[redacted]","attachments":[],"bodyRanges":[],"referencedMessageNotFound":false,"isViewOnce":false,"messageId":""}
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 9620xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: b176xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: b176xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Failed to find recipient for uuid: a79exxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Failed to find recipient for uuid: 8de2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 8de2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 8de2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: c7bdxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: c7bdxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Error: Failed to set address of incoming group message. Skipping
Failed to find recipient for uuid: 38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Warning: Failed to find quote author. skipping
Additional info:
json_extract(json, '$.quote')
{"id":1649xxxxxxxx6,"authorUuid":"38eexxxx-xxxx-xxxx-xxxx-xxxxxxxxxxad","text":"[redacted]","attachments":[],"bodyRanges":[],"referencedMessageNotFound":false,"isViewOnce":false,"messageId":""}
Failed to open image for reading: C:\Users\username/AppData/Roaming/Signal Beta/attachments.noindex/6f\6fb1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8
Error: Trying to set attachment data. Skipping.
Pending: 0
Failed to open image for reading: C:\Users\username/AppData/Roaming/Signal Beta/attachments.noindex/4c\4ce0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc
Error: Trying to set attachment data. Skipping.
Pending: 0
Failed to open image for reading: C:\Users\username/AppData/Roaming/Signal Beta/attachments.noindex/93\9372xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0
Error: Trying to set attachment data. Skipping.
Pending: 0
Trying to match conversation (122/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!8223xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9)
 - Importing 32 messages into thread._id 1265
Trying to match conversation (123/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!0ac0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5)
 - Importing 0 messages into thread._id 1266
Trying to match conversation (124/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!8bcbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf)
 - Importing 5 messages into thread._id 1267
Trying to match conversation (125/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 8ebfxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx8f)
 - Importing 1 messages into thread._id 1268
Trying to match conversation (126/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!ca25xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf)
 - Importing 266 messages into thread._id 1269
Trying to match conversation (127/141) (type: group)
 - Importing 198 messages into thread._id 416
Trying to match conversation (128/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 996bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx67)
 - Importing 0 messages into thread._id 1270
Trying to match conversation (129/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!0246xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1)
 - Importing 27 messages into thread._id 1271
Trying to match conversation (130/141) (type: private)
 - Importing 3 messages into thread._id 1067
Trying to match conversation (131/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 72c1xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx40)
 - Importing 5 messages into thread._id 1272
Trying to match conversation (132/141) (type: group)
 - Importing 0 messages into thread._id 985
Trying to match conversation (133/141) (type: private)
 - Importing 575 messages into thread._id 1173
Trying to match conversation (134/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 2b39xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx35)
 - Importing 0 messages into thread._id 1273
Trying to match conversation (135/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: a58bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxe6)
 - Importing 2 messages into thread._id 1274
Trying to match conversation (136/141) (type: group)
 - Importing 4 messages into thread._id 1024
Trying to match conversation (137/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: aa5exxxx-xxxx-xxxx-xxxx-xxxxxxxxxxaf)
 - Importing 5 messages into thread._id 1275
Trying to match conversation (138/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 0be9xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx96)
 - Importing 4 messages into thread._id 1276
Trying to match conversation (139/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: c728xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx3a)
 - Importing 0 messages into thread._id 1277
Trying to match conversation (140/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!0f6axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2)
 - Importing 2 messages into thread._id 1278
Trying to match conversation (141/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!cf48xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd)
 - Importing 0 messages into thread._id 1279
reorderMmsSmsIds
updateThreadsEntries
  Dealing with thread id: 319, 19, 22, 24, 25, 27, 28, 33, 34, 49, 51, 53, 59, 60, 67, 68, 70, 71, 72, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 90, 94, 96, 97, 99, 101, 104, 105, 107, 108, 109, 110, 113, 115, 116, 117, 118, 120, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 139, 140, 141, 142, 143, 145, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 164, 168, 170, 171, 172, 174, 175, 176, 177, 183, 184, 185, 186, 187, 188, 189, 191, 192, 193, 195, 196, 198, 199, 200, 201, 203, 206, 207, 208, 209, 210, 211, 212, 215, 218, 219, 221, 222, 223, 224, 225, 226, 230, 231, 233, 235, 237, 238, 240, 242, 243, 244, 246, 247, 248, 249, 250, 252, 253, 254, 255, 257, 259, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, 279, 280, 283, 284, 285, 286, 287, 288, 289, 291, 292, 294, 295, 296, 297, 299, 302, 303, 306, 307, 308, 309, 312, 313, 314, 318, 320, 324, 325, 328, 329, 331, 332, 333, 334, 335, 343, 344, 352, 383, 396, 397, 398, 399, 400, 401, 402, 403, 405, 406, 407, 409, 410, 411, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 539, 540, 541, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 562, 563, 564, 565, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 671, 672, 673, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 691, 692, 693, 694, 696, 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 752, 753, 754, 755, 756, 757, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 774, 775, 776, 777, 778, 779, 780, 781, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 800, 801, 802, 803, 804, 805, 806, 807, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 825, 826, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 846, 847, 848, 849, 850, 851, 852, 853, 855, 856, 857, 858, 863, 864, 866, 868, 870, 871, 872, 873, 874, 875, 876, 877, 879, 880, 881, 883, 884, 885, 886, 887, 888, 890, 891, 892, 893, 896, 897, 902, 903, 906, 907, 908, 910, 911, 914, 916, 917, 919, 920, 922, 924, 925, 927, 928, 932, 933, 938, 939, 940, 942, 945, 948, 949, 950, 951, 953, 954, 955, 957, 959, 960, 961, 964, 969, 970, 976, 977, 979, 981, 982, 983, 984, 985, 986, 989, 990, 991, 992, 993, 994, 995, 997, 998, 1008, 1017, 1019, 1020, 1021, 1023, 1024, 1038, 1039, 1040, 1044, 1045, 1046, 1047, 1048, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071, 1073, 1074, 1075, 1076, 1079, 1080, 1081, 1082, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1103, 1106, 1108, 1110, 1111, 1113, 1116, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1140, 1141, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1157, 1159, 1161, 1162, 1163, 1165, 1166, 1167, 1168, 1169, 1171, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279
Checking foreign key constraints... ok
Checking database integrity (full)... ok
Dealing with thread 19
Dealing with thread 22
Dealing with thread 24
Dealing with thread 25
Dealing with thread 27
Dealing with thread 28
Dealing with thread 33
Dealing with thread 34
Dealing with thread 49
Dealing with thread 51
Dealing with thread 53
Dealing with thread 59
Dealing with thread 60
Dealing with thread 67
Dealing with thread 68
Dealing with thread 70
Dealing with thread 71
Dealing with thread 72
Dealing with thread 74
Dealing with thread 75
Dealing with thread 76
Dealing with thread 77
Dealing with thread 78
Dealing with thread 79
Dealing with thread 81
Dealing with thread 82
Dealing with thread 83
Dealing with thread 84
Dealing with thread 85
Dealing with thread 86
Dealing with thread 87
Dealing with thread 88
Dealing with thread 90
Dealing with thread 94
Dealing with thread 96
Dealing with thread 97
Dealing with thread 99
Dealing with thread 101
Dealing with thread 104
Dealing with thread 105
Dealing with thread 107
Dealing with thread 108
Dealing with thread 109
Dealing with thread 110
Dealing with thread 113
Dealing with thread 115
Dealing with thread 116
Dealing with thread 117
Dealing with thread 118
Dealing with thread 120
Dealing with thread 121
Dealing with thread 122
Dealing with thread 123
Dealing with thread 125
Dealing with thread 126
Dealing with thread 127
Dealing with thread 128
Dealing with thread 129
Dealing with thread 130
Dealing with thread 131
Dealing with thread 132
Dealing with thread 134
Dealing with thread 135
Dealing with thread 136
Dealing with thread 139
Dealing with thread 140
Dealing with thread 141
Dealing with thread 142
Dealing with thread 143
Dealing with thread 145
Dealing with thread 151
Dealing with thread 152
Dealing with thread 153
Dealing with thread 155
Dealing with thread 156
Dealing with thread 157
Dealing with thread 158
Dealing with thread 159
Dealing with thread 160
Dealing with thread 161
Dealing with thread 162
Dealing with thread 164
Dealing with thread 168
Dealing with thread 170
Dealing with thread 171
Dealing with thread 172
Dealing with thread 174
Dealing with thread 175
Dealing with thread 176
Dealing with thread 177
Dealing with thread 183
Dealing with thread 184
Dealing with thread 185
Dealing with thread 186
Dealing with thread 187
Dealing with thread 188
Dealing with thread 189
Dealing with thread 191
Dealing with thread 192
Dealing with thread 193
Dealing with thread 195
Dealing with thread 196
Dealing with thread 198
Dealing with thread 199
Dealing with thread 200
Dealing with thread 201
Dealing with thread 203
Dealing with thread 206
Dealing with thread 207
Dealing with thread 208
Dealing with thread 209
Dealing with thread 210
Dealing with thread 211
Dealing with thread 212
Dealing with thread 215
Dealing with thread 218
Dealing with thread 219
Dealing with thread 221
Dealing with thread 222
Dealing with thread 223
Dealing with thread 224
Dealing with thread 225
Dealing with thread 226
Dealing with thread 230
Dealing with thread 231
Dealing with thread 233
Dealing with thread 235
Dealing with thread 237
Dealing with thread 238
Dealing with thread 240
Dealing with thread 242
Dealing with thread 243
Dealing with thread 244
Dealing with thread 246
Dealing with thread 247
Dealing with thread 248
Dealing with thread 249
Dealing with thread 250
Dealing with thread 252
Dealing with thread 253
Dealing with thread 254
Dealing with thread 255
Dealing with thread 257
Dealing with thread 259
Dealing with thread 261
Dealing with thread 262
Dealing with thread 263
Dealing with thread 264
Dealing with thread 266
Dealing with thread 267
Dealing with thread 268
Dealing with thread 269
Dealing with thread 270
Dealing with thread 271
Dealing with thread 272
Dealing with thread 273
Dealing with thread 275
Dealing with thread 276
Dealing with thread 277
Dealing with thread 278
Dealing with thread 279
Dealing with thread 280
Dealing with thread 283
Dealing with thread 284
Dealing with thread 285
Dealing with thread 286
Dealing with thread 287
Dealing with thread 288
Dealing with thread 289
Dealing with thread 291
Dealing with thread 292
Dealing with thread 294
Dealing with thread 295
Dealing with thread 296
Dealing with thread 297
Dealing with thread 299
Dealing with thread 302
Dealing with thread 303
Dealing with thread 306
Dealing with thread 307
Dealing with thread 308
Dealing with thread 309
Dealing with thread 312
Dealing with thread 313
Dealing with thread 314
Dealing with thread 318
Dealing with thread 319
Dealing with thread 320
Dealing with thread 324
Dealing with thread 325
Dealing with thread 328
Dealing with thread 329
Dealing with thread 331
Dealing with thread 332
Dealing with thread 333
Dealing with thread 334
Dealing with thread 335
Dealing with thread 343
Dealing with thread 344
Dealing with thread 352
Dealing with thread 383
Dealing with thread 396
Dealing with thread 397
Dealing with thread 398
Dealing with thread 399
Dealing with thread 400
Dealing with thread 401
Dealing with thread 402
Dealing with thread 403
Dealing with thread 405
Dealing with thread 406
Dealing with thread 407
Dealing with thread 409
Dealing with thread 410
Dealing with thread 411
Dealing with thread 415
Dealing with thread 416
Dealing with thread 417
Dealing with thread 418
Dealing with thread 419
Dealing with thread 420
Dealing with thread 421
Dealing with thread 422
Dealing with thread 423
Dealing with thread 424
Dealing with thread 425
Dealing with thread 426
Dealing with thread 427
Dealing with thread 428
Dealing with thread 429
Dealing with thread 431
Dealing with thread 432
Dealing with thread 433
Dealing with thread 434
Dealing with thread 435
Dealing with thread 436
Dealing with thread 437
Dealing with thread 438
Dealing with thread 439
Dealing with thread 440
Dealing with thread 441
Dealing with thread 442
Dealing with thread 443
Dealing with thread 444
Dealing with thread 445
Dealing with thread 446
Dealing with thread 447
Dealing with thread 448
Dealing with thread 449
Dealing with thread 450
Dealing with thread 451
Dealing with thread 452
Dealing with thread 453
Dealing with thread 454
Dealing with thread 455
Dealing with thread 456
Dealing with thread 457
Dealing with thread 458
Dealing with thread 459
Dealing with thread 461
Dealing with thread 462
Dealing with thread 463
Dealing with thread 464
Dealing with thread 465
Dealing with thread 466
Dealing with thread 467
Dealing with thread 468
Dealing with thread 469
Dealing with thread 470
Dealing with thread 471
Dealing with thread 472
Dealing with thread 473
Dealing with thread 474
Dealing with thread 475
Dealing with thread 476
Dealing with thread 477
Dealing with thread 478
Dealing with thread 479
Dealing with thread 480
Dealing with thread 481
Dealing with thread 482
Dealing with thread 483
Dealing with thread 484
Dealing with thread 485
Dealing with thread 487
Dealing with thread 488
Dealing with thread 489
Dealing with thread 490
Dealing with thread 491
Dealing with thread 492
Dealing with thread 493
Dealing with thread 494
Dealing with thread 495
Dealing with thread 496
Dealing with thread 497
Dealing with thread 498
Dealing with thread 499
Dealing with thread 500
Dealing with thread 501
Dealing with thread 502
Dealing with thread 503
Dealing with thread 504
Dealing with thread 505
Dealing with thread 506
Dealing with thread 507
Dealing with thread 508
Dealing with thread 509
Dealing with thread 510
Dealing with thread 511
Dealing with thread 512
Dealing with thread 513
Dealing with thread 514
Dealing with thread 515
Dealing with thread 516
Dealing with thread 517
Dealing with thread 518
Dealing with thread 519
Dealing with thread 520
Dealing with thread 521
Dealing with thread 522
Dealing with thread 523
Dealing with thread 524
Dealing with thread 525
Dealing with thread 526
Dealing with thread 527
Dealing with thread 528
Dealing with thread 529
Dealing with thread 530
Dealing with thread 531
Dealing with thread 532
Dealing with thread 533
Dealing with thread 534
Dealing with thread 535
Dealing with thread 539
Dealing with thread 540
Dealing with thread 541
Dealing with thread 542
Dealing with thread 543
Dealing with thread 544
Dealing with thread 545
Dealing with thread 547
Dealing with thread 548
Dealing with thread 549
Dealing with thread 550
Dealing with thread 551
Dealing with thread 552
Dealing with thread 553
Dealing with thread 554
Dealing with thread 555
Dealing with thread 556
Dealing with thread 557
Dealing with thread 558
Dealing with thread 559
Dealing with thread 562
Dealing with thread 563
Dealing with thread 564
Dealing with thread 565
Dealing with thread 567
Dealing with thread 568
Dealing with thread 569
Dealing with thread 570
Dealing with thread 571
Dealing with thread 572
Dealing with thread 573
Dealing with thread 574
Dealing with thread 575
Dealing with thread 576
Dealing with thread 577
Dealing with thread 578
Dealing with thread 579
Dealing with thread 580
Dealing with thread 581
Dealing with thread 582
Dealing with thread 583
Dealing with thread 584
Dealing with thread 585
Dealing with thread 588
Dealing with thread 589
Dealing with thread 590
Dealing with thread 591
Dealing with thread 592
Dealing with thread 593
Dealing with thread 594
Dealing with thread 595
Dealing with thread 596
Dealing with thread 597
Dealing with thread 598
Dealing with thread 599
Dealing with thread 600
Dealing with thread 601
Dealing with thread 602
Dealing with thread 603
Dealing with thread 604
Dealing with thread 605
Dealing with thread 606
Dealing with thread 607
Dealing with thread 608
Dealing with thread 609
Dealing with thread 610
Dealing with thread 611
Dealing with thread 612
Dealing with thread 613
Dealing with thread 614
Dealing with thread 615
Dealing with thread 616
Dealing with thread 617
Dealing with thread 618
Dealing with thread 619
Dealing with thread 621
Dealing with thread 622
Dealing with thread 623
Dealing with thread 624
Dealing with thread 625
Dealing with thread 626
Dealing with thread 627
Dealing with thread 628
Dealing with thread 629
Dealing with thread 630
Dealing with thread 631
Dealing with thread 632
Dealing with thread 633
Dealing with thread 634
Dealing with thread 635
Dealing with thread 636
Dealing with thread 637
Dealing with thread 638
Dealing with thread 639
Dealing with thread 640
Dealing with thread 641
Dealing with thread 642
Dealing with thread 643
Dealing with thread 644
Dealing with thread 645
Dealing with thread 646
Dealing with thread 647
Dealing with thread 648
Dealing with thread 649
Dealing with thread 650
Dealing with thread 651
Dealing with thread 652
Dealing with thread 653
Dealing with thread 654
Dealing with thread 655
Dealing with thread 657
Dealing with thread 658
Dealing with thread 659
Dealing with thread 660
Dealing with thread 661
Dealing with thread 662
Dealing with thread 663
Dealing with thread 664
Dealing with thread 665
Dealing with thread 666
Dealing with thread 667
Dealing with thread 668
Dealing with thread 669
Dealing with thread 671
Dealing with thread 672
Dealing with thread 673
Dealing with thread 675
Dealing with thread 676
Dealing with thread 677
Dealing with thread 678
Dealing with thread 679
Dealing with thread 680
Dealing with thread 681
Dealing with thread 682
Dealing with thread 683
Dealing with thread 684
Dealing with thread 685
Dealing with thread 686
Dealing with thread 687
Dealing with thread 688
Dealing with thread 691
Dealing with thread 692
Dealing with thread 693
Dealing with thread 694
Dealing with thread 696
Dealing with thread 697
Dealing with thread 699
Dealing with thread 700
Dealing with thread 701
Dealing with thread 702
Dealing with thread 703
Dealing with thread 704
Dealing with thread 705
Dealing with thread 706
Dealing with thread 707
Dealing with thread 708
Dealing with thread 709
Dealing with thread 710
Dealing with thread 711
Dealing with thread 712
Dealing with thread 713
Dealing with thread 714
Dealing with thread 715
Dealing with thread 716
Dealing with thread 717
Dealing with thread 718
Dealing with thread 719
Dealing with thread 720
Dealing with thread 721
Dealing with thread 722
Dealing with thread 723
Dealing with thread 724
Dealing with thread 725
Dealing with thread 726
Dealing with thread 727
Dealing with thread 728
Dealing with thread 729
Dealing with thread 730
Dealing with thread 731
Dealing with thread 732
Dealing with thread 733
Dealing with thread 734
Dealing with thread 735
Dealing with thread 736
Dealing with thread 737
Dealing with thread 738
Dealing with thread 739
Dealing with thread 741
Dealing with thread 742
Dealing with thread 743
Dealing with thread 744
Dealing with thread 745
Dealing with thread 746
Dealing with thread 747
Dealing with thread 748
Dealing with thread 749
Dealing with thread 750
Dealing with thread 752
Dealing with thread 753
Dealing with thread 754
Dealing with thread 755
Dealing with thread 756
Dealing with thread 757
Dealing with thread 761
Dealing with thread 762
Dealing with thread 763
Dealing with thread 764
Dealing with thread 765
Dealing with thread 766
Dealing with thread 767
Dealing with thread 768
Dealing with thread 769
Dealing with thread 770
Dealing with thread 771
Dealing with thread 772
Dealing with thread 774
Dealing with thread 775
Dealing with thread 776
Dealing with thread 777
Dealing with thread 778
Dealing with thread 779
Dealing with thread 780
Dealing with thread 781
Dealing with thread 783
Dealing with thread 784
Dealing with thread 785
Dealing with thread 786
Dealing with thread 787
Dealing with thread 788
Dealing with thread 789
Dealing with thread 790
Dealing with thread 791
Dealing with thread 792
Dealing with thread 793
Dealing with thread 794
Dealing with thread 795
Dealing with thread 796
Dealing with thread 797
Dealing with thread 798
Dealing with thread 800
Dealing with thread 801
Dealing with thread 802
Dealing with thread 803
Dealing with thread 804
Dealing with thread 805
Dealing with thread 806
Dealing with thread 807
Dealing with thread 809
Dealing with thread 810
Dealing with thread 811
Dealing with thread 812
Dealing with thread 813
Dealing with thread 814
Dealing with thread 815
Dealing with thread 816
Dealing with thread 817
Dealing with thread 818
Dealing with thread 819
Dealing with thread 820
Dealing with thread 821
Dealing with thread 822
Dealing with thread 823
Dealing with thread 825
Dealing with thread 826
Dealing with thread 828
Dealing with thread 829
Dealing with thread 830
Dealing with thread 831
Dealing with thread 832
Dealing with thread 833
Dealing with thread 834
Dealing with thread 835
Dealing with thread 836
Dealing with thread 837
Dealing with thread 838
Dealing with thread 839
Dealing with thread 840
Dealing with thread 841
Dealing with thread 842
Dealing with thread 843
Dealing with thread 844
Dealing with thread 846
Dealing with thread 847
Dealing with thread 848
Dealing with thread 849
Dealing with thread 850
Dealing with thread 851
Dealing with thread 852
Dealing with thread 853
Dealing with thread 855
Dealing with thread 856
Dealing with thread 857
Dealing with thread 858
Dealing with thread 863
Dealing with thread 864
Dealing with thread 866
Dealing with thread 868
Dealing with thread 870
Dealing with thread 871
Dealing with thread 872
Dealing with thread 873
Dealing with thread 874
Dealing with thread 875
Dealing with thread 876
Dealing with thread 877
Dealing with thread 879
Dealing with thread 880
Dealing with thread 881
Dealing with thread 883
Dealing with thread 884
Dealing with thread 885
Dealing with thread 886
Dealing with thread 887
Dealing with thread 888
Dealing with thread 890
Dealing with thread 891
Dealing with thread 892
Dealing with thread 893
Dealing with thread 896
Dealing with thread 897
Dealing with thread 902
Dealing with thread 903
Dealing with thread 906
Dealing with thread 907
Dealing with thread 908
Dealing with thread 910
Dealing with thread 911
Dealing with thread 914
Dealing with thread 916
Dealing with thread 917
Dealing with thread 919
Dealing with thread 920
Dealing with thread 922
Dealing with thread 924
Dealing with thread 925
Dealing with thread 927
Dealing with thread 928
Dealing with thread 932
Dealing with thread 933
Dealing with thread 938
Dealing with thread 939
Dealing with thread 940
Dealing with thread 942
Dealing with thread 945
Dealing with thread 948
Dealing with thread 949
Dealing with thread 950
Dealing with thread 951
Dealing with thread 953
Dealing with thread 954
Dealing with thread 955
Dealing with thread 957
Dealing with thread 959
Dealing with thread 960
Dealing with thread 961
Dealing with thread 964
Dealing with thread 969
Dealing with thread 970
Dealing with thread 976
Dealing with thread 977
Dealing with thread 979
Dealing with thread 981
Dealing with thread 982
Dealing with thread 983
Dealing with thread 984
Dealing with thread 985
Dealing with thread 986
Dealing with thread 989
Dealing with thread 990
Dealing with thread 991
Dealing with thread 992
Dealing with thread 993
Dealing with thread 994
Dealing with thread 995
Dealing with thread 997
Dealing with thread 998
Dealing with thread 1008
Dealing with thread 1017
Dealing with thread 1019
Dealing with thread 1020
Dealing with thread 1021
Dealing with thread 1023
Dealing with thread 1024
Dealing with thread 1038
Dealing with thread 1039
Dealing with thread 1040
Dealing with thread 1044
Dealing with thread 1045
Dealing with thread 1046
Dealing with thread 1047
Dealing with thread 1048
Dealing with thread 1050
Dealing with thread 1051
Dealing with thread 1052
Dealing with thread 1053
Dealing with thread 1054
Dealing with thread 1055
Dealing with thread 1056
Dealing with thread 1057
Dealing with thread 1059
Dealing with thread 1060
Dealing with thread 1061
Dealing with thread 1062
Dealing with thread 1063
Dealing with thread 1064
Dealing with thread 1065
Dealing with thread 1066
Dealing with thread 1067
Dealing with thread 1068
Dealing with thread 1069
Dealing with thread 1071
Dealing with thread 1073
Dealing with thread 1074
Dealing with thread 1075
Dealing with thread 1076
Dealing with thread 1079
Dealing with thread 1080
Dealing with thread 1081
Dealing with thread 1082
Dealing with thread 1084
Dealing with thread 1085
Dealing with thread 1086
Dealing with thread 1087
Dealing with thread 1088
Dealing with thread 1089
Dealing with thread 1090
Dealing with thread 1092
Dealing with thread 1093
Dealing with thread 1094
Dealing with thread 1095
Dealing with thread 1096
Dealing with thread 1097
Dealing with thread 1098
Dealing with thread 1103
Dealing with thread 1106
Dealing with thread 1108
Dealing with thread 1110
Dealing with thread 1111
Dealing with thread 1113
Dealing with thread 1116
Dealing with thread 1124
Dealing with thread 1125
Dealing with thread 1126
Dealing with thread 1127
Dealing with thread 1128
Dealing with thread 1129
Dealing with thread 1130
Dealing with thread 1131
Dealing with thread 1132
Dealing with thread 1133
Dealing with thread 1134
Dealing with thread 1135
Dealing with thread 1136
Dealing with thread 1137
Dealing with thread 1138
Dealing with thread 1140
Dealing with thread 1141
Dealing with thread 1148
Dealing with thread 1149
Dealing with thread 1151
Dealing with thread 1152
Dealing with thread 1153
Dealing with thread 1154
Dealing with thread 1155
Dealing with thread 1157
Dealing with thread 1159
Dealing with thread 1161
Dealing with thread 1162
Dealing with thread 1163
Dealing with thread 1165
Dealing with thread 1166
Dealing with thread 1167
Dealing with thread 1168
Dealing with thread 1169
Dealing with thread 1171
Dealing with thread 1173
Dealing with thread 1174
Dealing with thread 1175
Dealing with thread 1176
Dealing with thread 1177
Dealing with thread 1178
Dealing with thread 1179
Dealing with thread 1180
Dealing with thread 1181
Dealing with thread 1182
Dealing with thread 1183
Dealing with thread 1184
Dealing with thread 1185
Dealing with thread 1186
Dealing with thread 1187
Dealing with thread 1188
Dealing with thread 1189
Dealing with thread 1190
Dealing with thread 1191
Dealing with thread 1192
Dealing with thread 1193
Dealing with thread 1194
Dealing with thread 1195
Dealing with thread 1196
Dealing with thread 1197
Dealing with thread 1198
Dealing with thread 1199
Dealing with thread 1200
Dealing with thread 1201
Dealing with thread 1202
Dealing with thread 1203
Dealing with thread 1204
Dealing with thread 1205
Dealing with thread 1206
Dealing with thread 1207
Dealing with thread 1208
Dealing with thread 1209
Dealing with thread 1210
Dealing with thread 1211
Dealing with thread 1212
Dealing with thread 1213
Dealing with thread 1214
Dealing with thread 1215
Dealing with thread 1216
Dealing with thread 1217
Dealing with thread 1218
Dealing with thread 1219
Dealing with thread 1220
Dealing with thread 1221
Dealing with thread 1222
Dealing with thread 1223
Dealing with thread 1224
Dealing with thread 1225
Dealing with thread 1226
Dealing with thread 1227
Dealing with thread 1228
Dealing with thread 1229
Dealing with thread 1230
Dealing with thread 1231
Dealing with thread 1232
Dealing with thread 1233
Dealing with thread 1234
Dealing with thread 1235
Dealing with thread 1236
Dealing with thread 1237
Dealing with thread 1238
Dealing with thread 1239
Dealing with thread 1240
Dealing with thread 1241
Dealing with thread 1242
Dealing with thread 1243
Dealing with thread 1244
Dealing with thread 1245
Dealing with thread 1246
Dealing with thread 1247
Dealing with thread 1248
Dealing with thread 1249
Dealing with thread 1250
Dealing with thread 1251
Dealing with thread 1252
Dealing with thread 1253
Dealing with thread 1254
Dealing with thread 1255
Dealing with thread 1256
Dealing with thread 1257
Dealing with thread 1258
Dealing with thread 1259
Dealing with thread 1260
Dealing with thread 1261
Dealing with thread 1262
Dealing with thread 1263
Dealing with thread 1264
Dealing with thread 1265
Dealing with thread 1266
Dealing with thread 1267
Dealing with thread 1268
Dealing with thread 1269
Dealing with thread 1270
Dealing with thread 1271
Dealing with thread 1272
Dealing with thread 1273
Dealing with thread 1274
Dealing with thread 1275
Dealing with thread 1276
Dealing with thread 1277
Dealing with thread 1278
Dealing with thread 1279
All done!
Meteor0id commented 1 year ago

From the timestamps (of the last two you posted) they were sent 23 aug 2021 18:39:34 CEST and 10 apr 2022 14:46:18 CEST respectively, in some 1-on1 conversation (you may have the source phone number in your output, though it might be your own).

This is a private conversation between me and another Signal beta tester. The conversation seems to start in 2022 (I don't see anything in 2021) There is nothing listed on April 10, but on April 11 after a long period of nothing there is a profile name change, followed by me disabling expiring messages. That might be a hint as to what this message type is.

I also see a message earlier on march 11th 2022 saying that I enabled the expiration timeout for a duration of 992 days, 11 hours, 37 minutes, and 41 seconds. A very odd an long time, but that might relate to the timer you see on the later empty message?

There would have also been a key change on my part on April 10th or April 11th, since the conversation on April 11th is about a spammer who has been spamming one of the beta groups. I probably blocked the spam account, which would trigger my profile key to change.

bepaald commented 1 year ago

That output actually looks pretty good. And I think I can try to handle group-v1-migration messages with this. I can also improve v1 group matching a little bit.

Have you inspected the HTML yet? Especially the new keychange and profilechange message types? In the other issue tracking the desktopimport, there appeared to be some issues with (some of) them, but I can't reproduce.

I also see a message earlier on march 11th 2022 saying that I enabled the expiration timeout for a duration of 992 days, 11 hours, 37 minutes, and 41 seconds. A very odd an long time, but that might relate to the timer you see on the later empty message?

Yeah, I think these make sense then. That duration is very odd, I have no idea how you would set that in the GUI, but it does correspond to "expireTimer":85750661 as a duration in seconds. The other message, the expirationTimerUpdate without an expireTimer is the one disabling disappearing messages.

The strange thing is the timestamps. The 'aug 2021' date I mentioned came from the message's received_at timestamp, but I now notice it's sent_at and received_at are very different (and sent_at is in the future compared to received_at). So I sent myself a message last night (20 March, around 23:25), let it arrive on my phone, but not on Signal Desktop until this morning (around 8) and got the following:

sqlite> SELECT body, DATETIME(json_extract(json, '$.sent_at') / 1000, 'unixepoch', 'localtime') AS sent_at,DATETIME(json_extract(json, '$.received_at') / 1000, 'unixepoch', 'localtime') AS received_at,DATETIME(json_extract(json, '$.received_at_ms') / 1000, 'unixepoch', 'localtime') AS received_at_ms from messages where rowid = 196;
          body = Timestamp test 20 mrt 23:25
       sent_at = 2023-03-20 23:25:33
   received_at = 2022-11-17 13:30:06
received_at_ms = 2023-03-21 08:02:59
sqlite>

So, the sent_at and received_at_ms timestamps make sense to me, but I have no idea what received_at is supposed to be.

Now, normally in this function I use the sent_at timestamp for everything, but I just wanted to note, the problem we had a few days ago, with the program crashing on a keychange message, was caused by sent_at being NULL. That message (and maybe others like it) had only the received_at timestamp set, so these messages might appear out of order after importing if their timestamps are similarly off. (nothing I can do about it though, I need a timestamp and that's the only one available)

EDIT from Signal Desktop source code:

// We would like to get the received_at_ms ideally since received_at is // now an incrementing counter for messages and not the actual time that // the message was received. If this field doesn't exist on the message // then we can trust received_at.

Meteor0id commented 1 year ago

Took a look at the html output, found some glitches. Deleted message not show properly, some messages printed twice. some html export bugs

Meteor0id commented 1 year ago

Hmmm, I would guess all of these might actually just be uuid's that start with the same two (hex) digits? Did you actually check the full uuid, or just the non-x part printed by the import function? Could you check with the full uuid's? You can dump the decrypted desktop db by running signalbackup-tools [input] [passphrase] --dumpdesktopdb [/path/to/signaldesktop/data] [/path/to/signaldesktop/data] (yes, that command needs a dummy Android backup as input and the signal desktop path twice :S ). Alternatively, I could just remove the xxx censoring in a next update if you want, just let me know.

The desktop.db file does not get placed in the directory specified as --output I can't seem to open the desktop.db file with my sqlite db browser application, it calls the db file malformed.

Have you inspected the HTML yet? Especially the new keychange and profilechange message types? In the other issue tracking the desktopimport, there appeared to be some issues with (some of) them, but I can't reproduce.

these are the "profile name changed" and "safety number changed" status messages right? those look normal so far. What am I looking for?

Meteor0id commented 1 year ago
Dealing with thread 1278
Dealing with thread 1279
terminate called after throwing an instance of 'std::out_of_range'
  what():  map::at
bepaald commented 1 year ago

Thanks, must be in the changes I made to the generated index. Not home right now, but I'll try to find and fix this tomorrow.

Been a bit busy this week by the way, so changes have been somewhat slower, but I'm still working on it.

bepaald commented 1 year ago

Well, to be completely honest, I have not found exactly what is causing this exception. It is new since your previous message showing output, so it must be a recent change but I can't see it. I did make some other changes that I think are likely to have affected (or even solved) it, so you could try again.

I did write some code in the last weeks to deal with group-v1-migration and expiration-timer type messages. I thought one of those might have been the cause, but looking closer I hadn't even enabled them yet. Hopefully I can finish those up tomorrow or the day after. But if you read this before that and have a couple of minutes I wouldn't mind hearing if the out_of_range exception is solved already.

Meteor0id commented 1 year ago

I wouldn't mind hearing if the out_of_range exception is solved already.

it is solved

bepaald commented 1 year ago

I added group-v1-migration and expiration timer-update type messages yesterday, as well as link previews (which I hadn't realized I was missing, on Android they are just attachments, but apparently on Desktop they are something completely separate).

I won't bore you with the details, but all three were complicated and involved some guesses here and there. I'd consider it a success if the program does not crash, and a miracle if all three fully work. At some places where I needed to make a decision, I tried to have the program print some info in case I got it wrong, so I could improve upon it later.

Meteor0id commented 1 year ago
 - Importing 3436 messages into thread._id 1223
Error : During sqlite3_prepare_v2(): near "s": syntax error
  Query: "SELECT json_array(json_object('url', json('"https:\/\/support.signal.org\/hc\/en-us\/articles\/360007060672-Troubleshooting-Calling"'), 'title', json('"Troubleshooting Calling"'), 'description', json('"Your Signal call screen will show 

Calling or ConnectingWhile waiting for the call to connect

RingingWhen your contact\'s phone is online and ringing

TimerAfter your call has been answe..."'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Warning: Failed to get number of attachments in quoted message. Skipping
Error : During sqlite3_prepare_v2(): near "conversations": syntax error
  Query: "SELECT json_array(json_object('url', json('"https:\/\/github.com\/signalapp\/Signal-iOS\/commit\/5b2c4f98044454366238b1d07cd0d0749177b2d9"'), 'title', json('"Standardize on calling \'conversations\' \'chats\' · signalapp\/Signal-iOS@5b2c4f9"'), 'description', json('"A private messenger for iOS. Contribute to signalapp\/Signal-iOS development by creating an account on GitHub."'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Error : During sqlite3_prepare_v2(): near "t": syntax error
  Query: "SELECT json_array(json_object('url', json('"https:\/\/community.signalusers.org\/t\/44122"'), 'title', json('"Plurals for Signal Android don\'t support adding placeholder when there isn\'t one"'), 'description', json('"Unlike for Signal iOS’ PluralAware.stringsdict file, for Signal Android, Transifex recognizes placeholders and doesn’t allow adding a placeholder that’s not present in the same variant of the source string (even though it is present, just in the “other” variant).  This is an issue because some languages use the “one” variant not just for the number 1, but also for 21, 31, etc. or other numbers, for example Russian. Translating the “one” variant while referring just to 1, like the source English ..."'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Error : During sqlite3_prepare_v2(): near "re": syntax error
  Query: "SELECT json_array(json_object('url', json('"https:\/\/developer.apple.com\/videos\/play\/wwdc2022\/10037\/"'), 'title', json('"Writing for interfaces - WWDC22 - Videos - Apple Developer"'), 'description', json('"The words and phrases you choose for your app matter. Whether you\'re writing an alert, building an onboarding experience, or describing..."'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Error : During sqlite3_prepare_v2(): near "t": syntax error
  Query: "SELECT json_array(json_object('url', json('"https:\/\/twitter.com\/mer__edith\/status\/1606329479193714693?s=46&t=xpf8o3VoftS-CtygUQ2ZVg"'), 'title', json('"Meredith Whittaker on Twitter"'), 'description', json('"“2. supporting the large number of languages we were previously including made the Signal client file size extremely big, which caused problems for people in low-bandwidth environments &amp; for those with devices that didn\'t have a lot of storage 3\/”"'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Error : During sqlite3_prepare_v2(): near "s": syntax error
  Query: "SELECT json_array(json_object('url', json('"https:\/\/twitter.com\/mer__edith\/status\/1606331349152980992?s=46&t=533edDioKlrjkbHGlqlGgQ"'), 'title', json('"Meredith Whittaker on Twitter"'), 'description', json('"“@stsDrex Not just resources, it\'s the binary size and how that was preventing Signal use by the people we would anticipate primarily using those languages. It\'s not great. But my understanding, via the translators we work w\/, is that Trad Chinese is commonly used in HK + Uyghur regions.”"'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Trying to match conversation (75/141) (type: private)
Trying to match conversation (5/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!889ed1a805d05122cfee23a259b10c236990689daea217ef56c8227f931108f2)
 - Importing 315 messages into thread._id 1185
Error : During sqlite3_prepare_v2(): no such column: conversationId
  Query: "SELECT COALESCE(uuid,e164) AS rid FROM conversations WHERE conversationId IS ?"
Error : During sqlite3_prepare_v2(): no such column: conversationId
  Query: "SELECT COALESCE(uuid,e164) AS rid FROM conversations WHERE conversationId IS ?"
Error : During sqlite3_prepare_v2(): no such column: conversationId
  Query: "SELECT COALESCE(uuid,e164) AS rid FROM conversations WHERE conversationId IS ?"
Error : During sqlite3_prepare_v2(): no such column: conversationId
  Query: "SELECT COALESCE(uuid,e164) AS rid FROM conversations WHERE conversationId IS ?"
Error : During sqlite3_prepare_v2(): no such column: conversationId
  Query: "SELECT COALESCE(uuid,e164) AS rid FROM conversations WHERE conversationId IS ?"
Error : During sqlite3_prepare_v2(): no such column: conversationId
  Query: "SELECT COALESCE(uuid,e164) AS rid FROM conversations WHERE conversationId IS ?"
Error : During sqlite3_prepare_v2(): no such column: conversationId
  Query: "SELECT COALESCE(uuid,e164) AS rid FROM conversations WHERE conversationId IS ?"
Error : During sqlite3_prepare_v2(): no such column: conversationId
  Query: "SELECT COALESCE(uuid,e164) AS rid FROM conversations WHERE conversationId IS ?"
Trying to match conversation (6/141) (type: private)
Trying to match conversation (1/141) (type: private)
 - Importing 4166 messages into thread._id 1108
Error : During sqlite3_prepare_v2(): near "t": syntax error
  Query: "SELECT json_array(json_object('url', json('"https:\/\/old.reddit.com\/r\/signal\/comments\/r3gpec\/cant_get_verification_code\/"'), 'title', json('"Can\'t get verification code"'), 'description', json('"My friend tried to sign up and he won\'t get the SMS for verification, not using his number and not using another number I gave him, he\'s using an..."'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Trying to match conversation (2/141) (type: group)

Trying to match conversation (42/141) (type: private)
Warning: Failed to find matching thread for conversation, creating. (id: 5641b787-5511-4f09-8a92-6831801ddcfc)
 - Importing 237 messages into thread._id 1204
Error : During sqlite3_prepare_v2(): near "t": syntax error
  Query: "SELECT json_array(json_object('url', json('"https:\/\/github.com\/signalapp\/Signal-Desktop\/issues\/5707"'), 'title', json('"Can\'t accept group join requests as long as \"members have the same name\" banner has not been dismissed · Issue #5707 · signalapp\/Signal-Desktop"'), 'description', json('"Some actions on Signal rely on using banners. If I dismiss the &quot;members have the same name&quot; banner I can&#39;t go back to that menu, there is no other place to open the comparison screen ..."'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Trying to match conversation (43/141) (type: private)
bepaald commented 1 year ago

Hey thanks again. Both those new errors should hopefully be fixed.

Meteor0id commented 1 year ago

Nah, thank you for making this tool.

unfortunately this way of escaping leads to 2 cases of malformed JSONs:

Trying to match conversation (74/141) (type: group)
Warning: Failed to find matching thread for conversation, creating. (id: __signal_group__v2__!0697f10687e74b406cc67eabece332c086a18340b36eef2835c55b8e3e467f3c)
 - Importing 3436 messages into thread._id 1223
Error : After sqlite3_step(): malformed JSON
  Query: "SELECT json_array(json_object('url', json('"https:\/\/support.signal.org\/hc\/en-us\/articles\/360007060672-Troubleshooting-Calling"'), 'title', json('"Troubleshooting Calling"'), 'description', json('"Your Signal call screen will show 

Calling or ConnectingWhile waiting for the call to connect

RingingWhen your contact''s phone is online and ringing

TimerAfter your call has been answe..."'), 'date', 0, 'attachmentId', json_object('rowId', ?, 'uniqueId', ?, 'valid', json('true')))) AS link_previews"
Warning: Failed to get number of attachments in quoted message. Skipping
Trying to match conversation (75/141) (type: private)
Error : After sqlite3_step(): malformed JSON
  Query: "SELECT _id, recipient_id, body, date_received, quote_id, quote_author, quote_body, quote_mentions, type, delivery_receipt_count, read_receipt_count, IFNULL(remote_deleted, 0) AS remote_deleted, expires_in, message_ranges, json_extract(link_previews, '$[0].title') AS link_preview_title, json_extract(link_previews, '$[0].description') AS link_preview_description FROM message WHERE thread_id = ? ORDER BY date_received ASC"
Dealing with thread 1224
bepaald commented 1 year ago

Thanks, the JSON escaping should hopefully be fixed now?

I also started work on creating missing recipients on the import side (though nothing to test yet).

On the export(html) side, Note-to-self should now either work automatically, or you can add --setselfid "+316xxxxxxxx" to the command line to let the function know which recipient is 'self'.

Meteor0id commented 1 year ago

escaping is fixed, no new errors and warnings.

Meteor0id commented 1 year ago

Just curious; what are you planning to do from this point forward? You're still hoping to catch a few more missing receipients right? And to support more message types?