#!/usr/bin/env bash
#script-create-shortcuts-for-found-exes
# USEFUL: this can be used for creating new scripts for exe files for a prefix
script-create-shortcuts-for-found-exes()
{
  dbug "I: Script: Launched ${FUNCNAME[0]}"
  dbug "I: Script: Launched ${FUNCNAME[0]}"
  export TEMPDIR="${WINEZGUIDIR}/tmp"
  
 unset COMMAND
 unset count
 unset SHOW_OPTION
 unset NAMES
 unset FILES
 unset LIST_OF_EXES_FOR_SHORTCUTS
 unset search_list


 count=0
 NAMES=()
 FILES=()
 # Find all exe files in drive_c Exclude windows directory,
 # and common exe files present in Program Files directory
 # Add those files to FILES array and filenames to NAMES array
 SOURCE script-get-installed-exe-files
 script-get-installed-exe-files
 EXE_LIST="${EXE_FILES_FOUND}"
 search_list=$(echo "${EXE_LIST}"|tr "\n" "|")

echo "=================================="
echo "$search_list"
 exe_found=$(echo ${search_list}|grep -i "exe")

 if [ -z "${exe_found}" ] ; then
      #${ZENITY_CMD} --error --title "${FUNCNAME[0]} ${PROGNAME} - no exe installed!" \
      #       --text "Sorry, no exe found in prefix: \"${PREFIXNAME}\""
      return 1
 fi
 # if exe_found has value, then only change exe
 SAVEIFS=${IFS}
 IFS=$(echo -en "\n\b")

 for i in $(echo ${search_list}|tr '|' '\n'|sort)
 do
     RealName=$(basename "$i")
     RealFile=$(realpath -m "$i")

     # If 1st value is empty, enable it
     SHOW_OPTION+="TRUE \"${RealName}\""
     SHOW_OPTION+=" "
     NAMES+=("${RealName}")
     FILES+=("${RealFile}")
     
     # Create Shortcuts and Desktop file and extract icon
     export S_EXE_FILE=$(realpath -m "${RealFile}")
     export S_EXE_NAME=$(basename "${S_EXE_FILE}")
     export S_CHECKSUM=$(sha256sum "${S_EXE_FILE}"|cut -f1 -d " ")
     export S_EXE_PATH=$(dirname  "${S_EXE_FILE}")
     export S_EXE_NOSP=$(echo ${S_EXE_NAME}|tr " " "_");
     export S_EXE_LESS=$(echo ${S_EXE_NOSP}|sed "s/\.[Ee][Xx][Ee]//"|sed "s/\.[Mm][Ss][Ii]//")
     export S_EXE_EXT="${S_EXE_FILE##*.}"
     

     echo "====================================== WINEZGUI-CREATE-PREFIX ========================"
TEST_NAME=$(echo "${EXE_NAME}"| tr [A-Z] [a-z]) # Change case to test
if [[ "${TEST_NAME}" == *"setup"* ]]   2>/dev/null || \
   [[ "${TEST_NAME}" == *"install"* ]] ; then
     dbug "I: Script: Using sha256sum of the exe"
     x=$(sha256sum "${EXE_FILE}")
     EXE_NOEXE=$(echo "${EXE_NOSP}"               |sed "s/\.[mM][Ss][Ii]//g"\
                                                  |sed "s/\.[eE][Xx][Ee]//g")
     SHASUM10CHARS=${x:0:10}
     if [ -n "${USE_SINGLE_PREFIX}" ]; then # If use single prefix is defined
          export PREFIXDIR="${SINGLE_PREFIX_DIR}"
          export PREFIXNAME="$(basename ${PREFIXDIR})"
     else 
          export PREFIXDIR="${PREFIXES_DIR}/${EXE_NOEXE}-${SHASUM10CHARS}"
          export PREFIXNAME="${EXE_NOEXE}-${SHASUM10CHARS}"
     fi
     export ICONFILE="${PREFIXDIR}/${EXE_LESS}-${SHASUM10CHARS}.png"
     export SCRIPTFILE="${PREFIXDIR}/${EXE_LESS}-${SHASUM10CHARS}.sh"
     export DESKTOPFILE="${PREFIXDIR}/${EXE_LESS}-${SHASUM10CHARS}.desktop"
     echo "x=$x"
     echo "PREFIXDIR=$PREFIXDIR"
     echo "PREFIXNAME=$PREFIXNAME"
     echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"

else
     x=$(sha256sum "${EXE_FILE}")
     EXE_NOEXE=$(echo "${EXE_NOSP}"               |sed "s/\.[mM][Ss][Ii]//g"\
                                                  |sed "s/\.[eE][Xx][Ee]//g")
     SHASUM10CHARS=${x:0:10}
     if [ -n "${USE_SINGLE_PREFIX}" ]; then # If use single prefix is defined
          export PREFIXDIR="${SINGLE_PREFIX_DIR}"
          export PREFIXNAME="$(basename ${PREFIXDIR})"
     else 
          export PREFIXDIR="${PREFIXES_DIR}/${EXE_NOEXE}-${SHASUM10CHARS}"
          export PREFIXNAME="${EXE_NOEXE}-${SHASUM10CHARS}"
     fi
     export ICONFILE="${PREFIXDIR}/${EXE_LESS}.png"
     export SCRIPTFILE="${PREFIXDIR}/${EXE_LESS}.sh"
     export DESKTOPFILE="${PREFIXDIR}/${EXE_LESS}.desktop"
     # export PREFIXDIR="${PREFIXES_DIR}/${EXE_NOEXE}"
     # export PREFIXNAME="${EXE_NOEXE}"

fi

     # Files
     export S_INFOFILE="${PREFIXDIR}/${S_EXE_LESS}_Info.yml"
     export S_ICONFILE="${PREFIXDIR}/${S_EXE_LESS}.png"
     export S_SCRIPTFILE="${PREFIXDIR}/${S_EXE_LESS}.sh"
     export S_DESKTOPFILE="${PREFIXDIR}/${S_EXE_LESS}.desktop"


     # Extract Name
     # Automatically set name, read from pe file, if not found use exe name
     S_PRODUCT=$(${EXIFTOOL} "${S_EXE_FILE}"|grep -i "product name"|cut -f2 -d ":" \
                                            |sed "s/^ //")
     # if language is not english inside exe name, or product is "", use exe name
     if [ $(echo ${S_PRODUCT} | grep -aEv [a-zA-Z] ) ] || [ -z "${S_PRODUCT}" ]; then
         unset S_PRODUCT
         unset S_PROGNAME
         # PROGNAME=$(echo "${EXE_NAME} (${APP_WITH_VER})"|sed "s/\.[mM][Ss][Ii]//g"\
 
         S_PROGNAME=$(echo "${S_EXE_NAME}"                |sed "s/\.[mM][Ss][Ii]//g"\
                                                          |sed "s/\.[eE][Xx][Ee]//g");
         dbug "I: ${HEADER}: Name: Product Name not found, using exe name"
     else
         #PROGNAME=$(echo "${PRODUCT} (${APP_WITH_VER})");
         S_PROGNAME=$(echo "${S_PRODUCT}");
         dbug "I: ${HEADER}: Name: Product Name found: \"${S_PRODUCT}\""
     fi
     
     # Extract Icon
     # Extract icon and convert it to several png files of diferent quality,
     # Create a temporary Directory to extract icon from the exe file
     dbug "I: ${HEADER}: Icon: Extraction from ${S_EXE_NAME}"
     mkdir -p ${TEMPDIR} && \
     dbug "I: ${HEADER}: Icon: Created directory ${TEMPDIR}"
     cd ${TEMPDIR}
     
     # wrestool extracts ico file from EXE
     ${WRESTOOL_CMD} -x -t 14 "${S_EXE_FILE}" > "${TEMPDIR}/${S_EXE_LESS}.ico" 2> /dev/null && \
     dbug "I: ${HEADER}: Icon: Wrestool executed"
     
     # Only try to extract Icon when Icon is Found in the EXE
     # icotool extracts all png files from ico files
     # Select and copy the best png image file by sorting using ls -S1.
     ${ICOTOOL_CMD} -x "${TEMPDIR}/${S_EXE_LESS}.ico" 2>/dev/null && \
     dbug "I: ${HEADER}: Icotool: Extracting png files from" "${S_EXE_LESS}.ico" && \
     cp $(ls -S -1 ${TEMPDIR}/${S_EXE_LESS}*.png  | head -n 1) ${S_ICONFILE} && \
     dbug "I: ${HEADER}: Icon: Copied successfully..." && WARN="false"
     
     # If icon could not be copied, warn the user
     if [ "${WARN}" != "false" ]; then
          dbug "I: ${HEADER}: Icon could not be copied..." \
               "use \"Change Icon...\" option"
     fi
     
     # Cleanup tempdir and clear variable
     unset WARN
     
     #remove tmp directory after copying icon png
     rm -rf "${TEMPDIR}" && \
     dbug "I: ${HEADER}: Icon: Cleanup ${TEMPDIR}"

     # Copy the script file and modify values
     cp "${SCRIPTFILE}" "${S_SCRIPTFILE}"
     sed "s|export EXE_FILE=.*|export EXE_FILE=\"${S_EXE_FILE}\"|g" -i "${S_SCRIPTFILE}"
     sed "s|export EXE_NAME=.*|export EXE_NAME=\"${S_EXE_NAME}\"|g" -i "${S_SCRIPTFILE}"
     sed "s|export CHECKSUM=.*|export CHECKSUM=\"${S_CHECKSUM}\"|g" -i "${S_SCRIPTFILE}"
     sed "s|export EXE_PATH=.*|export EXE_PATH=\"${S_EXE_PATH}\"|g" -i "${S_SCRIPTFILE}"
     sed "s|export EXE_NOSP=.*|export EXE_NOSP=\"${S_EXE_NOSP}\"|g" -i "${S_SCRIPTFILE}"
     sed "s|export EXE_LESS=.*|export EXE_LESS=\"${S_EXE_LESS}\"|g" -i "${S_SCRIPTFILE}"
     sed "s|export PROGNAME=.*|export PROGNAME=\"${S_PROGNAME} - ${S_EXE_NAME}\"|g" -i "${S_SCRIPTFILE}"
     sed "s|export EXE_EXT=.*|export EXE_EXT=\"${S_EXE_EXT}\"|g"   -i "${S_SCRIPTFILE}"

     sed "s|export INFOFILE=.*|export INFOFILE=\"${S_INFOFILE}\"|g"          -i "${S_SCRIPTFILE}"
     sed "s|export ICONFILE=.*|export ICONFILE=\"${S_ICONFILE}\"|g"          -i "${S_SCRIPTFILE}"
     sed "s|export SCRIPTFILE=.*|export SCRIPTFILE=\"${S_SCRIPTFILE}\"|g"    -i "${S_SCRIPTFILE}"
     sed "s|export DESKTOPFILE=.*|export DESKTOPFILE=\"${S_DESKTOPFILE}\"|g" -i "${S_SCRIPTFILE}"
     
     cp "${DESKTOPFILE}" "${S_DESKTOPFILE}"
     sed "s|Name=.*|Name=${S_EXE_NAME} - ${S_PROGNAME}|g"           -i "${S_DESKTOPFILE}"
     sed "s|${SCRIPTFILE}|${S_SCRIPTFILE}|g"                        -i "${S_DESKTOPFILE}" 
     sed "s|${ICONFILE}|${S_ICONFILE}|g"                            -i "${S_DESKTOPFILE}"
     sed "s|Keywords=.*|Keywords=Game; winezgui; ${S_PROGNAME}|g"   -i "${S_DESKTOPFILE}"

     #ln -sf "${S_DESKTOPFILE}" "${DEXSKTOPDIR}"
     # Now using ~/.local/share/applications directory which gets updated instantly
     #

############### Copy Info File
    # Create Metadata Info.yml for the prefix
    if [ -f "${INFOFILE}" ]; then
         cp "${INFOFILE}" "${S_INFOFILE}"
         #  Insert Data into Info.yml
         DATE=$(date +%F_%H%M)

         echo "Name:${S_PROGNAME}"                >  "${S_INFOFILE}"
         echo "Exe:${S_EXE_FILE}"                 >> "${S_INFOFILE}"
         echo "Sha256sum:${S_CHECKSUM}"           >> "${S_INFOFILE}"
         echo "Exe Path:${S_EXE_PATH}"            >> "${S_INFOFILE}"
         echo "Prefix:${PREFIXNAME}"              >> "${S_INFOFILE}"
         echo "Script:${S_SCRIPTFILE}"            >> "${S_INFOFILE}"
         echo "Icon:${S_ICONFILE}"                >> "${S_INFOFILE}"
         echo "Shortcut:${S_DESKTOPFILE}"         >> "${S_INFOFILE}"
         echo "Created:${DATE}"                 >> "${S_INFOFILE}"
         echo "Wine:${WINEVER}"                 >> "${S_INFOFILE}"
         echo "Runner:${RUNNER}"                >> "${S_INFOFILE}"
         echo "Wine Arch:${WINEARCH}"           >> "${S_INFOFILE}"
         echo "WineZGUI:${APPVERSION}"          >> "${S_INFOFILE}"
         echo "WineZGUI Prefix:${WINEZGUIDIR}"  >> "${S_INFOFILE}"
         echo "Install:${INSTALL_TYPE}"         >> "${S_INFOFILE}"

         # Include flatpak id in Info.yml
         if [ "${INSTALL_TYPE}" = "flatpak" ]; then
              echo "Flatpak:${FLATPAK_NAME}"    >> "${S_INFOFILE}"
         fi
         dbug "I: Script: Prefix: Created ${S_INFOFILE}"
    fi
############ / Create info file complete for the new script.
     
     dbug "linking desktop files"
     XBASE_FILE_NAME=$(basename "${S_DESKTOPFILE}")
     # If NO_SHORTCUTS= NOTHING/EMPTY then create shortcuts
  echo "xoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxo" 
     if [ -z "${NO_SHORTCUTS}" ]; then
          ln -svf "${S_DESKTOPFILE}" "${APPLICATIONSDIR}/${SHORTCUT_PREFIX}_${XBASE_FILE_NAME}"
          dbug "I: ${HEADER}: Shortcut is created at ${APPLICATIONSDIR}/${SHORTCUT_PREFIX}_${XBASE_FILE_NAME}"
     else 
          dbug "I: ${HEADER}:WARNING: Shortcut NOT CREATED at ${APPLICATIONSDIR}/${SHORTCUT_PREFIX}_${XBASE_FILE_NAME}"
     fi
     count=$(expr ${count} + 1)
 done
 IFS=${SAVEIFS}


 # Do not prompt with "found new exe files"
 SOURCE script-create-found-new-exe-files-file
 script-create-found-new-exe-files-file
 
 # If only 1 exe is found, then set that as Main Exe for the prefixdir
 count=$(echo ${search_list}|tr '|' '\n'|wc -l)
 echo "========================================== = = = = "
 echo "count = $count"
 # count = 2 means only 1 value, already search_list has \n
 if [ $count -eq 2  ]; then
      echo "Only 1 exe found, setting it as default for the prefix"
      echo "Launching..."
      # Reset PRODUCT_NAME - Exe.exe -> PRODUCT_NAME, for 1 exe only
      sed "s|export PROGNAME=.*|export PROGNAME=\"${S_PROGNAME}\"|g" -i "${S_SCRIPTFILE}"
      sed "s|Name=.*|Name=${S_PROGNAME}|g"       -i "${S_DESKTOPFILE}"
      # Launch the single one
      "${S_SCRIPTFILE}" &
      # Delete setup script
      
      #ln -sf "${S_DESKTOPFILE}" "${DESKTOPFILE}"
      # NOT DELETING THE SCRIPT FILE
      #rm "${DESKTOPFILE}" "${SCRIPTFILE}"
      rm -v "${DESKTOPFILE}"
      #ln -sf "${S_SCRIPTFILE}" "${SCRIPTFILE}"
      #ln -sf "${S_INFOFILE}" "${INFOFILE}"
      # Remove empty .desktop shortcuts from applications directory
      # Remove empty .desktop shortcuts from applications directory
      find ${APPLICATIONSDIR} -maxdepth 1 -iname "${SHORTCUT_PREFIX}*" -xtype l -delete 2>/dev/null
      ${UPDATE_DESKTOP_DATABASE} ${APPLICATIONSDIR}

      exit 0
 fi
 
 # We do not need setup file again, so remove the shortcut to the setup file
 # after a single or multiple exes found
 # Remove desktop file, perhaps user may relaunch setup
 # 1. removing the setup/install script and desktop file
 # If it is a setup file delete the shortcut to it
 echo "============================================ x ========================"
TEST_NAME=$(echo "${SCRIPTFILE}"| tr [A-Z] [a-z]) # Change case to test
if [[ "${TEST_NAME}" == *"setup"* ]]   2>/dev/null || \
   [[ "${TEST_NAME}" == *"install"* ]] ; then
     dbug "I: Script: Using sha256sum of the exe"
     x=$(sha256sum "${EXE_FILE}")
     EXE_NOEXE=$(echo "${EXE_NOSP}"               |sed "s/\.[mM][Ss][Ii]//g"\
                                                  |sed "s/\.[eE][Xx][Ee]//g")
     SHASUM10CHARS=${x:0:10}
     export WINEPREFIX_SUBDIR="${PREFIXES_DIR}/${EXE_NOEXE}-${SHASUM10CHARS}"
     export SCRIPT_NAME="${EXE_LESS}-${SHASUM10CHARS}.sh"
     echo "WINEPREFIX_SUBDIR=$WINEPREFIX_SUBDIR"
     echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
    #DESKTOPFILE="${EXE_LESS}-${SHASUM10CHARS}.desktop"
    rm -v "${DESKTOPFILE}"
fi

#  rm "${DESKTOPFILE}" "${SCRIPTFILE}"
#  ln -sf "${S_SCRIPTFILE}" "${SCRIPTFILE}"
#  #ln -sf "${S_DESKTOPFILE}" "${DESKTOPFILE}"
#  ln -sf "${S_INFOFILE}" "${INFOFILE}"
 # Remove empty .desktop shortcuts from applications directory
 find ${APPLICATIONSDIR} -maxdepth 1 -iname "${SHORTCUT_PREFIX}*" -xtype l -delete 2>/dev/null
 ${UPDATE_DESKTOP_DATABASE} ${APPLICATIONSDIR}

## NEW: Stop creating a script file with all the list.
#  # Replace Script file with multiple open dialog
#  # need variables from this script
# echo "
# #!/bin/bash
# export PATH=\"${PATH}\"
# export APPNAME=\"${APPNAME}\"
# export FLATPAK_NAME=\"${FLATPAK_NAME}\"
# export APPVERSION=\"${APPVERSION}\"
# export APP_WITH_VER=\"${APPNAME}-${APPVERSION}\"
# export WINEVER=\"${WINEVER}\"
# export WINEARCH=\"${WINEARCH}\"
# export PROGNAME=\"${PROGNAME}\"
# export INSTALL_TYPE=\"\"${INSTALL_TYPE}\"\"
# export WINEZGUIDIR=\"${WINEZGUIDIR}\"
# export PREFIXES_DIR=\"${WINEZGUIDIR}/Prefixes\"
# export PREFIXNAME=\"${EXE_LESS}\"
# export EXE_FILE=\"${EXE_FILE}\"
# export EXE_NAME=\"${EXE_NAME}\"
# export CHECKSUM=\"${CHECKSUM}\"
# export EXE_PATH=\"${EXE_PATH}\"
# export EXE_NOSP=\"${EXE_NOSP}\"
# export EXE_LESS=\"${EXE_LESS}\"
# export EXE_EXT=\"${EXE_FILE##*.}\"
# export PREFIXDIR=\"${PREFIXDIR}\"
# export WINEPREFIX=\"${PREFIXDIR}\"
# export APPLICATIONSDIR=\"${APPLICATIONSDIR}\"
# export WINEZGUI_SCRIPTS=\"${WINEZGUI_SCRIPTS}\"
# export DATADIR=\"${DATADIR}\"
# export SETTINGS_FILE=\"${WINEZGUIDIR}/Settings.yml\"
# #export DEXSKTOPDIR=\"${DEXSKTOPDIR}\"
# export SHORTCUT_PREFIX=\"${SHORTCUT_PREFIX}\"
# export UPDATE_DESKTOP_DATABASE=\"${UPDATE_DESKTOP_DATABASE}\"
# export EXIFTOOL=\"\$(which exiftool)\"
# # winezgui backup file extension
# export BKP_EXT=\"${BKP_EXT}\"

# # Files
# export INFOFILE=\"${PREFIXDIR}/Info.yml\"
# export ICONFILE=\"${PREFIXDIR}/${EXE_LESS}.png\"
# export SCRIPTFILE=\"${PREFIXDIR}/${EXE_LESS}.sh\"
# export DESKTOPFILE=\"${PREFIXDIR}/${EXE_LESS}.desktop\"


# # Load file with dbug function
# if [ -f \"${DATADIR}/winezgui-source\" ]; then
#    source \"\${DATADIR}/winezgui-source\"
# else
#    source \"\${WINEZGUI_SCRIPTS}/winezgui-source\"
# fi
# SOURCE winezgui-dbug

# # if icon is found grep it
# if [ -f \"${ICONFILE}\" ]; then
#      export ICON=\"\$(grep Icon \${DESKTOPFILE}|cut -f2 -d \"=\")\"
# else
#      export ICON="null"
# fi
# " > "${SCRIPTFILE}"
# echo "
# SOURCE script-list-available-launch-shortcuts
# script-list-available-launch-shortcuts \${PREFIXDIR}
# \"\${SELECTED_SCRIPT}\" &
# exit 0
# " >> "${SCRIPTFILE}"

# set x permissions
  chmod +rx "${DESKTOPFILE}" "${SCRIPTFILE}" "${S_SCRIPTFILE}" "${S_DESKTOPFILE}" "${NEW_SCRIPT_FILE}" "${NEWDESKTOPFILE}"
 
 # Do no Prompt and launch
 # ${ZENITY_CMD} --info --text="Created shortcuts in the menu for ${EXE_NAME}" --title="Shortcuts Created!" --width=400
 SOURCE script-list-available-launch-shortcuts
 script-list-available-launch-shortcuts ${PREFIXDIR}
 "${SELECTED_SCRIPT}" &
 exit 0
# # Generate Height value
# SOURCE winezgui-get-window-height
# winezgui-get-window-height ${#FILES[@]}

# # if [ ${#FILES[@]} -eq 1 ]; then
# #      export SELECTED_EXE="${FILES}"
# # --height=300s     
# # else
#      # 3. Show the found exe files using zenity
#      unset COMMAND
#      COMMAND+="${ZENITY_CMD}  --title=\"${APP_WITH_VER} - Shortcuts\" "
#      COMMAND+="--list --checklist --width=460 --height=${HEIGHT} "
#      COMMAND+="--text=\"${PREFIXNAME}, choose exe for shortcuts...\" "
#      COMMAND+="--hide-header --column \" \" --column \"Action\" ${SHOW_OPTION}"
#      LIST_OF_EXES_FOR_SHORTCUTS=$(eval ${COMMAND})

#      if [ -z "${LIST_OF_EXES_FOR_SHORTCUTS}" ]; then
#           echo "Cancelled!"
#           Script_Window
#      fi
#     export LIST_OF_EXES_FOR_SHORTCUTS
#     echo "${LIST_OF_EXES_FOR_SHORTCUTS}"

     count=0
    # # 4. Find which file the user selected and set the selected exe into variable
    #  for i in "${NAMES[@]}"; do
    #      if [ "$i" = "$LIST_OF_EXES_FOR_SHORTCUTS" ]; then
    #           echo "Selected $i"
    #           echo "File is ${FILES[${count}]}"
    #           export SELECTED_EXE="${FILES[${count}]}"
    #           export SELECTED_EXE_NAME=$(basename "${SELECTED_EXE}")
    #           break
    #      fi
    #      count=$(expr ${count} + 1)
    #  done
# fi
  # get the variable LIST_OF_EXES_FOR_SHORTCUTS filled
#   SOURCE script-get-selected-exes-for-shortcuts
#   script-get-selected-exes-for-shortcuts
#   echo "x==x==x==x==x==x==x==x==x==x==x==x==x==x==x==x"
#   for i in $(echo ${LIST_OF_EXES_FOR_SHORTCUTS}|tr '|' '\n'|sort); do
#       echo "${i}"
#   done

}
