From 0f8f3bcbb3dd970fa07bd3797ec275772610b741 Mon Sep 17 00:00:00 2001
From: 46620 <46620osu@gmail.com>
Date: Sat, 21 Aug 2021 21:04:13 +0000
Subject: [PATCH] Full clienthax setup (#2)

- [x] Folder structure
- [x] Script updates
- [x] XML patches
- [x] Move all patches to this repo
- [x] Make sure jenkins is ready for new build system

Reviewed-on: https://booba.tech/CutTheCord/cutthecord/pulls/2
Co-authored-by: 46620 <46620osu@gmail.com>
Co-committed-by: 46620 <46620osu@gmail.com>
---
 .gitattributes                                |    1 +
 .gitignore                                    |    2 +-
 patches/betterdmheader/89207.patch            |   68 -
 patchport.py                                  |   24 +-
 .../old-patches}/README.md                    |    0
 .../old-patches}/hqavatars/1371.patch         |    0
 .../old-patches}/hqavatars/1387.patch         |    0
 .../old-patches}/hqavatars/1456.patch         |    0
 .../old-patches}/hqavatars/1458.patch         |    0
 .../old-patches}/hqavatars/1474.patch         |    0
 .../old-patches}/hqavatars/1489.patch         |    0
 .../old-patches}/hqavatars/1505.patch         |    0
 .../old-patches}/hqavatars/1509.patch         |    0
 .../old-patches}/hqavatars/1510.patch         |    0
 .../old-patches}/hqavatars/1512.patch         |    0
 .../old-patches}/hqavatars/1514.patch         |    0
 .../old-patches}/hqavatars/1516.patch         |    0
 .../old-patches}/hqavatars/1518.patch         |    0
 .../old-patches}/hqavatars/1520.patch         |    0
 .../old-patches}/hqavatars/1522.patch         |    0
 .../old-patches}/hqavatars/1523.patch         |    0
 .../old-patches}/hqavatars/73001.patch        |    0
 .../old-patches}/hqavatars/73008.patch        |    0
 .../old-patches}/hqavatars/73111.patch        |    0
 .../old-patches}/hqavatars/74000.patch        |    0
 .../old-patches}/hqavatars/74010.patch        |    0
 .../old-patches}/hqavatars/76008.patch        |    0
 .../old-patches}/hqavatars/78105.patch        |    0
 .../old-patches}/hqavatars/78107.patch        |    0
 .../old-patches}/hqavatars/78109.patch        |    0
 .../old-patches}/hqavatars/79107.patch        |    0
 .../old-patches}/hqavatars/README.md          |    0
 .../old-patches}/noblocked/1371.patch         |    0
 .../old-patches}/noblocked/1387.patch         |    0
 .../old-patches}/noblocked/1456.patch         |    0
 .../old-patches}/noblocked/1458.patch         |    0
 .../old-patches}/noblocked/1474.patch         |    0
 .../old-patches}/noblocked/1489.patch         |    0
 .../old-patches}/noblocked/1505.patch         |    0
 .../old-patches}/noblocked/1509.patch         |    0
 .../old-patches}/noblocked/1510.patch         |    0
 .../old-patches}/noblocked/1512.patch         |    0
 .../old-patches}/noblocked/1514.patch         |    0
 .../old-patches}/noblocked/1516.patch         |    0
 .../old-patches}/noblocked/1518.patch         |    0
 .../old-patches}/noblocked/1520.patch         |    0
 .../old-patches}/noblocked/1522.patch         |    0
 .../old-patches}/noblocked/1523.patch         |    0
 .../old-patches}/noblocked/73001.patch        |    0
 .../old-patches}/noblocked/73008.patch        |    0
 .../old-patches}/noblocked/73111.patch        |    0
 .../old-patches}/noblocked/74000.patch        |    0
 .../old-patches}/noblocked/74010.patch        |    0
 .../old-patches}/noblocked/76008.patch        |    0
 .../old-patches}/noblocked/78105.patch        |    0
 .../old-patches}/noblocked/78107.patch        |    0
 .../old-patches}/noblocked/78109.patch        |    0
 .../old-patches}/noblocked/79107.patch        |    0
 .../old-patches}/noblocked/81109.patch        |    0
 .../old-patches}/noblocked/81110.patch        |    0
 .../old-patches}/noblocked/81111.patch        |    0
 .../old-patches}/noblocked/82206.patch        |    0
 .../old-patches}/noblocked/83210.patch        |    0
 .../old-patches}/noblocked/86201.patch        |    0
 .../old-patches}/noblocked/87201.patch        |    0
 .../old-patches}/noblocked/87202.patch        |    0
 .../old-patches}/noblocked/87203.patch        |    0
 .../old-patches}/noblocked/88202.patch        |    0
 .../old-patches}/noblocked/88203.patch        |    0
 .../old-patches}/noblocked/88205.patch        |    0
 .../old-patches}/noblocked/89201.patch        |    0
 .../old-patches}/noblocked/89206.patch        |    0
 .../old-patches}/noblocked/89207.patch        |    0
 .../old-patches}/noblocked/README.md          |    0
 .../old-patches}/squareavatars/1371.patch     |    0
 .../old-patches}/squareavatars/1387.patch     |    0
 .../old-patches}/squareavatars/1456.patch     |    0
 .../old-patches}/squareavatars/1458.patch     |    0
 .../old-patches}/squareavatars/1474.patch     |    0
 .../old-patches}/squareavatars/1489.patch     |    0
 .../old-patches}/squareavatars/1505.patch     |    0
 .../old-patches}/squareavatars/1509.patch     |    0
 .../old-patches}/squareavatars/1510.patch     |    0
 .../old-patches}/squareavatars/1512.patch     |    0
 .../old-patches}/squareavatars/1514.patch     |    0
 .../old-patches}/squareavatars/1516.patch     |    0
 .../old-patches}/squareavatars/1518.patch     |    0
 .../old-patches}/squareavatars/1520.patch     |    0
 .../old-patches}/squareavatars/1522.patch     |    0
 .../old-patches}/squareavatars/1523.patch     |    0
 .../old-patches}/squareavatars/73001.patch    |    0
 .../old-patches}/squareavatars/73008.patch    |    0
 .../old-patches}/squareavatars/73111.patch    |    0
 .../old-patches}/squareavatars/74000.patch    |    0
 .../old-patches}/squareavatars/74010.patch    |    0
 .../old-patches}/squareavatars/76008.patch    |    0
 .../old-patches}/squareavatars/78105.patch    |    0
 .../old-patches}/squareavatars/78107.patch    |    0
 .../old-patches}/squareavatars/78109.patch    |    0
 .../old-patches}/squareavatars/79107.patch    |    0
 .../old-patches}/squareavatars/81109.patch    |    0
 .../old-patches}/squareavatars/81110.patch    |    0
 .../old-patches}/squareavatars/81111.patch    |    0
 .../old-patches}/squareavatars/82206.patch    |    0
 .../old-patches}/squareavatars/83210.patch    |    0
 .../old-patches}/squareavatars/86201.patch    |    0
 .../old-patches}/squareavatars/87201.patch    |    0
 .../old-patches}/squareavatars/87202.patch    |    0
 .../old-patches}/squareavatars/87203.patch    |    0
 .../old-patches}/squareavatars/88202.patch    |    0
 .../old-patches}/squareavatars/88203.patch    |    0
 .../old-patches}/squareavatars/88205.patch    |    0
 .../old-patches}/squareavatars/89201.patch    |    0
 .../old-patches}/squareavatars/89206.patch    |    0
 .../old-patches}/squareavatars/89207.patch    |    0
 .../old-patches}/squareavatars/README.md      |    0
 .../patches}/betterdmheader/1371.patch        |    0
 .../patches}/betterdmheader/1387.patch        |    0
 .../patches}/betterdmheader/1456.patch        |    0
 .../patches}/betterdmheader/1458.patch        |    0
 .../patches}/betterdmheader/1474.patch        |    0
 .../patches}/betterdmheader/1489.patch        |    0
 .../patches}/betterdmheader/1505.patch        |    0
 .../patches}/betterdmheader/1509.patch        |    0
 .../patches}/betterdmheader/1510.patch        |    0
 .../patches}/betterdmheader/1512.patch        |    0
 .../patches}/betterdmheader/1514.patch        |    0
 .../patches}/betterdmheader/1516.patch        |    0
 .../patches}/betterdmheader/1518.patch        |    0
 .../patches}/betterdmheader/1520.patch        |    0
 .../patches}/betterdmheader/1522.patch        |    0
 .../patches}/betterdmheader/1523.patch        |    0
 .../patches}/betterdmheader/73001.patch       |    0
 .../patches}/betterdmheader/73008.patch       |    0
 .../patches}/betterdmheader/73111.patch       |    0
 .../patches}/betterdmheader/74000.patch       |    0
 .../patches}/betterdmheader/74010.patch       |    0
 .../patches}/betterdmheader/76008.patch       |    0
 .../patches}/betterdmheader/78105.patch       |    0
 .../patches}/betterdmheader/78107.patch       |    0
 .../patches}/betterdmheader/78109.patch       |    0
 .../patches}/betterdmheader/79107.patch       |    0
 .../patches}/betterdmheader/81109.patch       |    0
 .../patches}/betterdmheader/81110.patch       |    0
 .../patches}/betterdmheader/81111.patch       |    0
 .../patches}/betterdmheader/82206.patch       |    0
 .../patches}/betterdmheader/83210.patch       |    0
 .../patches}/betterdmheader/86201.patch       |    0
 .../patches}/betterdmheader/87201.patch       |    0
 .../patches}/betterdmheader/87202.patch       |    0
 .../patches}/betterdmheader/87203.patch       |    0
 .../patches}/betterdmheader/88202.patch       |    0
 .../patches}/betterdmheader/88203.patch       |    0
 .../patches}/betterdmheader/88205.patch       |    0
 .../patches}/betterdmheader/89201.patch       |    0
 .../patches}/betterdmheader/89206.patch       |    0
 resources/patches/betterdmheader/89207.patch  |   37 +
 .../patches}/betterdmheader/README.md         |    2 +
 .../patches}/bettertm/README.md               |    0
 .../patches}/bettertm/bettertm.sh             |    0
 .../patches}/bettertm/emoji_2122_fe0f.png     |  Bin
 .../patches}/bettertm/emoji_2122_fe0f.xcf     |  Bin
 .../patches}/bettertm/emoji_ae_fe0f.png       |  Bin
 .../patches}/bettertm/emoji_ae_fe0f.xcf       |  Bin
 .../patches}/blobs/README.md                  |    0
 .../patches}/blobs/emojireplace.py            |    0
 .../patches}/branding/1371.patch              |    0
 .../patches}/branding/1387.patch              |    0
 .../patches}/branding/1456.patch              |    0
 .../patches}/branding/1458.patch              |    0
 .../patches}/branding/1474.patch              |    0
 .../patches}/branding/1489.patch              |    0
 .../patches}/branding/1505.patch              |    0
 .../patches}/branding/1509.patch              |    0
 .../patches}/branding/1510.patch              |    0
 .../patches}/branding/1512.patch              |    0
 .../patches}/branding/1514.patch              |    0
 .../patches}/branding/1516.patch              |    0
 .../patches}/branding/1518.patch              |    0
 .../patches}/branding/1520.patch              |    0
 .../patches}/branding/1522.patch              |    0
 .../patches}/branding/1523.patch              |    0
 .../patches}/branding/73001.patch             |    0
 .../patches}/branding/73008.patch             |    0
 .../patches}/branding/73111.patch             |    0
 .../patches}/branding/74000.patch             |    0
 .../patches}/branding/74010.patch             |    0
 .../patches}/branding/76008.patch             |    0
 .../patches}/branding/78105.patch             |    0
 .../patches}/branding/78107.patch             |    0
 .../patches}/branding/78109.patch             |    0
 .../patches}/branding/79107.patch             |    0
 .../patches}/branding/81109.patch             |    0
 .../patches}/branding/81110.patch             |    0
 .../patches}/branding/81111.patch             |    0
 .../patches}/branding/82206.patch             |    0
 .../patches}/branding/83210.patch             |    0
 .../patches}/branding/86201.patch             |    0
 .../patches}/branding/87201.patch             |    0
 .../patches}/branding/87202.patch             |    0
 .../patches}/branding/87203.patch             |    0
 .../patches}/branding/88202.patch             |    0
 .../patches}/branding/88203.patch             |    0
 .../patches}/branding/88205.patch             |    0
 .../patches}/branding/89201.patch             |    0
 .../patches}/branding/89206.patch             |    0
 .../patches}/branding/89207.patch             |    0
 .../patches}/branding/README.md               |    0
 .../patches}/branding/addpatch.py             |    0
 .../patches}/branding/customdynamicicon.sh    |    0
 .../patches}/branding/customicon.sh           |    0
 .../patches}/customfont/README.md             |    0
 .../patches}/customring/README.md             |    0
 resources/patches/customtheme/89207.patch     |   20 +
 resources/patches/customtheme/README.md       |   32 +
 resources/patches/customtheme/fixsplash.sh    |    2 +
 .../patches}/customversion/1371.patch         |    0
 .../patches}/customversion/1387.patch         |    0
 .../patches}/customversion/1456.patch         |    0
 .../patches}/customversion/1458.patch         |    0
 .../patches}/customversion/1474.patch         |    0
 .../patches}/customversion/1489.patch         |    0
 .../patches}/customversion/1505.patch         |    0
 .../patches}/customversion/1509.patch         |    0
 .../patches}/customversion/1510.patch         |    0
 .../patches}/customversion/1512.patch         |    0
 .../patches}/customversion/1514.patch         |    0
 .../patches}/customversion/1516.patch         |    0
 .../patches}/customversion/1518.patch         |    0
 .../patches}/customversion/1520.patch         |    0
 .../patches}/customversion/1522.patch         |    0
 .../patches}/customversion/1523.patch         |    0
 .../patches}/customversion/73001.patch        |    0
 .../patches}/customversion/73008.patch        |    0
 .../patches}/customversion/73111.patch        |    0
 .../patches}/customversion/74000.patch        |    0
 .../patches}/customversion/74010.patch        |    0
 .../patches}/customversion/76008.patch        |    0
 .../patches}/customversion/78105.patch        |    0
 .../patches}/customversion/78107.patch        |    0
 .../patches}/customversion/78109.patch        |    0
 .../patches}/customversion/79107.patch        |    0
 .../patches}/customversion/81109.patch        |    0
 .../patches}/customversion/81110.patch        |    0
 .../patches}/customversion/81111.patch        |    0
 .../patches}/customversion/82206.patch        |    0
 .../patches}/customversion/83210.patch        |    0
 .../patches}/customversion/86201.patch        |    0
 .../patches}/customversion/87201.patch        |    0
 .../patches}/customversion/87202.patch        |    0
 .../patches}/customversion/87203.patch        |    0
 .../patches}/customversion/88202.patch        |    0
 .../patches}/customversion/88203.patch        |    0
 .../patches}/customversion/88205.patch        |    0
 .../patches}/customversion/89201.patch        |    0
 .../patches}/customversion/89206.patch        |    0
 .../patches}/customversion/89207.patch        |    0
 .../patches}/customversion/README.md          |    0
 .../patches}/customversion/addpatch.py        |    0
 .../disable-mobileindicator/1371.patch        |    0
 .../disable-mobileindicator/74010.patch       |    0
 .../disable-mobileindicator/76008.patch       |    0
 .../disable-mobileindicator/78105.patch       |    0
 .../disable-mobileindicator/78107.patch       |    0
 .../disable-mobileindicator/78109.patch       |    0
 .../disable-mobileindicator/79107.patch       |    0
 .../disable-mobileindicator/81109.patch       |    0
 .../disable-mobileindicator/81110.patch       |    0
 .../disable-mobileindicator/81111.patch       |    0
 .../disable-mobileindicator/82206.patch       |    0
 .../disable-mobileindicator/83210.patch       |    0
 .../disable-mobileindicator/86201.patch       |    0
 .../disable-mobileindicator/87201.patch       |    0
 .../disable-mobileindicator/87202.patch       |    0
 .../disable-mobileindicator/87203.patch       |    0
 .../disable-mobileindicator/88202.patch       |    0
 .../disable-mobileindicator/88203.patch       |    0
 .../disable-mobileindicator/88205.patch       |    0
 .../disable-mobileindicator/89201.patch       |    0
 .../disable-mobileindicator/89206.patch       |    0
 .../disable-mobileindicator/89207.patch       |    0
 .../disable-mobileindicator/README.md         |    0
 resources/patches/embedlinks/1371.patch       |   91 ++
 resources/patches/embedlinks/89207.patch      |   92 ++
 resources/patches/embedlinks/README.md        |   13 +
 .../patches}/mutan/1371.patch                 |    0
 .../patches}/mutan/87202.patch                |    0
 .../patches}/mutan/89201.patch                |    0
 .../patches}/mutan/89206.patch                |    0
 .../patches}/mutan/89207.patch                |    0
 .../patches}/mutan/README.md                  |    0
 .../patches}/mutan/emojipatch.py              |    0
 .../patches}/mutan/emojireplace.py            |    0
 .../patches}/mutan/gendiversitycode.py        |    0
 .../patches}/mutan/genemojitest.py            |    0
 resources/patches/nospoiler/89207.patch       |   58 +
 resources/patches/nospoiler/README.md         |    8 +
 resources/patches/notrack/89207-post.sh       |    2 +
 resources/patches/notrack/89207.patch         | 1340 +++++++++++++++++
 resources/patches/notrack/README.md           |   10 +
 resources/patches/nozlib/89207.patch          |   34 +
 resources/patches/nozlib/README.md            |    6 +
 .../patches}/profilemention/1371.patch        |    0
 .../patches}/profilemention/89207.patch       |    0
 .../patches}/profilemention/README.md         |    0
 resources/patches/showtag/89207.patch         |   70 +
 resources/patches/showtag/README.md           |   21 +
 .../patches}/supplemental/87202.patch         |    0
 .../patches}/supplemental/89201.patch         |    0
 .../patches}/supplemental/89206.patch         |    0
 .../patches}/supplemental/89207.patch         |    0
 .../patches}/supplemental/README.md           |    0
 .../patchport-state.json                      |    0
 .../{ => res}/46620/res/font/whitney_bold.ttf |  Bin
 .../46620/res/font/whitney_medium.ttf         |  Bin
 .../46620/res/font/whitney_semibold.ttf       |  Bin
 .../46620/res/mipmap-xxxhdpi/logo.png         |  Bin
 .../46620/res/mipmap-xxxhdpi/logo_debug.png   |  Bin
 .../{ => res}/46620/res/raw/call_calling.mp3  |  Bin
 .../{ => res}/46620/res/raw/call_ringing.mp3  |  Bin
 .../46620/res/raw/emoji_2122_fe0f.png         |  Bin
 .../{ => res}/46620/res/raw/emoji_ae_fe0f.png |  Bin
 .../{ => res}/t3ch/res/font/whitney_bold.ttf  |  Bin
 .../t3ch/res/font/whitney_medium.ttf          |  Bin
 .../t3ch/res/font/whitney_semibold.ttf        |  Bin
 .../{ => res}/t3ch/res/raw/call_ringing.mp3   |  Bin
 .../t3ch/res/raw/emoji_2122_fe0f.png          |  Bin
 .../{ => res}/t3ch/res/raw/emoji_ae_fe0f.png  |  Bin
 {ctcci => resources/scripts/ctcci}/.gitignore |    0
 .../scripts/ctcci}/cleanartifacts.py          |    0
 {ctcci => resources/scripts/ctcci}/ctcci.py   |    0
 .../scripts/ctcci}/ctcconfig.example.py       |    0
 .../scripts/patchbisect.py                    |    0
 resources/xmlpatches/betterdmheader/89207.xml |    7 +
 resources/xmlpatches/betterrotation/89207.xml |    6 +
 resources/xmlpatches/betterrotation/README.md |    5 +
 resources/xmlpatches/customtheme/82907.xml    |   43 +
 resources/xmlpatches/noblocked/89207.xml      |   13 +
 resources/xmlpatches/noblocked/README.md      |    3 +
 resources/xmlpatches/notrack/89207.xml        |    5 +
 resources/xmlpatches/squareavatars/89207.xml  |    9 +
 resources/xmlpatches/squareavatars/README.md  |    5 +
 342 files changed, 1948 insertions(+), 81 deletions(-)
 create mode 100644 .gitattributes
 delete mode 100644 patches/betterdmheader/89207.patch
 rename {old-patches => resources/old-patches}/README.md (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1371.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1387.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1456.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1458.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1474.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1489.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1505.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1509.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1510.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1512.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1514.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1516.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1518.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1520.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1522.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/1523.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/73001.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/73008.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/73111.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/74000.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/74010.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/76008.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/78105.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/78107.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/78109.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/79107.patch (100%)
 rename {old-patches => resources/old-patches}/hqavatars/README.md (100%)
 rename {patches => resources/old-patches}/noblocked/1371.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1387.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1456.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1458.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1474.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1489.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1505.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1509.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1510.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1512.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1514.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1516.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1518.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1520.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1522.patch (100%)
 rename {patches => resources/old-patches}/noblocked/1523.patch (100%)
 rename {patches => resources/old-patches}/noblocked/73001.patch (100%)
 rename {patches => resources/old-patches}/noblocked/73008.patch (100%)
 rename {patches => resources/old-patches}/noblocked/73111.patch (100%)
 rename {patches => resources/old-patches}/noblocked/74000.patch (100%)
 rename {patches => resources/old-patches}/noblocked/74010.patch (100%)
 rename {patches => resources/old-patches}/noblocked/76008.patch (100%)
 rename {patches => resources/old-patches}/noblocked/78105.patch (100%)
 rename {patches => resources/old-patches}/noblocked/78107.patch (100%)
 rename {patches => resources/old-patches}/noblocked/78109.patch (100%)
 rename {patches => resources/old-patches}/noblocked/79107.patch (100%)
 rename {patches => resources/old-patches}/noblocked/81109.patch (100%)
 rename {patches => resources/old-patches}/noblocked/81110.patch (100%)
 rename {patches => resources/old-patches}/noblocked/81111.patch (100%)
 rename {patches => resources/old-patches}/noblocked/82206.patch (100%)
 rename {patches => resources/old-patches}/noblocked/83210.patch (100%)
 rename {patches => resources/old-patches}/noblocked/86201.patch (100%)
 rename {patches => resources/old-patches}/noblocked/87201.patch (100%)
 rename {patches => resources/old-patches}/noblocked/87202.patch (100%)
 rename {patches => resources/old-patches}/noblocked/87203.patch (100%)
 rename {patches => resources/old-patches}/noblocked/88202.patch (100%)
 rename {patches => resources/old-patches}/noblocked/88203.patch (100%)
 rename {patches => resources/old-patches}/noblocked/88205.patch (100%)
 rename {patches => resources/old-patches}/noblocked/89201.patch (100%)
 rename {patches => resources/old-patches}/noblocked/89206.patch (100%)
 rename {patches => resources/old-patches}/noblocked/89207.patch (100%)
 rename {patches => resources/old-patches}/noblocked/README.md (100%)
 rename {patches => resources/old-patches}/squareavatars/1371.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1387.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1456.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1458.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1474.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1489.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1505.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1509.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1510.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1512.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1514.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1516.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1518.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1520.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1522.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/1523.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/73001.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/73008.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/73111.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/74000.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/74010.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/76008.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/78105.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/78107.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/78109.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/79107.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/81109.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/81110.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/81111.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/82206.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/83210.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/86201.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/87201.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/87202.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/87203.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/88202.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/88203.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/88205.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/89201.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/89206.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/89207.patch (100%)
 rename {patches => resources/old-patches}/squareavatars/README.md (100%)
 rename {patches => resources/patches}/betterdmheader/1371.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1387.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1456.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1458.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1474.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1489.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1505.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1509.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1510.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1512.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1514.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1516.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1518.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1520.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1522.patch (100%)
 rename {patches => resources/patches}/betterdmheader/1523.patch (100%)
 rename {patches => resources/patches}/betterdmheader/73001.patch (100%)
 rename {patches => resources/patches}/betterdmheader/73008.patch (100%)
 rename {patches => resources/patches}/betterdmheader/73111.patch (100%)
 rename {patches => resources/patches}/betterdmheader/74000.patch (100%)
 rename {patches => resources/patches}/betterdmheader/74010.patch (100%)
 rename {patches => resources/patches}/betterdmheader/76008.patch (100%)
 rename {patches => resources/patches}/betterdmheader/78105.patch (100%)
 rename {patches => resources/patches}/betterdmheader/78107.patch (100%)
 rename {patches => resources/patches}/betterdmheader/78109.patch (100%)
 rename {patches => resources/patches}/betterdmheader/79107.patch (100%)
 rename {patches => resources/patches}/betterdmheader/81109.patch (100%)
 rename {patches => resources/patches}/betterdmheader/81110.patch (100%)
 rename {patches => resources/patches}/betterdmheader/81111.patch (100%)
 rename {patches => resources/patches}/betterdmheader/82206.patch (100%)
 rename {patches => resources/patches}/betterdmheader/83210.patch (100%)
 rename {patches => resources/patches}/betterdmheader/86201.patch (100%)
 rename {patches => resources/patches}/betterdmheader/87201.patch (100%)
 rename {patches => resources/patches}/betterdmheader/87202.patch (100%)
 rename {patches => resources/patches}/betterdmheader/87203.patch (100%)
 rename {patches => resources/patches}/betterdmheader/88202.patch (100%)
 rename {patches => resources/patches}/betterdmheader/88203.patch (100%)
 rename {patches => resources/patches}/betterdmheader/88205.patch (100%)
 rename {patches => resources/patches}/betterdmheader/89201.patch (100%)
 rename {patches => resources/patches}/betterdmheader/89206.patch (100%)
 create mode 100644 resources/patches/betterdmheader/89207.patch
 rename {patches => resources/patches}/betterdmheader/README.md (91%)
 rename {patches => resources/patches}/bettertm/README.md (100%)
 rename {patches => resources/patches}/bettertm/bettertm.sh (100%)
 rename {patches => resources/patches}/bettertm/emoji_2122_fe0f.png (100%)
 rename {patches => resources/patches}/bettertm/emoji_2122_fe0f.xcf (100%)
 rename {patches => resources/patches}/bettertm/emoji_ae_fe0f.png (100%)
 rename {patches => resources/patches}/bettertm/emoji_ae_fe0f.xcf (100%)
 rename {patches => resources/patches}/blobs/README.md (100%)
 rename {patches => resources/patches}/blobs/emojireplace.py (100%)
 rename {patches => resources/patches}/branding/1371.patch (100%)
 rename {patches => resources/patches}/branding/1387.patch (100%)
 rename {patches => resources/patches}/branding/1456.patch (100%)
 rename {patches => resources/patches}/branding/1458.patch (100%)
 rename {patches => resources/patches}/branding/1474.patch (100%)
 rename {patches => resources/patches}/branding/1489.patch (100%)
 rename {patches => resources/patches}/branding/1505.patch (100%)
 rename {patches => resources/patches}/branding/1509.patch (100%)
 rename {patches => resources/patches}/branding/1510.patch (100%)
 rename {patches => resources/patches}/branding/1512.patch (100%)
 rename {patches => resources/patches}/branding/1514.patch (100%)
 rename {patches => resources/patches}/branding/1516.patch (100%)
 rename {patches => resources/patches}/branding/1518.patch (100%)
 rename {patches => resources/patches}/branding/1520.patch (100%)
 rename {patches => resources/patches}/branding/1522.patch (100%)
 rename {patches => resources/patches}/branding/1523.patch (100%)
 rename {patches => resources/patches}/branding/73001.patch (100%)
 rename {patches => resources/patches}/branding/73008.patch (100%)
 rename {patches => resources/patches}/branding/73111.patch (100%)
 rename {patches => resources/patches}/branding/74000.patch (100%)
 rename {patches => resources/patches}/branding/74010.patch (100%)
 rename {patches => resources/patches}/branding/76008.patch (100%)
 rename {patches => resources/patches}/branding/78105.patch (100%)
 rename {patches => resources/patches}/branding/78107.patch (100%)
 rename {patches => resources/patches}/branding/78109.patch (100%)
 rename {patches => resources/patches}/branding/79107.patch (100%)
 rename {patches => resources/patches}/branding/81109.patch (100%)
 rename {patches => resources/patches}/branding/81110.patch (100%)
 rename {patches => resources/patches}/branding/81111.patch (100%)
 rename {patches => resources/patches}/branding/82206.patch (100%)
 rename {patches => resources/patches}/branding/83210.patch (100%)
 rename {patches => resources/patches}/branding/86201.patch (100%)
 rename {patches => resources/patches}/branding/87201.patch (100%)
 rename {patches => resources/patches}/branding/87202.patch (100%)
 rename {patches => resources/patches}/branding/87203.patch (100%)
 rename {patches => resources/patches}/branding/88202.patch (100%)
 rename {patches => resources/patches}/branding/88203.patch (100%)
 rename {patches => resources/patches}/branding/88205.patch (100%)
 rename {patches => resources/patches}/branding/89201.patch (100%)
 rename {patches => resources/patches}/branding/89206.patch (100%)
 rename {patches => resources/patches}/branding/89207.patch (100%)
 rename {patches => resources/patches}/branding/README.md (100%)
 rename {patches => resources/patches}/branding/addpatch.py (100%)
 rename {patches => resources/patches}/branding/customdynamicicon.sh (100%)
 rename {patches => resources/patches}/branding/customicon.sh (100%)
 rename {patches => resources/patches}/customfont/README.md (100%)
 rename {patches => resources/patches}/customring/README.md (100%)
 create mode 100644 resources/patches/customtheme/89207.patch
 create mode 100644 resources/patches/customtheme/README.md
 create mode 100755 resources/patches/customtheme/fixsplash.sh
 rename {patches => resources/patches}/customversion/1371.patch (100%)
 rename {patches => resources/patches}/customversion/1387.patch (100%)
 rename {patches => resources/patches}/customversion/1456.patch (100%)
 rename {patches => resources/patches}/customversion/1458.patch (100%)
 rename {patches => resources/patches}/customversion/1474.patch (100%)
 rename {patches => resources/patches}/customversion/1489.patch (100%)
 rename {patches => resources/patches}/customversion/1505.patch (100%)
 rename {patches => resources/patches}/customversion/1509.patch (100%)
 rename {patches => resources/patches}/customversion/1510.patch (100%)
 rename {patches => resources/patches}/customversion/1512.patch (100%)
 rename {patches => resources/patches}/customversion/1514.patch (100%)
 rename {patches => resources/patches}/customversion/1516.patch (100%)
 rename {patches => resources/patches}/customversion/1518.patch (100%)
 rename {patches => resources/patches}/customversion/1520.patch (100%)
 rename {patches => resources/patches}/customversion/1522.patch (100%)
 rename {patches => resources/patches}/customversion/1523.patch (100%)
 rename {patches => resources/patches}/customversion/73001.patch (100%)
 rename {patches => resources/patches}/customversion/73008.patch (100%)
 rename {patches => resources/patches}/customversion/73111.patch (100%)
 rename {patches => resources/patches}/customversion/74000.patch (100%)
 rename {patches => resources/patches}/customversion/74010.patch (100%)
 rename {patches => resources/patches}/customversion/76008.patch (100%)
 rename {patches => resources/patches}/customversion/78105.patch (100%)
 rename {patches => resources/patches}/customversion/78107.patch (100%)
 rename {patches => resources/patches}/customversion/78109.patch (100%)
 rename {patches => resources/patches}/customversion/79107.patch (100%)
 rename {patches => resources/patches}/customversion/81109.patch (100%)
 rename {patches => resources/patches}/customversion/81110.patch (100%)
 rename {patches => resources/patches}/customversion/81111.patch (100%)
 rename {patches => resources/patches}/customversion/82206.patch (100%)
 rename {patches => resources/patches}/customversion/83210.patch (100%)
 rename {patches => resources/patches}/customversion/86201.patch (100%)
 rename {patches => resources/patches}/customversion/87201.patch (100%)
 rename {patches => resources/patches}/customversion/87202.patch (100%)
 rename {patches => resources/patches}/customversion/87203.patch (100%)
 rename {patches => resources/patches}/customversion/88202.patch (100%)
 rename {patches => resources/patches}/customversion/88203.patch (100%)
 rename {patches => resources/patches}/customversion/88205.patch (100%)
 rename {patches => resources/patches}/customversion/89201.patch (100%)
 rename {patches => resources/patches}/customversion/89206.patch (100%)
 rename {patches => resources/patches}/customversion/89207.patch (100%)
 rename {patches => resources/patches}/customversion/README.md (100%)
 rename {patches => resources/patches}/customversion/addpatch.py (100%)
 rename {patches => resources/patches}/disable-mobileindicator/1371.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/74010.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/76008.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/78105.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/78107.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/78109.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/79107.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/81109.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/81110.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/81111.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/82206.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/83210.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/86201.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/87201.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/87202.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/87203.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/88202.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/88203.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/88205.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/89201.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/89206.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/89207.patch (100%)
 rename {patches => resources/patches}/disable-mobileindicator/README.md (100%)
 create mode 100644 resources/patches/embedlinks/1371.patch
 create mode 100644 resources/patches/embedlinks/89207.patch
 create mode 100644 resources/patches/embedlinks/README.md
 rename {patches => resources/patches}/mutan/1371.patch (100%)
 rename {patches => resources/patches}/mutan/87202.patch (100%)
 rename {patches => resources/patches}/mutan/89201.patch (100%)
 rename {patches => resources/patches}/mutan/89206.patch (100%)
 rename {patches => resources/patches}/mutan/89207.patch (100%)
 rename {patches => resources/patches}/mutan/README.md (100%)
 rename {patches => resources/patches}/mutan/emojipatch.py (100%)
 rename {patches => resources/patches}/mutan/emojireplace.py (100%)
 rename {patches => resources/patches}/mutan/gendiversitycode.py (100%)
 rename {patches => resources/patches}/mutan/genemojitest.py (100%)
 create mode 100644 resources/patches/nospoiler/89207.patch
 create mode 100644 resources/patches/nospoiler/README.md
 create mode 100755 resources/patches/notrack/89207-post.sh
 create mode 100644 resources/patches/notrack/89207.patch
 create mode 100644 resources/patches/notrack/README.md
 create mode 100644 resources/patches/nozlib/89207.patch
 create mode 100644 resources/patches/nozlib/README.md
 rename {patches => resources/patches}/profilemention/1371.patch (100%)
 rename {patches => resources/patches}/profilemention/89207.patch (100%)
 rename {patches => resources/patches}/profilemention/README.md (100%)
 create mode 100644 resources/patches/showtag/89207.patch
 create mode 100644 resources/patches/showtag/README.md
 rename {patches => resources/patches}/supplemental/87202.patch (100%)
 rename {patches => resources/patches}/supplemental/89201.patch (100%)
 rename {patches => resources/patches}/supplemental/89206.patch (100%)
 rename {patches => resources/patches}/supplemental/89207.patch (100%)
 rename {patches => resources/patches}/supplemental/README.md (100%)
 rename patchport-state.json => resources/patchport-state.json (100%)
 rename resources/{ => res}/46620/res/font/whitney_bold.ttf (100%)
 rename resources/{ => res}/46620/res/font/whitney_medium.ttf (100%)
 rename resources/{ => res}/46620/res/font/whitney_semibold.ttf (100%)
 rename resources/{ => res}/46620/res/mipmap-xxxhdpi/logo.png (100%)
 rename resources/{ => res}/46620/res/mipmap-xxxhdpi/logo_debug.png (100%)
 rename resources/{ => res}/46620/res/raw/call_calling.mp3 (100%)
 rename resources/{ => res}/46620/res/raw/call_ringing.mp3 (100%)
 rename resources/{ => res}/46620/res/raw/emoji_2122_fe0f.png (100%)
 rename resources/{ => res}/46620/res/raw/emoji_ae_fe0f.png (100%)
 rename resources/{ => res}/t3ch/res/font/whitney_bold.ttf (100%)
 rename resources/{ => res}/t3ch/res/font/whitney_medium.ttf (100%)
 rename resources/{ => res}/t3ch/res/font/whitney_semibold.ttf (100%)
 rename resources/{ => res}/t3ch/res/raw/call_ringing.mp3 (100%)
 rename resources/{ => res}/t3ch/res/raw/emoji_2122_fe0f.png (100%)
 rename resources/{ => res}/t3ch/res/raw/emoji_ae_fe0f.png (100%)
 rename {ctcci => resources/scripts/ctcci}/.gitignore (100%)
 rename {ctcci => resources/scripts/ctcci}/cleanartifacts.py (100%)
 rename {ctcci => resources/scripts/ctcci}/ctcci.py (100%)
 rename {ctcci => resources/scripts/ctcci}/ctcconfig.example.py (100%)
 rename patchbisect.py => resources/scripts/patchbisect.py (100%)
 create mode 100644 resources/xmlpatches/betterdmheader/89207.xml
 create mode 100644 resources/xmlpatches/betterrotation/89207.xml
 create mode 100644 resources/xmlpatches/betterrotation/README.md
 create mode 100644 resources/xmlpatches/customtheme/82907.xml
 create mode 100644 resources/xmlpatches/noblocked/89207.xml
 create mode 100644 resources/xmlpatches/noblocked/README.md
 create mode 100644 resources/xmlpatches/notrack/89207.xml
 create mode 100644 resources/xmlpatches/squareavatars/89207.xml
 create mode 100644 resources/xmlpatches/squareavatars/README.md

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..94f480d
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+* text=auto eol=lf
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index e2b49e0..d549c77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 patches/*/*-custom.patch
-patches/*/*.patch-failed
+patches/*/*.patch-failed
\ No newline at end of file
diff --git a/patches/betterdmheader/89207.patch b/patches/betterdmheader/89207.patch
deleted file mode 100644
index 00f50eb..0000000
--- a/patches/betterdmheader/89207.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff --color -crB com.discord-base/res/menu/menu_chat_toolbar.xml com.discord/res/menu/menu_chat_toolbar.xml
-*** com.discord-base/res/menu/menu_chat_toolbar.xml	2021-06-03 15:00:13.923995379 +0000
---- com.discord/res/menu/menu_chat_toolbar.xml	2021-06-03 15:06:45.358117680 +0000
-***************
-*** 1,12 ****
-  <?xml version="1.0" encoding="utf-8"?>
-  <menu
-    xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
-!     <item android:icon="@drawable/ic_call_24dp" android:id="@id/menu_chat_start_call" android:visible="false" android:title="@string/start_call" app:iconTint="?colorInteractiveNormal" app:showAsAction="ifRoom" />
-      <item android:icon="@drawable/ic_call_disconnect_24dp" android:id="@id/menu_chat_stop_call" android:visible="false" android:title="@string/leave_call" app:iconTint="@color/status_red" app:showAsAction="ifRoom" />
-      <item android:icon="@drawable/ic_group_add_white_24dp" android:id="@id/menu_chat_start_group" android:visible="false" android:title="@string/create_group_dm" app:iconTint="?colorInteractiveNormal" app:showAsAction="ifRoom" />
-      <item android:icon="@drawable/ic_header_members_add_white_24dp" android:id="@id/menu_chat_add_friend" android:visible="false" android:title="@string/add_friend" app:iconTint="?colorInteractiveNormal" app:showAsAction="always" />
-!     <item android:icon="@drawable/ic_videocam_white_24dp" android:id="@id/menu_chat_start_video_call" android:visible="false" android:title="@string/start_video_call" app:iconTint="?colorInteractiveNormal" app:showAsAction="ifRoom" />
-      <item android:id="@id/menu_chat_thread_browser" android:visible="false" app:actionLayout="@layout/icon_thread_browser_layout" app:showAsAction="ifRoom" />
-!     <item android:icon="@drawable/ic_search_white_24dp" android:id="@id/menu_chat_search" android:visible="false" android:title="@string/search" app:iconTint="?colorInteractiveNormal" app:showAsAction="ifRoom" />
-      <item android:icon="@drawable/ic_members_24dp" android:id="@id/menu_chat_side_panel" android:visible="false" android:title="@string/members" app:iconTint="?colorInteractiveNormal" app:showAsAction="always" />
-! </menu>
-\ No newline at end of file
---- 1,12 ----
-  <?xml version="1.0" encoding="utf-8"?>
-  <menu
-    xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
-!     <item android:icon="@drawable/ic_call_24dp" android:id="@id/menu_chat_start_call" android:visible="false" android:title="@string/start_call" app:iconTint="?colorInteractiveNormal" app:showAsAction="never" />
-      <item android:icon="@drawable/ic_call_disconnect_24dp" android:id="@id/menu_chat_stop_call" android:visible="false" android:title="@string/leave_call" app:iconTint="@color/status_red" app:showAsAction="ifRoom" />
-      <item android:icon="@drawable/ic_group_add_white_24dp" android:id="@id/menu_chat_start_group" android:visible="false" android:title="@string/create_group_dm" app:iconTint="?colorInteractiveNormal" app:showAsAction="ifRoom" />
-      <item android:icon="@drawable/ic_header_members_add_white_24dp" android:id="@id/menu_chat_add_friend" android:visible="false" android:title="@string/add_friend" app:iconTint="?colorInteractiveNormal" app:showAsAction="always" />
-!     <item android:icon="@drawable/ic_videocam_white_24dp" android:id="@id/menu_chat_start_video_call" android:visible="false" android:title="@string/start_video_call" app:iconTint="?colorInteractiveNormal" app:showAsAction="never" />
-      <item android:id="@id/menu_chat_thread_browser" android:visible="false" app:actionLayout="@layout/icon_thread_browser_layout" app:showAsAction="ifRoom" />
-!     <item android:icon="@drawable/ic_search_white_24dp" android:id="@id/menu_chat_search" android:visible="false" android:title="@string/search" app:iconTint="?colorInteractiveNormal" app:showAsAction="always" />
-      <item android:icon="@drawable/ic_members_24dp" android:id="@id/menu_chat_side_panel" android:visible="false" android:title="@string/members" app:iconTint="?colorInteractiveNormal" app:showAsAction="always" />
-! </menu>
-diff -crB com.discord-base/smali_classes2/com/discord/widgets/home/WidgetHomeHeaderManager$getOnConfigureAction$1.smali com.discord/smali_classes2/com/discord/widgets/home/WidgetHomeHeaderManager$getOnConfigureAction$1.smali
-*** com.discord-base/smali_classes2/com/discord/widgets/home/WidgetHomeHeaderManager$getOnConfigureAction$1.smali	2021-06-03 15:00:16.264008075 +0000
---- com.discord/smali_classes2/com/discord/widgets/home/WidgetHomeHeaderManager$getOnConfigureAction$1.smali	2021-06-03 15:12:19.415927487 +0000
-***************
-*** 181,187 ****
-  
-      invoke-static {v3, v9}, Ld0/z/d/m;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
-  
-!     invoke-interface {v3, v1}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem;
-  
-      .line 7
-      invoke-interface {p1, v8}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem;
---- 181,187 ----
-  
-      invoke-static {v3, v9}, Ld0/z/d/m;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
-  
-!     invoke-interface {v3, v2}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem;
-  
-      .line 7
-      invoke-interface {p1, v8}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem;
-***************
-*** 260,266 ****
-  
-      xor-int/2addr v4, v2
-  
-!     invoke-interface {v3, v4}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem;
-  
-      .line 13
-      invoke-interface {p1, v6}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem;
---- 260,266 ----
-  
-      xor-int/2addr v4, v2
-  
-!     invoke-interface {v3, v1}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem;
-  
-      .line 13
-      invoke-interface {p1, v6}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem;
diff --git a/patchport.py b/patchport.py
index c3edaad..55bc0f3 100644
--- a/patchport.py
+++ b/patchport.py
@@ -10,7 +10,7 @@ import shutil
 # Example invocation:
 # python3 patchport.py /home/ave/apks/com.discord-900/
 
-with open("patchport-state.json", "r") as f:
+with open("resources/patchport-state.json", "r") as f:
     jin = json.load(f)
     from_versioncode = jin["versioncode"]
     from_versionname = jin["versionname"]
@@ -134,36 +134,36 @@ with open(os.path.join(apk_folder, "res", "values", "strings.xml")) as f:
 
 failures = []
 
-for patch in os.listdir(os.path.join(cutthecord_folder, "patches")):
+for patch in os.listdir(os.path.join(cutthecord_folder, "resources/patches")):
     if debug:
         print(f"going over patch: {patch}")
 
     # Ignore non-dirs
-    if not os.path.isdir(os.path.join(cutthecord_folder, "patches", patch)):
+    if not os.path.isdir(os.path.join(cutthecord_folder, "resources/patches", patch)):
         if debug:
             print(f"patch is not a folder, skipping: {patch}")
         continue
 
-    pre_in_path = os.path.join(cutthecord_folder, "patches", patch,
+    pre_in_path = os.path.join(cutthecord_folder, "resources/patches", patch,
                                f"{from_versioncode}-pre.sh")
-    post_in_path = os.path.join(cutthecord_folder, "patches", patch,
+    post_in_path = os.path.join(cutthecord_folder, "resources/patches", patch,
                                 f"{from_versioncode}-post.sh")
-    pre_out_path = os.path.join(cutthecord_folder, "patches", patch,
+    pre_out_path = os.path.join(cutthecord_folder, "resources/patches", patch,
                                 f"{to_versioncode}-pre.sh")
-    post_out_path = os.path.join(cutthecord_folder, "patches", patch,
+    post_out_path = os.path.join(cutthecord_folder, "resources/patches", patch,
                                  f"{to_versioncode}-post.sh")
 
-    patch_path = os.path.join(cutthecord_folder, "patches", patch,
+    patch_path = os.path.join(cutthecord_folder, "resources/patches", patch,
                               f"{from_versioncode}.patch")
-    out_path = os.path.join(cutthecord_folder, "patches", patch,
+    out_path = os.path.join(cutthecord_folder, "resources/patches", patch,
                             f"{to_versioncode}.patch")
-    readme_path = os.path.join(cutthecord_folder, "patches", patch, "README.md")
+    readme_path = os.path.join(cutthecord_folder, "resources/patches", patch, "README.md")
 
     # Handle copying of versioned scripts, untested and dirty!
-    script_path = os.path.join(cutthecord_folder, "patches", patch,
+    script_path = os.path.join(cutthecord_folder, "resources/patches", patch,
                                f"{from_versioncode}.sh")
     if os.path.exists(script_path):
-        script_out_path = os.path.join(cutthecord_folder, "patches", patch,
+        script_out_path = os.path.join(cutthecord_folder, "resources/patches", patch,
                                        f"{to_versioncode}.sh")
         with open(script_path) as f:
             with open(script_out_path, "w") as f2:
diff --git a/old-patches/README.md b/resources/old-patches/README.md
similarity index 100%
rename from old-patches/README.md
rename to resources/old-patches/README.md
diff --git a/old-patches/hqavatars/1371.patch b/resources/old-patches/hqavatars/1371.patch
similarity index 100%
rename from old-patches/hqavatars/1371.patch
rename to resources/old-patches/hqavatars/1371.patch
diff --git a/old-patches/hqavatars/1387.patch b/resources/old-patches/hqavatars/1387.patch
similarity index 100%
rename from old-patches/hqavatars/1387.patch
rename to resources/old-patches/hqavatars/1387.patch
diff --git a/old-patches/hqavatars/1456.patch b/resources/old-patches/hqavatars/1456.patch
similarity index 100%
rename from old-patches/hqavatars/1456.patch
rename to resources/old-patches/hqavatars/1456.patch
diff --git a/old-patches/hqavatars/1458.patch b/resources/old-patches/hqavatars/1458.patch
similarity index 100%
rename from old-patches/hqavatars/1458.patch
rename to resources/old-patches/hqavatars/1458.patch
diff --git a/old-patches/hqavatars/1474.patch b/resources/old-patches/hqavatars/1474.patch
similarity index 100%
rename from old-patches/hqavatars/1474.patch
rename to resources/old-patches/hqavatars/1474.patch
diff --git a/old-patches/hqavatars/1489.patch b/resources/old-patches/hqavatars/1489.patch
similarity index 100%
rename from old-patches/hqavatars/1489.patch
rename to resources/old-patches/hqavatars/1489.patch
diff --git a/old-patches/hqavatars/1505.patch b/resources/old-patches/hqavatars/1505.patch
similarity index 100%
rename from old-patches/hqavatars/1505.patch
rename to resources/old-patches/hqavatars/1505.patch
diff --git a/old-patches/hqavatars/1509.patch b/resources/old-patches/hqavatars/1509.patch
similarity index 100%
rename from old-patches/hqavatars/1509.patch
rename to resources/old-patches/hqavatars/1509.patch
diff --git a/old-patches/hqavatars/1510.patch b/resources/old-patches/hqavatars/1510.patch
similarity index 100%
rename from old-patches/hqavatars/1510.patch
rename to resources/old-patches/hqavatars/1510.patch
diff --git a/old-patches/hqavatars/1512.patch b/resources/old-patches/hqavatars/1512.patch
similarity index 100%
rename from old-patches/hqavatars/1512.patch
rename to resources/old-patches/hqavatars/1512.patch
diff --git a/old-patches/hqavatars/1514.patch b/resources/old-patches/hqavatars/1514.patch
similarity index 100%
rename from old-patches/hqavatars/1514.patch
rename to resources/old-patches/hqavatars/1514.patch
diff --git a/old-patches/hqavatars/1516.patch b/resources/old-patches/hqavatars/1516.patch
similarity index 100%
rename from old-patches/hqavatars/1516.patch
rename to resources/old-patches/hqavatars/1516.patch
diff --git a/old-patches/hqavatars/1518.patch b/resources/old-patches/hqavatars/1518.patch
similarity index 100%
rename from old-patches/hqavatars/1518.patch
rename to resources/old-patches/hqavatars/1518.patch
diff --git a/old-patches/hqavatars/1520.patch b/resources/old-patches/hqavatars/1520.patch
similarity index 100%
rename from old-patches/hqavatars/1520.patch
rename to resources/old-patches/hqavatars/1520.patch
diff --git a/old-patches/hqavatars/1522.patch b/resources/old-patches/hqavatars/1522.patch
similarity index 100%
rename from old-patches/hqavatars/1522.patch
rename to resources/old-patches/hqavatars/1522.patch
diff --git a/old-patches/hqavatars/1523.patch b/resources/old-patches/hqavatars/1523.patch
similarity index 100%
rename from old-patches/hqavatars/1523.patch
rename to resources/old-patches/hqavatars/1523.patch
diff --git a/old-patches/hqavatars/73001.patch b/resources/old-patches/hqavatars/73001.patch
similarity index 100%
rename from old-patches/hqavatars/73001.patch
rename to resources/old-patches/hqavatars/73001.patch
diff --git a/old-patches/hqavatars/73008.patch b/resources/old-patches/hqavatars/73008.patch
similarity index 100%
rename from old-patches/hqavatars/73008.patch
rename to resources/old-patches/hqavatars/73008.patch
diff --git a/old-patches/hqavatars/73111.patch b/resources/old-patches/hqavatars/73111.patch
similarity index 100%
rename from old-patches/hqavatars/73111.patch
rename to resources/old-patches/hqavatars/73111.patch
diff --git a/old-patches/hqavatars/74000.patch b/resources/old-patches/hqavatars/74000.patch
similarity index 100%
rename from old-patches/hqavatars/74000.patch
rename to resources/old-patches/hqavatars/74000.patch
diff --git a/old-patches/hqavatars/74010.patch b/resources/old-patches/hqavatars/74010.patch
similarity index 100%
rename from old-patches/hqavatars/74010.patch
rename to resources/old-patches/hqavatars/74010.patch
diff --git a/old-patches/hqavatars/76008.patch b/resources/old-patches/hqavatars/76008.patch
similarity index 100%
rename from old-patches/hqavatars/76008.patch
rename to resources/old-patches/hqavatars/76008.patch
diff --git a/old-patches/hqavatars/78105.patch b/resources/old-patches/hqavatars/78105.patch
similarity index 100%
rename from old-patches/hqavatars/78105.patch
rename to resources/old-patches/hqavatars/78105.patch
diff --git a/old-patches/hqavatars/78107.patch b/resources/old-patches/hqavatars/78107.patch
similarity index 100%
rename from old-patches/hqavatars/78107.patch
rename to resources/old-patches/hqavatars/78107.patch
diff --git a/old-patches/hqavatars/78109.patch b/resources/old-patches/hqavatars/78109.patch
similarity index 100%
rename from old-patches/hqavatars/78109.patch
rename to resources/old-patches/hqavatars/78109.patch
diff --git a/old-patches/hqavatars/79107.patch b/resources/old-patches/hqavatars/79107.patch
similarity index 100%
rename from old-patches/hqavatars/79107.patch
rename to resources/old-patches/hqavatars/79107.patch
diff --git a/old-patches/hqavatars/README.md b/resources/old-patches/hqavatars/README.md
similarity index 100%
rename from old-patches/hqavatars/README.md
rename to resources/old-patches/hqavatars/README.md
diff --git a/patches/noblocked/1371.patch b/resources/old-patches/noblocked/1371.patch
similarity index 100%
rename from patches/noblocked/1371.patch
rename to resources/old-patches/noblocked/1371.patch
diff --git a/patches/noblocked/1387.patch b/resources/old-patches/noblocked/1387.patch
similarity index 100%
rename from patches/noblocked/1387.patch
rename to resources/old-patches/noblocked/1387.patch
diff --git a/patches/noblocked/1456.patch b/resources/old-patches/noblocked/1456.patch
similarity index 100%
rename from patches/noblocked/1456.patch
rename to resources/old-patches/noblocked/1456.patch
diff --git a/patches/noblocked/1458.patch b/resources/old-patches/noblocked/1458.patch
similarity index 100%
rename from patches/noblocked/1458.patch
rename to resources/old-patches/noblocked/1458.patch
diff --git a/patches/noblocked/1474.patch b/resources/old-patches/noblocked/1474.patch
similarity index 100%
rename from patches/noblocked/1474.patch
rename to resources/old-patches/noblocked/1474.patch
diff --git a/patches/noblocked/1489.patch b/resources/old-patches/noblocked/1489.patch
similarity index 100%
rename from patches/noblocked/1489.patch
rename to resources/old-patches/noblocked/1489.patch
diff --git a/patches/noblocked/1505.patch b/resources/old-patches/noblocked/1505.patch
similarity index 100%
rename from patches/noblocked/1505.patch
rename to resources/old-patches/noblocked/1505.patch
diff --git a/patches/noblocked/1509.patch b/resources/old-patches/noblocked/1509.patch
similarity index 100%
rename from patches/noblocked/1509.patch
rename to resources/old-patches/noblocked/1509.patch
diff --git a/patches/noblocked/1510.patch b/resources/old-patches/noblocked/1510.patch
similarity index 100%
rename from patches/noblocked/1510.patch
rename to resources/old-patches/noblocked/1510.patch
diff --git a/patches/noblocked/1512.patch b/resources/old-patches/noblocked/1512.patch
similarity index 100%
rename from patches/noblocked/1512.patch
rename to resources/old-patches/noblocked/1512.patch
diff --git a/patches/noblocked/1514.patch b/resources/old-patches/noblocked/1514.patch
similarity index 100%
rename from patches/noblocked/1514.patch
rename to resources/old-patches/noblocked/1514.patch
diff --git a/patches/noblocked/1516.patch b/resources/old-patches/noblocked/1516.patch
similarity index 100%
rename from patches/noblocked/1516.patch
rename to resources/old-patches/noblocked/1516.patch
diff --git a/patches/noblocked/1518.patch b/resources/old-patches/noblocked/1518.patch
similarity index 100%
rename from patches/noblocked/1518.patch
rename to resources/old-patches/noblocked/1518.patch
diff --git a/patches/noblocked/1520.patch b/resources/old-patches/noblocked/1520.patch
similarity index 100%
rename from patches/noblocked/1520.patch
rename to resources/old-patches/noblocked/1520.patch
diff --git a/patches/noblocked/1522.patch b/resources/old-patches/noblocked/1522.patch
similarity index 100%
rename from patches/noblocked/1522.patch
rename to resources/old-patches/noblocked/1522.patch
diff --git a/patches/noblocked/1523.patch b/resources/old-patches/noblocked/1523.patch
similarity index 100%
rename from patches/noblocked/1523.patch
rename to resources/old-patches/noblocked/1523.patch
diff --git a/patches/noblocked/73001.patch b/resources/old-patches/noblocked/73001.patch
similarity index 100%
rename from patches/noblocked/73001.patch
rename to resources/old-patches/noblocked/73001.patch
diff --git a/patches/noblocked/73008.patch b/resources/old-patches/noblocked/73008.patch
similarity index 100%
rename from patches/noblocked/73008.patch
rename to resources/old-patches/noblocked/73008.patch
diff --git a/patches/noblocked/73111.patch b/resources/old-patches/noblocked/73111.patch
similarity index 100%
rename from patches/noblocked/73111.patch
rename to resources/old-patches/noblocked/73111.patch
diff --git a/patches/noblocked/74000.patch b/resources/old-patches/noblocked/74000.patch
similarity index 100%
rename from patches/noblocked/74000.patch
rename to resources/old-patches/noblocked/74000.patch
diff --git a/patches/noblocked/74010.patch b/resources/old-patches/noblocked/74010.patch
similarity index 100%
rename from patches/noblocked/74010.patch
rename to resources/old-patches/noblocked/74010.patch
diff --git a/patches/noblocked/76008.patch b/resources/old-patches/noblocked/76008.patch
similarity index 100%
rename from patches/noblocked/76008.patch
rename to resources/old-patches/noblocked/76008.patch
diff --git a/patches/noblocked/78105.patch b/resources/old-patches/noblocked/78105.patch
similarity index 100%
rename from patches/noblocked/78105.patch
rename to resources/old-patches/noblocked/78105.patch
diff --git a/patches/noblocked/78107.patch b/resources/old-patches/noblocked/78107.patch
similarity index 100%
rename from patches/noblocked/78107.patch
rename to resources/old-patches/noblocked/78107.patch
diff --git a/patches/noblocked/78109.patch b/resources/old-patches/noblocked/78109.patch
similarity index 100%
rename from patches/noblocked/78109.patch
rename to resources/old-patches/noblocked/78109.patch
diff --git a/patches/noblocked/79107.patch b/resources/old-patches/noblocked/79107.patch
similarity index 100%
rename from patches/noblocked/79107.patch
rename to resources/old-patches/noblocked/79107.patch
diff --git a/patches/noblocked/81109.patch b/resources/old-patches/noblocked/81109.patch
similarity index 100%
rename from patches/noblocked/81109.patch
rename to resources/old-patches/noblocked/81109.patch
diff --git a/patches/noblocked/81110.patch b/resources/old-patches/noblocked/81110.patch
similarity index 100%
rename from patches/noblocked/81110.patch
rename to resources/old-patches/noblocked/81110.patch
diff --git a/patches/noblocked/81111.patch b/resources/old-patches/noblocked/81111.patch
similarity index 100%
rename from patches/noblocked/81111.patch
rename to resources/old-patches/noblocked/81111.patch
diff --git a/patches/noblocked/82206.patch b/resources/old-patches/noblocked/82206.patch
similarity index 100%
rename from patches/noblocked/82206.patch
rename to resources/old-patches/noblocked/82206.patch
diff --git a/patches/noblocked/83210.patch b/resources/old-patches/noblocked/83210.patch
similarity index 100%
rename from patches/noblocked/83210.patch
rename to resources/old-patches/noblocked/83210.patch
diff --git a/patches/noblocked/86201.patch b/resources/old-patches/noblocked/86201.patch
similarity index 100%
rename from patches/noblocked/86201.patch
rename to resources/old-patches/noblocked/86201.patch
diff --git a/patches/noblocked/87201.patch b/resources/old-patches/noblocked/87201.patch
similarity index 100%
rename from patches/noblocked/87201.patch
rename to resources/old-patches/noblocked/87201.patch
diff --git a/patches/noblocked/87202.patch b/resources/old-patches/noblocked/87202.patch
similarity index 100%
rename from patches/noblocked/87202.patch
rename to resources/old-patches/noblocked/87202.patch
diff --git a/patches/noblocked/87203.patch b/resources/old-patches/noblocked/87203.patch
similarity index 100%
rename from patches/noblocked/87203.patch
rename to resources/old-patches/noblocked/87203.patch
diff --git a/patches/noblocked/88202.patch b/resources/old-patches/noblocked/88202.patch
similarity index 100%
rename from patches/noblocked/88202.patch
rename to resources/old-patches/noblocked/88202.patch
diff --git a/patches/noblocked/88203.patch b/resources/old-patches/noblocked/88203.patch
similarity index 100%
rename from patches/noblocked/88203.patch
rename to resources/old-patches/noblocked/88203.patch
diff --git a/patches/noblocked/88205.patch b/resources/old-patches/noblocked/88205.patch
similarity index 100%
rename from patches/noblocked/88205.patch
rename to resources/old-patches/noblocked/88205.patch
diff --git a/patches/noblocked/89201.patch b/resources/old-patches/noblocked/89201.patch
similarity index 100%
rename from patches/noblocked/89201.patch
rename to resources/old-patches/noblocked/89201.patch
diff --git a/patches/noblocked/89206.patch b/resources/old-patches/noblocked/89206.patch
similarity index 100%
rename from patches/noblocked/89206.patch
rename to resources/old-patches/noblocked/89206.patch
diff --git a/patches/noblocked/89207.patch b/resources/old-patches/noblocked/89207.patch
similarity index 100%
rename from patches/noblocked/89207.patch
rename to resources/old-patches/noblocked/89207.patch
diff --git a/patches/noblocked/README.md b/resources/old-patches/noblocked/README.md
similarity index 100%
rename from patches/noblocked/README.md
rename to resources/old-patches/noblocked/README.md
diff --git a/patches/squareavatars/1371.patch b/resources/old-patches/squareavatars/1371.patch
similarity index 100%
rename from patches/squareavatars/1371.patch
rename to resources/old-patches/squareavatars/1371.patch
diff --git a/patches/squareavatars/1387.patch b/resources/old-patches/squareavatars/1387.patch
similarity index 100%
rename from patches/squareavatars/1387.patch
rename to resources/old-patches/squareavatars/1387.patch
diff --git a/patches/squareavatars/1456.patch b/resources/old-patches/squareavatars/1456.patch
similarity index 100%
rename from patches/squareavatars/1456.patch
rename to resources/old-patches/squareavatars/1456.patch
diff --git a/patches/squareavatars/1458.patch b/resources/old-patches/squareavatars/1458.patch
similarity index 100%
rename from patches/squareavatars/1458.patch
rename to resources/old-patches/squareavatars/1458.patch
diff --git a/patches/squareavatars/1474.patch b/resources/old-patches/squareavatars/1474.patch
similarity index 100%
rename from patches/squareavatars/1474.patch
rename to resources/old-patches/squareavatars/1474.patch
diff --git a/patches/squareavatars/1489.patch b/resources/old-patches/squareavatars/1489.patch
similarity index 100%
rename from patches/squareavatars/1489.patch
rename to resources/old-patches/squareavatars/1489.patch
diff --git a/patches/squareavatars/1505.patch b/resources/old-patches/squareavatars/1505.patch
similarity index 100%
rename from patches/squareavatars/1505.patch
rename to resources/old-patches/squareavatars/1505.patch
diff --git a/patches/squareavatars/1509.patch b/resources/old-patches/squareavatars/1509.patch
similarity index 100%
rename from patches/squareavatars/1509.patch
rename to resources/old-patches/squareavatars/1509.patch
diff --git a/patches/squareavatars/1510.patch b/resources/old-patches/squareavatars/1510.patch
similarity index 100%
rename from patches/squareavatars/1510.patch
rename to resources/old-patches/squareavatars/1510.patch
diff --git a/patches/squareavatars/1512.patch b/resources/old-patches/squareavatars/1512.patch
similarity index 100%
rename from patches/squareavatars/1512.patch
rename to resources/old-patches/squareavatars/1512.patch
diff --git a/patches/squareavatars/1514.patch b/resources/old-patches/squareavatars/1514.patch
similarity index 100%
rename from patches/squareavatars/1514.patch
rename to resources/old-patches/squareavatars/1514.patch
diff --git a/patches/squareavatars/1516.patch b/resources/old-patches/squareavatars/1516.patch
similarity index 100%
rename from patches/squareavatars/1516.patch
rename to resources/old-patches/squareavatars/1516.patch
diff --git a/patches/squareavatars/1518.patch b/resources/old-patches/squareavatars/1518.patch
similarity index 100%
rename from patches/squareavatars/1518.patch
rename to resources/old-patches/squareavatars/1518.patch
diff --git a/patches/squareavatars/1520.patch b/resources/old-patches/squareavatars/1520.patch
similarity index 100%
rename from patches/squareavatars/1520.patch
rename to resources/old-patches/squareavatars/1520.patch
diff --git a/patches/squareavatars/1522.patch b/resources/old-patches/squareavatars/1522.patch
similarity index 100%
rename from patches/squareavatars/1522.patch
rename to resources/old-patches/squareavatars/1522.patch
diff --git a/patches/squareavatars/1523.patch b/resources/old-patches/squareavatars/1523.patch
similarity index 100%
rename from patches/squareavatars/1523.patch
rename to resources/old-patches/squareavatars/1523.patch
diff --git a/patches/squareavatars/73001.patch b/resources/old-patches/squareavatars/73001.patch
similarity index 100%
rename from patches/squareavatars/73001.patch
rename to resources/old-patches/squareavatars/73001.patch
diff --git a/patches/squareavatars/73008.patch b/resources/old-patches/squareavatars/73008.patch
similarity index 100%
rename from patches/squareavatars/73008.patch
rename to resources/old-patches/squareavatars/73008.patch
diff --git a/patches/squareavatars/73111.patch b/resources/old-patches/squareavatars/73111.patch
similarity index 100%
rename from patches/squareavatars/73111.patch
rename to resources/old-patches/squareavatars/73111.patch
diff --git a/patches/squareavatars/74000.patch b/resources/old-patches/squareavatars/74000.patch
similarity index 100%
rename from patches/squareavatars/74000.patch
rename to resources/old-patches/squareavatars/74000.patch
diff --git a/patches/squareavatars/74010.patch b/resources/old-patches/squareavatars/74010.patch
similarity index 100%
rename from patches/squareavatars/74010.patch
rename to resources/old-patches/squareavatars/74010.patch
diff --git a/patches/squareavatars/76008.patch b/resources/old-patches/squareavatars/76008.patch
similarity index 100%
rename from patches/squareavatars/76008.patch
rename to resources/old-patches/squareavatars/76008.patch
diff --git a/patches/squareavatars/78105.patch b/resources/old-patches/squareavatars/78105.patch
similarity index 100%
rename from patches/squareavatars/78105.patch
rename to resources/old-patches/squareavatars/78105.patch
diff --git a/patches/squareavatars/78107.patch b/resources/old-patches/squareavatars/78107.patch
similarity index 100%
rename from patches/squareavatars/78107.patch
rename to resources/old-patches/squareavatars/78107.patch
diff --git a/patches/squareavatars/78109.patch b/resources/old-patches/squareavatars/78109.patch
similarity index 100%
rename from patches/squareavatars/78109.patch
rename to resources/old-patches/squareavatars/78109.patch
diff --git a/patches/squareavatars/79107.patch b/resources/old-patches/squareavatars/79107.patch
similarity index 100%
rename from patches/squareavatars/79107.patch
rename to resources/old-patches/squareavatars/79107.patch
diff --git a/patches/squareavatars/81109.patch b/resources/old-patches/squareavatars/81109.patch
similarity index 100%
rename from patches/squareavatars/81109.patch
rename to resources/old-patches/squareavatars/81109.patch
diff --git a/patches/squareavatars/81110.patch b/resources/old-patches/squareavatars/81110.patch
similarity index 100%
rename from patches/squareavatars/81110.patch
rename to resources/old-patches/squareavatars/81110.patch
diff --git a/patches/squareavatars/81111.patch b/resources/old-patches/squareavatars/81111.patch
similarity index 100%
rename from patches/squareavatars/81111.patch
rename to resources/old-patches/squareavatars/81111.patch
diff --git a/patches/squareavatars/82206.patch b/resources/old-patches/squareavatars/82206.patch
similarity index 100%
rename from patches/squareavatars/82206.patch
rename to resources/old-patches/squareavatars/82206.patch
diff --git a/patches/squareavatars/83210.patch b/resources/old-patches/squareavatars/83210.patch
similarity index 100%
rename from patches/squareavatars/83210.patch
rename to resources/old-patches/squareavatars/83210.patch
diff --git a/patches/squareavatars/86201.patch b/resources/old-patches/squareavatars/86201.patch
similarity index 100%
rename from patches/squareavatars/86201.patch
rename to resources/old-patches/squareavatars/86201.patch
diff --git a/patches/squareavatars/87201.patch b/resources/old-patches/squareavatars/87201.patch
similarity index 100%
rename from patches/squareavatars/87201.patch
rename to resources/old-patches/squareavatars/87201.patch
diff --git a/patches/squareavatars/87202.patch b/resources/old-patches/squareavatars/87202.patch
similarity index 100%
rename from patches/squareavatars/87202.patch
rename to resources/old-patches/squareavatars/87202.patch
diff --git a/patches/squareavatars/87203.patch b/resources/old-patches/squareavatars/87203.patch
similarity index 100%
rename from patches/squareavatars/87203.patch
rename to resources/old-patches/squareavatars/87203.patch
diff --git a/patches/squareavatars/88202.patch b/resources/old-patches/squareavatars/88202.patch
similarity index 100%
rename from patches/squareavatars/88202.patch
rename to resources/old-patches/squareavatars/88202.patch
diff --git a/patches/squareavatars/88203.patch b/resources/old-patches/squareavatars/88203.patch
similarity index 100%
rename from patches/squareavatars/88203.patch
rename to resources/old-patches/squareavatars/88203.patch
diff --git a/patches/squareavatars/88205.patch b/resources/old-patches/squareavatars/88205.patch
similarity index 100%
rename from patches/squareavatars/88205.patch
rename to resources/old-patches/squareavatars/88205.patch
diff --git a/patches/squareavatars/89201.patch b/resources/old-patches/squareavatars/89201.patch
similarity index 100%
rename from patches/squareavatars/89201.patch
rename to resources/old-patches/squareavatars/89201.patch
diff --git a/patches/squareavatars/89206.patch b/resources/old-patches/squareavatars/89206.patch
similarity index 100%
rename from patches/squareavatars/89206.patch
rename to resources/old-patches/squareavatars/89206.patch
diff --git a/patches/squareavatars/89207.patch b/resources/old-patches/squareavatars/89207.patch
similarity index 100%
rename from patches/squareavatars/89207.patch
rename to resources/old-patches/squareavatars/89207.patch
diff --git a/patches/squareavatars/README.md b/resources/old-patches/squareavatars/README.md
similarity index 100%
rename from patches/squareavatars/README.md
rename to resources/old-patches/squareavatars/README.md
diff --git a/patches/betterdmheader/1371.patch b/resources/patches/betterdmheader/1371.patch
similarity index 100%
rename from patches/betterdmheader/1371.patch
rename to resources/patches/betterdmheader/1371.patch
diff --git a/patches/betterdmheader/1387.patch b/resources/patches/betterdmheader/1387.patch
similarity index 100%
rename from patches/betterdmheader/1387.patch
rename to resources/patches/betterdmheader/1387.patch
diff --git a/patches/betterdmheader/1456.patch b/resources/patches/betterdmheader/1456.patch
similarity index 100%
rename from patches/betterdmheader/1456.patch
rename to resources/patches/betterdmheader/1456.patch
diff --git a/patches/betterdmheader/1458.patch b/resources/patches/betterdmheader/1458.patch
similarity index 100%
rename from patches/betterdmheader/1458.patch
rename to resources/patches/betterdmheader/1458.patch
diff --git a/patches/betterdmheader/1474.patch b/resources/patches/betterdmheader/1474.patch
similarity index 100%
rename from patches/betterdmheader/1474.patch
rename to resources/patches/betterdmheader/1474.patch
diff --git a/patches/betterdmheader/1489.patch b/resources/patches/betterdmheader/1489.patch
similarity index 100%
rename from patches/betterdmheader/1489.patch
rename to resources/patches/betterdmheader/1489.patch
diff --git a/patches/betterdmheader/1505.patch b/resources/patches/betterdmheader/1505.patch
similarity index 100%
rename from patches/betterdmheader/1505.patch
rename to resources/patches/betterdmheader/1505.patch
diff --git a/patches/betterdmheader/1509.patch b/resources/patches/betterdmheader/1509.patch
similarity index 100%
rename from patches/betterdmheader/1509.patch
rename to resources/patches/betterdmheader/1509.patch
diff --git a/patches/betterdmheader/1510.patch b/resources/patches/betterdmheader/1510.patch
similarity index 100%
rename from patches/betterdmheader/1510.patch
rename to resources/patches/betterdmheader/1510.patch
diff --git a/patches/betterdmheader/1512.patch b/resources/patches/betterdmheader/1512.patch
similarity index 100%
rename from patches/betterdmheader/1512.patch
rename to resources/patches/betterdmheader/1512.patch
diff --git a/patches/betterdmheader/1514.patch b/resources/patches/betterdmheader/1514.patch
similarity index 100%
rename from patches/betterdmheader/1514.patch
rename to resources/patches/betterdmheader/1514.patch
diff --git a/patches/betterdmheader/1516.patch b/resources/patches/betterdmheader/1516.patch
similarity index 100%
rename from patches/betterdmheader/1516.patch
rename to resources/patches/betterdmheader/1516.patch
diff --git a/patches/betterdmheader/1518.patch b/resources/patches/betterdmheader/1518.patch
similarity index 100%
rename from patches/betterdmheader/1518.patch
rename to resources/patches/betterdmheader/1518.patch
diff --git a/patches/betterdmheader/1520.patch b/resources/patches/betterdmheader/1520.patch
similarity index 100%
rename from patches/betterdmheader/1520.patch
rename to resources/patches/betterdmheader/1520.patch
diff --git a/patches/betterdmheader/1522.patch b/resources/patches/betterdmheader/1522.patch
similarity index 100%
rename from patches/betterdmheader/1522.patch
rename to resources/patches/betterdmheader/1522.patch
diff --git a/patches/betterdmheader/1523.patch b/resources/patches/betterdmheader/1523.patch
similarity index 100%
rename from patches/betterdmheader/1523.patch
rename to resources/patches/betterdmheader/1523.patch
diff --git a/patches/betterdmheader/73001.patch b/resources/patches/betterdmheader/73001.patch
similarity index 100%
rename from patches/betterdmheader/73001.patch
rename to resources/patches/betterdmheader/73001.patch
diff --git a/patches/betterdmheader/73008.patch b/resources/patches/betterdmheader/73008.patch
similarity index 100%
rename from patches/betterdmheader/73008.patch
rename to resources/patches/betterdmheader/73008.patch
diff --git a/patches/betterdmheader/73111.patch b/resources/patches/betterdmheader/73111.patch
similarity index 100%
rename from patches/betterdmheader/73111.patch
rename to resources/patches/betterdmheader/73111.patch
diff --git a/patches/betterdmheader/74000.patch b/resources/patches/betterdmheader/74000.patch
similarity index 100%
rename from patches/betterdmheader/74000.patch
rename to resources/patches/betterdmheader/74000.patch
diff --git a/patches/betterdmheader/74010.patch b/resources/patches/betterdmheader/74010.patch
similarity index 100%
rename from patches/betterdmheader/74010.patch
rename to resources/patches/betterdmheader/74010.patch
diff --git a/patches/betterdmheader/76008.patch b/resources/patches/betterdmheader/76008.patch
similarity index 100%
rename from patches/betterdmheader/76008.patch
rename to resources/patches/betterdmheader/76008.patch
diff --git a/patches/betterdmheader/78105.patch b/resources/patches/betterdmheader/78105.patch
similarity index 100%
rename from patches/betterdmheader/78105.patch
rename to resources/patches/betterdmheader/78105.patch
diff --git a/patches/betterdmheader/78107.patch b/resources/patches/betterdmheader/78107.patch
similarity index 100%
rename from patches/betterdmheader/78107.patch
rename to resources/patches/betterdmheader/78107.patch
diff --git a/patches/betterdmheader/78109.patch b/resources/patches/betterdmheader/78109.patch
similarity index 100%
rename from patches/betterdmheader/78109.patch
rename to resources/patches/betterdmheader/78109.patch
diff --git a/patches/betterdmheader/79107.patch b/resources/patches/betterdmheader/79107.patch
similarity index 100%
rename from patches/betterdmheader/79107.patch
rename to resources/patches/betterdmheader/79107.patch
diff --git a/patches/betterdmheader/81109.patch b/resources/patches/betterdmheader/81109.patch
similarity index 100%
rename from patches/betterdmheader/81109.patch
rename to resources/patches/betterdmheader/81109.patch
diff --git a/patches/betterdmheader/81110.patch b/resources/patches/betterdmheader/81110.patch
similarity index 100%
rename from patches/betterdmheader/81110.patch
rename to resources/patches/betterdmheader/81110.patch
diff --git a/patches/betterdmheader/81111.patch b/resources/patches/betterdmheader/81111.patch
similarity index 100%
rename from patches/betterdmheader/81111.patch
rename to resources/patches/betterdmheader/81111.patch
diff --git a/patches/betterdmheader/82206.patch b/resources/patches/betterdmheader/82206.patch
similarity index 100%
rename from patches/betterdmheader/82206.patch
rename to resources/patches/betterdmheader/82206.patch
diff --git a/patches/betterdmheader/83210.patch b/resources/patches/betterdmheader/83210.patch
similarity index 100%
rename from patches/betterdmheader/83210.patch
rename to resources/patches/betterdmheader/83210.patch
diff --git a/patches/betterdmheader/86201.patch b/resources/patches/betterdmheader/86201.patch
similarity index 100%
rename from patches/betterdmheader/86201.patch
rename to resources/patches/betterdmheader/86201.patch
diff --git a/patches/betterdmheader/87201.patch b/resources/patches/betterdmheader/87201.patch
similarity index 100%
rename from patches/betterdmheader/87201.patch
rename to resources/patches/betterdmheader/87201.patch
diff --git a/patches/betterdmheader/87202.patch b/resources/patches/betterdmheader/87202.patch
similarity index 100%
rename from patches/betterdmheader/87202.patch
rename to resources/patches/betterdmheader/87202.patch
diff --git a/patches/betterdmheader/87203.patch b/resources/patches/betterdmheader/87203.patch
similarity index 100%
rename from patches/betterdmheader/87203.patch
rename to resources/patches/betterdmheader/87203.patch
diff --git a/patches/betterdmheader/88202.patch b/resources/patches/betterdmheader/88202.patch
similarity index 100%
rename from patches/betterdmheader/88202.patch
rename to resources/patches/betterdmheader/88202.patch
diff --git a/patches/betterdmheader/88203.patch b/resources/patches/betterdmheader/88203.patch
similarity index 100%
rename from patches/betterdmheader/88203.patch
rename to resources/patches/betterdmheader/88203.patch
diff --git a/patches/betterdmheader/88205.patch b/resources/patches/betterdmheader/88205.patch
similarity index 100%
rename from patches/betterdmheader/88205.patch
rename to resources/patches/betterdmheader/88205.patch
diff --git a/patches/betterdmheader/89201.patch b/resources/patches/betterdmheader/89201.patch
similarity index 100%
rename from patches/betterdmheader/89201.patch
rename to resources/patches/betterdmheader/89201.patch
diff --git a/patches/betterdmheader/89206.patch b/resources/patches/betterdmheader/89206.patch
similarity index 100%
rename from patches/betterdmheader/89206.patch
rename to resources/patches/betterdmheader/89206.patch
diff --git a/resources/patches/betterdmheader/89207.patch b/resources/patches/betterdmheader/89207.patch
new file mode 100644
index 0000000..a7ddc56
--- /dev/null
+++ b/resources/patches/betterdmheader/89207.patch
@@ -0,0 +1,37 @@
+diff -crB from/smali_classes2/com/discord/widgets/home/WidgetHomeHeaderManager$getOnConfigureAction$1.smali to/smali_classes2/com/discord/widgets/home/WidgetHomeHeaderManager$getOnConfigureAction$1.smali
+*** from/smali_classes2/com/discord/widgets/home/WidgetHomeHeaderManager$getOnConfigureAction$1.smali	2020-11-19 15:23:43.685245089 +0000
+--- to/smali_classes2/com/discord/widgets/home/WidgetHomeHeaderManager$getOnConfigureAction$1.smali	2020-11-19 15:26:07.886953277 +0000
+***************
+*** 181,187 ****
+
+      invoke-static {v3, v9}, Ld0/z/d/m;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+
+!     invoke-interface {v3, v1}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem;
+
+      .line 7
+      invoke-interface {p1, v8}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem;
+--- 181,187 ----
+
+      invoke-static {v3, v9}, Ld0/z/d/m;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+
+!     invoke-interface {v3, v2}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem;
+
+      .line 7
+      invoke-interface {p1, v8}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem;
+***************
+*** 360,366 ****
+
+      invoke-static {v3, v9}, Ld0/z/d/m;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+
+!     invoke-interface {v3, v1}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem;
+
+      .line 19
+      invoke-interface {p1, v6}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem;
+--- 360,366 ----
+
+      invoke-static {v3, v9}, Ld0/z/d/m;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+
+!     invoke-interface {v3, v2}, Landroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem;
+
+      .line 19
+      invoke-interface {p1, v6}, Landroid/view/Menu;->findItem(I)Landroid/view/MenuItem;
\ No newline at end of file
diff --git a/patches/betterdmheader/README.md b/resources/patches/betterdmheader/README.md
similarity index 91%
rename from patches/betterdmheader/README.md
rename to resources/patches/betterdmheader/README.md
index 0dde333..ce86f40 100644
--- a/patches/betterdmheader/README.md
+++ b/resources/patches/betterdmheader/README.md
@@ -2,6 +2,8 @@
 
 This patch replaces the call button on DM headers with search button. The call button is still available in the right menu.
 
+As of 89207, the patch is now split into an xml and smali patch
+
 ![](https://lasagna.cat/i/9njfeecd.png)
 
 #### Available and tested on:
diff --git a/patches/bettertm/README.md b/resources/patches/bettertm/README.md
similarity index 100%
rename from patches/bettertm/README.md
rename to resources/patches/bettertm/README.md
diff --git a/patches/bettertm/bettertm.sh b/resources/patches/bettertm/bettertm.sh
similarity index 100%
rename from patches/bettertm/bettertm.sh
rename to resources/patches/bettertm/bettertm.sh
diff --git a/patches/bettertm/emoji_2122_fe0f.png b/resources/patches/bettertm/emoji_2122_fe0f.png
similarity index 100%
rename from patches/bettertm/emoji_2122_fe0f.png
rename to resources/patches/bettertm/emoji_2122_fe0f.png
diff --git a/patches/bettertm/emoji_2122_fe0f.xcf b/resources/patches/bettertm/emoji_2122_fe0f.xcf
similarity index 100%
rename from patches/bettertm/emoji_2122_fe0f.xcf
rename to resources/patches/bettertm/emoji_2122_fe0f.xcf
diff --git a/patches/bettertm/emoji_ae_fe0f.png b/resources/patches/bettertm/emoji_ae_fe0f.png
similarity index 100%
rename from patches/bettertm/emoji_ae_fe0f.png
rename to resources/patches/bettertm/emoji_ae_fe0f.png
diff --git a/patches/bettertm/emoji_ae_fe0f.xcf b/resources/patches/bettertm/emoji_ae_fe0f.xcf
similarity index 100%
rename from patches/bettertm/emoji_ae_fe0f.xcf
rename to resources/patches/bettertm/emoji_ae_fe0f.xcf
diff --git a/patches/blobs/README.md b/resources/patches/blobs/README.md
similarity index 100%
rename from patches/blobs/README.md
rename to resources/patches/blobs/README.md
diff --git a/patches/blobs/emojireplace.py b/resources/patches/blobs/emojireplace.py
similarity index 100%
rename from patches/blobs/emojireplace.py
rename to resources/patches/blobs/emojireplace.py
diff --git a/patches/branding/1371.patch b/resources/patches/branding/1371.patch
similarity index 100%
rename from patches/branding/1371.patch
rename to resources/patches/branding/1371.patch
diff --git a/patches/branding/1387.patch b/resources/patches/branding/1387.patch
similarity index 100%
rename from patches/branding/1387.patch
rename to resources/patches/branding/1387.patch
diff --git a/patches/branding/1456.patch b/resources/patches/branding/1456.patch
similarity index 100%
rename from patches/branding/1456.patch
rename to resources/patches/branding/1456.patch
diff --git a/patches/branding/1458.patch b/resources/patches/branding/1458.patch
similarity index 100%
rename from patches/branding/1458.patch
rename to resources/patches/branding/1458.patch
diff --git a/patches/branding/1474.patch b/resources/patches/branding/1474.patch
similarity index 100%
rename from patches/branding/1474.patch
rename to resources/patches/branding/1474.patch
diff --git a/patches/branding/1489.patch b/resources/patches/branding/1489.patch
similarity index 100%
rename from patches/branding/1489.patch
rename to resources/patches/branding/1489.patch
diff --git a/patches/branding/1505.patch b/resources/patches/branding/1505.patch
similarity index 100%
rename from patches/branding/1505.patch
rename to resources/patches/branding/1505.patch
diff --git a/patches/branding/1509.patch b/resources/patches/branding/1509.patch
similarity index 100%
rename from patches/branding/1509.patch
rename to resources/patches/branding/1509.patch
diff --git a/patches/branding/1510.patch b/resources/patches/branding/1510.patch
similarity index 100%
rename from patches/branding/1510.patch
rename to resources/patches/branding/1510.patch
diff --git a/patches/branding/1512.patch b/resources/patches/branding/1512.patch
similarity index 100%
rename from patches/branding/1512.patch
rename to resources/patches/branding/1512.patch
diff --git a/patches/branding/1514.patch b/resources/patches/branding/1514.patch
similarity index 100%
rename from patches/branding/1514.patch
rename to resources/patches/branding/1514.patch
diff --git a/patches/branding/1516.patch b/resources/patches/branding/1516.patch
similarity index 100%
rename from patches/branding/1516.patch
rename to resources/patches/branding/1516.patch
diff --git a/patches/branding/1518.patch b/resources/patches/branding/1518.patch
similarity index 100%
rename from patches/branding/1518.patch
rename to resources/patches/branding/1518.patch
diff --git a/patches/branding/1520.patch b/resources/patches/branding/1520.patch
similarity index 100%
rename from patches/branding/1520.patch
rename to resources/patches/branding/1520.patch
diff --git a/patches/branding/1522.patch b/resources/patches/branding/1522.patch
similarity index 100%
rename from patches/branding/1522.patch
rename to resources/patches/branding/1522.patch
diff --git a/patches/branding/1523.patch b/resources/patches/branding/1523.patch
similarity index 100%
rename from patches/branding/1523.patch
rename to resources/patches/branding/1523.patch
diff --git a/patches/branding/73001.patch b/resources/patches/branding/73001.patch
similarity index 100%
rename from patches/branding/73001.patch
rename to resources/patches/branding/73001.patch
diff --git a/patches/branding/73008.patch b/resources/patches/branding/73008.patch
similarity index 100%
rename from patches/branding/73008.patch
rename to resources/patches/branding/73008.patch
diff --git a/patches/branding/73111.patch b/resources/patches/branding/73111.patch
similarity index 100%
rename from patches/branding/73111.patch
rename to resources/patches/branding/73111.patch
diff --git a/patches/branding/74000.patch b/resources/patches/branding/74000.patch
similarity index 100%
rename from patches/branding/74000.patch
rename to resources/patches/branding/74000.patch
diff --git a/patches/branding/74010.patch b/resources/patches/branding/74010.patch
similarity index 100%
rename from patches/branding/74010.patch
rename to resources/patches/branding/74010.patch
diff --git a/patches/branding/76008.patch b/resources/patches/branding/76008.patch
similarity index 100%
rename from patches/branding/76008.patch
rename to resources/patches/branding/76008.patch
diff --git a/patches/branding/78105.patch b/resources/patches/branding/78105.patch
similarity index 100%
rename from patches/branding/78105.patch
rename to resources/patches/branding/78105.patch
diff --git a/patches/branding/78107.patch b/resources/patches/branding/78107.patch
similarity index 100%
rename from patches/branding/78107.patch
rename to resources/patches/branding/78107.patch
diff --git a/patches/branding/78109.patch b/resources/patches/branding/78109.patch
similarity index 100%
rename from patches/branding/78109.patch
rename to resources/patches/branding/78109.patch
diff --git a/patches/branding/79107.patch b/resources/patches/branding/79107.patch
similarity index 100%
rename from patches/branding/79107.patch
rename to resources/patches/branding/79107.patch
diff --git a/patches/branding/81109.patch b/resources/patches/branding/81109.patch
similarity index 100%
rename from patches/branding/81109.patch
rename to resources/patches/branding/81109.patch
diff --git a/patches/branding/81110.patch b/resources/patches/branding/81110.patch
similarity index 100%
rename from patches/branding/81110.patch
rename to resources/patches/branding/81110.patch
diff --git a/patches/branding/81111.patch b/resources/patches/branding/81111.patch
similarity index 100%
rename from patches/branding/81111.patch
rename to resources/patches/branding/81111.patch
diff --git a/patches/branding/82206.patch b/resources/patches/branding/82206.patch
similarity index 100%
rename from patches/branding/82206.patch
rename to resources/patches/branding/82206.patch
diff --git a/patches/branding/83210.patch b/resources/patches/branding/83210.patch
similarity index 100%
rename from patches/branding/83210.patch
rename to resources/patches/branding/83210.patch
diff --git a/patches/branding/86201.patch b/resources/patches/branding/86201.patch
similarity index 100%
rename from patches/branding/86201.patch
rename to resources/patches/branding/86201.patch
diff --git a/patches/branding/87201.patch b/resources/patches/branding/87201.patch
similarity index 100%
rename from patches/branding/87201.patch
rename to resources/patches/branding/87201.patch
diff --git a/patches/branding/87202.patch b/resources/patches/branding/87202.patch
similarity index 100%
rename from patches/branding/87202.patch
rename to resources/patches/branding/87202.patch
diff --git a/patches/branding/87203.patch b/resources/patches/branding/87203.patch
similarity index 100%
rename from patches/branding/87203.patch
rename to resources/patches/branding/87203.patch
diff --git a/patches/branding/88202.patch b/resources/patches/branding/88202.patch
similarity index 100%
rename from patches/branding/88202.patch
rename to resources/patches/branding/88202.patch
diff --git a/patches/branding/88203.patch b/resources/patches/branding/88203.patch
similarity index 100%
rename from patches/branding/88203.patch
rename to resources/patches/branding/88203.patch
diff --git a/patches/branding/88205.patch b/resources/patches/branding/88205.patch
similarity index 100%
rename from patches/branding/88205.patch
rename to resources/patches/branding/88205.patch
diff --git a/patches/branding/89201.patch b/resources/patches/branding/89201.patch
similarity index 100%
rename from patches/branding/89201.patch
rename to resources/patches/branding/89201.patch
diff --git a/patches/branding/89206.patch b/resources/patches/branding/89206.patch
similarity index 100%
rename from patches/branding/89206.patch
rename to resources/patches/branding/89206.patch
diff --git a/patches/branding/89207.patch b/resources/patches/branding/89207.patch
similarity index 100%
rename from patches/branding/89207.patch
rename to resources/patches/branding/89207.patch
diff --git a/patches/branding/README.md b/resources/patches/branding/README.md
similarity index 100%
rename from patches/branding/README.md
rename to resources/patches/branding/README.md
diff --git a/patches/branding/addpatch.py b/resources/patches/branding/addpatch.py
similarity index 100%
rename from patches/branding/addpatch.py
rename to resources/patches/branding/addpatch.py
diff --git a/patches/branding/customdynamicicon.sh b/resources/patches/branding/customdynamicicon.sh
similarity index 100%
rename from patches/branding/customdynamicicon.sh
rename to resources/patches/branding/customdynamicicon.sh
diff --git a/patches/branding/customicon.sh b/resources/patches/branding/customicon.sh
similarity index 100%
rename from patches/branding/customicon.sh
rename to resources/patches/branding/customicon.sh
diff --git a/patches/customfont/README.md b/resources/patches/customfont/README.md
similarity index 100%
rename from patches/customfont/README.md
rename to resources/patches/customfont/README.md
diff --git a/patches/customring/README.md b/resources/patches/customring/README.md
similarity index 100%
rename from patches/customring/README.md
rename to resources/patches/customring/README.md
diff --git a/resources/patches/customtheme/89207.patch b/resources/patches/customtheme/89207.patch
new file mode 100644
index 0000000..d7546f0
--- /dev/null
+++ b/resources/patches/customtheme/89207.patch
@@ -0,0 +1,20 @@
+diff -crB from/smali_classes2/com/discord/widgets/tabs/WidgetTabsHost$configureSystemStatusBar$1.smali to/smali_classes2/com/discord/widgets/tabs/WidgetTabsHost$configureSystemStatusBar$1.smali
+*** from/smali_classes2/com/discord/widgets/tabs/WidgetTabsHost$configureSystemStatusBar$1.smali	2020-12-13 04:52:13.078109887 +0000
+--- to/smali_classes2/com/discord/widgets/tabs/WidgetTabsHost$configureSystemStatusBar$1.smali	2020-12-13 04:52:26.076186978 +0000
+***************
+*** 107,113 ****
+      .line 3
+      iget-object v0, p0, Lcom/discord/widgets/tabs/WidgetTabsHost$configureSystemStatusBar$1;->this$0:Lcom/discord/widgets/tabs/WidgetTabsHost;
+  
+!     const v1, 0x7f0602e0
+  
+      invoke-static {v0, v1}, Lcom/discord/utilities/color/ColorCompat;->getColor(Landroidx/fragment/app/Fragment;I)I
+  
+--- 107,113 ----
+      .line 3
+      iget-object v0, p0, Lcom/discord/widgets/tabs/WidgetTabsHost$configureSystemStatusBar$1;->this$0:Lcom/discord/widgets/tabs/WidgetTabsHost;
+  
+!     const v1, 0x7f060024
+  
+      invoke-static {v0, v1}, Lcom/discord/utilities/color/ColorCompat;->getColor(Landroidx/fragment/app/Fragment;I)I
+  
\ No newline at end of file
diff --git a/resources/patches/customtheme/README.md b/resources/patches/customtheme/README.md
new file mode 100644
index 0000000..cf53df8
--- /dev/null
+++ b/resources/patches/customtheme/README.md
@@ -0,0 +1,32 @@
+## DisTok CutTheCord: Custom Theme Patch
+
+This patch replaces theme with a pitch black theme, similar to [0cord](https://gitlab.com/ao/0cord). However, you're free to design your own theme. A reference for the values you need are provided below.
+
+Run `fixsplash.sh <full path of asset_loading.png>` to fix the splash.
+
+Self note: Top bar color is set by `setStatusBarColorResourceId`
+
+#### Bugs / Side effects
+- Not all colors are replaced (almost all are, though)
+- Status bar color is only changed on chat view (not on settings etc)
+
+#### Available and tested on:
+- 89.7 - Alpha
+
+#### Value reference
+
+These are mostly outdated.
+
+- primary_100 -> button/title color (Friends, User Settings, your name on bottom on sidebar, channel name)
+- primary_300 -> entry color (names on direct messages), also used on dtag on small user profile
+- primary_400 -> label color (Direct Messages, "online", your discrim on bottom of sidebar, note field, @/# on channel name bar)
+- primary_500 -> "Create Instant Invite"
+- primary_500_alpha_60 -> Used for muted channels
+- primary_600 -> chat background, also used by cutthecord for status bar
+- primary_630 -> sidebar color, bottom bar color (not chat), small user profile bg color, secondary color on many menus like settings
+- grey_guilds -> guild bar
+- purple_brand -> blurple, used for things like bottom circle button for message on someone's profile, bot icon, mentions
+- dark_grey_2 -> bottom chat bar
+- grey_account -> user sidebar background (user list)
+- grey_channels -> user sidebar background (channel information)
+- link_100-900 -> Link colors (pick a color, put to 500, fill in rest with 0to255.com)
diff --git a/resources/patches/customtheme/fixsplash.sh b/resources/patches/customtheme/fixsplash.sh
new file mode 100755
index 0000000..97edde1
--- /dev/null
+++ b/resources/patches/customtheme/fixsplash.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+\cp "$1" res/drawable-xxxhdpi/img_loading_logo.png
\ No newline at end of file
diff --git a/patches/customversion/1371.patch b/resources/patches/customversion/1371.patch
similarity index 100%
rename from patches/customversion/1371.patch
rename to resources/patches/customversion/1371.patch
diff --git a/patches/customversion/1387.patch b/resources/patches/customversion/1387.patch
similarity index 100%
rename from patches/customversion/1387.patch
rename to resources/patches/customversion/1387.patch
diff --git a/patches/customversion/1456.patch b/resources/patches/customversion/1456.patch
similarity index 100%
rename from patches/customversion/1456.patch
rename to resources/patches/customversion/1456.patch
diff --git a/patches/customversion/1458.patch b/resources/patches/customversion/1458.patch
similarity index 100%
rename from patches/customversion/1458.patch
rename to resources/patches/customversion/1458.patch
diff --git a/patches/customversion/1474.patch b/resources/patches/customversion/1474.patch
similarity index 100%
rename from patches/customversion/1474.patch
rename to resources/patches/customversion/1474.patch
diff --git a/patches/customversion/1489.patch b/resources/patches/customversion/1489.patch
similarity index 100%
rename from patches/customversion/1489.patch
rename to resources/patches/customversion/1489.patch
diff --git a/patches/customversion/1505.patch b/resources/patches/customversion/1505.patch
similarity index 100%
rename from patches/customversion/1505.patch
rename to resources/patches/customversion/1505.patch
diff --git a/patches/customversion/1509.patch b/resources/patches/customversion/1509.patch
similarity index 100%
rename from patches/customversion/1509.patch
rename to resources/patches/customversion/1509.patch
diff --git a/patches/customversion/1510.patch b/resources/patches/customversion/1510.patch
similarity index 100%
rename from patches/customversion/1510.patch
rename to resources/patches/customversion/1510.patch
diff --git a/patches/customversion/1512.patch b/resources/patches/customversion/1512.patch
similarity index 100%
rename from patches/customversion/1512.patch
rename to resources/patches/customversion/1512.patch
diff --git a/patches/customversion/1514.patch b/resources/patches/customversion/1514.patch
similarity index 100%
rename from patches/customversion/1514.patch
rename to resources/patches/customversion/1514.patch
diff --git a/patches/customversion/1516.patch b/resources/patches/customversion/1516.patch
similarity index 100%
rename from patches/customversion/1516.patch
rename to resources/patches/customversion/1516.patch
diff --git a/patches/customversion/1518.patch b/resources/patches/customversion/1518.patch
similarity index 100%
rename from patches/customversion/1518.patch
rename to resources/patches/customversion/1518.patch
diff --git a/patches/customversion/1520.patch b/resources/patches/customversion/1520.patch
similarity index 100%
rename from patches/customversion/1520.patch
rename to resources/patches/customversion/1520.patch
diff --git a/patches/customversion/1522.patch b/resources/patches/customversion/1522.patch
similarity index 100%
rename from patches/customversion/1522.patch
rename to resources/patches/customversion/1522.patch
diff --git a/patches/customversion/1523.patch b/resources/patches/customversion/1523.patch
similarity index 100%
rename from patches/customversion/1523.patch
rename to resources/patches/customversion/1523.patch
diff --git a/patches/customversion/73001.patch b/resources/patches/customversion/73001.patch
similarity index 100%
rename from patches/customversion/73001.patch
rename to resources/patches/customversion/73001.patch
diff --git a/patches/customversion/73008.patch b/resources/patches/customversion/73008.patch
similarity index 100%
rename from patches/customversion/73008.patch
rename to resources/patches/customversion/73008.patch
diff --git a/patches/customversion/73111.patch b/resources/patches/customversion/73111.patch
similarity index 100%
rename from patches/customversion/73111.patch
rename to resources/patches/customversion/73111.patch
diff --git a/patches/customversion/74000.patch b/resources/patches/customversion/74000.patch
similarity index 100%
rename from patches/customversion/74000.patch
rename to resources/patches/customversion/74000.patch
diff --git a/patches/customversion/74010.patch b/resources/patches/customversion/74010.patch
similarity index 100%
rename from patches/customversion/74010.patch
rename to resources/patches/customversion/74010.patch
diff --git a/patches/customversion/76008.patch b/resources/patches/customversion/76008.patch
similarity index 100%
rename from patches/customversion/76008.patch
rename to resources/patches/customversion/76008.patch
diff --git a/patches/customversion/78105.patch b/resources/patches/customversion/78105.patch
similarity index 100%
rename from patches/customversion/78105.patch
rename to resources/patches/customversion/78105.patch
diff --git a/patches/customversion/78107.patch b/resources/patches/customversion/78107.patch
similarity index 100%
rename from patches/customversion/78107.patch
rename to resources/patches/customversion/78107.patch
diff --git a/patches/customversion/78109.patch b/resources/patches/customversion/78109.patch
similarity index 100%
rename from patches/customversion/78109.patch
rename to resources/patches/customversion/78109.patch
diff --git a/patches/customversion/79107.patch b/resources/patches/customversion/79107.patch
similarity index 100%
rename from patches/customversion/79107.patch
rename to resources/patches/customversion/79107.patch
diff --git a/patches/customversion/81109.patch b/resources/patches/customversion/81109.patch
similarity index 100%
rename from patches/customversion/81109.patch
rename to resources/patches/customversion/81109.patch
diff --git a/patches/customversion/81110.patch b/resources/patches/customversion/81110.patch
similarity index 100%
rename from patches/customversion/81110.patch
rename to resources/patches/customversion/81110.patch
diff --git a/patches/customversion/81111.patch b/resources/patches/customversion/81111.patch
similarity index 100%
rename from patches/customversion/81111.patch
rename to resources/patches/customversion/81111.patch
diff --git a/patches/customversion/82206.patch b/resources/patches/customversion/82206.patch
similarity index 100%
rename from patches/customversion/82206.patch
rename to resources/patches/customversion/82206.patch
diff --git a/patches/customversion/83210.patch b/resources/patches/customversion/83210.patch
similarity index 100%
rename from patches/customversion/83210.patch
rename to resources/patches/customversion/83210.patch
diff --git a/patches/customversion/86201.patch b/resources/patches/customversion/86201.patch
similarity index 100%
rename from patches/customversion/86201.patch
rename to resources/patches/customversion/86201.patch
diff --git a/patches/customversion/87201.patch b/resources/patches/customversion/87201.patch
similarity index 100%
rename from patches/customversion/87201.patch
rename to resources/patches/customversion/87201.patch
diff --git a/patches/customversion/87202.patch b/resources/patches/customversion/87202.patch
similarity index 100%
rename from patches/customversion/87202.patch
rename to resources/patches/customversion/87202.patch
diff --git a/patches/customversion/87203.patch b/resources/patches/customversion/87203.patch
similarity index 100%
rename from patches/customversion/87203.patch
rename to resources/patches/customversion/87203.patch
diff --git a/patches/customversion/88202.patch b/resources/patches/customversion/88202.patch
similarity index 100%
rename from patches/customversion/88202.patch
rename to resources/patches/customversion/88202.patch
diff --git a/patches/customversion/88203.patch b/resources/patches/customversion/88203.patch
similarity index 100%
rename from patches/customversion/88203.patch
rename to resources/patches/customversion/88203.patch
diff --git a/patches/customversion/88205.patch b/resources/patches/customversion/88205.patch
similarity index 100%
rename from patches/customversion/88205.patch
rename to resources/patches/customversion/88205.patch
diff --git a/patches/customversion/89201.patch b/resources/patches/customversion/89201.patch
similarity index 100%
rename from patches/customversion/89201.patch
rename to resources/patches/customversion/89201.patch
diff --git a/patches/customversion/89206.patch b/resources/patches/customversion/89206.patch
similarity index 100%
rename from patches/customversion/89206.patch
rename to resources/patches/customversion/89206.patch
diff --git a/patches/customversion/89207.patch b/resources/patches/customversion/89207.patch
similarity index 100%
rename from patches/customversion/89207.patch
rename to resources/patches/customversion/89207.patch
diff --git a/patches/customversion/README.md b/resources/patches/customversion/README.md
similarity index 100%
rename from patches/customversion/README.md
rename to resources/patches/customversion/README.md
diff --git a/patches/customversion/addpatch.py b/resources/patches/customversion/addpatch.py
similarity index 100%
rename from patches/customversion/addpatch.py
rename to resources/patches/customversion/addpatch.py
diff --git a/patches/disable-mobileindicator/1371.patch b/resources/patches/disable-mobileindicator/1371.patch
similarity index 100%
rename from patches/disable-mobileindicator/1371.patch
rename to resources/patches/disable-mobileindicator/1371.patch
diff --git a/patches/disable-mobileindicator/74010.patch b/resources/patches/disable-mobileindicator/74010.patch
similarity index 100%
rename from patches/disable-mobileindicator/74010.patch
rename to resources/patches/disable-mobileindicator/74010.patch
diff --git a/patches/disable-mobileindicator/76008.patch b/resources/patches/disable-mobileindicator/76008.patch
similarity index 100%
rename from patches/disable-mobileindicator/76008.patch
rename to resources/patches/disable-mobileindicator/76008.patch
diff --git a/patches/disable-mobileindicator/78105.patch b/resources/patches/disable-mobileindicator/78105.patch
similarity index 100%
rename from patches/disable-mobileindicator/78105.patch
rename to resources/patches/disable-mobileindicator/78105.patch
diff --git a/patches/disable-mobileindicator/78107.patch b/resources/patches/disable-mobileindicator/78107.patch
similarity index 100%
rename from patches/disable-mobileindicator/78107.patch
rename to resources/patches/disable-mobileindicator/78107.patch
diff --git a/patches/disable-mobileindicator/78109.patch b/resources/patches/disable-mobileindicator/78109.patch
similarity index 100%
rename from patches/disable-mobileindicator/78109.patch
rename to resources/patches/disable-mobileindicator/78109.patch
diff --git a/patches/disable-mobileindicator/79107.patch b/resources/patches/disable-mobileindicator/79107.patch
similarity index 100%
rename from patches/disable-mobileindicator/79107.patch
rename to resources/patches/disable-mobileindicator/79107.patch
diff --git a/patches/disable-mobileindicator/81109.patch b/resources/patches/disable-mobileindicator/81109.patch
similarity index 100%
rename from patches/disable-mobileindicator/81109.patch
rename to resources/patches/disable-mobileindicator/81109.patch
diff --git a/patches/disable-mobileindicator/81110.patch b/resources/patches/disable-mobileindicator/81110.patch
similarity index 100%
rename from patches/disable-mobileindicator/81110.patch
rename to resources/patches/disable-mobileindicator/81110.patch
diff --git a/patches/disable-mobileindicator/81111.patch b/resources/patches/disable-mobileindicator/81111.patch
similarity index 100%
rename from patches/disable-mobileindicator/81111.patch
rename to resources/patches/disable-mobileindicator/81111.patch
diff --git a/patches/disable-mobileindicator/82206.patch b/resources/patches/disable-mobileindicator/82206.patch
similarity index 100%
rename from patches/disable-mobileindicator/82206.patch
rename to resources/patches/disable-mobileindicator/82206.patch
diff --git a/patches/disable-mobileindicator/83210.patch b/resources/patches/disable-mobileindicator/83210.patch
similarity index 100%
rename from patches/disable-mobileindicator/83210.patch
rename to resources/patches/disable-mobileindicator/83210.patch
diff --git a/patches/disable-mobileindicator/86201.patch b/resources/patches/disable-mobileindicator/86201.patch
similarity index 100%
rename from patches/disable-mobileindicator/86201.patch
rename to resources/patches/disable-mobileindicator/86201.patch
diff --git a/patches/disable-mobileindicator/87201.patch b/resources/patches/disable-mobileindicator/87201.patch
similarity index 100%
rename from patches/disable-mobileindicator/87201.patch
rename to resources/patches/disable-mobileindicator/87201.patch
diff --git a/patches/disable-mobileindicator/87202.patch b/resources/patches/disable-mobileindicator/87202.patch
similarity index 100%
rename from patches/disable-mobileindicator/87202.patch
rename to resources/patches/disable-mobileindicator/87202.patch
diff --git a/patches/disable-mobileindicator/87203.patch b/resources/patches/disable-mobileindicator/87203.patch
similarity index 100%
rename from patches/disable-mobileindicator/87203.patch
rename to resources/patches/disable-mobileindicator/87203.patch
diff --git a/patches/disable-mobileindicator/88202.patch b/resources/patches/disable-mobileindicator/88202.patch
similarity index 100%
rename from patches/disable-mobileindicator/88202.patch
rename to resources/patches/disable-mobileindicator/88202.patch
diff --git a/patches/disable-mobileindicator/88203.patch b/resources/patches/disable-mobileindicator/88203.patch
similarity index 100%
rename from patches/disable-mobileindicator/88203.patch
rename to resources/patches/disable-mobileindicator/88203.patch
diff --git a/patches/disable-mobileindicator/88205.patch b/resources/patches/disable-mobileindicator/88205.patch
similarity index 100%
rename from patches/disable-mobileindicator/88205.patch
rename to resources/patches/disable-mobileindicator/88205.patch
diff --git a/patches/disable-mobileindicator/89201.patch b/resources/patches/disable-mobileindicator/89201.patch
similarity index 100%
rename from patches/disable-mobileindicator/89201.patch
rename to resources/patches/disable-mobileindicator/89201.patch
diff --git a/patches/disable-mobileindicator/89206.patch b/resources/patches/disable-mobileindicator/89206.patch
similarity index 100%
rename from patches/disable-mobileindicator/89206.patch
rename to resources/patches/disable-mobileindicator/89206.patch
diff --git a/patches/disable-mobileindicator/89207.patch b/resources/patches/disable-mobileindicator/89207.patch
similarity index 100%
rename from patches/disable-mobileindicator/89207.patch
rename to resources/patches/disable-mobileindicator/89207.patch
diff --git a/patches/disable-mobileindicator/README.md b/resources/patches/disable-mobileindicator/README.md
similarity index 100%
rename from patches/disable-mobileindicator/README.md
rename to resources/patches/disable-mobileindicator/README.md
diff --git a/resources/patches/embedlinks/1371.patch b/resources/patches/embedlinks/1371.patch
new file mode 100644
index 0000000..0f21e10
--- /dev/null
+++ b/resources/patches/embedlinks/1371.patch
@@ -0,0 +1,91 @@
+diff -crB from/smali/com/discord/utilities/textprocessing/MessagePreprocessor.smali to/smali/com/discord/utilities/textprocessing/MessagePreprocessor.smali
+*** from/smali/com/discord/utilities/textprocessing/MessagePreprocessor.smali	2020-12-10 17:59:08.337855043 +0000
+--- to/smali/com/discord/utilities/textprocessing/MessagePreprocessor.smali	2020-12-10 18:09:12.282764604 +0000
+***************
+*** 693,769 ****
+  .end method
+  
+  .method private final stripSimpleEmbedLink(Ljava/util/Collection;)V
+!     .locals 3
+!     .annotation system Ldalvik/annotation/Signature;
+!         value = {
+!             "(",
+!             "Ljava/util/Collection<",
+!             "Lcom/discord/simpleast/core/node/Node<",
+!             "Lcom/discord/utilities/textprocessing/MessageRenderContext;",
+!             ">;>;)V"
+!         }
+!     .end annotation
+  
+-     .line 1
+-     invoke-interface {p1}, Ljava/util/Collection;->size()I
+- 
+-     move-result v0
+- 
+-     const/4 v1, 0x1
+- 
+-     if-ne v0, v1, :cond_2
+- 
+-     iget-object v0, p0, Lcom/discord/utilities/textprocessing/MessagePreprocessor;->embeds:Ljava/util/List;
+- 
+-     if-eqz v0, :cond_2
+- 
+-     invoke-interface {v0}, Ljava/util/List;->size()I
+- 
+-     move-result v0
+- 
+-     if-eq v0, v1, :cond_0
+- 
+-     goto :goto_0
+- 
+-     :cond_0
+-     const/4 v0, 0x0
+- 
+-     .line 2
+-     invoke-static {p1, v0}, Lx/h/f;->elementAt(Ljava/lang/Iterable;I)Ljava/lang/Object;
+- 
+-     move-result-object v1
+- 
+-     check-cast v1, Lcom/discord/simpleast/core/node/Node;
+- 
+-     .line 3
+-     iget-object v2, p0, Lcom/discord/utilities/textprocessing/MessagePreprocessor;->embeds:Ljava/util/List;
+- 
+-     invoke-interface {v2, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
+- 
+-     move-result-object v0
+- 
+-     check-cast v0, Lcom/discord/models/domain/ModelMessageEmbed;
+- 
+-     .line 4
+-     instance-of v1, v1, Lcom/discord/utilities/textprocessing/node/UrlNode;
+- 
+-     if-nez v1, :cond_1
+- 
+-     return-void
+- 
+-     .line 5
+-     :cond_1
+-     invoke-virtual {v0}, Lcom/discord/models/domain/ModelMessageEmbed;->isSimpleEmbed()Z
+- 
+-     move-result v0
+- 
+-     if-eqz v0, :cond_2
+- 
+-     .line 6
+-     invoke-interface {p1}, Ljava/util/Collection;->clear()V
+- 
+-     :cond_2
+-     :goto_0
+      return-void
+  .end method
+  
+--- 693,700 ----
+  .end method
+  
+  .method private final stripSimpleEmbedLink(Ljava/util/Collection;)V
+!     .locals 0
+  
+      return-void
+  .end method
+  
\ No newline at end of file
diff --git a/resources/patches/embedlinks/89207.patch b/resources/patches/embedlinks/89207.patch
new file mode 100644
index 0000000..50a82ea
--- /dev/null
+++ b/resources/patches/embedlinks/89207.patch
@@ -0,0 +1,92 @@
+diff -crB from/smali/com/discord/utilities/textprocessing/MessagePreprocessor.smali to/smali/com/discord/utilities/textprocessing/MessagePreprocessor.smali
+*** from/smali/com/discord/utilities/textprocessing/MessagePreprocessor.smali   2021-08-04 19:45:53.005373900 +0100
+--- to/smali/com/discord/utilities/textprocessing/MessagePreprocessor.smali     2021-08-04 21:16:24.965470600 +0100
+***************
+*** 773,851 ****
+  .end method
+
+  .method private final stripSimpleEmbedLink(Ljava/util/Collection;)V
+!     .locals 3
+!     .annotation system Ldalvik/annotation/Signature;
+!         value = {
+!             "(",
+!             "Ljava/util/Collection<",
+!             "Lcom/discord/simpleast/core/node/Node<",
+!             "Lcom/discord/utilities/textprocessing/MessageRenderContext;",
+!             ">;>;)V"
+!         }
+!     .end annotation
+
+-     .line 1
+-     invoke-interface {p1}, Ljava/util/Collection;->size()I
+-
+-     move-result v0
+-
+-     const/4 v1, 0x1
+-
+-     if-ne v0, v1, :cond_2
+-
+-     iget-object v0, p0, Lcom/discord/utilities/textprocessing/MessagePreprocessor;->embeds:Ljava/util/List;
+-
+-     if-eqz v0, :cond_2
+-
+-     invoke-interface {v0}, Ljava/util/List;->size()I
+-
+-     move-result v0
+-
+-     if-eq v0, v1, :cond_0
+-
+-     goto :goto_0
+-
+-     :cond_0
+-     const/4 v0, 0x0
+-
+-     .line 2
+-     invoke-static {p1, v0}, Ld0/t/u;->elementAt(Ljava/lang/Iterable;I)Ljava/lang/Object;
+-
+-     move-result-object v1
+-
+-     check-cast v1, Lcom/discord/simpleast/core/node/Node;
+-
+-     .line 3
+-     iget-object v2, p0, Lcom/discord/utilities/textprocessing/MessagePreprocessor;->embeds:Ljava/util/List;
+-
+-     invoke-interface {v2, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
+-
+-     move-result-object v0
+-
+-     check-cast v0, Lcom/discord/api/message/embed/MessageEmbed;
+-
+-     .line 4
+-     instance-of v1, v1, Lcom/discord/utilities/textprocessing/node/UrlNode;
+-
+-     if-nez v1, :cond_1
+-
+-     return-void
+-
+-     .line 5
+-     :cond_1
+-     sget-object v1, Lcom/discord/utilities/embed/EmbedResourceUtils;->INSTANCE:Lcom/discord/utilities/embed/EmbedResourceUtils;
+-
+-     invoke-virtual {v1, v0}, Lcom/discord/utilities/embed/EmbedResourceUtils;->isSimpleEmbed(Lcom/discord/api/message/embed/MessageEmbed;)Z
+-
+-     move-result v0
+-
+-     if-eqz v0, :cond_2
+-
+-     .line 6
+-     invoke-interface {p1}, Ljava/util/Collection;->clear()V
+-
+-     :cond_2
+-     :goto_0
+      return-void
+  .end method
+
+--- 773,780 ----
+  .end method
+
+  .method private final stripSimpleEmbedLink(Ljava/util/Collection;)V
+!     .locals 0
+
+      return-void
+  .end method
\ No newline at end of file
diff --git a/resources/patches/embedlinks/README.md b/resources/patches/embedlinks/README.md
new file mode 100644
index 0000000..e313065
--- /dev/null
+++ b/resources/patches/embedlinks/README.md
@@ -0,0 +1,13 @@
+## DisTok CutTheCord: Embed Links
+
+Bring back embed links when it's the only thing contained in the message.
+
+![](https://elixi.re/i/xcn7vul5.png)
+
+to
+
+![](https://elixi.re/i/xdkl2p9x.png)
+
+#### Available and tested on:
+- 56.0
+- 89.7 - Alpha
diff --git a/patches/mutan/1371.patch b/resources/patches/mutan/1371.patch
similarity index 100%
rename from patches/mutan/1371.patch
rename to resources/patches/mutan/1371.patch
diff --git a/patches/mutan/87202.patch b/resources/patches/mutan/87202.patch
similarity index 100%
rename from patches/mutan/87202.patch
rename to resources/patches/mutan/87202.patch
diff --git a/patches/mutan/89201.patch b/resources/patches/mutan/89201.patch
similarity index 100%
rename from patches/mutan/89201.patch
rename to resources/patches/mutan/89201.patch
diff --git a/patches/mutan/89206.patch b/resources/patches/mutan/89206.patch
similarity index 100%
rename from patches/mutan/89206.patch
rename to resources/patches/mutan/89206.patch
diff --git a/patches/mutan/89207.patch b/resources/patches/mutan/89207.patch
similarity index 100%
rename from patches/mutan/89207.patch
rename to resources/patches/mutan/89207.patch
diff --git a/patches/mutan/README.md b/resources/patches/mutan/README.md
similarity index 100%
rename from patches/mutan/README.md
rename to resources/patches/mutan/README.md
diff --git a/patches/mutan/emojipatch.py b/resources/patches/mutan/emojipatch.py
similarity index 100%
rename from patches/mutan/emojipatch.py
rename to resources/patches/mutan/emojipatch.py
diff --git a/patches/mutan/emojireplace.py b/resources/patches/mutan/emojireplace.py
similarity index 100%
rename from patches/mutan/emojireplace.py
rename to resources/patches/mutan/emojireplace.py
diff --git a/patches/mutan/gendiversitycode.py b/resources/patches/mutan/gendiversitycode.py
similarity index 100%
rename from patches/mutan/gendiversitycode.py
rename to resources/patches/mutan/gendiversitycode.py
diff --git a/patches/mutan/genemojitest.py b/resources/patches/mutan/genemojitest.py
similarity index 100%
rename from patches/mutan/genemojitest.py
rename to resources/patches/mutan/genemojitest.py
diff --git a/resources/patches/nospoiler/89207.patch b/resources/patches/nospoiler/89207.patch
new file mode 100644
index 0000000..8446407
--- /dev/null
+++ b/resources/patches/nospoiler/89207.patch
@@ -0,0 +1,58 @@
+diff -crB from/smali/com/discord/api/message/attachment/MessageAttachment.smali to/smali/com/discord/api/message/attachment/MessageAttachment.smali
+*** from/smali/com/discord/api/message/attachment/MessageAttachment.smali       2021-08-04 19:45:36.435878400 +0100
+--- to/smali/com/discord/api/message/attachment/MessageAttachment.smali 2021-08-04 21:31:37.148568400 +0100
+***************
+*** 376,398 ****
+  .end method
+
+  .method public final h()Z
+!     .locals 5
+!
+!     .line 1
+!     iget-object v0, p0, Lcom/discord/api/message/attachment/MessageAttachment;->filename:Ljava/lang/String;
+!
+!     const-string v1, "SPOILER_"
+!
+!     const/4 v2, 0x0
+!
+!     const/4 v3, 0x2
+!
+!     const/4 v4, 0x0
+!
+!     invoke-static {v0, v1, v2, v3, v4}, Ld0/g0/t;->startsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
+!
+!     move-result v0
+!
+      return v0
+  .end method
+
+--- 376,383 ----
+  .end method
+
+  .method public final h()Z
+!     .locals 1
+!     const/4 v0, 0x0
+      return v0
+  .end method
+  
+diff -crB from/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali to/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali
+*** from/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali	2020-12-10 17:59:08.345855134 +0000
+--- to/smali/com/discord/utilities/textprocessing/node/SpoilerNode.smali	2020-12-10 18:00:01.624468003 +0000
+***************
+*** 249,256 ****
+  .method public isRevealed()Z
+      .locals 1
+
+!     .line 1
+!     iget-boolean v0, p0, Lcom/discord/utilities/textprocessing/node/SpoilerNode;->isRevealed:Z
+
+      return v0
+  .end method
+--- 249,255 ----
+  .method public isRevealed()Z
+      .locals 1
+
+!     const/4 v0, 0x1
+
+      return v0
+  .end method
\ No newline at end of file
diff --git a/resources/patches/nospoiler/README.md b/resources/patches/nospoiler/README.md
new file mode 100644
index 0000000..e8250cd
--- /dev/null
+++ b/resources/patches/nospoiler/README.md
@@ -0,0 +1,8 @@
+## DisTok CutTheCord: No Spoiler Patch
+
+This patch automatically reveals spoilers.
+
+I personally won't be using it as I like to use them as CWs, but I do acknowledge the potential moderation issues it causes (that will be fixed with a patch like this).
+
+#### Available and tested on:
+- 89.7 - Alpha
diff --git a/resources/patches/notrack/89207-post.sh b/resources/patches/notrack/89207-post.sh
new file mode 100755
index 0000000..27b03f0
--- /dev/null
+++ b/resources/patches/notrack/89207-post.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+mv smali/com/airbnb smali_classes2/com/
diff --git a/resources/patches/notrack/89207.patch b/resources/patches/notrack/89207.patch
new file mode 100644
index 0000000..1e81a04
--- /dev/null
+++ b/resources/patches/notrack/89207.patch
@@ -0,0 +1,1340 @@
+diff -crB from/smali/com/discord/utilities/analytics/AnalyticsUtils$Tracker.smali to/smali/com/discord/utilities/analytics/AnalyticsUtils$Tracker.smali
+*** from/smali/com/discord/utilities/analytics/AnalyticsUtils$Tracker.smali        2021-08-10 20:24:15.471210700 +0100
+--- to/smali/com/discord/utilities/analytics/AnalyticsUtils$Tracker.smali  2021-08-21 17:10:11.604448700 +0100
+***************
+*** 208,216 ****
+  .method public static final synthetic access$drainEventsQueue(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;)V
+      .locals 0
+
+-     .line 1
+-     invoke-direct {p0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->drainEventsQueue()V
+-
+      return-void
+  .end method
+
+--- 208,213 ----
+***************
+*** 233,337 ****
+  .end method
+
+  .method private final declared-synchronized drainEventsQueue()V
+!     .locals 15
+!
+!     monitor-enter p0
+!
+!     .line 1
+!     :try_start_0
+!     invoke-direct {p0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->getCanDrain()Z
+!
+!     move-result v0
+!     :try_end_0
+!     .catchall {:try_start_0 .. :try_end_0} :catchall_0
+!
+!     if-nez v0, :cond_0
+!
+!     .line 2
+!     monitor-exit p0
+!
+!     return-void
+!
+!     .line 3
+!     :cond_0
+!     :try_start_1
+!     new-instance v0, Ljava/util/ArrayList;
+!
+!     iget-object v1, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->eventsQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
+!
+!     invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
+!
+!     .line 4
+!     iget-object v1, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->eventsQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
+!
+!     invoke-virtual {v1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->clear()V
+!
+!     .line 5
+!     iget-object v1, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->restAPI:Lcom/discord/utilities/rest/RestAPI;
+!
+!     .line 6
+!     new-instance v2, Lcom/discord/api/science/Science;
+!
+!     iget-object v3, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->analyticsToken:Ljava/lang/String;
+!
+!     invoke-direct {v2, v3, v0}, Lcom/discord/api/science/Science;-><init>(Ljava/lang/String;Ljava/util/List;)V
+!
+!     invoke-virtual {v1, v2}, Lcom/discord/utilities/rest/RestAPI;->science(Lcom/discord/api/science/Science;)Lrx/Observable;
+!
+!     move-result-object v1
+!
+!     const/4 v2, 0x0
+!
+!     const/4 v3, 0x1
+!
+!     const/4 v4, 0x0
+!
+!     .line 7
+!     invoke-static {v1, v2, v3, v4}, Lcom/discord/utilities/rx/ObservableExtensionsKt;->restSubscribeOn$default(Lrx/Observable;ZILjava/lang/Object;)Lrx/Observable;
+!
+!     move-result-object v5
+!
+!     .line 8
+!     invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
+!
+!     move-result-object v6
+!
+!     const/4 v7, 0x0
+!
+!     const/4 v8, 0x0
+!
+!     .line 9
+!     sget-object v12, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$drainEventsQueue$1;->INSTANCE:Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$drainEventsQueue$1;
+!
+!     const/4 v10, 0x0
+!
+!     const/4 v11, 0x0
+!
+!     .line 10
+!     new-instance v9, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$drainEventsQueue$2;
+!
+!     invoke-direct {v9, p0, v0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$drainEventsQueue$2;-><init>(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;Ljava/util/ArrayList;)V
+!
+!     const/16 v13, 0x36
+!
+!     const/4 v14, 0x0
+!
+!     .line 11
+!     invoke-static/range {v5 .. v14}, Lcom/discord/utilities/rx/ObservableExtensionsKt;->appSubscribe$default(Lrx/Observable;Ljava/lang/Class;Landroid/content/Context;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+!     :try_end_1
+!     .catchall {:try_start_1 .. :try_end_1} :catchall_0
+!
+!     .line 12
+!     monitor-exit p0
+
+      return-void
+-
+-     :catchall_0
+-     move-exception v0
+-
+-     monitor-exit p0
+-
+-     throw v0
+  .end method
+
+  .method private final getCanDrain()Z
+--- 230,238 ----
+  .end method
+
+  .method private final declared-synchronized drainEventsQueue()V
+!     .locals 0
+
+      return-void
+  .end method
+
+  .method private final getCanDrain()Z
+***************
+*** 605,636 ****
+  .method public static synthetic setTrackingData$default(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;Ljava/lang/String;ZILjava/lang/Object;)V
+      .locals 0
+
+-     and-int/lit8 p3, p3, 0x2
+-
+-     if-eqz p3, :cond_0
+-
+-     const/4 p2, 0x0
+-
+-     .line 1
+-     :cond_0
+-     invoke-virtual {p0, p1, p2}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->setTrackingData(Ljava/lang/String;Z)V
+-
+      return-void
+  .end method
+
+  .method public static synthetic track$default(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V
+      .locals 0
+
+-     and-int/lit8 p3, p3, 0x2
+-
+-     if-eqz p3, :cond_0
+-
+-     const/4 p2, 0x0
+-
+-     .line 1
+-     :cond_0
+-     invoke-virtual {p0, p1, p2}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->track(Ljava/lang/String;Ljava/util/Map;)V
+-
+      return-void
+  .end method
+
+--- 506,517 ----
+***************
+*** 703,943 ****
+  .end method
+
+  .method public final track(Lcom/discord/api/science/AnalyticsSchema;)V
+!     .locals 1
+!
+!     const-string v0, "analyticsSchema"
+!
+!     invoke-static {p1, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     .line 7
+!     new-instance v0, Lcom/discord/api/science/Science$Event$SchemaObject;
+!
+!     invoke-direct {v0, p1}, Lcom/discord/api/science/Science$Event$SchemaObject;-><init>(Lcom/discord/api/science/AnalyticsSchema;)V
+!
+!     invoke-virtual {p0, v0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->track(Lcom/discord/api/science/Science$Event;)V
+
+      return-void
+  .end method
+
+  .method public final track(Lcom/discord/api/science/Science$Event;)V
+!     .locals 12
+!
+!     const-string v0, "event"
+!
+!     invoke-static {p1, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     .line 8
+!     iget-object v0, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->eventsQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
+!
+!     invoke-virtual {v0, p1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->add(Ljava/lang/Object;)Z
+!
+!     .line 9
+!     sget-object p1, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
+!
+!     const-wide/16 v0, 0x5dc
+!
+!     invoke-static {v0, v1, p1}, Lrx/Observable;->c0(JLjava/util/concurrent/TimeUnit;)Lrx/Observable;
+!
+!     move-result-object v2
+!
+!     const-string p1, "Observable\n          .ti\u20260, TimeUnit.MILLISECONDS)"
+!
+!     invoke-static {v2, p1}, Ld0/z/d/m;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     .line 10
+!     const-class v3, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;
+!
+!     new-instance v9, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$track$1;
+!
+!     invoke-direct {v9, p0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker$track$1;-><init>(Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;)V
+!
+!     const/4 v4, 0x0
+!
+!     const/4 v5, 0x0
+!
+!     const/4 v6, 0x0
+!
+!     const/4 v7, 0x0
+!
+!     const/4 v8, 0x0
+!
+!     const/16 v10, 0x3e
+!
+!     const/4 v11, 0x0
+!
+!     invoke-static/range {v2 .. v11}, Lcom/discord/utilities/rx/ObservableExtensionsKt;->appSubscribe$default(Lrx/Observable;Ljava/lang/Class;Landroid/content/Context;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+!
+      return-void
+  .end method
+
+  .method public final track(Ljava/lang/String;Ljava/util/Map;)V
+!     .locals 1
+!     .annotation system Ldalvik/annotation/Signature;
+!         value = {
+!             "(",
+!             "Ljava/lang/String;",
+!             "Ljava/util/Map<",
+!             "Ljava/lang/String;",
+!             "+",
+!             "Ljava/lang/Object;",
+!             ">;)V"
+!         }
+!     .end annotation
+!
+!     const-string v0, "event"
+!
+!     invoke-static {p1, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     .line 6
+!     new-instance v0, Lcom/discord/api/science/Science$Event$MapObject;
+!
+!     if-eqz p2, :cond_0
+!
+!     goto :goto_0
+!
+!     :cond_0
+!     invoke-static {}, Ld0/t/h0;->emptyMap()Ljava/util/Map;
+!
+!     move-result-object p2
+!
+!     :goto_0
+!     invoke-direct {v0, p1, p2}, Lcom/discord/api/science/Science$Event$MapObject;-><init>(Ljava/lang/String;Ljava/util/Map;)V
+!
+!     invoke-virtual {p0, v0}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->track(Lcom/discord/api/science/Science$Event;)V
+!
+      return-void
+  .end method
+
+  .method public final track(Lkotlin/Pair;JLkotlin/jvm/functions/Function0;)V
+!     .locals 2
+!     .annotation system Ldalvik/annotation/Signature;
+!         value = {
+!             "(",
+!             "Lkotlin/Pair<",
+!             "Ljava/lang/String;",
+!             "Ljava/lang/Long;",
+!             ">;J",
+!             "Lkotlin/jvm/functions/Function0<",
+!             "+",
+!             "Ljava/util/Map<",
+!             "Ljava/lang/String;",
+!             "+",
+!             "Ljava/lang/Object;",
+!             ">;>;)V"
+!         }
+!     .end annotation
+!
+!     const-string/jumbo v0, "throttleKey"
+!
+!     invoke-static {p1, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     const-string v0, "lazyPropertyProvider"
+!
+!     invoke-static {p4, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     .line 1
+!     invoke-direct {p0, p1}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->isEventThrottled(Lkotlin/Pair;)Z
+!
+!     move-result v0
+!
+!     if-eqz v0, :cond_0
+!
+!     return-void
+!
+!     .line 2
+!     :cond_0
+!     invoke-virtual {p1}, Lkotlin/Pair;->component1()Ljava/lang/Object;
+!
+!     move-result-object v0
+!
+!     check-cast v0, Ljava/lang/String;
+!
+!     .line 3
+!     invoke-interface {p4}, Lkotlin/jvm/functions/Function0;->invoke()Ljava/lang/Object;
+!
+!     move-result-object p4
+!
+!     check-cast p4, Ljava/util/Map;
+!
+!     invoke-virtual {p0, v0, p4}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->track(Ljava/lang/String;Ljava/util/Map;)V
+!
+!     .line 4
+!     iget-object p4, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->clock:Lcom/discord/utilities/time/Clock;
+!
+!     invoke-interface {p4}, Lcom/discord/utilities/time/Clock;->currentTimeMillis()J
+!
+!     move-result-wide v0
+!
+!     .line 5
+!     iget-object p4, p0, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->eventsThrottledUntilMillis:Ljava/util/concurrent/ConcurrentHashMap;
+!
+!     add-long/2addr v0, p2
+!
+!     invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
+!
+!     move-result-object p2
+!
+!     invoke-interface {p4, p1, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+!
+      return-void
+  .end method
+
+  .method public final trackFireBase(Ljava/lang/String;Ljava/util/Map;)V
+!     .locals 8
+!     .annotation system Ldalvik/annotation/Signature;
+!         value = {
+!             "(",
+!             "Ljava/lang/String;",
+!             "Ljava/util/Map<",
+!             "Ljava/lang/String;",
+!             "+",
+!             "Ljava/lang/Object;",
+!             ">;)V"
+!         }
+!     .end annotation
+!
+!     const-string v0, "event"
+!
+!     invoke-static {p1, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     const-string/jumbo v0, "properties"
+!
+!     invoke-static {p2, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     .line 1
+!     new-instance v0, Landroid/os/Bundle;
+!
+!     invoke-direct {v0}, Landroid/os/Bundle;-><init>()V
+!
+!     invoke-direct {p0, v0, p2}, Lcom/discord/utilities/analytics/AnalyticsUtils$Tracker;->putMap(Landroid/os/Bundle;Ljava/util/Map;)Landroid/os/Bundle;
+!
+!     move-result-object v4
+!
+!     .line 2
+!     sget-object p2, Lcom/discord/utilities/analytics/AnalyticsUtils;->INSTANCE:Lcom/discord/utilities/analytics/AnalyticsUtils;
+!
+!     invoke-static {p2}, Lcom/discord/utilities/analytics/AnalyticsUtils;->access$getFireBaseInstance$p(Lcom/discord/utilities/analytics/AnalyticsUtils;)Lcom/google/firebase/analytics/FirebaseAnalytics;
+!
+!     move-result-object p2
+!
+!     if-eqz p2, :cond_0
+!
+!     .line 3
+!     iget-object v1, p2, Lcom/google/firebase/analytics/FirebaseAnalytics;->b:Lc/i/a/f/h/l/g;
+!
+!     const/4 v2, 0x0
+!
+!     const/4 v5, 0x0
+!
+!     const/4 v6, 0x1
+!
+!     const/4 v7, 0x0
+!
+!     move-object v3, p1
+!
+!     .line 4
+!     invoke-virtual/range {v1 .. v7}, Lc/i/a/f/h/l/g;->c(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ZZLjava/lang/Long;)V
+!
+!     :cond_0
+      return-void
+  .end method
+--- 584,610 ----
+  .end method
+
+  .method public final track(Lcom/discord/api/science/AnalyticsSchema;)V
+!     .locals 0
+
+      return-void
+  .end method
+
+  .method public final track(Lcom/discord/api/science/Science$Event;)V
+!     .locals 0
+      return-void
+  .end method
+
+  .method public final track(Ljava/lang/String;Ljava/util/Map;)V
+!     .locals 0
+      return-void
+  .end method
+
+  .method public final track(Lkotlin/Pair;JLkotlin/jvm/functions/Function0;)V
+!     .locals 0
+      return-void
+  .end method
+
+  .method public final trackFireBase(Ljava/lang/String;Ljava/util/Map;)V
+!     .locals 0
+      return-void
+  .end method
+
+diff -crB from/smali/com/adjust/sdk/AdjustInstance.smali to/smali/com/adjust/sdk/AdjustInstance.smali
+*** from/smali/com/adjust/sdk/AdjustInstance.smali        2021-08-21 17:20:11.626794200 +0100
+--- to/smali/com/adjust/sdk/AdjustInstance.smali  2021-08-21 17:20:28.335287700 +0100
+***************
+*** 514,541 ****
+
+  .method public isEnabled()Z
+      .locals 1
+!
+!     .line 1
+!     invoke-direct {p0}, Lcom/adjust/sdk/AdjustInstance;->checkActivityHandler()Z
+!
+!     move-result v0
+!
+!     if-nez v0, :cond_0
+!
+!     .line 2
+!     invoke-direct {p0}, Lcom/adjust/sdk/AdjustInstance;->isInstanceEnabled()Z
+!
+!     move-result v0
+!
+!     return v0
+!
+!     .line 3
+!     :cond_0
+!     iget-object v0, p0, Lcom/adjust/sdk/AdjustInstance;->activityHandler:Lcom/adjust/sdk/IActivityHandler;
+!
+!     invoke-interface {v0}, Lcom/adjust/sdk/IActivityHandler;->isEnabled()Z
+!
+!     move-result v0
+
+      return v0
+  .end method
+--- 514,521 ----
+
+  .method public isEnabled()Z
+      .locals 1
+!
+!     const/4 v0, 0x0
+
+      return v0
+  .end method
+***************
+*** 1281,1344 ****
+  .end method
+
+  .method public trackAdRevenue(Ljava/lang/String;Lorg/json/JSONObject;)V
+!     .locals 1
+!
+!     .line 1
+!     invoke-direct {p0}, Lcom/adjust/sdk/AdjustInstance;->checkActivityHandler()Z
+!
+!     move-result v0
+!
+!     if-nez v0, :cond_0
+!
+!     return-void
+!
+!     .line 2
+!     :cond_0
+!     iget-object v0, p0, Lcom/adjust/sdk/AdjustInstance;->activityHandler:Lcom/adjust/sdk/IActivityHandler;
+!
+!     invoke-interface {v0, p1, p2}, Lcom/adjust/sdk/IActivityHandler;->trackAdRevenue(Ljava/lang/String;Lorg/json/JSONObject;)V
+
+      return-void
+  .end method
+
+  .method public trackEvent(Lcom/adjust/sdk/AdjustEvent;)V
+!     .locals 1
+!
+!     .line 1
+!     invoke-direct {p0}, Lcom/adjust/sdk/AdjustInstance;->checkActivityHandler()Z
+!
+!     move-result v0
+!
+!     if-nez v0, :cond_0
+!
+!     return-void
+!
+!     .line 2
+!     :cond_0
+!     iget-object v0, p0, Lcom/adjust/sdk/AdjustInstance;->activityHandler:Lcom/adjust/sdk/IActivityHandler;
+!
+!     invoke-interface {v0, p1}, Lcom/adjust/sdk/IActivityHandler;->trackEvent(Lcom/adjust/sdk/AdjustEvent;)V
+
+      return-void
+  .end method
+
+  .method public trackPlayStoreSubscription(Lcom/adjust/sdk/AdjustPlayStoreSubscription;)V
+!     .locals 1
+!
+!     .line 1
+!     invoke-direct {p0}, Lcom/adjust/sdk/AdjustInstance;->checkActivityHandler()Z
+!
+!     move-result v0
+!
+!     if-nez v0, :cond_0
+!
+!     return-void
+!
+!     .line 2
+!     :cond_0
+!     iget-object v0, p0, Lcom/adjust/sdk/AdjustInstance;->activityHandler:Lcom/adjust/sdk/IActivityHandler;
+!
+!     invoke-interface {v0, p1}, Lcom/adjust/sdk/IActivityHandler;->trackPlayStoreSubscription(Lcom/adjust/sdk/AdjustPlayStoreSubscription;)V
+
+      return-void
+  .end method
+--- 1261,1279 ----
+  .end method
+
+  .method public trackAdRevenue(Ljava/lang/String;Lorg/json/JSONObject;)V
+!     .locals 0
+
+      return-void
+  .end method
+
+  .method public trackEvent(Lcom/adjust/sdk/AdjustEvent;)V
+!     .locals 0
+
+      return-void
+  .end method
+
+  .method public trackPlayStoreSubscription(Lcom/adjust/sdk/AdjustPlayStoreSubscription;)V
+!     .locals 0
+
+      return-void
+  .end method
+diff -crB from/smali/com/discord/utilities/analytics/AdjustConfig.smali to/smali/com/discord/utilities/analytics/AdjustConfig.smali
+*** from/smali/com/discord/utilities/analytics/AdjustConfig.smali	2020-11-20 16:30:28.163767600 +0000
+--- to/smali/com/discord/utilities/analytics/AdjustConfig.smali	2020-11-20 16:31:00.958556852 +0000
+***************
+*** 48,54 ****
+  
+  
+  # static fields
+! .field private static final ADJUST_APP_TOKEN:Ljava/lang/String; = "d8fcx8xdmrr4"
+  
+  .field private static final ADJUST_ENVIRONMENT:Ljava/lang/String;
+  
+--- 48,54 ----
+  
+  
+  # static fields
+! .field private static final ADJUST_APP_TOKEN:Ljava/lang/String; = "aaaaaaaaaaaa"
+  
+  .field private static final ADJUST_ENVIRONMENT:Ljava/lang/String;
+
+diff -crB from/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali to/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali
+*** from/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali	2020-11-20 16:30:28.167767702 +0000
+--- to/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali	2020-11-20 16:31:13.916842340 +0000
+***************
+*** 261,267 ****
+  .method private final setBaselineProperties()V
+      .locals 8
+
+!     const/16 v0, 0x9
+
+      new-array v0, v0, [Lkotlin/Pair;
+
+--- 261,267 ----
+  .method private final setBaselineProperties()V
+      .locals 8
+
+!     const/16 v0, 0x3
+
+      new-array v0, v0, [Lkotlin/Pair;
+
+***************
+*** 291,357 ****
+
+      aput-object v1, v0, v2
+
+-     const v1, 0x15c77
+-
+-     .line 3
+-     invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
+-
+-     move-result-object v1
+-
+-     const-string v2, "client_build_number"
+-
+-     invoke-static {v2, v1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+-
+-     move-result-object v1
+-
+-     const/4 v2, 0x2
+-
+-     aput-object v1, v0, v2
+-
+-     const-string v1, "client_version"
+-
+-     const-string v2, "89.7 - Alpha"
+-
+-     .line 4
+-     invoke-static {v1, v2}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+-
+-     move-result-object v1
+-
+-     const/4 v2, 0x3
+-
+-     aput-object v1, v0, v2
+-
+-     .line 5
+-     new-instance v1, Ljava/lang/StringBuilder;
+-
+-     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
+-
+-     sget-object v2, Landroid/os/Build;->MODEL:Ljava/lang/String;
+-
+-     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+-
+-     const-string v2, ", "
+-
+-     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+-
+-     sget-object v2, Landroid/os/Build;->PRODUCT:Ljava/lang/String;
+-
+-     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+-
+-     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+-
+-     move-result-object v1
+-
+-     const-string v2, "device"
+-
+-     invoke-static {v2, v1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+-
+-     move-result-object v1
+-
+-     const/4 v2, 0x4
+-
+-     aput-object v1, v0, v2
+-
+      const-string/jumbo v1, "os"
+
+      const-string v2, "Android"
+--- 291,296 ----
+***************
+*** 361,434 ****
+
+      move-result-object v1
+
+!     const/4 v2, 0x5
+!
+!     aput-object v1, v0, v2
+!
+!     .line 7
+!     sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
+!
+!     invoke-static {v1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
+!
+!     move-result-object v1
+!
+!     const-string/jumbo v2, "os_sdk_version"
+!
+!     invoke-static {v2, v1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object v1
+!
+!     const/4 v2, 0x6
+!
+!     aput-object v1, v0, v2
+!
+!     .line 8
+!     sget-object v1, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String;
+!
+!     const-string/jumbo v2, "os_version"
+!
+!     invoke-static {v2, v1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object v1
+!
+!     const/4 v2, 0x7
+!
+!     aput-object v1, v0, v2
+!
+!     .line 9
+!     invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;
+!
+!     move-result-object v1
+!
+!     invoke-virtual {v1}, Ljava/util/Locale;->toString()Ljava/lang/String;
+!
+!     move-result-object v2
+!
+!     const-string v1, "Locale.getDefault().toString()"
+!
+!     invoke-static {v2, v1}, Ld0/z/d/m;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     const-string v3, "_"
+!
+!     const-string v4, "-"
+!
+!     const/4 v5, 0x0
+!
+!     const/4 v6, 0x4
+!
+!     const/4 v7, 0x0
+!
+!     invoke-static/range {v2 .. v7}, Ld0/g0/t;->replace$default(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Ljava/lang/String;
+!
+!     move-result-object v1
+!
+!     const-string/jumbo v2, "system_locale"
+!
+!     invoke-static {v2, v1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object v1
+!
+!     const/16 v2, 0x8
+
+      aput-object v1, v0, v2
+
+--- 300,306 ----
+
+      move-result-object v1
+
+!     const/4 v2, 0x2
+
+      aput-object v1, v0, v2
+
+***************
+*** 561,1091 ****
+  .end method
+
+  .method public final setAccessibilityProperties(ZLjava/util/EnumSet;)V
+!     .locals 4
+!     .annotation system Ldalvik/annotation/Signature;
+!         value = {
+!             "(Z",
+!             "Ljava/util/EnumSet<",
+!             "Lcom/discord/utilities/accessibility/AccessibilityFeatureFlags;",
+!             ">;)V"
+!         }
+!     .end annotation
+!
+!     const-string v0, "features"
+!
+!     invoke-static {p2, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     .line 1
+!     invoke-interface {p2}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
+!
+!     move-result-object p2
+!
+!     const-wide/16 v0, 0x0
+!
+!     :goto_0
+!     invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z
+!
+!     move-result v2
+!
+!     if-eqz v2, :cond_0
+!
+!     invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+!
+!     move-result-object v2
+!
+!     check-cast v2, Lcom/discord/utilities/accessibility/AccessibilityFeatureFlags;
+!
+!     .line 2
+!     invoke-virtual {v2}, Lcom/discord/utilities/accessibility/AccessibilityFeatureFlags;->getValue()J
+!
+!     move-result-wide v2
+!
+!     or-long/2addr v0, v2
+!
+!     goto :goto_0
+!
+!     :cond_0
+!     const/4 p2, 0x2
+!
+!     new-array p2, p2, [Lkotlin/Pair;
+!
+!     const/4 v2, 0x0
+!
+!     .line 3
+!     invoke-static {p1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
+!
+!     move-result-object p1
+!
+!     const-string v3, "accessibility_support_enabled"
+!
+!     invoke-static {v3, p1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object p1
+!
+!     aput-object p1, p2, v2
+!
+!     const/4 p1, 0x1
+!
+!     .line 4
+!     invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
+!
+!     move-result-object v0
+!
+!     const-string v1, "accessibility_features"
+!
+!     invoke-static {v1, v0}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object v0
+!
+!     aput-object v0, p2, p1
+!
+!     .line 5
+!     invoke-static {p2}, Ld0/t/h0;->mapOf([Lkotlin/Pair;)Ljava/util/Map;
+!
+!     move-result-object p1
+!
+!     .line 6
+!     invoke-direct {p0, p1}, Lcom/discord/utilities/analytics/AnalyticSuperProperties;->updateSuperProperties(Ljava/util/Map;)V
+
+      return-void
+  .end method
+
+  .method public final setAdvertiserId(Ljava/lang/String;)V
+!     .locals 1
+!
+!     const-string v0, "advertiserId"
+!
+!     invoke-static {p1, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     const-string v0, "device_advertiser_id"
+!
+!     .line 1
+!     invoke-static {v0, p1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object p1
+!
+!     invoke-static {p1}, Ld0/t/g0;->mapOf(Lkotlin/Pair;)Ljava/util/Map;
+!
+!     move-result-object p1
+!
+!     .line 2
+!     invoke-direct {p0, p1}, Lcom/discord/utilities/analytics/AnalyticSuperProperties;->updateSuperProperties(Ljava/util/Map;)V
+
+      return-void
+  .end method
+
+  .method public final setCampaignProperties(Ljava/lang/String;)V
+!     .locals 11
+!
+!     const-string/jumbo v0, "referrerUrl"
+!
+!     invoke-static {p1, v0}, Ld0/z/d/m;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+!
+!     const/4 v0, 0x1
+!
+!     new-array v1, v0, [Lkotlin/Pair;
+!
+!     const-string/jumbo v2, "referrer"
+!
+!     .line 1
+!     invoke-static {v2, p1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object v2
+!
+!     const/4 v3, 0x0
+!
+!     aput-object v2, v1, v3
+!
+!     .line 2
+!     invoke-static {v1}, Ld0/t/h0;->mutableMapOf([Lkotlin/Pair;)Ljava/util/Map;
+!
+!     move-result-object v1
+!
+!     const-string v2, "&"
+!
+!     .line 3
+!     filled-new-array {v2}, [Ljava/lang/String;
+!
+!     move-result-object v5
+!
+!     const/4 v6, 0x0
+!
+!     const/4 v7, 0x0
+!
+!     const/4 v8, 0x6
+!
+!     const/4 v9, 0x0
+!
+!     move-object v4, p1
+!
+!     invoke-static/range {v4 .. v9}, Ld0/g0/w;->split$default(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
+!
+!     move-result-object p1
+!
+!     .line 4
+!     new-instance v2, Ljava/util/ArrayList;
+!
+!     const/16 v4, 0xa
+!
+!     invoke-static {p1, v4}, Ld0/t/o;->collectionSizeOrDefault(Ljava/lang/Iterable;I)I
+!
+!     move-result v4
+!
+!     invoke-direct {v2, v4}, Ljava/util/ArrayList;-><init>(I)V
+!
+!     .line 5
+!     invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
+!
+!     move-result-object p1
+!
+!     :goto_0
+!     invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
+!
+!     move-result v4
+!
+!     if-eqz v4, :cond_0
+!
+!     invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+!
+!     move-result-object v4
+!
+!     .line 6
+!     move-object v5, v4
+!
+!     check-cast v5, Ljava/lang/String;
+!
+!     const-string v4, "="
+!
+!     .line 7
+!     filled-new-array {v4}, [Ljava/lang/String;
+!
+!     move-result-object v6
+!
+!     const/4 v7, 0x0
+!
+!     const/4 v8, 0x0
+!
+!     const/4 v9, 0x6
+!
+!     const/4 v10, 0x0
+!
+!     invoke-static/range {v5 .. v10}, Ld0/g0/w;->split$default(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
+!
+!     move-result-object v4
+!
+!     invoke-interface {v2, v4}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
+!
+!     goto :goto_0
+!
+!     .line 8
+!     :cond_0
+!     new-instance p1, Ljava/util/ArrayList;
+!
+!     invoke-direct {p1}, Ljava/util/ArrayList;-><init>()V
+!
+!     .line 9
+!     invoke-interface {v2}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
+!
+!     move-result-object v2
+!
+!     :cond_1
+!     :goto_1
+!     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
+!
+!     move-result v4
+!
+!     if-eqz v4, :cond_3
+!
+!     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+!
+!     move-result-object v4
+!
+!     move-object v5, v4
+!
+!     check-cast v5, Ljava/util/List;
+!
+!     .line 10
+!     invoke-interface {v5}, Ljava/util/List;->size()I
+!
+!     move-result v5
+!
+!     const/4 v6, 0x2
+!
+!     if-ne v5, v6, :cond_2
+!
+!     const/4 v5, 0x1
+!
+!     goto :goto_2
+!
+!     :cond_2
+!     const/4 v5, 0x0
+!
+!     :goto_2
+!     if-eqz v5, :cond_1
+!
+!     invoke-interface {p1, v4}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
+!
+!     goto :goto_1
+!
+!     .line 11
+!     :cond_3
+!     new-instance v2, Ljava/util/ArrayList;
+!
+!     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
+!
+!     .line 12
+!     invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
+!
+!     move-result-object p1
+!
+!     :cond_4
+!     :goto_3
+!     invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
+!
+!     move-result v4
+!
+!     if-eqz v4, :cond_6
+!
+!     invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+!
+!     move-result-object v4
+!
+!     move-object v5, v4
+!
+!     check-cast v5, Ljava/util/List;
+!
+!     .line 13
+!     invoke-interface {v5, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
+!
+!     move-result-object v5
+!
+!     check-cast v5, Ljava/lang/String;
+!
+!     invoke-virtual {v5}, Ljava/lang/String;->hashCode()I
+!
+!     move-result v6
+!
+!     sparse-switch v6, :sswitch_data_0
+!
+!     goto :goto_5
+!
+!     :sswitch_0
+!     const-string/jumbo v6, "utm_source"
+!
+!     .line 14
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     goto :goto_4
+!
+!     :sswitch_1
+!     const-string v6, "location"
+!
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     goto :goto_4
+!
+!     :sswitch_2
+!     const-string/jumbo v6, "utm_medium"
+!
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     goto :goto_4
+!
+!     :sswitch_3
+!     const-string/jumbo v6, "search_engine"
+!
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     goto :goto_4
+!
+!     :sswitch_4
+!     const-string/jumbo v6, "mp_keyword"
+!
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     goto :goto_4
+!
+!     :sswitch_5
+!     const-string/jumbo v6, "utm_term"
+!
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     goto :goto_4
+!
+!     :sswitch_6
+!     const-string/jumbo v6, "utm_campaign"
+!
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     goto :goto_4
+!
+!     :sswitch_7
+!     const-string/jumbo v6, "referring_domain"
+!
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     goto :goto_4
+!
+!     :sswitch_8
+!     const-string/jumbo v6, "utm_content"
+!
+!     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+!
+!     move-result v5
+!
+!     if-eqz v5, :cond_5
+!
+!     :goto_4
+!     const/4 v5, 0x1
+!
+!     goto :goto_6
+!
+!     :cond_5
+!     :goto_5
+!     const/4 v5, 0x0
+!
+!     :goto_6
+!     if-eqz v5, :cond_4
+!
+!     .line 15
+!     invoke-interface {v2, v4}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
+!
+!     goto :goto_3
+!
+!     .line 16
+!     :cond_6
+!     invoke-interface {v2}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
+!
+!     move-result-object p1
+!
+!     :goto_7
+!     invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
+!
+!     move-result v2
+!
+!     if-eqz v2, :cond_7
+!
+!     invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+!
+!     move-result-object v2
+!
+!     .line 17
+!     check-cast v2, Ljava/util/List;
+!
+!     .line 18
+!     invoke-interface {v2, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
+!
+!     move-result-object v4
+!
+!     check-cast v4, Ljava/lang/String;
+!
+!     invoke-interface {v2, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
+!
+!     move-result-object v2
+!
+!     check-cast v2, Ljava/lang/String;
+!
+!     invoke-interface {v1, v4, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+!
+!     goto :goto_7
+!
+!     .line 19
+!     :cond_7
+!     invoke-direct {p0, v1}, Lcom/discord/utilities/analytics/AnalyticSuperProperties;->updateSuperProperties(Ljava/util/Map;)V
+
+      return-void
+-
+-     nop
+-
+-     :sswitch_data_0
+-     .sparse-switch
+-         -0x5bc8ed18 -> :sswitch_8
+-         -0x40f32acd -> :sswitch_7
+-         -0x3db0f7f -> :sswitch_6
+-         0x31ad945d -> :sswitch_5
+-         0x3d3a7f4d -> :sswitch_4
+-         0x3f4764b9 -> :sswitch_3
+-         0x70a1a726 -> :sswitch_2
+-         0x714f9fb5 -> :sswitch_1
+-         0x7b737fcc -> :sswitch_0
+-     .end sparse-switch
+  .end method
+
+  .method public final setClientPerformanceProperties(IJ)V
+!     .locals 2
+!
+!     const/4 v0, 0x2
+!
+!     new-array v0, v0, [Lkotlin/Pair;
+!
+!     .line 1
+!     invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
+!
+!     move-result-object p1
+!
+!     const-string v1, "client_performance_cpu"
+!
+!     invoke-static {v1, p1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object p1
+!
+!     const/4 v1, 0x0
+!
+!     aput-object p1, v0, v1
+!
+!     .line 2
+!     invoke-static {p2, p3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
+!
+!     move-result-object p1
+!
+!     const-string p2, "client_performance_memory"
+!
+!     invoke-static {p2, p1}, Ld0/o;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+!
+!     move-result-object p1
+!
+!     const/4 p2, 0x1
+!
+!     aput-object p1, v0, p2
+!
+!     .line 3
+!     invoke-static {v0}, Ld0/t/h0;->mapOf([Lkotlin/Pair;)Ljava/util/Map;
+!
+!     move-result-object p1
+!
+!     invoke-direct {p0, p1}, Lcom/discord/utilities/analytics/AnalyticSuperProperties;->updateSuperProperties(Ljava/util/Map;)V
+
+      return-void
+  .end method
+--- 433,457 ----
+  .end method
+
+  .method public final setAccessibilityProperties(ZLjava/util/EnumSet;)V
+!     .locals 0
+
+      return-void
+  .end method
+
+  .method public final setAdvertiserId(Ljava/lang/String;)V
+!     .locals 0
+
+      return-void
+  .end method
+
+  .method public final setCampaignProperties(Ljava/lang/String;)V
+!     .locals 0
+
+      return-void
+  .end method
+
+  .method public final setClientPerformanceProperties(IJ)V
+!     .locals 0
+
+      return-void
+  .end method
+
+diff -crB from/smali/com/discord/utilities/integrations/SpotifyHelper$openPlayStoreForSpotify$1.smali to/smali/com/discord/utilities/integrations/SpotifyHelper$openPlayStoreForSpotify$1.smali
+*** from/smali/com/discord/utilities/integrations/SpotifyHelper$openPlayStoreForSpotify$1.smali	2020-11-20 16:30:28.229769289 +0000
+--- to/smali/com/discord/utilities/integrations/SpotifyHelper$openPlayStoreForSpotify$1.smali	2020-11-20 16:31:00.958556852 +0000
+***************
+*** 68,74 ****
+
+      invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
+
+!     const-string v2, "https://app.adjust.com/ndjczk?campaign="
+
+      invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+--- 68,74 ----
+
+      invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
+
+!     const-string v2, "https://play.google.com/store/apps/details?id=com.spotify.music&trash="
+
+      invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
diff --git a/resources/patches/notrack/README.md b/resources/patches/notrack/README.md
new file mode 100644
index 0000000..d7edf97
--- /dev/null
+++ b/resources/patches/notrack/README.md
@@ -0,0 +1,10 @@
+## DisTok CutTheCord: No Track Patch
+
+This patch disables `track` (aka `science`) endpoint, firebase tracking, fabric.io tracking and crashlytics.
+
+As of 8.3.5g, it also removes various fields from `superProperties` that could be used to track your device. This was planned to be added all the way back in 8.3.2, but I apparently forgot to commit it. Bleh. Also as of 8.3.5, adjust and ganalytics are blocked as well. That should be all.
+
+Fuck telemetry.
+
+#### Available and tested on:
+- 89.7 - Alpha
diff --git a/resources/patches/nozlib/89207.patch b/resources/patches/nozlib/89207.patch
new file mode 100644
index 0000000..6bb6add
--- /dev/null
+++ b/resources/patches/nozlib/89207.patch
@@ -0,0 +1,34 @@
+diff -crB from/smali/com/discord/gateway/GatewaySocket.smali to/smali/com/discord/gateway/GatewaySocket.smali
+*** from/smali/com/discord/gateway/GatewaySocket.smali  2021-08-04 19:45:39.263375300 +0100
+--- to/smali/com/discord/gateway/GatewaySocket.smali    2021-08-04 23:26:38.221788200 +0100
+***************
+*** 1410,1416 ****
+
+      invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+!     const-string p1, "/?encoding=json&v=9&compress=zlib-stream"
+
+      invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+--- 1410,1416 ----
+
+      invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+!     const-string p1, "/?encoding=json&v=9"
+
+      invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+  
+diff -crB from/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali to/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali
+*** from/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali    2021-08-04 19:45:39.360374800 +0100
+--- to/smali/com/discord/gateway/io/OutgoingPayload$Identify.smali      2021-08-04 23:28:01.288223200 +0100
+***************
+*** 115,120 ****
+--- 115,122 ----
+
+      iput p2, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->largeThreshold:I
+
++     const/4 p3, 0x0
++
+      iput-boolean p3, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->compress:Z
+
+      iput-wide p4, p0, Lcom/discord/gateway/io/OutgoingPayload$Identify;->capabilities:J
\ No newline at end of file
diff --git a/resources/patches/nozlib/README.md b/resources/patches/nozlib/README.md
new file mode 100644
index 0000000..a059f3f
--- /dev/null
+++ b/resources/patches/nozlib/README.md
@@ -0,0 +1,6 @@
+## DisTok CutTheCord: No zlib-stream Patch
+
+This patch disables zlib-stream field on wss, making it easier to parse it.
+
+#### Available and tested on:
+- 89.7 - Alpha
diff --git a/patches/profilemention/1371.patch b/resources/patches/profilemention/1371.patch
similarity index 100%
rename from patches/profilemention/1371.patch
rename to resources/patches/profilemention/1371.patch
diff --git a/patches/profilemention/89207.patch b/resources/patches/profilemention/89207.patch
similarity index 100%
rename from patches/profilemention/89207.patch
rename to resources/patches/profilemention/89207.patch
diff --git a/patches/profilemention/README.md b/resources/patches/profilemention/README.md
similarity index 100%
rename from patches/profilemention/README.md
rename to resources/patches/profilemention/README.md
diff --git a/resources/patches/showtag/89207.patch b/resources/patches/showtag/89207.patch
new file mode 100644
index 0000000..d41527c
--- /dev/null
+++ b/resources/patches/showtag/89207.patch
@@ -0,0 +1,70 @@
+*** discord/com.discord/smali/com/discord/models/member/GuildMember$Companion.smali	2021-08-21 15:12:24.365015809 -0400
+--- com.discord/smali/com/discord/models/member/GuildMember$Companion.smali	2021-08-21 15:32:18.845023373 -0400
+***************
+*** 691,696 ****
+--- 691,728 ----
+      :goto_4
+      if-eqz v0, :cond_8
+  
++     new-instance v1, Ljava/lang/StringBuilder;
++ 
++     invoke-direct {v1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
++ 
++     const-string v2, " ("
++ 
++     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
++ 
++     invoke-interface {p1}, Lcom/discord/models/user/User;->getUsername()Ljava/lang/String;
++ 
++     move-result-object v2
++ 
++     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
++ 
++     const-string v2, "#"
++ 
++     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
++ 
++     invoke-interface {p1}, Lcom/discord/models/user/User;->getDiscriminator()I
++ 
++     move-result v2
++ 
++     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
++ 
++     const-string v2, ")"
++ 
++     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
++ 
++     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
++ 
++     move-result-object v0
++ 
+      goto :goto_5
+  
+      :cond_8
+***************
+*** 698,703 ****
+--- 730,753 ----
+  
+      move-result-object v0
+  
++     new-instance v1, Ljava/lang/StringBuilder;
++ 
++     invoke-direct {v1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
++ 
++     const-string v2, "#"
++ 
++     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
++ 
++     invoke-interface {p1}, Lcom/discord/models/user/User;->getDiscriminator()I
++ 
++     move-result v2
++ 
++     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
++ 
++     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
++ 
++     move-result-object v0
++ 
+      :goto_5
+      return-object v0
+  .end method
diff --git a/resources/patches/showtag/README.md b/resources/patches/showtag/README.md
new file mode 100644
index 0000000..e70fda2
--- /dev/null
+++ b/resources/patches/showtag/README.md
@@ -0,0 +1,21 @@
+## DisTok CutTheCord: Show Tag Patch
+
+This patch shows user's username after their nickname, if user has a nickname.
+
+Example, no nickname:
+
+![](https://lasagna.cat/i/c28755s6.png)
+
+Example, with nickname:
+
+![](https://lasagna.cat/i/uy68njkr.png)
+
+
+#### Technical notes
+
+This hooks into `getNickOrUsername` function, specifically after `getNickname` is verified to be not empty. It creates a stringbuilder and appends ` (username#discriminator)` to it.
+
+As of 78.4 - Alpha, it also appends `#discriminator` to username.
+
+#### Available and tested on:
+- 89.7 - Alpha
diff --git a/patches/supplemental/87202.patch b/resources/patches/supplemental/87202.patch
similarity index 100%
rename from patches/supplemental/87202.patch
rename to resources/patches/supplemental/87202.patch
diff --git a/patches/supplemental/89201.patch b/resources/patches/supplemental/89201.patch
similarity index 100%
rename from patches/supplemental/89201.patch
rename to resources/patches/supplemental/89201.patch
diff --git a/patches/supplemental/89206.patch b/resources/patches/supplemental/89206.patch
similarity index 100%
rename from patches/supplemental/89206.patch
rename to resources/patches/supplemental/89206.patch
diff --git a/patches/supplemental/89207.patch b/resources/patches/supplemental/89207.patch
similarity index 100%
rename from patches/supplemental/89207.patch
rename to resources/patches/supplemental/89207.patch
diff --git a/patches/supplemental/README.md b/resources/patches/supplemental/README.md
similarity index 100%
rename from patches/supplemental/README.md
rename to resources/patches/supplemental/README.md
diff --git a/patchport-state.json b/resources/patchport-state.json
similarity index 100%
rename from patchport-state.json
rename to resources/patchport-state.json
diff --git a/resources/46620/res/font/whitney_bold.ttf b/resources/res/46620/res/font/whitney_bold.ttf
similarity index 100%
rename from resources/46620/res/font/whitney_bold.ttf
rename to resources/res/46620/res/font/whitney_bold.ttf
diff --git a/resources/46620/res/font/whitney_medium.ttf b/resources/res/46620/res/font/whitney_medium.ttf
similarity index 100%
rename from resources/46620/res/font/whitney_medium.ttf
rename to resources/res/46620/res/font/whitney_medium.ttf
diff --git a/resources/46620/res/font/whitney_semibold.ttf b/resources/res/46620/res/font/whitney_semibold.ttf
similarity index 100%
rename from resources/46620/res/font/whitney_semibold.ttf
rename to resources/res/46620/res/font/whitney_semibold.ttf
diff --git a/resources/46620/res/mipmap-xxxhdpi/logo.png b/resources/res/46620/res/mipmap-xxxhdpi/logo.png
similarity index 100%
rename from resources/46620/res/mipmap-xxxhdpi/logo.png
rename to resources/res/46620/res/mipmap-xxxhdpi/logo.png
diff --git a/resources/46620/res/mipmap-xxxhdpi/logo_debug.png b/resources/res/46620/res/mipmap-xxxhdpi/logo_debug.png
similarity index 100%
rename from resources/46620/res/mipmap-xxxhdpi/logo_debug.png
rename to resources/res/46620/res/mipmap-xxxhdpi/logo_debug.png
diff --git a/resources/46620/res/raw/call_calling.mp3 b/resources/res/46620/res/raw/call_calling.mp3
similarity index 100%
rename from resources/46620/res/raw/call_calling.mp3
rename to resources/res/46620/res/raw/call_calling.mp3
diff --git a/resources/46620/res/raw/call_ringing.mp3 b/resources/res/46620/res/raw/call_ringing.mp3
similarity index 100%
rename from resources/46620/res/raw/call_ringing.mp3
rename to resources/res/46620/res/raw/call_ringing.mp3
diff --git a/resources/46620/res/raw/emoji_2122_fe0f.png b/resources/res/46620/res/raw/emoji_2122_fe0f.png
similarity index 100%
rename from resources/46620/res/raw/emoji_2122_fe0f.png
rename to resources/res/46620/res/raw/emoji_2122_fe0f.png
diff --git a/resources/46620/res/raw/emoji_ae_fe0f.png b/resources/res/46620/res/raw/emoji_ae_fe0f.png
similarity index 100%
rename from resources/46620/res/raw/emoji_ae_fe0f.png
rename to resources/res/46620/res/raw/emoji_ae_fe0f.png
diff --git a/resources/t3ch/res/font/whitney_bold.ttf b/resources/res/t3ch/res/font/whitney_bold.ttf
similarity index 100%
rename from resources/t3ch/res/font/whitney_bold.ttf
rename to resources/res/t3ch/res/font/whitney_bold.ttf
diff --git a/resources/t3ch/res/font/whitney_medium.ttf b/resources/res/t3ch/res/font/whitney_medium.ttf
similarity index 100%
rename from resources/t3ch/res/font/whitney_medium.ttf
rename to resources/res/t3ch/res/font/whitney_medium.ttf
diff --git a/resources/t3ch/res/font/whitney_semibold.ttf b/resources/res/t3ch/res/font/whitney_semibold.ttf
similarity index 100%
rename from resources/t3ch/res/font/whitney_semibold.ttf
rename to resources/res/t3ch/res/font/whitney_semibold.ttf
diff --git a/resources/t3ch/res/raw/call_ringing.mp3 b/resources/res/t3ch/res/raw/call_ringing.mp3
similarity index 100%
rename from resources/t3ch/res/raw/call_ringing.mp3
rename to resources/res/t3ch/res/raw/call_ringing.mp3
diff --git a/resources/t3ch/res/raw/emoji_2122_fe0f.png b/resources/res/t3ch/res/raw/emoji_2122_fe0f.png
similarity index 100%
rename from resources/t3ch/res/raw/emoji_2122_fe0f.png
rename to resources/res/t3ch/res/raw/emoji_2122_fe0f.png
diff --git a/resources/t3ch/res/raw/emoji_ae_fe0f.png b/resources/res/t3ch/res/raw/emoji_ae_fe0f.png
similarity index 100%
rename from resources/t3ch/res/raw/emoji_ae_fe0f.png
rename to resources/res/t3ch/res/raw/emoji_ae_fe0f.png
diff --git a/ctcci/.gitignore b/resources/scripts/ctcci/.gitignore
similarity index 100%
rename from ctcci/.gitignore
rename to resources/scripts/ctcci/.gitignore
diff --git a/ctcci/cleanartifacts.py b/resources/scripts/ctcci/cleanartifacts.py
similarity index 100%
rename from ctcci/cleanartifacts.py
rename to resources/scripts/ctcci/cleanartifacts.py
diff --git a/ctcci/ctcci.py b/resources/scripts/ctcci/ctcci.py
similarity index 100%
rename from ctcci/ctcci.py
rename to resources/scripts/ctcci/ctcci.py
diff --git a/ctcci/ctcconfig.example.py b/resources/scripts/ctcci/ctcconfig.example.py
similarity index 100%
rename from ctcci/ctcconfig.example.py
rename to resources/scripts/ctcci/ctcconfig.example.py
diff --git a/patchbisect.py b/resources/scripts/patchbisect.py
similarity index 100%
rename from patchbisect.py
rename to resources/scripts/patchbisect.py
diff --git a/resources/xmlpatches/betterdmheader/89207.xml b/resources/xmlpatches/betterdmheader/89207.xml
new file mode 100644
index 0000000..6299abe
--- /dev/null
+++ b/resources/xmlpatches/betterdmheader/89207.xml
@@ -0,0 +1,7 @@
+<diffs>
+    <diff file="res/menu/menu_chat_toolbar.xml" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
+        <replace sel="menu/item[@android:icon='@drawable/ic_call_24dp']/@app:showAsAction">never</replace>
+        <replace sel="menu/item[@android:icon='@drawable/ic_videocam_white_24dp']/@app:showAsAction">never</replace>
+        <replace sel="menu/item[@android:icon='@drawable/ic_search_white_24dp']/@app:showAsAction">always</replace>
+    </diff>
+</diffs>
\ No newline at end of file
diff --git a/resources/xmlpatches/betterrotation/89207.xml b/resources/xmlpatches/betterrotation/89207.xml
new file mode 100644
index 0000000..a327c25
--- /dev/null
+++ b/resources/xmlpatches/betterrotation/89207.xml
@@ -0,0 +1,6 @@
+<diffs>
+    <diff file="AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
+        <!-- Remove android:screenOrientation entry -->
+        <remove msel="manifest/application/activity/@android:screenOrientation"/>
+    </diff>
+</diffs>
\ No newline at end of file
diff --git a/resources/xmlpatches/betterrotation/README.md b/resources/xmlpatches/betterrotation/README.md
new file mode 100644
index 0000000..6d42a6c
--- /dev/null
+++ b/resources/xmlpatches/betterrotation/README.md
@@ -0,0 +1,5 @@
+## DisTok CutTheCord: Better Rotation
+
+This patch changes rotation settings to disallow upside down rotation.
+
+Contributed by [clienthax](https://gitdab.com/clienthax).
\ No newline at end of file
diff --git a/resources/xmlpatches/customtheme/82907.xml b/resources/xmlpatches/customtheme/82907.xml
new file mode 100644
index 0000000..0333f17
--- /dev/null
+++ b/resources/xmlpatches/customtheme/82907.xml
@@ -0,0 +1,43 @@
+<diffs>
+
+    <diff file="res/drawable/drawable_circle_black.xml" xmlns:android="http://schemas.android.com/apk/res/android">
+        <replace sel="shape/solid/@android:color">@android:color/transparent</replace>
+    </diff>
+
+    <diff file="res/drawable/drawable_overlay_channels_active_dark.xml" xmlns:android="http://schemas.android.com/apk/res/android">
+        <replace sel="layer-list/item/shape/solid/@android:color">@color/primary_500</replace>
+    </diff>
+
+    <diff file="res/layout/widget_chat_input.xml" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
+        <replace sel="LinearLayout/LinearLayout/RelativeLayout/@android:background">@color/primary_600</replace>
+    </diff>
+
+    <diff file="res/values/colors.xml">
+        <replace sel="resources/color[@name='dark_grey_2']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='dark_grey_2_alpha_10']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='design_dark_default_color_background']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='design_dark_default_color_surface']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='grey_unread']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='link']/text()">#ff50f148</replace>
+        <replace sel="resources/color[@name='primary_500']/text()">#ff333333</replace>
+        <replace sel="resources/color[@name='primary_500_alpha_20']/text()">#330f0f0f</replace>
+        <replace sel="resources/color[@name='primary_500_alpha_30']/text()">#4d0f0f0f</replace>
+        <replace sel="resources/color[@name='primary_500_alpha_32']/text()">#510f0f0f</replace>
+        <replace sel="resources/color[@name='primary_500_alpha_60']/text()">#990f0f0f</replace>
+        <replace sel="resources/color[@name='primary_600']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='primary_600_alpha_60']/text()">#99000000</replace>
+        <replace sel="resources/color[@name='primary_630']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='primary_630_alpha_60']/text()">#99000000</replace>
+        <replace sel="resources/color[@name='primary_630_alpha_90']/text()">#e6000000</replace>
+        <replace sel="resources/color[@name='primary_660']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='primary_660_alpha_90']/text()">#e6000000</replace>
+        <replace sel="resources/color[@name='primary_700']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='primary_700_alpha_50']/text()">#80000000</replace>
+        <replace sel="resources/color[@name='primary_700_alpha_60']/text()">#990f0f0f</replace>
+        <replace sel="resources/color[@name='primary_dark_600']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='primary_dark_630']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='primary_dark_700']/text()">#ff000000</replace>
+        <replace sel="resources/color[@name='tooltip_background_dark']/text()">#e6000000</replace>
+    </diff>
+
+</diffs>
\ No newline at end of file
diff --git a/resources/xmlpatches/noblocked/89207.xml b/resources/xmlpatches/noblocked/89207.xml
new file mode 100644
index 0000000..92e07dd
--- /dev/null
+++ b/resources/xmlpatches/noblocked/89207.xml
@@ -0,0 +1,13 @@
+<diffs>
+    <diff file="res/layout/widget_chat_list_adapter_item_blocked.xml" xmlns:android="http://schemas.android.com/apk/res/android">
+        <replace sel="RelativeLayout/@android:paddingLeft">0px</replace>
+        <replace sel="RelativeLayout/@android:paddingTop">0px</replace>
+        <replace sel="RelativeLayout/@android:paddingRight">0px</replace>
+        <replace sel="RelativeLayout/@android:layout_width">0px</replace>
+        <replace sel="RelativeLayout/@android:layout_height">0px</replace>
+        <replace sel="RelativeLayout/@android:layout_marginLeft">0px</replace>
+        <replace sel="RelativeLayout/TextView/@android:textSize">0sp</replace>
+        <replace sel="RelativeLayout/TextView/@android:paddingTop">0dip</replace>
+        <replace sel="RelativeLayout/TextView/@android:paddingBottom">0dip</replace>
+    </diff>
+</diffs>
\ No newline at end of file
diff --git a/resources/xmlpatches/noblocked/README.md b/resources/xmlpatches/noblocked/README.md
new file mode 100644
index 0000000..4cbd82b
--- /dev/null
+++ b/resources/xmlpatches/noblocked/README.md
@@ -0,0 +1,3 @@
+## DisTok CutTheCord: Custom Version Patch
+
+This patch completely hides the "# Blocked Message(s)" thing.
\ No newline at end of file
diff --git a/resources/xmlpatches/notrack/89207.xml b/resources/xmlpatches/notrack/89207.xml
new file mode 100644
index 0000000..b48873b
--- /dev/null
+++ b/resources/xmlpatches/notrack/89207.xml
@@ -0,0 +1,5 @@
+<diffs>
+    <diff file="res/values/strings.xml">
+        <replace sel="resources/string[@name='com.crashlytics.android.build_id']/text()">00000000-0000-0000-0000-000000000000</replace>
+    </diff>
+</diffs>
\ No newline at end of file
diff --git a/resources/xmlpatches/squareavatars/89207.xml b/resources/xmlpatches/squareavatars/89207.xml
new file mode 100644
index 0000000..73a7ed2
--- /dev/null
+++ b/resources/xmlpatches/squareavatars/89207.xml
@@ -0,0 +1,9 @@
+<diffs>
+    <diff file="res/values/dimens.xml">
+        <replace sel="/resources/dimen[@name='guild_icon_radius']/text()">0.0dp</replace>
+    </diff>
+    <diff file="res/values/styles.xml">
+        <replace sel="resources/style[@name='Avatar']/item[@name='roundAsCircle']/text()">false</replace>
+        <add pos="after" sel="resources/style[@name='Avatar']/item[@name='roundAsCircle']"><item name="roundedCornerRadius">3dp</item></add>
+    </diff>
+</diffs>
\ No newline at end of file
diff --git a/resources/xmlpatches/squareavatars/README.md b/resources/xmlpatches/squareavatars/README.md
new file mode 100644
index 0000000..85c4315
--- /dev/null
+++ b/resources/xmlpatches/squareavatars/README.md
@@ -0,0 +1,5 @@
+## DisTok CutTheCord: Square Avatars Patch
+
+This patch turns the circle avatars to their full square versions, letting you see the whole image.
+
+A very small amount of rounding is applied to make it look a little better.