#!/bin/sh
# adduser script for use with shadow passwords and useradd command.
# by Hrvoje Dogan <hdogan@student.math.hr>, Dec 1995.
#
# Japanese enhancements by kojima <isle@st.rim.or.jp> Aug 1997
# Time-stamp: <2006-02-03 21:46:55 kojima>

DEFAULT_GROUP=users
DEFAULT_HOME_DIR=/home
DEFAULT_SHELL=/bin/tcsh
DEFAULT_HOME_DIR_MODE=711

################################################################

backup_oldfiles() {
  DIR=$1
  shift
  while [ ! "x.$1" = "x." ] ; do
    FILE=${1##*/}
    if [ ! $FILE = "." -a ! $FILE = ".." ] ; then
      if [ -f $DIR/$FILE ] ; then
        if [ -f $DIR/$FILE.old ] ; then
          backup_oldfiles $DIR $FILE.old
          FILE=${1##*/}
        fi
        mv $DIR/$FILE $DIR/$FILE.old
      elif [ -d $DIR/$FILE ] ; then
        if [ -d $DIR/$FILE.org ] ; then
          backup_oldfiles $DIR $FILE.org
          FILE=${1##*/}
        fi
        mv $DIR/$FILE $DIR/$FILE.org
      fi
    fi
    shift
  done
}

copy_envfiles() {
  OWN=$1
  shift
  DIR=$1
  shift
  while [ ! "x.$1" = "x." ] ; do
    FILE=${1##*/}
    if [ ! $FILE = "." -a ! $FILE = ".." ] ; then
      if [ -f $1 ] ; then
        cp -dp $1 $DIR/.
        chown -h $OWN ${DIR}/${FILE}
      elif [ -d $1 ] ; then
        cp -dpR $1 $DIR/.
        chown -hR $OWN ${DIR}/${FILE}
      fi
    fi
    shift
  done
}

s_match () { case $1 in $2) return 0; ;; *) return 1; ;; esac ; }

################################################################

msg_login_name() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "桼Υ̾ꤷƤ(8 ʸ) []: "
else
  echo -n "Login name for new user (8 characters or less) []: "
fi
}

msg_err_login_name() {
if [ "$LNG" = "JAPANESE" ]; then
  echo "ǰʤ̾ꤻˤϿʤޤ󡣡"
else
  echo "Come on, man, you can't leave the login field empty..."
fi
}

msg_user_id() {
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "$LOGIN Υ桼 ID ϡ [ưϿξ 1000 ˤʤޤ]: "
else
  echo -n "User id for $LOGIN [defaults to next available]: "
fi
}

msg_grp_name() {
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "$LOGIN °륰롼פϡ[${DEFAULT_GROUP}]: "
else
  echo -n "Initial group for $LOGIN [${DEFAULT_GROUP}]: "
fi
}

msg_home_dir() {
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "$LOGIN Υۡǥ쥯ȥϡ[${DEFAULT_HOME_DIR}/$LOGIN]: "
else
  echo -n "${LOGIN}'s home directory [${DEFAULT_HOME_DIR}/$LOGIN]: "
fi
}

msg_shell() {
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "$LOGIN Ȥϡ [${DEFAULT_SHELL}]: "
else
  echo -n "${LOGIN}'s shell [${DEFAULT_SHELL}]: "
fi
}

msg_w_manager() {
  echo
  if [ "$LNG" == "JAPANESE" ] ; then
    echo "ɥޥ͡"
    echo "1 : AfterStep()"
    echo "2 : Qvwm(Windows )"
    echo "3 : Twm(ץ)"
    [ -x /usr/bin/startxfce4 ]    && echo "4 : XFce4 Desktop"
    [ -x /opt/kde/bin/startkde ]  && echo "5 : KDE Desktop"
    [ -x /usr/bin/gnome-session ] && echo "6 : GNOME Desktop"
    echo -n "$LOGIN Ȥ WM ϡ [1]: "
  else
    echo "Window Manager setting"
    echo "1 : AfterStep (recommended)"
    echo "2 : Qvwm (Windows like)"
    echo "3 : Twm (most simple)"
    [ -x /usr/bin/startxfce4 ]    && echo "4 : XFce4 Desktop"
    [ -x /opt/kde/bin/startkde ]  && echo "5 : KDE Desktop"
    [ -x /usr/bin/gnome-session ] && echo "6 : GNOME Desktop"
    echo -n "$LOGIN's WM? [1]: "
  fi
}

msg_kinput2_input() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo "kinput2 ܸ(CannaѻΤͭ)"
  echo "1 : ޻"
  echo "2 : "
  echo "3 : NICOLA(ƻإե)"
  echo -n "$LOGIN ϥ޻,,NICOLAϤΤɤȤޤ [1]: "
else
  echo "Input method of kinput2(Canna only)"
  echo "1 : Roma"
  echo "2 : Kana(Japanese keyboard only)"
  echo "3 : NICOLA(Japanese keyboard only)"
  echo -n "Which is ${LOGIN}'s method, roma, kana or NICOLA ? [1]: "
fi
}

msg_use_uim_scim() {
  echo
  if [ "$LNG" = "JAPANESE" ] ; then
    echo "uim/SCIM "
    echo "1 : uim"
    echo "2 : SCIM"
    echo "3 :  uim/SCIM Ѥʤ"
    echo -n "$LOGIN Ū Kinput2  uim/SCIM Ȥޤ [3]: "
  else
    echo "uim/SCIM"
    echo "1 : uim"
    echo "2 : SCIM"
    echo "3 : No, I don't want to use uim/SCIM for now"
    echo -n "Does $LOGIN want to use uim/SCIM instead of the traditional Kinput2? [3]: "
  fi
}

msg_visual_bell() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "${LOGIN} ϥӥ奢٥Ȥޤ?(Emacs,kterm,xterm,rxvtͭ) [y/N]: "
else
  echo -n "Does ${LOGIN} want to use visual bell?(for Emacs, kterm, etc.) [y/N]: "
fi
}

msg_font_size() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo "ɸX(KDE)Ķեȥ"
  echo "(AfterStep,qvwm,fvwm2,mwmĶŬѤޤ)"
  echo "12,14,16,18 ζͤꤷƤ"
else
  echo "Font size settings for the standard X11 environments"
  echo "(AfterStep,qvwm,fvwm2 and mwm environments)"
  echo "Choose 12,14,16 or 18."
fi
}

msg_font_size_ui() {
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "桼󥿥եΥեȥ [12]: "
else
  echo -n "User interface [12]: "
fi
}

msg_font_size_term() {
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "üƥȥꥢΥեȥ [14]: "
else
  echo -n "Terminal and text area [14]: "
fi
}

msg_font_size_editor() {
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "ǥ(Emacs)Υեȥ [16]: "
else
  echo -n "Editor(Emacs) [16]: "
fi
}

msg_kde_fonts() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo "KDE ե(Qtץꥱͭ)"
  echo "1 : ꥢͭå(٥˥)"
  echo "2 : ꥢͭī(٥˥)"
  echo "3 : ꥢͭߤ(񤭥ե)"
#  echo "4 : ꥢ̵(Ƥɽ)"
  echo -n "$LOGIN Ȥ KDE եϡ [1]: "
else
  echo "KDE fonts setting"
  echo "1 : Enable antialiasing, gothic(suitable for high-resolution)"
  echo "2 : Enable antialiasing, mincho(suitable for high-resolution)"
  echo "3 : Enabel antialiasing, Mikachan"
#  echo "4 : Disable antialiasing(clear and lightweight)"
  echo -n "${LOGIN}'s fonts setting ? [1]: "
fi
}

msg_expiry_date() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "$LOGIN ΥȤͭ¤ϡ (YYYY-MM-DD) []: "
else
  echo -n "${LOGIN}'s account expiry date (YYYY-MM-DD) []: "
fi
}

msg_conf() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo "ơºݤɬפʥȥޤǡϤǤǤ"
else
  echo "OK, I'm about to make a new account. Here's what you entered so far:"
fi
echo
}

msg_overwrite() {
echo 
if [ "$LNG" = "JAPANESE" ]; then
  echo "$HME ¸ߤޤ$HME/.tcshrc  $HME/.login "
  echo "Plamo ΥǥեȤ˽񤭴ޤޤ󤫡[y/N]"
  echo "Υե $HME/.tcshrc.old Τ褦˥Хååפ"
  echo "¸ޤ(.*.old ˤ̵ѤǾ񤭤ޤ;-)"
else
  echo "$HME exists. $HME/.tcshrc or $HME/.login will be"
  echo "overwritten by Plamo's default configuration files. OK?[y/N]"
fi
}

msg_conf2() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo "Ͽߤ Cntl-C 򲡤ƤΥǡǤ"
  echo "Enter 򲡤ƤСȤޤ"
else
  echo "This is it... if you want to bail out, hit Control-C.  Otherwise, press"
  echo "ENTER to go ahead and make the account."
fi
}

msg_creating() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo "Ⱥ"
else
  echo "Making new account..."
fi
}

msg_last() {
echo
if [ "$LNG" = "JAPANESE" ]; then
  echo "$SKELDIR/Default ʲγƼեۡǥ쥯ȥ˥ԡޤ"
  echo "Ͽλޤ"
  echo
  echo "޺桼ǥ󥽡뤫󤷡startx Сܸ X Ķ"
  echo "ѤǤޤ"
else
  echo "Done..."
fi
}

wait_press_enter() {
if [ "$LNG" = "JAPANESE" ]; then
  echo -n "[Enter򲡤Ƥ]"
else
  echo -n "[Press Enter]"
fi
read FOO
}

################################################################

SKELDIR=/etc/template

if [ "$1" != "" ] ; then
  if s_match "$1" "ja*" ; then
    ANS="y"
  fi
else
  if [ "$TERM" = "linux" ]; then
    echo "Can you read Japanese chars on this term ? [y/N]"
    read ANS
    if [ "$ANS" = "Y" ]; then
      ANS="y"
    fi
  else
    echo "Can you read Japanese chars on this term ? [Y/n]"
    read ANS
    if [ "$ANS" != "N" -a "$ANS" != "n" ]; then
      ANS="y"
    fi
  fi
fi

if [ "$ANS" = "y" ]; then
  echo "Japanese mode"
  LNG="JAPANESE"
else
  echo "No Japanese mode"
  LNG=""
fi

#桼Υ̾ꤷƤ(8 ʸ) []: 
msg_login_name
read LOGIN
if [ -z "$LOGIN" ] ; then 
  #ǰʤ̾ꤻˤϿʤޤ󡣡
  msg_err_login_name
  exit
fi

#$LOGIN Υ桼 ID ϡ [ưϿξ 1000 ˤʤޤ]: 
msg_user_id
read USERID
if [ -z "$USERID" ]; then 
  GUID=""
else
  GUID="-u $USERID"
fi

#$LOGIN °륰롼פϡ[${DEFAULT_GROUP}]: 
msg_grp_name
read GROUPID
if [ -z "$GROUPID" ]; then 
  GROUPID="${DEFAULT_GROUP}"
fi
GGID="-g $GROUPID"

#  useradd ΥХ˿餷
# changed on 11/07
#
#echo
#echo -n "$LOGIN ¾Υ롼פˤ°ޤ[]: "
#read AGID
#GAGID="-G $AGID"
#if [ -z "$AGID" ]; then 
#  GAGID=""
#fi

#$LOGIN Υۡǥ쥯ȥϡ[${DEFAULT_HOME_DIR}/$LOGIN]: 
msg_home_dir
read HME
if [ -z "$HME" ]; then 
  HME="${DEFAULT_HOME_DIR}/$LOGIN"
fi
GHME="-d $HME"

#$LOGIN Ȥϡ [${DEFAULT_SHELL}]: 
msg_shell
read SHL
if [ -z "$SHL" ]; then 
  SHL="${DEFAULT_SHELL}"
fi
GSHL="-s $SHL"

#ɥޥ͡
msg_w_manager
read WM
if [ -z "$WM" ]; then
  WM=1
elif [ "$WM" -lt "1" ]; then
  WM=1
elif [ "$WM" -gt "6" ]; then
  WM=1
fi

#kinput2 ܸ
msg_kinput2_input
read KINPUT2INPUT
if [ -z "$KINPUT2INPUT" ]; then
  KINPUT2INPUT=1
elif [ "$KINPUT2INPUT" -lt "1" ]; then
  KINPUT2INPUT=1
elif [ "$KINPUT2INPUT" -gt "3" ]; then
  KINPUT2INPUT=1
fi

#$LOGIN Ū Kinput2  uim/SCIM Ȥޤ
msg_use_uim_scim
read USE_UIM_SCIM
if [ -z "$USE_UIM_SCIM" ] ; then
  USE_UIM_SCIM=3
elif [ "$USE_UIM_SCIM" -lt "1" ] ; then
  USE_UIM_SCIM=3
elif [ "$USE_UIM_SCIM" -gt "3" ] ; then
  USE_UIM_SCIM=3
fi

#${LOGIN} ϥӥ奢٥Ȥޤ?
msg_visual_bell
read VISUALBELL
if [ "$VISUALBELL" = "Y" ]; then
  VISUALBELL="y"
fi

#ɸX(KDE)Ķեȥ
msg_font_size
msg_font_size_ui
read FSIZE_UI
if [ -z "$FSIZE_UI" ]; then
  FSIZE_UI=12
fi
msg_font_size_term
read FSIZE_TERM
if [ -z "$FSIZE_TERM" ]; then
  FSIZE_TERM=14
fi
msg_font_size_editor
read FSIZE_EDITOR
if [ -z "$FSIZE_EDITOR" ]; then
  FSIZE_EDITOR=16
fi

#KDE ե(Qtץꥱͭ)
if [ -d /etc/template/kde-aa-gothic ]; then
  msg_kde_fonts
  read KDEFONTS
  if [ -z "$KDEFONTS" ]; then
    KDEFONTS=1
  elif [ "$KDEFONTS" -lt "1" ]; then
    KDEFONTS=1
  elif [ "$KDEFONTS" -gt "3" ]; then
    KDEFONTS=1
  fi
elif [ -d /etc/template/kde-non-aa ]; then
  KDEFONTS=4
else
  KDEFONTS=0
fi

#$LOGIN ΥȤͭ¤ϡ (YYYY-MM-DD) []: 
msg_expiry_date
read EXP
GEXP="-e $EXP"
if [ -z "$EXP" ]; then
  GEXP=""
fi

#ơºݤɬפʥȥޤǡϤǤǤ
msg_conf
echo New login name: $LOGIN
if [ -z "$GUID" ]; then 
  echo New UID: [Next available]
else
  echo New UID: $USERID
fi
echo Initial group: $GROUPID
#if [ -z "$GAGID" ]
#then echo Additional groups: [none]
#else echo Additional groups: $AGID
#fi
echo Home directory: $HME
echo Shell: $SHL
if [ -z "$GEXP" ]; then
  echo Expiry date: [no expiration]
else
  echo Expiry date: $EXP
fi

if [ -d $HME ]; then
  #$HME ¸ߤޤ$HME/.tcshrc  $HME/.login 
  #Plamo ΥǥեȤ˽񤭴ޤޤ󤫡[y/N]
  msg_overwrite
  read ANS
  if [ -z $ANS ]; then
    ANS="N"
  fi
  if [ "$ANS" != "Y" -a "$ANS" != "y" ]; then
    exit -1
  fi
fi

#Ͽߤ Cntl-C 򲡤ƤΥǡǤ
#Enter 򲡤ƤСȤޤ
msg_conf2
read FOO

# mkdefaultenv.sh  /etc/template/Default ʲƺ
# /etc/template/Source  /etc/template/Default ƺޤ
echo -n "Executing $SKELDIR/mkdefaultenv.sh $SKELDIR/Source $FSIZE_UI $FSIZE_TERM $FSIZE_EDITOR ... "
sh $SKELDIR/mkdefaultenv.sh $SKELDIR/Source $FSIZE_UI $FSIZE_TERM $FSIZE_EDITOR 1> /dev/null
echo "OK"

#Ⱥ
msg_creating

if [ -d $HME ]; then   # backup old files
  ORIGDIR=$SKELDIR/Default
  backup_oldfiles $HME $ORIGDIR/.*
  backup_oldfiles $HME $ORIGDIR/*

  if [ "$KDEFONTS" -eq "2" ]; then
    backup_oldfiles $HME $SKELDIR/kde-aa-mincho/.qt 
    backup_oldfiles $HME $SKELDIR/kde-aa-mincho/.kde
  elif [ "$KDEFONTS" -eq "1" ]; then
    backup_oldfiles $HME $SKELDIR/kde-aa-gothic/.qt 
    backup_oldfiles $HME $SKELDIR/kde-aa-gothic/.kde
  elif [ "$KDEFONTS" -eq "3" ]; then
    backup_oldfiles $HME $SKELDIR/kde-aa-mikachan/.qt 
    backup_oldfiles $HME $SKELDIR/kde-aa-mikachan/.kde
  elif [ "$KDEFONTS" -eq "4" ]; then
    backup_oldfiles $HME $SKELDIR/kde-non-aa/.qt 
    backup_oldfiles $HME $SKELDIR/kde-non-aa/.kde
  fi
fi

/usr/sbin/useradd $GHME -m $GEXP $GGID $GAGID $GSHL $GUID $LOGIN
copy_envfiles ${LOGIN}:${GROUPID} $HME $SKELDIR/Default/.*
copy_envfiles ${LOGIN}:${GROUPID} $HME $SKELDIR/Default/*

if [ -d $HME ]; then
  chmod $DEFAULT_HOME_DIR_MODE $HME
  cd $HME
  if [ "$WM" -eq 1 ] ; then
    cat $SKELDIR/Default/.xinitrc > .xinitrc
  elif [ "$WM" -eq 2 ] ; then
    cat $SKELDIR/Default/.xinitrc \
        | sed 's/WM="step"/#&/;s/#\(WM="qvwm"\)/\1/' > .xinitrc
  elif [ "$WM" -eq 3 ] ; then
    cat $SKELDIR/Default/.xinitrc \
        | sed 's/WM="step"/#&/;s/#\(WM="twm"\)/\1/' > .xinitrc
  elif [ "$WM" -eq 4 ] ; then
    cat $SKELDIR/Default/.xinitrc \
        | sed 's/WM="step"/#&/;s/#\(WM="xfce"\)/\1/' > .xinitrc
  elif [ "$WM" -eq 5 ] ; then
    cat $SKELDIR/Default/.xinitrc \
        | sed 's/WM="step"/#&/;s/#\(WM="kde"\)/\1/' > .xinitrc
  elif [ "$WM" -eq 6 ] ; then
    cat $SKELDIR/Default/.xinitrc \
        | sed 's/WM="step"/#&/;s/#\(WM="gnome"\)/\1/' > .xinitrc
  fi
  ln -sf .xinitrc .xsession
  ln -sf .xinitrc .xprofile
  chown $LOGIN.$GROUPID .xinitrc
  chown -h $LOGIN.$GROUPID .xsession
  chown -h $LOGIN.$GROUPID .xprofile

  if [ "$KINPUT2INPUT" -eq "2" ]; then
    cat $SKELDIR/Default/.Xdefaults | sed -e 's/!Emacs\*useXim/Emacs\*useXim/' > .Xdefaults
    cat $SKELDIR/Default/.canna \
    | sed -e 's/;(setq canna-input-method "kana")/(setq canna-input-method "kana")/' \
    | sed -e 's/(setq canna-input-method "roma")/;(setq canna-input-method "roma")/' \
    > .canna
    cat $SKELDIR/Default/.skk \
    | sed -e 's/;(setq skk-use-kana-keyboard t)/(setq skk-use-kana-keyboard t)/' \
    | sed -e "s/;(setq skk-kanagaki-keyboard-type '106-jis)/(setq skk-kanagaki-keyboard-type '106-jis)/" \
    > .skk
  elif [ "$KINPUT2INPUT" -eq "3" ]; then
    cat $SKELDIR/Default/.Xdefaults \
    | sed -e 's/\*inputMethod:	kinput2/!\*inputMethod:	kinput2/' \
    | sed -e 's/!\*inputMethod:	nicolatter/\*inputMethod:	nicolatter/' \
    > .Xdefaults
    cat $SKELDIR/Default/.skk \
    | sed -e 's/;(setq skk-use-kana-keyboard t)/(setq skk-use-kana-keyboard t)/' \
    | sed -e "s/;(setq skk-kanagaki-keyboard-type 'nicola-jis)/(setq skk-kanagaki-keyboard-type 'nicola-jis)/" \
    > .skk
    sed -i 's/^XM.*kinp.*$/#&/;s/#\(XM.*nico.*$\)/\1/' .xinitrc
  fi

  if [ "$USE_UIM_SCIM" -eq "1" ] ; then
    sed -i 's/^\*in.*kinp.*$/!&/;s/^\*in.*nico.*$/!&/;s/!\(\*in.*uim.*$\)/\1/' \
        .Xdefaults
    sed -i 's/^XM.*kinp.*$/#&/;s/^XM.*nico.*$/#&/;s/#\(XM.*uim.*$\)/\1/' \
        .xinitrc
    sed -i 's/#\(QT_.*uim.*$\)/\1/;s/#\(GTK_.*uim.*$\)/\1/' .xinitrc
  elif [ "$USE_UIM_SCIM" -eq "2" ] ; then
    sed -i 's/^\*in.*kinp.*$/!&/;s/^\*in.*nico.*$/!&/;s/!\(\*in.*SCIM.*$\)/\1/' \
        .Xdefaults
    sed -i 's/^XM.*kinp.*$/#&/;s/^XM.*nico.*$/#&/;s/#\(XM.*SCIM.*$\)/\1/' \
        .xinitrc
    sed -i 's/#\(QT_.*scim.*$\)/\1/;s/#\(GTK_.*scim.*$\)/\1/' .xinitrc
  fi

  if [ "$VISUALBELL" = "y" ]; then
    cat $SKELDIR/Default/.emacs | sed -e 's/;(setq visible-bell t)/(setq visible-bell t)/' > .emacs
    TMPFILE=`mktemp /tmp/adduser$$.XXXXXX`
    cat .Xdefaults > $TMPFILE
    cat $TMPFILE | sed -e 's/\(!\)\(.*\*visualBell:	True\)/\2/g' > .Xdefaults
    rm -f $TMPFILE
  fi

  if [ "$KDEFONTS" -eq "2" ]; then
    cp -R $SKELDIR/kde-aa-mincho/.qt $SKELDIR/kde-aa-mincho/.kde .
  elif [ "$KDEFONTS" -eq "1" ]; then
    cp -R $SKELDIR/kde-aa-gothic/.qt $SKELDIR/kde-aa-gothic/.kde .
  elif [ "$KDEFONTS" -eq "3" ]; then
    cp -R $SKELDIR/kde-aa-mikachan/.qt $SKELDIR/kde-aa-mikachan/.kde .
  elif [ "$KDEFONTS" -eq "4" ]; then
    cp -R $SKELDIR/kde-non-aa/.qt $SKELDIR/kde-non-aa/.kde .
  fi
  if [ -d .kde ]; then
      chown -R ${LOGIN}:${GROUPID} .kde
  fi
  if [ -d .qt ]; then
      chown -R ${LOGIN}:${GROUPID} .qt
  fi
fi

echo
/usr/bin/chfn $LOGIN
echo
/usr/bin/passwd $LOGIN
#Ͽλޤ"
msg_last
if [ "$DISPLAY" != "" ] ; then
  echo
  wait_press_enter
fi

if [ -x /usr/sbin/sendmail ]; then
  if [ ! -f /usr/spool/mail/$LOGIN ]; then
    cat $SKELDIR/mime-mail.sample > /usr/spool/mail/$LOGIN
    chown ${LOGIN}:${GROUPID} /usr/spool/mail/$LOGIN
    chmod og-rwx /usr/spool/mail/$LOGIN
  fi
fi
