#!/bin/sh

echo "KIS for Mac 21.1 - Patch C"
echo "Patch script v. 1.4"

KAV_DIR="/Library/Application Support/Kaspersky Lab/KAV"
KAV_BINARIES_DIR="$KAV_DIR/Binaries"
KAV_DATA_DIR="$KAV_DIR/Data"
KAV_APP_PKG="$KAV_DATA_DIR/kav_app.tar.gz"
KAV_AGENT_PKG="$KAV_DATA_DIR/kav_agent.tar.gz"
KAV_UPDATE_PKG="$KAV_DATA_DIR/kav_update.tar.gz"
KAV_UNINSTALLER_PKG="$KAV_DATA_DIR/kav_uninstaller.tar.gz"
BASES_DIR="$KAV_DIR/Bases"
BASES_KLAVA_DIR="$BASES_DIR/KLAVA"
KAV_AGENT_APP_PATH="$KAV_DIR/Applications/Kaspersky Anti-Virus Agent.app"
KAV_UPDATE_APP_PATH="$KAV_DIR/Applications/Kaspersky Anti-Virus Update.app"
KAV_UNINSTALLER_APP_PATH="$KAV_DIR/Applications/Kaspersky Uninstaller.app"
KAV_AGENT_WATCHPATH="$KAV_DIR/kickstart_gui"
LAUNCHAGENT_DIR="/Library/LaunchAgents"
LAUNCHAGENT_KAV_PLIST="$LAUNCHAGENT_DIR/com.kaspersky.kav.agent.plist"
DEFAULT_KAVAPP_PATH="/Applications/Kaspersky Anti-Virus For Mac.app"
LOC_TGZ="$KAV_DATA_DIR/loc.tar.gz"
LOC_DIR="$KAV_DIR/Loc"
DOC_TGZ="$KAV_DATA_DIR/doc.tar.gz"
DOC_DIR="$KAV_DIR/Doc"
CONFIG_XML_CHANGES_TMP="/tmp/kav_config_xml_changes"

UPDATE_CFG_SCRIPT="$KAV_BINARIES_DIR/update_cfg.pl"
UPDATE_CFG_TARGET="$KAV_BINARIES_DIR/config.xml"

get_environment_key()
{
    /usr/bin/xmllint --xpath "//propertiesmap/key[@name=\"environment\"]/tSTRING[@name=\"$1\"]/text()" "$UPDATE_CFG_TARGET"
}

get_last_patch_deployment()
{
    /usr/bin/xmllint --xpath "//propertiesmap/key[@name=\"Timestamps\"]/tDWORD[@name=\"LastPatchDeployment\"]/text()" "$UPDATE_CFG_TARGET"
}

stop_kav_app()
{
    local KAVAPP_RECORD=$(ps -axwo pid,command | grep -v grep | grep "Contents/MacOS/kav_app")
    local KAVPID=$(/bin/echo -n "$KAVAPP_RECORD" | awk '{print $1}')
    if [ "$KAVPID" != "" ]
    then
        RELAUNCH_KAVAPP_PATH=$(/bin/echo -n "$KAVAPP_RECORD" | sed 's/[ ]*'"$KAVPID"'[ ]*\(.*\.app\).*/\1/')
        /bin/kill -s KILL "$KAVPID"
    fi
}

stop_kav_agent()
{
    local KAVPID=$(ps -axwo pid,command | grep -v grep | grep "Contents/MacOS/kav_agent" | awk '{print $1}')
    if [ "$KAVPID" != "" ]
    then
        /bin/kill -s KILL $KAVPID
        RESTART_KAVAGENT=1
    fi
}

if [ "$1" != "OnHotfixInstalled" ]; then
    PRODUCT_TYPE=$(get_environment_key "ProductType")
    echo "ProductType:      $PRODUCT_TYPE"
    REGION_TYPE=$(get_environment_key "ProductRegion")
    echo "ProductRegion:    $REGION_TYPE"
    MATCHED_ARCHIVE="${PRODUCT_TYPE}_${REGION_TYPE}".tar.gz
    echo "Matched archive:  $MATCHED_ARCHIVE"

    if [ -f "$UPDATE_CFG_SCRIPT" ]
    then
    	echo ""
    	echo "Stopping application..."
    	stop_kav_app

    	echo ""
    	echo "Stopping possibly respawned application..."
    	stop_kav_app
    fi

    if [ "$LOC_TGZ" != "" ]
    then
        if [ -e "$LOC_TGZ" ]
        then
            LOC_EXTRACTION_TEMP_PATH=$(mktemp -d)
            echo ""
            echo "Extracting $LOC_TGZ into $LOC_EXTRACTION_TEMP_PATH"
            /usr/bin/tar -xzvf "$LOC_TGZ" -C "$LOC_EXTRACTION_TEMP_PATH"
            echo "Extracted: "
            ls -la "$LOC_EXTRACTION_TEMP_PATH"

            echo ""
            echo "Deploying localizations..."
            if [ -f "$LOC_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" ]; then
                CURRENT_LOC_EXTRACTION_TEMP_PATH=$(mktemp -d)
                echo "Extracting application resources from $MATCHED_ARCHIVE to $CURRENT_LOC_EXTRACTION_TEMP_PATH..."
                /usr/bin/tar -xzvf "$LOC_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" -C "$CURRENT_LOC_EXTRACTION_TEMP_PATH"
                cp -Rfv "$CURRENT_LOC_EXTRACTION_TEMP_PATH"/ "$LOC_DIR"
            else
                echo "No matched archive in $LOC_EXTRACTION_TEMP_PATH, do not apply patch for $LOC_DIR"
            fi
        fi
    fi

    if [ "$DOC_TGZ" != "" ]
    then
        if [ -e "$DOC_TGZ" ]
        then
            DOC_EXTRACTION_TEMP_PATH=$(mktemp -d)
            echo ""
            echo "Extracting $DOC_TGZ into $DOC_EXTRACTION_TEMP_PATH"
            /usr/bin/tar -xzvf "$DOC_TGZ" -C "$DOC_EXTRACTION_TEMP_PATH"
            echo "Extracted: "
            ls -la "$DOC_EXTRACTION_TEMP_PATH"

            echo ""
            echo "Deploying docs..."
            if [ -f "$DOC_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" ]; then
                CURRENT_DOC_EXTRACTION_TEMP_PATH=$(mktemp -d)
                echo "Extracting application resources from $MATCHED_ARCHIVE to $CURRENT_DOC_EXTRACTION_TEMP_PATH..."
                /usr/bin/tar -xzvf "$DOC_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" -C "$CURRENT_DOC_EXTRACTION_TEMP_PATH"
                cp -Rfv "$CURRENT_DOC_EXTRACTION_TEMP_PATH"/ "$DOC_DIR"
            else
                echo "No matched archive in $DOC_EXTRACTION_TEMP_PATH, do not apply patch for $DOC_DIR"
            fi
        fi
    fi

    if [ "$KAV_APP_PKG" != "" ]
    then
        LAST_PATCH_DEPLOYMENT_TIMESTAMP=$(get_last_patch_deployment)
        KAV_APP_PKG_TIMESTAMP=$(stat -f "%m" "$KAV_APP_PKG")
        echo "kav app pkg timestamp: $KAV_APP_PKG_TIMESTAMP, last path deployment timestamp: $LAST_PATCH_DEPLOYMENT_TIMESTAMP"

        if [[ (-e "$KAV_APP_PKG") && ($KAV_APP_PKG_TIMESTAMP > $LAST_PATCH_DEPLOYMENT_TIMESTAMP) ]]; then
            KAV_APP_EXTRACTION_TEMP_PATH=$(mktemp -d)
            echo ""
            echo "Extracting $KAV_APP_PKG into $KAV_APP_EXTRACTION_TEMP_PATH"
            /usr/bin/tar -xzvf "$KAV_APP_PKG" -C "$KAV_APP_EXTRACTION_TEMP_PATH"
            echo "Extracted: "
            ls -la "$KAV_APP_EXTRACTION_TEMP_PATH"

    		echo ""
    		echo "Deploying application resources..."

            KAVAPP_PATH="$DEFAULT_KAVAPP_PATH"

            echo ""

            if [ -f "$KAV_APP_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" ]; then
                CURRENT_KAV_APP_EXTRACTION_TEMP_PATH=$(mktemp -d)
                echo "Extracting application resources from $MATCHED_ARCHIVE to $CURRENT_KAV_APP_EXTRACTION_TEMP_PATH..."
                /usr/bin/tar -xzvf "$KAV_APP_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" -C "$CURRENT_KAV_APP_EXTRACTION_TEMP_PATH"

                KAV_APP_CUR_RES_TEMP_PATH=$(mktemp -d)
                echo ""
                echo "Saving current app resources to ${KAV_APP_CUR_RES_TEMP_PATH}"
                cp -rfv "${KAVAPP_PATH}/Contents/Resources" "${KAV_APP_CUR_RES_TEMP_PATH}"

                KAV_APP_SAFARI_EXT_CUR_RES_TEMP_PATH=$(mktemp -d)
                echo ""
                echo "Saving current safari extension resources to ${KAV_APP_SAFARI_EXT_CUR_RES_TEMP_PATH}"
                cp -rfv "${KAVAPP_PATH}/Contents/PlugIns/KasperskySecurity.appex/Contents/Resources" "${KAV_APP_SAFARI_EXT_CUR_RES_TEMP_PATH}"

                echo ""
                echo "Deleting current app"
                /bin/rm -rfv "${KAVAPP_PATH}"

                echo ""
                KAV_APP_PARENT_DIR="${KAVAPP_PATH}"
                echo "Moving ${CURRENT_KAV_APP_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus For Mac.app to ${KAV_APP_PARENT_DIR}"
                cp -rvf "${CURRENT_KAV_APP_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus For Mac.app" "${KAV_APP_PARENT_DIR}"

                
                echo ""
                echo "Updating app resources"
                
                echo ""
                echo "Deleting ${KAVAPP_PATH}/Contents/Resources"
                /bin/rm -rfv "${KAVAPP_PATH}/Contents/Resources"

                echo ""
                echo "Moving ${KAV_APP_CUR_RES_TEMP_PATH}/Resources to ${KAVAPP_PATH}/Contents"
                mv "${KAV_APP_CUR_RES_TEMP_PATH}/Resources" "${KAVAPP_PATH}/Contents"

                echo ""
                echo "Copying new resources to app"
                cp -Rfv "${CURRENT_KAV_APP_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus For Mac.app/Contents/Resources/"* "${KAVAPP_PATH}/Contents/Resources"

                echo ""
                echo "Updating safari extension resources"

                echo ""
                echo "Deleting ${KAVAPP_PATH}/Contents/PlugIns/KasperskySecurity.appex/Contents/Resources"
                /bin/rm -rfv "${KAVAPP_PATH}/Contents/PlugIns/KasperskySecurity.appex/Contents/Resources"

                echo ""
                echo "Moving ${KAV_APP_SAFARI_EXT_CUR_RES_TEMP_PATH}/Resources to ${KAVAPP_PATH}/Contents/PlugIns/KasperskySecurity.appex/Contents"
                mv "${KAV_APP_SAFARI_EXT_CUR_RES_TEMP_PATH}/Resources" "${KAVAPP_PATH}/Contents/PlugIns/KasperskySecurity.appex/Contents"

                echo ""
                echo "Copying new resources to app"
                cp -Rfv "${CURRENT_KAV_APP_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus For Mac.app/Contents/PlugIns/KasperskySecurity.appex/Contents/Resources/"* "${KAVAPP_PATH}/Contents/PlugIns/KasperskySecurity.appex/Contents/Resources"

                touch "$KAVAPP_PATH"
            else
                echo "No matched archive in $KAV_APP_EXTRACTION_TEMP_PATH, do not apply patch for $KAVAPP_PATH"
            fi

    		echo ""
    		echo "Stopping application..."
    		stop_kav_app
    	fi
    else
        echo ""
        echo "KAV app pkg path is empty"
    fi

    if [ "$KAV_AGENT_PKG" != "" ]
    then
        LAST_PATCH_DEPLOYMENT_TIMESTAMP=$(get_last_patch_deployment)
        KAV_AGENT_PKG_TIMESTAMP=$(stat -f "%m" "$KAV_AGENT_PKG")
        echo "kav app pkg timestamp: $KAV_AGENT_PKG_TIMESTAMP, last path deployment timestamp: $LAST_PATCH_DEPLOYMENT_TIMESTAMP"

        if [[ (-e "$KAV_AGENT_PKG") && ($KAV_AGENT_PKG_TIMESTAMP > $LAST_PATCH_DEPLOYMENT_TIMESTAMP) ]];
    	then
            KAV_AGENT_EXTRACTION_TEMP_PATH=$(mktemp -d)
            echo ""
            echo "Extracting agent resources to $KAV_AGENT_EXTRACTION_TEMP_PATH..."
            /usr/bin/tar -xzvf "$KAV_AGENT_PKG" -C "$KAV_AGENT_EXTRACTION_TEMP_PATH"
            echo "Extracted: "
            ls -la "$KAV_AGENT_EXTRACTION_TEMP_PATH"

            echo ""
            echo "Deploying agent resources..."

            if [ -f "$KAV_AGENT_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" ]; then
                CURRENT_KAV_AGENT_EXTRACTION_TEMP_PATH=$(mktemp -d)
                echo "Extracting application resources from $MATCHED_ARCHIVE to $CURRENT_KAV_AGENT_EXTRACTION_TEMP_PATH..."
                /usr/bin/tar -xzvf "$KAV_AGENT_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" -C "$CURRENT_KAV_AGENT_EXTRACTION_TEMP_PATH"

                KAV_AGENT_CUR_RES_TEMP_PATH=$(mktemp -d)
                echo ""
                echo "Saving current agent resources to ${KAV_AGENT_CUR_RES_TEMP_PATH}"
                cp -rfv "${KAV_AGENT_APP_PATH}/Contents/Resources" "${KAV_AGENT_CUR_RES_TEMP_PATH}"

                echo ""
                echo "Deleting current agent"
                /bin/rm -rfv "${KAV_AGENT_APP_PATH}"

                echo ""
                echo "Moving ${CURRENT_KAV_AGENT_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus Agent.app to ${KAV_DIR}/Applications"
                cp -rvf "${CURRENT_KAV_AGENT_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus Agent.app" "${KAV_DIR}/Applications"

                echo ""
                echo "Deleting ${KAV_AGENT_APP_PATH}/Contents/Resources"
                /bin/rm -rfv "${KAV_AGENT_APP_PATH}/Contents/Resources"

                echo ""
                echo "Moving ${KAV_AGENT_CUR_RES_TEMP_PATH}/Resources to ${KAV_AGENT_APP_PATH}/Contents"
                mv "${KAV_AGENT_CUR_RES_TEMP_PATH}/Resources" "${KAV_AGENT_APP_PATH}/Contents"

                echo ""
                echo "Copying new resources to agent"
                cp -Rfv "${CURRENT_KAV_AGENT_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus Agent.app/Contents/Resources/"* "${KAV_AGENT_APP_PATH}/Contents/Resources"

                touch "${KAV_AGENT_APP_PATH}"
            else
                echo "No matched archive in $KAV_AGENT_EXTRACTION_TEMP_PATH, do not apply patch for $KAV_AGENT_APP_PATH"
            fi

    		echo ""
    		echo "Stopping agent..."
    		stop_kav_agent

    		if [ "$RESTART_KAVAGENT" == "1" ]
    		then
    			AGENTPID=$(ps -axwo pid,command | grep -v grep | grep "Contents/MacOS/kav_agent" | awk '{print $1}')
    			if [ "$AGENTPID" == "" ]
    			then
    				echo ""
    				echo "Restarting agent..."
    				LOGINWINDOW_RECORDS=$(ps -axwo pid,uid,command | grep -v grep | grep loginwindow)
    				for RECORD in "$LOGINWINDOW_RECORDS"
    				do
    					LOGINWINDOW_PID=$(/bin/echo -n "$RECORD" | awk '{print $1}')
    					LOGINWINDOW_UID=$(/bin/echo -n "$RECORD" | awk '{print $2}')
    					echo "Loading launch agent for uid $LOGINWINDOW_UID..."
    					launchctl asuser "$LOGINWINDOW_UID" launchctl load "$LAUNCHAGENT_KAV_PLIST"
    				done
    				echo "Kickstarting agent..."
    				touch "$KAV_AGENT_WATCHPATH"
    			fi
    		fi
    	fi
    else
        echo ""
        echo "KAV agent pkg path is empty"
    fi

    if [ "$KAV_UPDATE_PKG" != "" ]
    then
        LAST_PATCH_DEPLOYMENT_TIMESTAMP=$(get_last_patch_deployment)
        KAV_UPDATE_PKG_TIMESTAMP=$(stat -f "%m" "$KAV_UPDATE_PKG")
        echo "kav update pkg timestamp: $KAV_UPDATE_PKG_TIMESTAMP, last path deployment timestamp: $LAST_PATCH_DEPLOYMENT_TIMESTAMP"

        if [[ (-e "$KAV_UPDATE_PKG") && ($KAV_UPDATE_PKG_TIMESTAMP > $LAST_PATCH_DEPLOYMENT_TIMESTAMP) ]];
        then
            KAV_UPDATE_EXTRACTION_TEMP_PATH=$(mktemp -d)
            echo ""
            echo "Extracting update resources to $KAV_UPDATE_EXTRACTION_TEMP_PATH..."
            /usr/bin/tar -xzvf "$KAV_UPDATE_PKG" -C "$KAV_UPDATE_EXTRACTION_TEMP_PATH"
            echo "Extracted: "
            ls -la "$KAV_UPDATE_EXTRACTION_TEMP_PATH"

            echo ""
            echo "Deploying update resources..."

            if [ -f "$KAV_UPDATE_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" ]; then
                CURRENT_KAV_UPDATE_EXTRACTION_TEMP_PATH=$(mktemp -d)
                echo "Extracting application resources from $MATCHED_ARCHIVE to $CURRENT_KAV_UPDATE_EXTRACTION_TEMP_PATH..."
                /usr/bin/tar -xzvf "$KAV_UPDATE_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" -C "$CURRENT_KAV_UPDATE_EXTRACTION_TEMP_PATH"

                KAV_UPDATE_CUR_RES_TEMP_PATH=$(mktemp -d)
                echo ""
                echo "Saving current update resources to ${KAV_UPDATE_CUR_RES_TEMP_PATH}"
                cp -rfv "${KAV_UPDATE_APP_PATH}/Contents/Resources" "${KAV_UPDATE_CUR_RES_TEMP_PATH}"

                echo ""
                echo "Deleting current updater"
                /bin/rm -rfv "${KAV_UPDATE_APP_PATH}"

                echo ""
                echo "Moving ${CURRENT_KAV_UPDATE_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus Update.app to ${KAV_DIR}/Applications"
                cp -rvf "${CURRENT_KAV_UPDATE_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus Update.app" "${KAV_DIR}/Applications"

                echo ""
                echo "Deleting ${KAV_UPDATE_APP_PATH}/Contents/Resources"
                /bin/rm -rfv "${KAV_UPDATE_APP_PATH}/Contents/Resources"

                echo ""
                echo "Moving ${KAV_UPDATE_CUR_RES_TEMP_PATH}/Resources to ${KAV_UPDATE_APP_PATH}/Contents"
                mv "${KAV_UPDATE_CUR_RES_TEMP_PATH}/Resources" "${KAV_UPDATE_APP_PATH}/Contents"

                echo ""
                echo "Copying new resources to update"
                cp -Rfv "${CURRENT_KAV_UPDATE_EXTRACTION_TEMP_PATH}/Kaspersky Anti-Virus Update.app/Contents/Resources/"* "${KAV_UPDATE_APP_PATH}/Contents/Resources"

                touch "$KAV_UPDATE_APP_PATH"
            else
                echo "No matched archive in $KAV_UPDATE_EXTRACTION_TEMP_PATH, do not apply patch for $KAV_UPDATE_APP_PATH"
            fi
        fi
    else
        echo ""
        echo "KAV update pkg path is empty"
    fi

    if [ "$KAV_UNINSTALLER_PKG" != "" ]
    then
        LAST_PATCH_DEPLOYMENT_TIMESTAMP=$(get_last_patch_deployment)
        KAV_UNINSTALLER_PKG_TIMESTAMP=$(stat -f "%m" "$KAV_UNINSTALLER_PKG")
        echo "kav uninstaller pkg timestamp: $KAV_UNINSTALLER_PKG_TIMESTAMP, last path deployment timestamp: $LAST_PATCH_DEPLOYMENT_TIMESTAMP"

        if [[ (-e "$KAV_UNINSTALLER_PKG") && ($KAV_UNINSTALLER_PKG_TIMESTAMP > $LAST_PATCH_DEPLOYMENT_TIMESTAMP) ]];
        then
            KAV_UNINSTALLER_EXTRACTION_TEMP_PATH=$(mktemp -d)
            echo ""
            echo "Extracting uninstaller resources to $KAV_UNINSTALLER_EXTRACTION_TEMP_PATH..."
            /usr/bin/tar -xzvf "$KAV_UNINSTALLER_PKG" -C "$KAV_UNINSTALLER_EXTRACTION_TEMP_PATH"
            echo "Extracted: "
            ls -la "$KAV_UNINSTALLER_EXTRACTION_TEMP_PATH"

            echo ""
            echo "Deploying uninstaller resources..."

            if [ -f "$KAV_UNINSTALLER_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" ]; then
                CURRENT_KAV_UNINSTALLER_EXTRACTION_TEMP_PATH=$(mktemp -d)
                echo "Extracting application resources from $MATCHED_ARCHIVE to $CURRENT_KAV_UNINSTALLER_EXTRACTION_TEMP_PATH..."
                /usr/bin/tar -xzvf "$KAV_UNINSTALLER_EXTRACTION_TEMP_PATH/$MATCHED_ARCHIVE" -C "$CURRENT_KAV_UNINSTALLER_EXTRACTION_TEMP_PATH"

                KAV_UNINSTALLER_CUR_RES_TEMP_PATH=$(mktemp -d)
                echo ""
                echo "Saving current uninstaller resources to ${KAV_UNINSTALLER_CUR_RES_TEMP_PATH}"
                cp -rfv "${KAV_UNINSTALLER_APP_PATH}/Contents/Resources" "${KAV_UNINSTALLER_CUR_RES_TEMP_PATH}"

                echo ""
                echo "Deleting current uninstaller"
                /bin/rm -rfv "${KAV_UNINSTALLER_APP_PATH}"

                echo ""
                echo "Moving ${CURRENT_KAV_UNINSTALLER_EXTRACTION_TEMP_PATH}/Kaspersky Uninstaller.app to ${KAV_DIR}/Applications"
                cp -rvf "${CURRENT_KAV_UNINSTALLER_EXTRACTION_TEMP_PATH}/Kaspersky Uninstaller.app" "${KAV_DIR}/Applications"

                echo ""
                echo "Deleting ${KAV_UNINSTALLER_APP_PATH}/Contents/Resources"
                /bin/rm -rfv "${KAV_UNINSTALLER_APP_PATH}/Contents/Resources"

                echo ""
                echo "Moving ${KAV_UNINSTALLER_CUR_RES_TEMP_PATH}/Resources to ${KAV_UNINSTALLER_APP_PATH}/Contents"
                mv "${KAV_UNINSTALLER_CUR_RES_TEMP_PATH}/Resources" "${KAV_UNINSTALLER_APP_PATH}/Contents"

                echo ""
                echo "Copying new resources to uninstaller"
                cp -Rfv "${CURRENT_KAV_UNINSTALLER_EXTRACTION_TEMP_PATH}/Kaspersky Uninstaller.app/Contents/Resources/"* "${KAV_UNINSTALLER_APP_PATH}/Contents/Resources"

                touch "$KAV_UNINSTALLER_APP_PATH"
            else
                echo "No matched archive in $KAV_UNINSTALLER_EXTRACTION_TEMP_PATH, do not apply patch for $KAV_UNINSTALLER_APP_PATH"
            fi
        fi

        echo "Fix permissions"
        chmod 755 "${KAV_UNINSTALLER_APP_PATH}/Contents/Resources/derp.html"

    else
        echo ""
        echo "KAV uninstaller pkg path is empty"
    fi

    echo ""

    SYSCTRLD_PID=$(ps -axwo pid,command | grep -v grep | grep "${DEFAULT_KAVAPP_PATH}/Contents/MacOS/sysextctrld.app/Contents/MacOS/sysextctrld" | awk '{print $1}')
    if [ "${SYSCTRLD_PID}" != "" ]
    then
        echo "System extension controller pid: ${SYSCTRLD_PID}"
        /bin/kill -s TERM "${SYSCTRLD_PID}"
    else
        echo "warning: Process sysextctrld not found"
    fi
else
    LAST_PATCH_DEPLOYMENT_TIMESTAMP=$(get_last_patch_deployment)
    
    echo ""
    echo "Last path deployment timestamp: $LAST_PATCH_DEPLOYMENT_TIMESTAMP"
fi

/bin/chmod -R o+r "$BASES_DIR/"

echo "Deleting personal certificates"
/bin/rm -rfv /Library/Caches/com.kaspersky.kav/PersonalCertificates/*

echo "Deleting kav crash logs"
/bin/rm -rfv /Library/Logs/DiagnosticReports/{Retired,}/kav*
echo "Deleting kavd crash logs"
/bin/rm -rfv /Library/Logs/DiagnosticReports/{Retired,}/kavd*
echo "Deleting system extension crash logs"
/bin/rm -rfv /Library/Logs/DiagnosticReports/{Retired,}/com.kaspersky.kav.sysext*
echo "Deleting kav_app crash logs"
/bin/rm -rfv ~/Library/Logs/DiagnosticReports/{Retired,}/kav_app*
echo "Deleting kav_agent crash logs"
/bin/rm -rfv ~/Library/Logs/DiagnosticReports/{Retired,}/kav_agent*
echo "Deleting appex crash logs"
/bin/rm -rfv ~/Library/Logs/DiagnosticReports/{Retired,}/KasperskySecurity*
