[FP3] Decrypt data in recovery after bootloop - Fairphone

Hello !
I’ve made a little mistake.
This year, I’ve installed LineageOS for MicroG on my Fairphone3. It provides OTA updates but with the last one, it is said I must follow the official instructions on LineageOS website. It was not a prioritiy, so I didn’t do it. At the begining of the month, I’ve open the web page and read the instructions. There are simple, so i’ve done it.
But, I’ve forgotten that my version was MicroG. I’ve installed the “normal” version (lineage-19.1-20220926). Now, my FP3 is in a bootloop . May be due to the absence of MicroG). I’ve tried to install a newer version of LineageOS for MicroG, without success.
My problems are :
I would like to retrieve data
Data directory is encrypted
I’ve locked my phone with a pattern
I’ve found a solution to try a decrypt with Santoku Linux. The script needs a header and a footer. I have found the header but not the footer.
Do you know where to find it ? It seems these files are different according to the manufacturer.

Up ^^

Hi, did you solve your problem?
On my main phone that was on LOS 19 microG, I dirty flashed LOS 20 microG that just went out (https://download.lineage.microg.org/builds/full/FP3/lineage-20.0-20230403-microG-FP3.zip). The reboot went smoothly. The install of updated apps through Aurora would fail every time.
So I went for a reboot, and alas, the animated LOS logo stays forever, and sometimes it reboots. Reapplying the upgrade doesn’t fix anything. Any idea of what could be wrong? Is there any way to revert to a functioning phone?

Related

Installed Lineage 14.1, get messages Hello, I've been trying to install Lineage 14.1

Hello,
[Sorry: can't edit title]
I've been trying to install Lineage 14.1 on my Samsung Galaxy Tab Pro (SM-T520), and haven't been successful.
I keep getting the message "Google Services Framework keeps stopping", sometimes alternating with the message "android.process.media has stopped".
I've used the following installation procedure:
1. Starting with the stock Samsung Android v4.4.2, I used Odin v3.1.2, to root the device, by installing
CF-Auto-Root-picassowifi-picassowifixx-smt520.tar.md
2. I used Odin to install picassowifi TWRP v2.8.7.0. I didn't use the latest v3.1.1-0, because it reboots the
device while making Nandroid backups. Available here
https://eu.dl.twrp.me/picassowifi/
3. I copied several versions of Lineage OS amd Gapps (see below) to the device's SD card
4. I used TWRP to wipe the cache/dalvic/data/system each time, using the Wipe->Advanced option
5. I used TWRP to install the Lineage OS amd Gapps as an atomic operation on the device
6. After installation, I rebooted from TWRP:
- without rooting: I get the message "Google Services Framework keeps stopping"
- with rooting, by installing SuperSU: The device enters into a boot loop, displaying the sliding Lineage logo
I followed the same procedure to update my Samsung Galaxy S4 Mini, and it worked flawlessly.
I tried the following Lineage OS versions, available here:
https://download.exynos5420.com/LineageOS-14.1/n2awifi/
lineage-14.1-20170506-UNOFFICIAL-n2awifi.zip
lineage-14.1-20170715-UNOFFICIAL-n2awifi.zip
I also tried the folowing Lineage OS versions, available here:
https://download.lineageos.org/n2awifi
lineage-14.1-20170608-nightly-n2awifi-signed.zip
lineage-14.1-20170713-nightly-n2awifi-signed.zip
I tried the following versions of Gapps, available here (32-bit arm, Android v7.1, stock variant):
http://opengapps.org/?api=7.1&variant=stock
open_gapps-arm-7.1-stock-20170505.ziip
open_gapps-arm-7.1-stock-20170711
I tried several combinations of these 2 packages. With all the combinations I tried, I got the results summarised above.
This post suggests installing Lineage OS alone without Gapps, and then install Webview Implementation, if not installed:
http://www.lineageosrom.com/2017/02/how-to-fix-google-play-services-error.html
When I tried this and reboot, I get the messages "android.process.media" has stopped, followed by the message "clock has stopped". When I click away these messages, and click on next on the Lineage OS screen, the device enters into a boot loop displaying the sliding Lineage logo. This agrees with the Lineage recommendation, that both packages need to be installed at the same time:
https://wiki.lineageos.org/devices/n2awifi/install
Can anyone please help? I really don't want to go back to Android v4.4.2 on my SM-T520.
Hello so to get rid of the error I would suggest downloading samsung kies 1 not 2 or 3 and flashing completely back to stock then try rooting and flashing rom should get rid of system errors and force closes. Kies will ask you for model and serial number. Serial is found on back of the tablet. As another suggestion I would try resurrection remix by cosmox. It is very stable everything works. I just posted a link in that thread with a link to download samsung kies for a 64 bit windows and other relevant files if you need. Let me know if you need any other help. Also closer inspection of your links. I think for sm-t520 u should be using twrp Picassowifi, not n2awifi so idk if that will work or not. Not sure about that part though because they may have made it work on Picasso.
Thanks paintball.
I confirm that I had used picassowifi TWRP. I've edited the original post to indicate this.
I've also tried what you suggested - I reinstalled the original stock Samsung firmware using Odin, and used TWRP to again install Lineage. Same result, still displaying the same Google Service errors.
I'll look at the Resurrection remix.
Paul
paintball,
I've found a solution, that I thought I'd post here in case anyone else has the same problem.
I wiped the cache/dalvic after each step of the installation:
Wipe-> Advanced -> wipe cache / data / dalvic / system
Install -> flash Lineage -> wipe cache/dalvic
Install -> flash Gapps -> wipe cache/dalvic
Reboot -> don't install SuRoot
I got a Music closed error during the first boot, which hasn't appeared since.
Afterwards, I used Odin to install CF-Auto-Root. The device rebooted twice after this step, but now appears to be OK.
A final problem I had was that it couldn't find my wifi SSID. I solved this by setting wifi region to Europe.
ppmoore said:
Thanks paintball.
I confirm that I had used picassowifi TWRP. I've edited the original post to indicate this.
I've also tried what you suggested - I reinstalled the original stock Samsung firmware using Odin, and used TWRP to again install Lineage. Same result, still displaying the same Google Service errors.
I'll look at the Resurrection remix.
Paul
Click to expand...
Click to collapse
I suggested using Samsung kies which I'm positive works, not Odin, but I'm glad you got it fixed.
ppmoore said:
Hello,
[Sorry: can't edit title]
I've been trying to install Lineage 14.1 on my Samsung Galaxy Tab Pro (SM-T520), and haven't been successful.
I keep getting the message "Google Services Framework keeps stopping", sometimes alternating with the message
<snip>
Click to expand...
Click to collapse
I'm having a similar issue. Mine differs in the following ways.
I was able to successfully install and run LineageOS with OpenGApps full, but reverted to a nandroid backup because I needed some information from the original install. Since then, I have been unable to get past the initial couple of screens for setting things up--and this with the constant "Google Services Framework keeps stopping" error.
I have tried most of the "fixes" I've found but to no avail. I notice that, (1) when I go to the drop-down menu and setup WiFi, as soon as the device connects to the Internet, I go to the Lineage bootup animation and get stuck there. If I hard boot from there, I can get in up to the point where I connect to the Internet (not just router, but actually get through to the Internet) and (2) I cannot enable Developer options--when I try, no matter how many times I click on the Build number, I get no indication of the options being enabled.
I have tried several permutations of Lineage OS nightlies along with various flavors of OpenGApps, with and without root, wiping cache/dalvik/data/system, wiping only some, wiping none.
I also cannot restore the backup of the running LOS that I had up (I did take a backup before going back to the original setup). When I try, I get the same results as above--as if I had backed-up an un-instantiated setup.
Any thoughts?
eckster said:
I'm having a similar issue. Mine differs in the following ways.
I was able to successfully install and run LineageOS with OpenGApps full, but reverted to a nandroid backup because I needed some information from the original install. Since then, I have been unable to get past the initial couple of screens for setting things up--and this with the constant "Google Services Framework keeps stopping" error.
I have tried most of the "fixes" I've found but to no avail. I notice that, (1) when I go to the drop-down menu and setup WiFi, as soon as the device connects to the Internet, I go to the Lineage bootup animation and get stuck there. If I hard boot from there, I can get in up to the point where I connect to the Internet (not just router, but actually get through to the Internet) and (2) I cannot enable Developer options--when I try, no matter how many times I click on the Build number, I get no indication of the options being enabled.
Any thoughts?
Click to expand...
Click to collapse
Hi Eckster,
I have exactly the same problem on a LG G2 with LOS 14.1. It ran July version perfectly but I didn't make a backup and now I'm stuck. Did you ever manage to fix this?
Thanks,
Kevin
Managed to solve it. I formatted all partitions _including_ data (which means you'll also loose all zips you wanted to install so make sure that adb is working). Then rebooted into the recovery. Installed as usual, worked.
detlef25 said:
Managed to solve it. I formatted all partitions _including_ data (which means you'll also loose all zips you wanted to install so make sure that adb is working). Then rebooted into the recovery. Installed as usual, worked.
Click to expand...
Click to collapse
how did you format the partitions? I can only find "format data".. thx
detlef25 said:
Managed to solve it. I formatted all partitions _including_ data (which means you'll also loose all zips you wanted to install so make sure that adb is working). Then rebooted into the recovery. Installed as usual, worked.
Click to expand...
Click to collapse
:thumbsup: I was on lineage 14, all was well. I tried an old stock rom NK2, that was fine. I tried to restore lineage backup via twrp, got this problem with the framework crashing. No amount of re-flashing twrp nor lineage, gapps, modem, bootloader, etc nothing worked; always crashed right after boot to lock screen. Finally twrp "format data" - yes. Now lineage boots to welcome, no crash; restore backup - after copying it back to internal - and all is good.
I'm glad it works but why is it needed in this case to remake the filesystem on data - does it work by removing some bad file or does it work by rebuilding the ext4 and security context? this is with latest twrp twrp-3.2.1-0-klte.
Hi,
don't know if you solved it eventually, or maybe helpful for other people with the same problem. I had the same problem, spent 6 days digging around on the internet why the framework keeps stopping and crashing.
I eventually found out that:
- TWRP 3.0.2.0 is WAY more stable than 3.1.1.0 (which never succeeded in installing gapps without crashing)
- Wiping system, data, dalvik recovery and internal storage is not the only thing that needs to be done. You also need to use the 'FORMAT DATA" button (everything will be wiped from your tablet, so, as always, backups )
- After that, install the lineageOS binary, after the installation, wipe dalvik/cache, go back and install the appropriate GApps package, wipe dalvik/cache and reboot
Say whatever you need to whatever deity you prefer and wait for the tablet to boot.
I hope to be of some help to other people having the same problem
Code:
Sent from my SM-S920L using Tapatalk
grammar
detlef25 said:
Managed to solve it. I formatted all partitions _including_ data (which means you'll also loose all zips you wanted to install so make sure that adb is working). Then rebooted into the recovery. Installed as usual, worked.
Click to expand...
Click to collapse
Was going crazy trying to figure out why LineageOS was encountering so many ANRs. The first time I flashed Lineage it worked beautifully but every time after that it just went nuts. This fixed it for me, thanks dude!
Note to others who may end up here, after formating data I had to install a stock ROM, then wipe and install Lineage. Lineage wouldn't install due to Updater process ended with ERROR: 7 which was because there was some bit of information that was on the data partition that showed the install script that the phone was actually a Note II. Formating data blows that info away but installing stock puts it back on.
LievenVanh said:
I eventually found out that:
- TWRP 3.0.2.0 is WAY more stable than 3.1.1.0 (which never succeeded in installing gapps without crashing)
- Wiping system, data, dalvik recovery and internal storage is not the only thing that needs to be done. You also need to use the 'FORMAT DATA" button (everything will be wiped from your tablet, so, as always, backups )
- After that, install the lineageOS binary, after the installation, wipe dalvik/cache, go back and install the appropriate GApps package, wipe dalvik/cache and reboot
Click to expand...
Click to collapse
Coming into this thread after a few hours of struggle with an old GS4 I can say that this method instantly worked for me as well.
Thanks!
Thanks for the help to resolve my issue of installation. Do you have a solution for Zoom , where my audio (cannot hear other speakers) and video is missing. Did enable access for Mic, Camera etc in App permission.
Look at this thread: https://forum.xda-developers.com/ga...-t520-unofficial-lineage-14-1-t3538770/page86 -- last two posts
hamudistan said:
Look at this thread: https://forum.xda-developers.com/ga...-t520-unofficial-lineage-14-1-t3538770/page86 -- last two posts
Click to expand...
Click to collapse
That solution didn't work. My Zoom audio still not working.

OTA update and BOOT LOOP

Hi peeps. Would be glad if you guys can help me... I always get stuck in boot loop after OTA update. I also tired the same via lineage downloader and still the same issue. .. I use and nexus 6.. Pls help me
On a OnePlus 3, since moving to LineageOS 16 I haven't been able to do a single OTA update without any bootloop (it starts with the LineageOS logo, quite fast then Android booting and asking for a password, then LineageOS logo again, for ever until it reboots into recovery). What has saved me is the following:
* from recovery, adb sideload lineageOS, then OpenGapps, then addonSu
* reboot
I guess the OTA update messes up with OpenGapps, leading to this bootloop...
Mathias
i am having a quite similar issue on Oneplus 3T. Is your device encrypted?
The last couple of days i am going insane with boot looping. I noticed that while i have me device not encrypted, ota updates are successful.
But as soon as i encrypt my device and perform an OTA update, all hell breaks loose
Yes, my device is encrypted. But as I've written above, manually flashing through abd sideload both lineageOS and then OpenGapps works. Actually, most probably only reflashing OpenGapps after the unsuccessful update might be enough...
have you ever messed around with "privacy guard"?
Since i am also trying to figure out what is causing the boot loop, i managed to find that messing around with privacy guard settings might lead you to a boot loop.
Source: Privacy Guard - Recover from bootloop
Deleting (or editing according to the information provided in the link) the /data/system/appops.xml might solve this problem.
I will check this out as soon as a new build is available for download.
Wow, great tip and great link! Yes, I did remove some permissions for Google... Exactly what was described in the linked post.

My Samsung gt-5210 flash Android 7.1.2 saga

Wow. What an ordeal this turned out to be. After a week of failed attempts :crying: and retries , my Samsung Note 3 10.1 (gt-5210) is finally upgraded from Kitkat 4.4.2 to Lineage OS 14.1 with Android 7.1.2. Having found a smattering of sparse and spread out information on how to make this happen (and how to solve the various issues I ran into), I'm going to try to collect my thoughts here in hopes that it might help one other poor soul.
My problems fell into three basic categories: (1) Finding the up to date and compatible with one another files (TWRP, ROM, and gApps); (2) Getting TWRP to actually install; and (3) most painful of all, getting past the Google Services stonewall errors. I'll expand on these as follows:
1) Getting the right files: Man, don't go Googling around. You're going to find a bunch of blocked (questionable malware?), and when you download the files they offer, most than likely you'll end up with corrupt and/or incompatible ROMs. It's amateur hour out there. Thank God I found forum.xda-developers.com, where I found several versions of Android (5.0, 6.0, 7.x) in threads that nicely pointed to all the correct files.
2) Installing TWRP with Odin: Short story short, disable auto-reboot in Odin. After several tries which only took me back into Samsung's stock recovery, I, by chance, found a post somewhere saying, oh, yeah, disable auto-reboot. Once I did that, and rebooted the tablet myself, I was in business for the next part of the adventure.
3) Flashing OS _and_ gApps: together, that is, on after the other. Like every single YouTube and written tutorial tells you to do. Except... it doesn't work. More to the point, Google Play Services is all honked upon first boot-up. With the added benefit of locking you out of using the tablet at all, because the Google wizard/setup gets hung up with "Google App has stopped" or "Google App keeps stopping." (I tried a 6.0 Marshmallow installation for kicks, and though I didn't get stuck on the wizard [none started at first bootup], all of the Google Apps would fail with various complaints about missing or incompatible Google Play Services; and no, installing the latest didn't help any.) Solution? Again, another found-by-chance post somewhere in the ether recommended flashing the OS *without* gApps, rebooting, then surfing, finding, and installing the latest version of "Android System Webview", then rebooting into recovery to flash gApps. After that, the sun came out, the flowers bloomed, and the birds sang their symphony. Why "Android System Webview" isn't included with either the OS ROM or gApps is beyond me, but there you have it.
Now back to enjoying my tablet...

Encrypted M9, Lineage updates

I had issues in the past with encrypting my M8, was using clockworkmod and Cyanogen, and could not process updates without fully wiping.
Ultimately I accepted this because I cannot live with having the phone not encrypted.
I now have a new M9, Running TWRP and Lineage 14.
All is working beautifully, no complaints, however I would like to encrypt the phone so I started doing research if this new setup would have issues.
Seems there is mixed advice on different device models having various issues with encrypted images and TWRP not being able to properly update automatically or manually.
Anyone have an M9, encrypted, TWRP and the latest Lineage.
If so known working versions of TWRP to use or avoid? Any required firmware levels, OS build dates, etc?
Just looking for yes, I am doing it and it works on x+y+x configuration, or No, this is going to end in misery.
Not instructions per se unless there are some specific points that lead to a definitive success / failure.
any advice appreciated.
Hi, I have super inactive on the forum for a very long and I signed in for the first time in a few years to answer this.
I also ran into an issue with encryption and lineage os. I found an answer online that I can confirm worked for me.
I am running the latest nightly (Nov 7) and have no issues with installing updates through the settings menu. I am not sure which time version of twrp I am on at the moment and I can't check right now.
I also have a himaul. As Markus said, the last CM13 was able to encrypt properly. That gives us a time-consuming workaround:
Do a fresh install of cm-13.0-20161218-NIGHTLY-himaul. (I got it from https://archive.org/download/cmarchive_nighlies )
Set a PIN and encrypt the phone normally through settings. (I did not try a password or pattern.)
twrp should be able to decrypt properly. Perform the default (i.e., rm -rf, non-formatting) wipe.
adb sideload lineage-14.1-20170516-nightly-himaul-signed
LOS will boot to the standard decryption prompt and should succeed with the PIN from step 2.
LOS will not have a screen lock enabled. I set the same PIN from step 2 and was able to decrypt with it on the next boot. I changed my PIN to another value and was able to decrypt with the new PIN on the next boot.
If you do not set a PIN in step 2, you will still get a PIN prompt in step 5, but there will be no correct answer and you'll have to start over.
This procedure gave me a himaul running the latest LOS nightly that believes it is properly encrypted. I uploaded a logcat from the CM13 encryption run that succeeded as encryption.cm13.log
Click to expand...
Click to collapse
Source https://jira.lineageos.org/plugins/servlet/mobile#issue/BUGBASH-457 (click to view older comments)
I was able to change the decryption pin (using "cryptfs" from the play store) to a password required upon boot and and I was able to set a pattern lock to unlock the screen.
Edit: To clarify, I ran into a boot loop issue upon trying to encrypt the phone with lineage installed. I can use the automatic updating without issues(so far)
Thank you very much for the input!
I am on the newest twrp-3.1.1-0-hima, and the latest nightly lineage (11/7) as well.
No play store, no google app anything, just a basic subset of productivity tools, and blazing fast performance.
Trying to decide if I want to chance this, this weekend, I will report back for posterity success/fail or at least if I chicken out.
This M9 is running amazingly smooth as is, I hate to toast it, but that's how we learn and the price we pay for not being charged by ATT to be their product
Thanks again for the input, and still would love to hear other's success/fail stories if theyhave them.
Well, to anyone that wants to go there, I can tell you that if you just tell the phone to encrypt, it will not complain, however when it is complete, you will never see the OS again....
Had to reload from scratch, and restore everything I backed up before hand. I did not have time to go back and try alternative ways or methods, maybe next weekend...
The solution I linked worked for me personally, its unfortunate that you couldn't get it to work. Did you do the correct type of wiping ? There is one that deletes the files but leave encryption in tact while the other type is formatting which removes encryption. Also did you give your phone some time to rebuild the dalvik/art cache after installing lineage os?

Fully Wiped my OnePlus5T attempting to update to 5.1.5 - Is it soft bricked?

Disclaimer: I am no developer just someone who has done a ton of research in the last day
This may be a long post due to my extensive troubleshooting issues, so here's some background.
OP5T is the first android I've owned and I have had it for about a year. I rooted it right after I received it and haven't updated it since. With the release of Oreo, I entertained the idea of updating my firmware, which I knew meant that I'd need to factory reset my device. Yesterday was the day I decided to do it and man I regret it. Long story short, I fully uninstalled Magisk through the app, attempted to fully remove the root by means of 'full unroot' in the SuperSU app, which failed. I then was stupid enough to fully wipe my device using TWRP (I think I checked the box for every partition in 'advanced wipe'). I was then stuck in a boot loop. Eventually, I managed to use fastboot to boot recovery to TWRP. I have been stuck in this state ever since.
I am currently using 3.2.1-x | blu_spark v8.61 and previously used Magisk.
The main ROM I have been attempting to flash is OnePlus5TOxygen - 5.1.5
- https://www.oneplus.com/support/softwareupgrade/details?code=7
- https://forum.xda-developers.com/oneplus-5/how-to/oxygen-os-5-1-5-signed-zip-t3832336 (not sure how
these are different but their filenames differ so I have tested both
The errors I have received in my troubleshooting process:
- The most infamous: Error 7
- E1001: Failed to update system image
- no file_contexts
- and a host of others I have weeded out using xda as a resource, such as many partition errors, vendor issues,
etc.
- Failed to read command: No error (terminal result when attempting to flash some ROMS through ADB)
The steps I have taken to remedy these errors:
Let me just say I have consulted tons of xda threads regarding error 7, and none work for me. I have attempted to flash using several of the latest versions of TWRP, finding the most success with blu_spark. I have attempted to sideload the ROMS, push them using ADB, and directly place them in the internal storage and no method works. I always get Error 7, with the exception below.
I have attempted to flash stock ROMS for OOS versions 5.1.4, 5.1.5, custom ROMS recommended by xda threads pertaining to the same issue, and many variations of these. Since there are no assert statements in the update_script found in the stock ROMS, which many people mentioned on the forums, I have attempted to approach error 7 from a different angle.
- Each stock ROM starts with this function, which when deleted gets rid of the 'vendor partition is not existed'
error getprop("ro.display.series") == "OnePlus 5T" || abort("E3004: This package is for
"OnePlus 5T" devices; this is a "" + getprop("ro.display.series") + "".");
is_part_existed("/dev/block/bootdevice/by-name/vendor") || abort("vendor partition is not existed, exit
ota!!");
- Even when deleting that, I found there to be two more errors that would appear every time I attempted to
flash, caused by two block_image_update functions that result in errors E1001 and E1002: These both have to do
with updating the system or vendor image.
I have attempted to delete any combination of these. If I don't delete all three functions, I will get an error pertaining to the function I didn't delete. If I do delete them, the ROM will install up to 47% every time and it will cancel (no error). This has happened for all stock ROMS I have flashed, and I have swapped to the latest stock recovery multiple times with no luck.
Additionally, I reformatted data multiple times, set the system partition to ext4, attempted to fix the file system, attempted to mount system in read only to see if that would fix the system update error, all to no avail. I also delete the cache after each ROM flash attempt as well.
I have spent at least 10 hours trying every troubleshoot option I came across on the forums and nothing has helped, which is why I am making this now. I have attempted to flash the current firmware for OP5T with every flash attempt ending with the string '...done' in the terminal, even though nothing has been changed or installed. Every time I try to reboot, it still tells me that I have no OS installed, and I can tell since my internal storage is currently using only around 100MB of usable memory. I have also locked my bootloader, wiped the device, switched to stock recovery, and attempted to clean flash the latest OS with no luck.
In conclusion, it seems that I have deleted my OS so there is nothing to boot to (I go straight to bootloader), there is an error or something missing in my filesystem that is preventing me from fully installing any ROM, and I have tried everything suggested on these forums for similar issues with very limited success. I have done much more than what I mentioned here, and if anything useful comes to mind I will update this post.
(I am also a Computer Science college student that needs a working phone drastically and have already spent so much time diagnosing this issue rather than study that I am ashamed)
I am on the brink of contacting OnePlus, even though I feel as though they wouldn't be much help, or sending this to a repair shop.
Any suggestions/ideas would be greatly appreciated. I will attempt to be as active as possible on this forum as well.
Read my post in this thread, second post. You are fine, as you can still get into TWRP, you are just using a really old version of TWRP, and further complicating things by trying to flash treble ROMs.
Update to the latest version of Bluesparks TWRP which you can flash from your current TWRP, then reflash the full factory ROM. Note it will replace recovery if it is successful.
^^ +1. As long as you can boot into recovery, you are fine. The trick is installing a ROM that is compatible with your TWRP.
I am using codeworkx TWRP 20180822 and running the last Oreo build of Omnirom. First update your TWRP image, then find your OREO rom and install that. You may need to format data with the new TWRP first.

Categories

Resources