diff --git a/Manifests/Manifest_LAOS-14.1.xml b/Manifests/Manifest_LAOS-14.1.xml
index 3e44e61a..27d5d0b9 100644
--- a/Manifests/Manifest_LAOS-14.1.xml
+++ b/Manifests/Manifest_LAOS-14.1.xml
@@ -88,6 +88,7 @@
+
diff --git a/Patches/LineageOS-14.1/Silence/Android.mk b/Patches/LineageOS-14.1/Silence/Android.mk
new file mode 100644
index 00000000..56e6c75b
--- /dev/null
+++ b/Patches/LineageOS-14.1/Silence/Android.mk
@@ -0,0 +1,30 @@
+#Created from F-Droid's Android.mk
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := Silence
+LOCAL_MODULE_TAGS := optional
+LOCAL_PACKAGE_NAME := Silence
+
+silence_root := $(LOCAL_PATH)
+silence_out := $(PWD)/$(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
+silence_build := $(silence_root)/build
+silence_apk := build/outputs/apk/Silence-release-unsigned.apk
+
+$(silence_root)/$(silence_apk):
+ rm -Rf $(silence_build)
+ mkdir -p $(silence_out)
+ ln -sf $(silence_out) $(silence_build)
+ cd $(silence_root) && git submodule update --recursive --init
+ cd $(silence_root) && gradle assembleRelease
+
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+#LOCAL_OVERRIDES_PACKAGES := Messaging
+LOCAL_SRC_FILES := $(silence_apk)
+LOCAL_MODULE_CLASS := APPS
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+
+include $(BUILD_PREBUILT)
diff --git a/Patches/LineageOS-14.1/android_packages_apps_CustomTiles/0001-Profiles.patch b/Patches/LineageOS-14.1/android_packages_apps_CustomTiles/0001-Profiles.patch
new file mode 100644
index 00000000..68c31054
--- /dev/null
+++ b/Patches/LineageOS-14.1/android_packages_apps_CustomTiles/0001-Profiles.patch
@@ -0,0 +1,253 @@
+From a42004f47da3d2f8128f77b7170bf84dd86d7e19 Mon Sep 17 00:00:00 2001
+From: Gabriele M
+Date: Mon, 27 Mar 2017 17:23:04 +0200
+Subject: [PATCH] CustomTiles: Add system profiles tile
+
+This tile opens a dialog to change the current profile. If system
+profiles are disabled, they'll be enabled as soon as a profile is
+selected. Disabling system profiles from the tile is not possible.
+
+Change-Id: I38b28be8fcf1eb7998d7d18df204802ea66554f6
+---
+ AndroidManifest.xml | 11 ++
+ res/drawable/ic_profiles.xml | 28 +++++
+ res/values/strings.xml | 4 +
+ src/org/lineageos/customtiles/MainActivity.java | 1 +
+ src/org/lineageos/customtiles/ProfileTile.java | 139 ++++++++++++++++++++++++
+ 5 files changed, 183 insertions(+)
+ create mode 100644 res/drawable/ic_profiles.xml
+ create mode 100644 src/org/lineageos/customtiles/ProfileTile.java
+
+diff --git a/AndroidManifest.xml b/AndroidManifest.xml
+index 6bef3c7..09f2de9 100644
+--- a/AndroidManifest.xml
++++ b/AndroidManifest.xml
+@@ -129,6 +129,17 @@
+
+
+
++
++
++
++
++
++
++
+
+
++
++
++
++
++
+diff --git a/res/values/strings.xml b/res/values/strings.xml
+index 60cb829..e0dd75e 100644
+--- a/res/values/strings.xml
++++ b/res/values/strings.xml
+@@ -24,8 +24,12 @@
+ Sync
+ Volume panel
+ USB tethering
++ System Profile
+
+
+ Caffeine
+
++ Select profile
++ No system profile found
++
+
+diff --git a/src/org/lineageos/customtiles/MainActivity.java b/src/org/lineageos/customtiles/MainActivity.java
+index 95d3015..4f9f3ba 100644
+--- a/src/org/lineageos/customtiles/MainActivity.java
++++ b/src/org/lineageos/customtiles/MainActivity.java
+@@ -33,6 +33,7 @@ public class MainActivity extends Activity {
+ put(".SyncTile", new Intent(Settings.ACTION_SYNC_SETTINGS));
+ put(".UsbTetherTile", new Intent(Settings.ACTION_WIRELESS_SETTINGS));
+ put(".VolumePanelTile", new Intent(Settings.ACTION_SOUND_SETTINGS));
++ put(".ProfileTile", new Intent("org.cyanogenmod.cmparts.PROFILES_SETTINGS"));
+ }};
+
+ @Override
+diff --git a/src/org/lineageos/customtiles/ProfileTile.java b/src/org/lineageos/customtiles/ProfileTile.java
+new file mode 100644
+index 0000000..ed3caab
+--- /dev/null
++++ b/src/org/lineageos/customtiles/ProfileTile.java
+@@ -0,0 +1,139 @@
++/*
++ * Copyright (C) 2017 The LineageOS Project
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++package org.lineageos.customtiles;
++
++import android.app.AlertDialog;
++import android.app.Dialog;
++import android.content.BroadcastReceiver;
++import android.content.Context;
++import android.content.DialogInterface;
++import android.content.Intent;
++import android.content.IntentFilter;
++import android.service.quicksettings.Tile;
++import android.service.quicksettings.TileService;
++
++import java.util.UUID;
++
++import cyanogenmod.app.Profile;
++import cyanogenmod.app.ProfileManager;
++import cyanogenmod.providers.CMSettings;
++
++public class ProfileTile extends TileService {
++
++ private ProfileManager mProfileManager;
++
++ private Profile mCurrentProfile;
++
++ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
++ @Override
++ public void onReceive(Context context, Intent intent) {
++ refresh();
++ }
++ };
++
++ @Override
++ public void onStartListening() {
++ super.onStartListening();
++
++ mProfileManager = ProfileManager.getInstance(getBaseContext());
++
++ IntentFilter filter = new IntentFilter();
++ filter.addAction(ProfileManager.INTENT_ACTION_PROFILE_SELECTED);
++ filter.addAction(ProfileManager.INTENT_ACTION_PROFILE_UPDATED);
++ filter.addAction(ProfileManager.PROFILES_STATE_CHANGED_ACTION);
++ registerReceiver(mReceiver, filter);
++
++ refresh();
++ }
++
++ @Override
++ public void onStopListening() {
++ unregisterReceiver(mReceiver);
++ super.onStopListening();
++ }
++
++ private Dialog selectProfileDialog() {
++
++ Profile[] profilesList = mProfileManager.getProfiles();
++ if (profilesList.length == 0) {
++ return new AlertDialog.Builder(getBaseContext())
++ .setTitle(R.string.dialog_system_profile_title)
++ .setMessage(R.string.dialog_system_profile_message)
++ .setPositiveButton(android.R.string.ok, null)
++ .create();
++ }
++
++ final CharSequence[] profileLabels = new CharSequence[profilesList.length];
++ final UUID[] profileUuids = new UUID[profilesList.length];
++ int selectedProfile = -1;
++ for (int i = 0; i < profilesList.length; i++) {
++ UUID profileUuuid = profilesList[i].getUuid();
++ profileLabels[i] = profilesList[i].getName();
++ profileUuids[i] = profileUuuid;
++ if (mCurrentProfile != null && mCurrentProfile.getUuid().equals(profileUuuid)) {
++ selectedProfile = i;
++ }
++ }
++
++ return new AlertDialog.Builder(getBaseContext())
++ .setTitle(R.string.dialog_system_profile_title)
++ .setSingleChoiceItems(profileLabels, selectedProfile,
++ new DialogInterface.OnClickListener() {
++ @Override
++ public void onClick(DialogInterface dialogInterface, int index) {
++ if (!mProfileManager.isProfilesEnabled()) {
++ enableProfiles();
++ }
++ mProfileManager.setActiveProfile(profileUuids[index]);
++ dialogInterface.dismiss();
++ }
++ })
++ .setNegativeButton(android.R.string.cancel, null)
++ .setCancelable(true)
++ .create();
++ }
++
++ @Override
++ public void onClick() {
++ super.onClick();
++
++ unlockAndRun(new Runnable() {
++ @Override
++ public void run() {
++ showDialog(selectProfileDialog());
++ }
++ });
++ }
++
++ private void refresh() {
++ if (mProfileManager.isProfilesEnabled()) {
++ mCurrentProfile = mProfileManager.getActiveProfile();
++ getQsTile().setState(Tile.STATE_ACTIVE);
++ getQsTile().setLabel(mCurrentProfile.getName());
++ } else {
++ mCurrentProfile = null;
++ getQsTile().setState(Tile.STATE_INACTIVE);
++ getQsTile().setLabel(getString(R.string.system_profile_label));
++ }
++ getQsTile().updateTile();
++ }
++
++ private void enableProfiles() {
++ CMSettings.System.putInt(getContentResolver(),
++ CMSettings.System.SYSTEM_PROFILES_ENABLED, 1);
++ }
++}
+--
+2.13.1
+
diff --git a/Patches/LineageOS-14.1/android_packages_apps_FakeStore/0001-Fixes.patch b/Patches/LineageOS-14.1/android_packages_apps_FakeStore/0001-Fixes.patch
deleted file mode 100644
index 7d25b257..00000000
--- a/Patches/LineageOS-14.1/android_packages_apps_FakeStore/0001-Fixes.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From fbc5ea49609b7719a9399541d6a9525910478961 Mon Sep 17 00:00:00 2001
-From: Tad
-Date: Sun, 18 Dec 2016 16:54:51 -0500
-Subject: [PATCH] Build fixes
-
-Change-Id: I5ae430d0af5b1a111079f92f6d7e001597152008
----
- Android.mk | 4 ++--
- build.gradle | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/Android.mk b/Android.mk
-index 2102bd1..9cc8e60 100644
---- a/Android.mk
-+++ b/Android.mk
-@@ -21,14 +21,14 @@ LOCAL_PACKAGE_NAME := FakeStore
-
- fakestore_root := $(LOCAL_PATH)
- fakestore_dir := fake-store
--fakestore_out := $(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
-+fakestore_out := $(PWD)/$(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
- fakestore_build := $(fakestore_root)/$(fakestore_dir)/build
- fakestore_apk := build/outputs/apk/fake-store-release-unsigned.apk
-
- $(fakestore_root)/$(fakestore_dir)/$(fakestore_apk):
- rm -Rf $(fakestore_build)
- mkdir -p $(fakestore_out)
-- ln -s $(fakestore_out) $(fakestore_build)
-+ ln -sf $(fakestore_out) $(fakestore_build)
- echo "sdk.dir=$(ANDROID_HOME)" > $(fakestore_root)/local.properties
- cd $(fakestore_root) && git submodule update --recursive --init
- cd $(fakestore_root)/$(fakestore_dir) && JAVA_TOOL_OPTIONS="$(JAVA_TOOL_OPTIONS) -Dfile.encoding=UTF8" ../gradlew assembleRelease
-diff --git a/build.gradle b/build.gradle
-index 3ec4bfc..8a7d2e2 100644
---- a/build.gradle
-+++ b/build.gradle
-@@ -26,7 +26,7 @@ buildscript {
-
- allprojects {
- apply plugin: 'idea'
-- ext.androidBuildVersionTools = "24.0.3"
-+ ext.androidBuildVersionTools = "25.0.1"
- ext.isReleaseVersion = false
- }
-
---
-2.9.3
-
diff --git a/Patches/LineageOS-14.1/android_packages_apps_IchnaeaNlpBackend/0001-Fixes.patch b/Patches/LineageOS-14.1/android_packages_apps_IchnaeaNlpBackend/0001-Fixes.patch
deleted file mode 100644
index 1f0bd5ca..00000000
--- a/Patches/LineageOS-14.1/android_packages_apps_IchnaeaNlpBackend/0001-Fixes.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 5178642bc1092a259d1dd366859083ebe740bb6e Mon Sep 17 00:00:00 2001
-From: Tad
-Date: Sun, 29 Jan 2017 12:50:51 -0500
-Subject: [PATCH] Build fixes
-
-Change-Id: I5843e1df6191d76641893b452eb5e6e0b4334418
----
- Android.mk | 2 +-
- build.gradle | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/Android.mk b/Android.mk
-index 1da0fbb..74fff61 100644
---- a/Android.mk
-+++ b/Android.mk
-@@ -7,7 +7,7 @@ LOCAL_MODULE_TAGS := optional
- LOCAL_PACKAGE_NAME := IchnaeaNlpBackend
-
- ichnaea_root := $(LOCAL_PATH)
--ichnaea_out := $(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
-+ichnaea_out := $(PWD)/$(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
- ichnaea_build := $(ichnaea_root)/build
- ichnaea_apk := build/outputs/apk/IchnaeaNlpBackend-release-unsigned.apk
-
-diff --git a/build.gradle b/build.gradle
-index abfde7c..f80763c 100644
---- a/build.gradle
-+++ b/build.gradle
-@@ -58,8 +58,8 @@ dependencies {
- }
-
- android {
-- compileSdkVersion 23
-- buildToolsVersion "23.0.2"
-+ compileSdkVersion 24
-+ buildToolsVersion "25.0.1"
-
- defaultConfig {
- versionName getMyVersionName()
---
-2.9.3
-
diff --git a/Patches/LineageOS-14.1/android_vendor_cm/sce.mk b/Patches/LineageOS-14.1/android_vendor_cm/sce.mk
index 8a7230a7..9e4b3ab6 100644
--- a/Patches/LineageOS-14.1/android_vendor_cm/sce.mk
+++ b/Patches/LineageOS-14.1/android_vendor_cm/sce.mk
@@ -10,3 +10,11 @@ PRODUCT_PACKAGES += \
PRODUCT_PACKAGES += \
F-Droid \
FDroidPrivilegedExtension
+
+# Offline Calendar
+#PRODUCT_PACKAGES += \
+# OfflineCalendar
+
+# Slience
+PRODUCT_PACKAGES += \
+ Silence
diff --git a/Patches/LineageOS-14.1/offline-calendar/Android.mk b/Patches/LineageOS-14.1/offline-calendar/Android.mk
new file mode 100644
index 00000000..5a040a88
--- /dev/null
+++ b/Patches/LineageOS-14.1/offline-calendar/Android.mk
@@ -0,0 +1,29 @@
+#Created from F-Droid's Android.mk
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := OfflineCalendar
+LOCAL_MODULE_TAGS := optional
+LOCAL_PACKAGE_NAME := OfflineCalendar
+
+offlinecalendar_root := $(LOCAL_PATH)
+offlinecalendar_dir := Offline-Calendar
+offlinecalendar_out := $(PWD)/$(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
+offlinecalendar_build := $(offlinecalendar_root)/$(offlinecalendar_dir)/build
+offlinecalendar_apk := build/outputs/apk/$(offlinecalendar_dir)-release-unsigned.apk
+
+$(offlinecalendar_root)/$(offlinecalendar_dir)/$(offlinecalendar_apk):
+ rm -Rf $(offlinecalendar_build)
+ mkdir -p $(offlinecalendar_out)
+ ln -sf $(offlinecalendar_out) $(offlinecalendar_build)
+ cd $(offlinecalendar_root)/$(offlinecalendar_dir) && gradle assembleRelease
+
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_SRC_FILES := $(offlinecalendar_dir)/$(offlinecalendar_apk)
+LOCAL_MODULE_CLASS := APPS
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+
+include $(BUILD_PREBUILT)
diff --git a/Scripts/LAOS-14.1_Patches.sh b/Scripts/LAOS-14.1_Patches.sh
index 100f31b7..64395ae2 100755
--- a/Scripts/LAOS-14.1_Patches.sh
+++ b/Scripts/LAOS-14.1_Patches.sh
@@ -2,7 +2,7 @@
#Copyright (c) 2015-2017 Spot Communications, Inc.
#Delete Everything
-#repo forall -c 'git add -A && git reset --hard' && rm -rf packages/apps/F-Droid packages/apps/GmsCore out
+#repo forall -c 'git add -A && git reset --hard' && rm -rf packages/apps/F-Droid packages/apps/GmsCore packages/apps/Silence out
#Prepare a build
#repo sync -j20 --force-sync && sh ../../Scripts/LAOS-14.1_Patches.sh && source ../../Scripts/Generic_Deblob.sh && source build/envsetup.sh && export ANDROID_HOME="/home/$USER/Android/Sdk" && export ANDROID_JACK_VM_ARGS="-Xmx6144m -Xms512m -Dfile.encoding=UTF-8 -XX:+TieredCompilation" && export JACK_SERVER_VM_ARGUMENTS="${ANDROID_JACK_VM_ARGS}" && GRADLE_OPTS=-Xmx2048m && export KBUILD_BUILD_USER=emy && export KBUILD_BUILD_HOST=dosbm
@@ -91,7 +91,7 @@ enter "packages/apps/CMUpdater"
patch -p1 < $patches"android_packages_apps_CMUpdater/0001-Server.patch" #Switch to our server
enter "packages/apps/CustomTiles"
-git fetch https://review.lineageos.org/LineageOS/android_packages_apps_CustomTiles refs/changes/69/167069/1 && git cherry-pick FETCH_HEAD #System profiles tile
+patch -p1 < $patches"android_packages_apps_CustomTiles/0001-Profiles.patch" #System profiles tile
enter "packages/apps/Dialer"
sed -i 's/FLP_DEFAULT = FLP_GOOGLE;/FLP_DEFAULT = FLP_OPENSTREETMAP;/' src/com/android/dialer/lookup/LookupSettings.java; #Change default FLP to OpenStreetMap
@@ -100,7 +100,9 @@ sed -i 's/CMSettings.System.ENABLE_PEOPLE_LOOKUP, 1)/CMSettings.System.ENABLE_PE
#sed -i 's/CMSettings.System.ENABLE_REVERSE_LOOKUP, 1)/CMSettings.System.ENABLE_REVERSE_LOOKUP, 0)/' src/com/android/dialer/lookup/LookupSettings.java; #Disable RLP by default
enter "packages/apps/FakeStore"
-patch -p1 < $patches"android_packages_apps_FakeStore/0001-Fixes.patch" #Update output paths and build tools
+sed -i 's|$(OUT_DIR)/target/|$(PWD)/$(OUT_DIR)/target/|' Android.mk;
+sed -i 's/ln -s /ln -sf /' Android.mk;
+sed -i 's/ext.androidBuildVersionTools = "24.0.3"/ext.androidBuildVersionTools = "25.0.3"/' build.gradle;
enter "packages/apps/FDroid"
patch -p1 < $patches"android_packages_apps_FDroid/0001.patch" #Enable privigled module
@@ -111,18 +113,31 @@ patch -p1 < $patches"android_packages_apps_FDroidPrivilegedExtension/0002-Releas
#release-keys: CB:1E:E2:EC:40:D0:5E:D6:78:F4:2A:E7:01:CD:FA:29:EE:A7:9D:0E:6D:63:32:76:DE:23:0B:F3:49:40:67:C3
#test-keys: C8:A2:E9:BC:CF:59:7C:2F:B6:DC:66:BE:E2:93:FC:13:F2:FC:47:EC:77:BC:6B:2B:0D:52:C1:1F:51:19:2A:B8
+enter "packages/apps/GsfProxy"
+sed -i 's/ext.androidBuildVersionTools = "24.0.3"/ext.androidBuildVersionTools = "25.0.3"/' build.gradle;
+
enter "packages/apps/IchnaeaNlpBackend"
-patch -p1 < $patches"android_packages_apps_IchnaeaNlpBackend/0001-Fixes.patch" #Update output paths and build tools
+sed -i 's|$(OUT_DIR)/target/|$(PWD)/$(OUT_DIR)/target/|' Android.mk;
+sed -i 's/compileSdkVersion 23/compileSdkVersion 25/' build.gradle;
+sed -i 's/buildToolsVersion "23.0.2"/buildToolsVersion "25.0.3"/' build.gradle;
enter "packages/apps/Nfc"
sed -i 's/static final boolean NFC_ON_DEFAULT = true;/static final boolean NFC_ON_DEFAULT = false;/' src/com/android/nfc/NfcService.java; #Disable NFC by default
sed -i 's/static final boolean NDEF_PUSH_ON_DEFAULT = true;/static final boolean NDEF_PUSH_ON_DEFAULT = false;/' src/com/android/nfc/NfcService.java; #Disable NDEF Push by default
+enter "packages/apps/offline-calendar"
+cp $patches"offline-calendar/Android.mk" Android.mk #Add a build file
+sed -i 's/compileSdkVersion 23/compileSdkVersion 25/' Offline-Calendar/build.gradle;
+sed -i 's/buildToolsVersion "23.0.3"/buildToolsVersion "25.0.3"/' Offline-Calendar/build.gradle;
+
enter "packages/apps/Settings"
sed -i 's/Settings.Secure.WEB_ACTION_ENABLED, 1/Settings.Secure.WEB_ACTION_ENABLED, 0/' src/com/android/settings/applications/ManageDomainUrls.java; #Disable "Instant Apps"
sed -i 's/private int mPasswordMaxLength = 16;/private int mPasswordMaxLength = 48;/' src/com/android/settings/ChooseLockPassword.java; #Increase max password length
sed -i 's/GSETTINGS_PROVIDER = "com.google.settings";/GSETTINGS_PROVIDER = "com.google.oQuae4av";/' src/com/android/settings/PrivacySettings.java; #MicroG doesn't support Backup, hide the options
+enter "packages/apps/Silence"
+cp $patches"Silence/Android.mk" Android.mk #Add a build file
+
enter "packages/inputmethods/LatinIME"
patch -p1 < $patches"android_packages_inputmethods_LatinIME/0001-Voice.patch" #Remove voice input key
@@ -163,7 +178,7 @@ disableDexPreOpt #bootloops
patch -p1 < $patches"android_device_lge_mako/0001-Enable_LTE.patch" #Enable LTE support (Requires LTE hybrid modem to be flashed)
#enter "kernel/lge/mako"
-#patch -p1 < $patches"android_kernel_lge_mako/0001-OverUnderClock.patch" #384Mhz -> 81Mhz, 1.51Ghz -> 1.94Ghz =+1.72Ghz #XXX: Causes *excessively* long boot times
+#patch -p1 < $patches"android_kernel_lge_mako/0001-OverUnderClock.patch" #384Mhz -> 81Mhz, 1.51Ghz -> 1.94Ghz =+1.72Ghz XXX: Causes *excessively* long boot times
enter "kernel/lge/hammerhead"
patch -p1 < $patches"android_kernel_lge_hammerhead/0001-OverUnderClock.patch" #2.26Ghz -> 2.95Ghz =+2.76Ghz