(command.BraceGroup
  children: [
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:INPUT) op:assign_op.Equal rhs:{<0>} spids:[75])]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_EqualTilde
                      left: {($ Id.VSub_Number '$1')}
                      right: 
                        {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> 
                          <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'>
                        }
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INPUT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [102]
                )
              ]
            )
          ]
          spids: [79 99]
        )
      ]
    )
    (C {<.>} {</DietPi/dietpi/func/dietpi-globals>})
    (C {<G_CHECK_ROOT_USER>})
    (C {<G_CHECK_ROOTFS_RW>})
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Sync>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_BACKTITLE)
          op: assign_op.Equal
          rhs: {(SQ <DietPi-Sync>)}
          spids: [150]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [156]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CHOICE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [161]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPTION)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [165]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TARGETMENUID)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [169]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [174]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <'Not available'>)}
          spids: [178]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [184]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <'Not available'>)}
          spids: [188]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [195]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <Disabled>)}
          spids: [200]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <Disabled>)}
          spids: [206]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <Disabled>)}
          spids: [212]
        )
      ]
    )
    (command.ShFunction
      name: Menu_Main
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT)
                  op: assign_op.Equal
                  rhs: {(SQ <Disabled>)}
                  spids: [230]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: 
                                (arith_expr.ArithWord
                                  w: {($ Id.VSub_DollarName '$SYNC_DELETE_MODE')}
                                )
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT)
                          op: assign_op.Equal
                          rhs: {(SQ <Enabled>)}
                          spids: [254]
                        )
                      ]
                    )
                  ]
                  spids: [236 250]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT)
                  op: assign_op.Equal
                  rhs: {(SQ <Disabled>)}
                  spids: [265]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: 
                                (arith_expr.ArithWord
                                  w: {($ Id.VSub_DollarName '$SYNC_COMPRESSION')}
                                )
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT)
                          op: assign_op.Equal
                          rhs: {(SQ <Enabled>)}
                          spids: [289]
                        )
                      ]
                    )
                  ]
                  spids: [271 285]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT)
                  op: assign_op.Equal
                  rhs: {(SQ <Disabled>)}
                  spids: [300]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$SYNC_CRONDAILY')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT)
                          op: assign_op.Equal
                          rhs: {(SQ <Enabled>)}
                          spids: [324]
                        )
                      ]
                    )
                  ]
                  spids: [306 320]
                )
              ]
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'sync_last_completed='> 
                (SQ <'No previous sync found in target directory.'>)
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$FP_TARGET') </> 
                              ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                            )
                          } {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:sync_last_completed)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {<grep>} {(SQ <'^Sync completed'>)} 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$FP_TARGET') </> 
                                                ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                                              )
                                            }
                                          )
                                          (C {<tail>} {<-1>})
                                          (C {<awk>} {(SQ <'{print $3}'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [362]
                        )
                      ]
                    )
                  ]
                  spids: [343 358]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <DietPi-Sync>)}
                  spids: [397]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--title>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                                  {<--menu>}
                                  {
                                    (DQ <'Source location:'> <Id.Lit_Other '\\'> <'n  '> 
                                      ($ Id.VSub_DollarName '$FP_SOURCE') <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nTarget location:'> <Id.Lit_Other '\\'> <'n  '> 
                                      ($ Id.VSub_DollarName '$FP_TARGET') <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nMost recent successful sync date:'> <Id.Lit_Other '\\'> 
                                      <'n  '> ($ Id.VSub_DollarName '$sync_last_completed')
                                    )
                                  }
                                  {<--cancel-button>}
                                  {(DQ <Exit>)}
                                  {<--backtitle>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                  {<23>}
                                  {<73>}
                                  {<8>}
                                  {(DQ <Help>)}
                                  {(DQ <'What does DietPi-Sync do?'>)}
                                  {(DQ <'Source Location'>)}
                                  {(DQ <'Change the Source directory.'>)}
                                  {(DQ <'Target Location'>)}
                                  {(DQ <'Change the Target directory.'>)}
                                  {(DQ <'Delete Mode'>)}
                                  {(DQ ($ Id.VSub_DollarName '$SYNC_MODE_TEXT'))}
                                  {(DQ <Compression>)}
                                  {(DQ ($ Id.VSub_DollarName '$SYNC_COMPRESSION_TEXT'))}
                                  {(DQ <'Sync: Daily'>)}
                                  {(DQ ($ Id.VSub_DollarName '$SYNC_CRONDAILY_TEXT'))}
                                  {(DQ <'Sync: Dry Run'>)}
                                  {(DQ <'Run a test Sync without modifying any data.'>)}
                                  {(DQ <'Sync: Now'>)}
                                  {(DQ <'Sync the Source location to the Target location.'>)}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [403]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [546]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ <'Source Location'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<2>}
                                  spids: [584]
                                )
                              ]
                            )
                          ]
                          spids: [577 580 589 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Target Location'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [600]
                                )
                              ]
                            )
                          ]
                          spids: [593 596 605 -1]
                        )
                        (case_arm
                          pat_list: [{<Help>}]
                          action: [
                            (C {<whiptail>} {<--title>} {(DQ <'DietPi-Sync Help'>)} {<--msgbox>} 
                              {
                                (DQ 
                                  <
'DietPi-Sync is a program that allows you to duplicate a directory from one location (Source) to another (Target).'
                                  > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> 
                                  <
'nFor example: If we want to duplicate (sync) the data on our external USB HDD to another location, we simply select the USB HDD as the source, then, select a target location. The target location can be anything from a networked samba fileserver, or even a FTP server.'
                                  > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> 
                                  <
'nIf you would like to test a sync without modifiying any data, simply select Dry Run.'
                                  > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nMore information:'> <Id.Lit_Other '\\'> 
                                  <'n - http://dietpi.com/phpbb/viewtopic.php?f=8&t=5&p=256#p256'>
                                )
                              } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<19>} {<75>}
                            )
                          ]
                          spids: [609 610 654 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Delete Mode'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<3>}
                                  spids: [665]
                                )
                              ]
                            )
                          ]
                          spids: [658 661 670 -1]
                        )
                        (case_arm
                          pat_list: [{<Compression>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<4>}
                                  spids: [679]
                                )
                              ]
                            )
                          ]
                          spids: [674 675 684 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Sync: Daily'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<5>}
                                  spids: [695]
                                )
                              ]
                            )
                          ]
                          spids: [688 691 700 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Sync: Dry Run'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                                  op: assign_op.Equal
                                  rhs: {(SQ <' Test Dry Run Sync? '>)}
                                  spids: [711]
                                )
                              ]
                            )
                            (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} 
                              {<--yesno>} 
                              {
                                (DQ <'Source location:'> <Id.Lit_Other '\\'> <n> 
                                  ($ Id.VSub_DollarName '$FP_SOURCE') <'/*'> <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nTarget location:'> <Id.Lit_Other '\\'> <n> 
                                  ($ Id.VSub_DollarName '$FP_TARGET') <'/*'> <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> 
                                  <'nThis is a Dry Run for testing. No data will be modified.'> <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nDo you wish to continue?'>
                                )
                              } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<16>} {<72>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CHOICE)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [776]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DEqual
                                              left: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$CHOICE')}
                                                )
                                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                            )
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [798]
                                        )
                                      ]
                                    )
                                    (C {<Run_Sync>})
                                  ]
                                  spids: [780 794]
                                )
                              ]
                            )
                          ]
                          spids: [704 707 810 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Sync: Now'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                                  op: assign_op.Equal
                                  rhs: {(SQ <' Start Sync? '>)}
                                  spids: [821]
                                )
                              ]
                            )
                            (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} 
                              {<--yesno>} 
                              {
                                (DQ <'Source location:'> <Id.Lit_Other '\\'> <n> 
                                  ($ Id.VSub_DollarName '$FP_SOURCE') <'/*'> <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nTarget location:'> <Id.Lit_Other '\\'> <n> 
                                  ($ Id.VSub_DollarName '$FP_TARGET') <'/*'> <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> 
                                  <
'nA copy of all the files and folders inside your Source location, will be created at the Target location.'
                                  > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nDo you wish to continue?'>
                                )
                              } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<16>} {<72>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CHOICE)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [886]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DEqual
                                              left: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$CHOICE')}
                                                )
                                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                            )
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN)
                                          op: assign_op.Equal
                                          rhs: {<0>}
                                          spids: [908]
                                        )
                                      ]
                                    )
                                    (C {<Run_Sync>})
                                  ]
                                  spids: [890 904]
                                )
                              ]
                            )
                          ]
                          spids: [814 817 920 -1]
                        )
                      ]
                    )
                  ]
                  spids: [550 564]
                )
              ]
              else_action: [(C {<Menu_Exit>})]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Exit
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <' Exit DietPi-Sync? '>)}
                  spids: [951]
                )
              ]
            )
            (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--yesno>} 
              {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<10>} {<50>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [996]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                          op: assign_op.Equal
                          rhs: {<-1>}
                          spids: [1023]
                        )
                      ]
                    )
                  ]
                  spids: [1005 1019]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Set_Directories
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'current_directory='> (DQ ($ Id.VSub_DollarName '$FP_TARGET'))}
            )
            (C {<local>} {<Id.Lit_VarLike 'current_mode_text='> (DQ <Target>)})
            (C {<local>} 
              {<Id.Lit_VarLike 'whip_description_text='> 
                (DQ <'Please select the '> ($ Id.VSub_DollarName '$current_mode_text') <' location.'> 
                  <Id.Lit_Other '\\'> <'nA copy of all the files and folders in the Source location will be created here.'> 
                  <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nCurrent Target location:'> <Id.Lit_Other '\\'> <n> 
                  ($ Id.VSub_DollarName '$FP_TARGET')
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <'Select your Sync Target location'>)}
                  spids: [1091]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$TARGETMENUID')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:current_directory)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$FP_SOURCE'))}
                          spids: [1115]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:current_mode_text)
                          op: assign_op.Equal
                          rhs: {(DQ <Source>)}
                          spids: [1121]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:whip_description_text)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'Please select the '> ($ Id.VSub_DollarName '$current_mode_text') 
                                <' location.'> <Id.Lit_Other '\\'> 
                                <
'nA copy of all the files and folder in this Source location, will be created at the Target location.'
                                > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nCurrent Source location:'> <Id.Lit_Other '\\'> <n> 
                                ($ Id.VSub_DollarName '$FP_SOURCE')
                              )
                            }
                          spids: [1127]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                          op: assign_op.Equal
                          rhs: {(SQ <'Select your Sync Source location'>)}
                          spids: [1144]
                        )
                      ]
                    )
                  ]
                  spids: [1097 1111]
                )
              ]
            )
            (C {<Check_Available_DietPi_Mounts>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--title>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                                  {<--menu>}
                                  {(DQ ($ Id.VSub_DollarName '$whip_description_text'))}
                                  {<--cancel-button>}
                                  {(DQ <Back>)}
                                  {<--backtitle>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                  {<17>}
                                  {<75>}
                                  {<4>}
                                  {(DQ <Manual>)}
                                  {
                                    (DQ <'Manually type your '> 
                                      ($ Id.VSub_DollarName '$current_mode_text') <' directory.'>
                                    )
                                  }
                                  {(DQ <List>)}
                                  {(DQ <'Select from a list of available mounts/drives'>)}
                                  {(DQ <'Samba Client'>)}
                                  {(DQ ($ Id.VSub_DollarName '$SAMBA_MOUNT_TEXT'))}
                                  {(DQ <'FTP Client'>)}
                                  {(DQ ($ Id.VSub_DollarName '$FTP_MOUNT_TEXT'))}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [1159]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1246]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{<List>}]
                          action: [
                            (C {</DietPi/dietpi/dietpi-drive_manager>} {<1>})
                            (C {<local>} 
                              {<Id.Lit_VarLike 'return_value='> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  command_list: 
                                    (command.CommandList
                                      children: [(C {<cat>} {</tmp/dietpi-drive_manager_selmnt>})]
                                    )
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ ($ Id.VSub_DollarName '$return_value'))} {<Id.Lit_Equals '='>} {(DQ </>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:return_value)
                                          op: assign_op.Equal
                                          rhs: {(SQ </mnt>)}
                                          spids: [1321]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1300 1317]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DEqual
                                              left: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                )
                                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                                            )
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$return_value'))}
                                          spids: [1350]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1332 1346]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$return_value') </dietpi-sync>)}
                                      spids: [1361]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1279 1280 1373 -1]
                        )
                        (case_arm
                          pat_list: [{<Manual>}]
                          action: [(C {<Input_User_Directory>})]
                          spids: [1377 1378 1384 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Samba Client'>)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DEqual
                                              left: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$SAMBA_MOUNT_AVAILABLE')}
                                                )
                                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                            )
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (command.DParen
                                                  child: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_DEqual
                                                      left: 
                                                        (arith_expr.ArithWord
                                                          w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                        )
                                                      right: 
                                                        (arith_expr.ArithWord
                                                          w: {<Id.Lit_Digits 2>}
                                                        )
                                                    )
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT'))}
                                                  spids: [1429]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1411 1425]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT') 
                                                    </dietpi-sync>
                                                  )
                                                }
                                              spids: [1440]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1393 1407]
                                )
                              ]
                              else_action: [
                                (C {<Prompt_Setup_Samba_Mount>})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: 
                                                    (arith_expr.ArithWord
                                                      w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                    )
                                                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                              op: assign_op.Equal
                                              rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))}
                                              spids: [1477]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [1459 1473]
                                    )
                                  ]
                                  else_action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))}
                                          spids: [1488]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1387 1390 1503 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'FTP Client'>)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DEqual
                                              left: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$FTP_MOUNT_AVAILABLE')}
                                                )
                                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                            )
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (command.DParen
                                                  child: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_DEqual
                                                      left: 
                                                        (arith_expr.ArithWord
                                                          w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                        )
                                                      right: 
                                                        (arith_expr.ArithWord
                                                          w: {<Id.Lit_Digits 2>}
                                                        )
                                                    )
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName '$FP_FTP_MOUNT'))}
                                                  spids: [1549]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1531 1545]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$FP_FTP_MOUNT') 
                                                    </dietpi-sync>
                                                  )
                                                }
                                              spids: [1560]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1513 1527]
                                )
                              ]
                              else_action: [
                                (C {<Prompt_Setup_FTP_Mount>})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: 
                                                    (arith_expr.ArithWord
                                                      w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                    )
                                                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                              op: assign_op.Equal
                                              rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))}
                                              spids: [1597]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [1579 1593]
                                    )
                                  ]
                                  else_action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))}
                                          spids: [1608]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1507 1510 1623 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1251 1265]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [1639]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Set_Sync_Delete_Mode
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <' Sync Delete Mode '>)}
                  spids: [1663]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--title>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                                  {<--menu>}
                                  {
                                    (DQ <'Please select the Sync delete mode.'> <Id.Lit_Other '\\'> <n> 
                                      <Id.Lit_Other '\\'> <'nDisabled: (safe)'> <Id.Lit_Other '\\'> 
                                      <
'nIf files and folders exist in the Target location, that are not in the Source, they will be left alone.'
                                      > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nEnabled: (WARNING, if in doubt, DO NOT enable)'> 
                                      <Id.Lit_Other '\\'> 
                                      <
'nAn exact copy of the Source location will be created at the Target location. If files are in the Target location that dont exist in the Source, they will be DELETED.'
                                      >
                                    )
                                  }
                                  {<--cancel-button>}
                                  {(DQ <Back>)}
                                  {<--default-item>}
                                  {(DQ ($ Id.VSub_DollarName '$SYNC_MODE_TEXT'))}
                                  {<--backtitle>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                  {<19>}
                                  {<75>}
                                  {<2>}
                                  {(DQ <Disabled>)}
                                  {
                                    (DQ 
                                      <
'Ignores data that exists at Target Location and not Source.'
                                      >
                                    )
                                  }
                                  {(DQ <Enabled>)}
                                  {
                                    (DQ 
                                      <'Deletes data at Target location if not in Source Location.'>
                                    )
                                  }
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [1669]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1752]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{<Disabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [1790]
                                )
                              ]
                            )
                          ]
                          spids: [1785 1786 1795 -1]
                        )
                        (case_arm
                          pat_list: [{<Enabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [1804]
                                )
                              ]
                            )
                          ]
                          spids: [1799 1800 1809 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1757 1771]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1825]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Set_Compression
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <' Sync Compression Mode '>)}
                  spids: [1845]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--title>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                                  {<--menu>}
                                  {
                                    (DQ <'Please select the compression mode.'> <Id.Lit_Other '\\'> <n> 
                                      <Id.Lit_Other '\\'> <'nDisabled:'> <Id.Lit_Other '\\'> <'nNo compression will be used during data transfer.'> 
                                      <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nEnabled:'> <Id.Lit_Other '\\'> 
                                      <
'nData will be compressed when its being transfered. Useful for slow connections, however, its CPU intensive.'
                                      >
                                    )
                                  }
                                  {<--cancel-button>}
                                  {(DQ <Back>)}
                                  {<--default-item>}
                                  {(DQ ($ Id.VSub_DollarName '$SYNC_COMPRESSION_TEXT'))}
                                  {<--backtitle>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                  {<17>}
                                  {<75>}
                                  {<2>}
                                  {(DQ <Disabled>)}
                                  {(DQ <'Transfer data in its original state.'>)}
                                  {(DQ <Enabled>)}
                                  {(DQ <'Compress the data during transfer.'>)}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [1851]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1934]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{<Disabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [1972]
                                )
                              ]
                            )
                          ]
                          spids: [1967 1968 1977 -1]
                        )
                        (case_arm
                          pat_list: [{<Enabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [1986]
                                )
                              ]
                            )
                          ]
                          spids: [1981 1982 1991 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1939 1953]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [2007]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Set_CronDaily
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <' Sync Cron Daily '>)}
                  spids: [2027]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [
                                  {<whiptail>}
                                  {<--title>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                                  {<--menu>}
                                  {
                                    (DQ <'Disabled:'> <Id.Lit_Other '\\'> 
                                      <'nThe user must manually sync using dietpi-sync.'> <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nEnabled:'> <Id.Lit_Other '\\'> 
                                      <
'nA cron job will be created that automatically runs dietpi-sync, once a day.'
                                      > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'n(NOTICE):'> <Id.Lit_Other '\\'> 
                                      <
'nBefore enabling this feature, please run a test sync (Dry Run) to verify what will happen.'
                                      >
                                    )
                                  }
                                  {<--cancel-button>}
                                  {(DQ <Back>)}
                                  {<--default-item>}
                                  {(DQ ($ Id.VSub_DollarName '$SYNC_CRONDAILY_TEXT'))}
                                  {<--backtitle>}
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                  {<19>}
                                  {<75>}
                                  {<2>}
                                  {(DQ <Disabled>)}
                                  {(DQ <'Manual sync.'>)}
                                  {(DQ <Enabled>)}
                                  {(DQ <'Automatically sync once a day.'>)}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {<1>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {<2>}
                                  )
                                  (redir.Redir
                                    op: <Id.Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {<3>}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [2033]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [2118]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{<Disabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [2156]
                                )
                              ]
                            )
                          ]
                          spids: [2151 2152 2161 -1]
                        )
                        (case_arm
                          pat_list: [{<Enabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [2170]
                                )
                              ]
                            )
                          ]
                          spids: [2165 2166 2175 -1]
                        )
                      ]
                    )
                  ]
                  spids: [2123 2137]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [2191]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Input_User_Directory
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$TARGETMENUID')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:OPTION)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Simple
                                        words: [
                                          {<whiptail>}
                                          {<--inputbox>}
                                          {
                                            (DQ 
                                              <
'Please enter the filepath to your Target directory. '
                                              > <Id.Lit_Other '\\'> <'neg: /mnt/target'>
                                            )
                                          }
                                          {<8>}
                                          {<70>}
                                          {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))}
                                          {<--title>}
                                          {(DQ <'Manual sync directory'>)}
                                          {<--backtitle>}
                                          {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                        ]
                                        redirects: [
                                          (redir.Redir
                                            op: <Id.Redir_GreatAnd '3>&'>
                                            fd: 3
                                            arg_word: {<1>}
                                          )
                                          (redir.Redir
                                            op: <Id.Redir_GreatAnd '1>&'>
                                            fd: 1
                                            arg_word: {<2>}
                                          )
                                          (redir.Redir
                                            op: <Id.Redir_GreatAnd '2>&'>
                                            fd: 2
                                            arg_word: {<3>}
                                          )
                                        ]
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [2238]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CHOICE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [2281]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                                  spids: [2303]
                                )
                              ]
                            )
                          ]
                          spids: [2285 2299]
                        )
                      ]
                    )
                  ]
                  spids: [2220 2234]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$TARGETMENUID')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:OPTION)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Simple
                                        words: [
                                          {<whiptail>}
                                          {<--inputbox>}
                                          {
                                            (DQ 
                                              <
'Please enter the filepath to your Source directory. '
                                              > <Id.Lit_Other '\\'> <'neg: /mnt/source'>
                                            )
                                          }
                                          {<8>}
                                          {<70>}
                                          {(DQ ($ Id.VSub_DollarName '$FP_SOURCE'))}
                                          {<--title>}
                                          {(DQ <'Manual sync directory'>)}
                                          {<--backtitle>}
                                          {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                        ]
                                        redirects: [
                                          (redir.Redir
                                            op: <Id.Redir_GreatAnd '3>&'>
                                            fd: 3
                                            arg_word: {<1>}
                                          )
                                          (redir.Redir
                                            op: <Id.Redir_GreatAnd '1>&'>
                                            fd: 1
                                            arg_word: {<2>}
                                          )
                                          (redir.Redir
                                            op: <Id.Redir_GreatAnd '2>&'>
                                            fd: 2
                                            arg_word: {<3>}
                                          )
                                        ]
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [2336]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CHOICE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [2379]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                                  spids: [2401]
                                )
                              ]
                            )
                          ]
                          spids: [2383 2397]
                        )
                      ]
                    )
                  ]
                  spids: [2318 2332]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Prompt_Setup_Samba_Mount
      body: 
        (command.BraceGroup
          children: [
            (C {<whiptail>} {<--title>} {(DQ <'Not available. Setup Now?'>)} {<--yesno>} 
              {
                (DQ ($ Id.VSub_DollarName '$SAMBA_MOUNT_TEXT') <Id.Lit_Other '\\'> <n> 
                  <Id.Lit_Other '\\'> <'nWould you like to run DietPi-Config and setup your Samba Client Mount now?'>
                )
              } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<11>} {<70>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [2470]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {</DietPi/dietpi/dietpi-config>} {<16>} {<1>})]
                  spids: [2474 2488]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Prompt_Setup_FTP_Mount
      body: 
        (command.BraceGroup
          children: [
            (C {<whiptail>} {<--title>} {(DQ <'Not available. Setup Now?'>)} {<--yesno>} 
              {
                (DQ ($ Id.VSub_DollarName '$FTP_MOUNT_TEXT') <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> 
                  <'nWould you like to run DietPi-Config and setup your FTP Client Mount now?'>
                )
              } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<11>} {<70>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [2562]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$CHOICE')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {</DietPi/dietpi/dietpi-config>} {<16>} {<1>})]
                  spids: [2566 2580]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LOGFILE)
          op: assign_op.Equal
          rhs: {(SQ </var/log/dietpi-sync.log>)}
          spids: [2620]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_SOURCE)
          op: assign_op.Equal
          rhs: {(SQ </mnt/Source>)}
          spids: [2631]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_TARGET)
          op: assign_op.Equal
          rhs: {(SQ </mnt/Target>)}
          spids: [2637]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_FTP_MOUNT)
          op: assign_op.Equal
          rhs: {(SQ </mnt/ftp_client>)}
          spids: [2648]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_SAMBA_MOUNT)
          op: assign_op.Equal
          rhs: {(SQ </mnt/samba>)}
          spids: [2654]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_STATS_FILENAME)
          op: assign_op.Equal
          rhs: {(SQ <.dietpi-sync_stats>)}
          spids: [2665]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_EXCLUDE_GLOBAL)
          op: assign_op.Equal
          rhs: {(SQ </tmp/.dietpi-sync_exclude>)}
          spids: [2676]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_INCLUDE_GLOBAL)
          op: assign_op.Equal
          rhs: {(SQ </tmp/.dietpi-sync_include>)}
          spids: [2682]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_EXCLUDE_USER)
          op: assign_op.Equal
          rhs: {(SQ </DietPi/dietpi/.dietpi-sync_exclude>)}
          spids: [2688]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_INCLUDE_USER)
          op: assign_op.Equal
          rhs: {(SQ </DietPi/dietpi/.dietpi-sync_include>)}
          spids: [2694]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [2705]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [2709]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [2713]
        )
      ]
    )
    (command.ShFunction
      name: Create_Exclude_File
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/boot/dietpi/*'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/DietPi/*'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/dev/*'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/proc/*'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/sys/*'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/tmp/*'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/run/*'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$LOGFILE'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_USER'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_USER'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ </var/swap>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'*.tmp'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <Thumbs.db>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <desktop.ini>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'SyncToy*'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'System Volume Information'>)}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                          {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_USER'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{<cat>} {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_USER'))}]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_DGreat '>>'>
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                        )
                      ]
                    )
                  ]
                  spids: [3051 3064]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Create_Include_File
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ )}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                          {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_USER'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{<cat>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_USER'))}]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_DGreat '>>'>
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))}
                        )
                      ]
                    )
                  ]
                  spids: [3141 3154]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Services_Stop
      body: (command.BraceGroup children:[(C {</DietPi/dietpi/dietpi-services>} {<stop>})])
    )
    (command.ShFunction
      name: Services_Start
      body: (command.BraceGroup children:[(C {</DietPi/dietpi/dietpi-services>} {<start>})])
    )
    (command.ShFunction
      name: Banner_Start
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'mode='> (SQ <Sync>)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$SYNC_DRY_RUN')})
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:mode)
                          op: assign_op.Equal
                          rhs: {(SQ <'Dry Run'>)}
                          spids: [3247]
                        )
                      ]
                    )
                  ]
                  spids: [3229 3243]
                )
              ]
            )
            (C {<G_DIETPI-NOTIFY>} {<3>} {<DietPi-Sync>} {(DQ ($ Id.VSub_DollarName '$mode'))})
          ]
        )
    )
    (command.ShFunction
      name: Run_Sync
      body: 
        (command.BraceGroup
          children: [
            (C {<Banner_Start>})
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} 
                          {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.ArithWord
                                      w: {($ Id.VSub_DollarName '$G_USER_INPUTS')}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<whiptail>} {<--title>} {(DQ <'Sync failed.'>)} {<--msgbox>} 
                              {
                                (DQ <'Unable to create Target directory '> 
                                  ($ Id.VSub_DollarName '$FP_TARGET')
                                )
                              } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<10>} {<60>}
                            )
                          ]
                          spids: [3323 3333]
                        )
                      ]
                    )
                  ]
                  spids: [3304 3319]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: 
                                (arith_expr.ArithWord
                                  w: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {<ps>} {<aux>})
                                                  (C {<grep>} {<-ci>} {<-m1>} {(DQ <'[r]sync'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {<-e>}
                        {
                          (DQ <'Sync failed: '> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              command_list: 
                                (command.CommandList
                                  children: [(C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)})]
                                )
                            ) <'. Rsync is already running.'>
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_DGreat '>>'>
                          fd: -1
                          arg_word: 
                            {
                              (DQ ($ Id.VSub_DollarName '$FP_TARGET') </> 
                                ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                              )
                            }
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.ArithWord
                                      w: {($ Id.VSub_DollarName '$G_USER_INPUTS')}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<whiptail>} {<--title>} {(DQ <'Sync Error'>)} {<--msgbox>} 
                              {(DQ <'A sync job could not be started as rsync is already running.'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                            )
                          ]
                          spids: [3437 3447]
                        )
                      ]
                    )
                  ]
                  spids: [3372 3402]
                )
              ]
              else_action: [
                (C {<Create_Exclude_File>})
                (C {<Create_Include_File>})
                (C {<local>} {<Id.Lit_VarLike 'rync_options='> (DQ <-a>)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:rync_options)
                      op: assign_op.PlusEqual
                      rhs: {(DQ <v>)}
                      spids: [3516]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:rync_options)
                      op: assign_op.PlusEqual
                      rhs: {(DQ <P>)}
                      spids: [3526]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:rync_options)
                      op: assign_op.PlusEqual
                      rhs: {(DQ <4>)}
                      spids: [3536]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    (arith_expr.ArithWord
                                      w: {($ Id.VSub_DollarName '$SYNC_COMPRESSION')}
                                    )
                                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rync_options)
                              op: assign_op.PlusEqual
                              rhs: {(DQ <z>)}
                              spids: [3565]
                            )
                          ]
                        )
                      ]
                      spids: [3547 3561]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    (arith_expr.ArithWord
                                      w: {($ Id.VSub_DollarName '$SYNC_DRY_RUN')}
                                    )
                                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rync_options)
                              op: assign_op.PlusEqual
                              rhs: {(DQ <n>)}
                              spids: [3598]
                            )
                          ]
                        )
                      ]
                      spids: [3580 3594]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    (arith_expr.ArithWord
                                      w: {($ Id.VSub_DollarName '$SYNC_DELETE_MODE')}
                                    )
                                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rync_options)
                              op: assign_op.PlusEqual
                              rhs: {(DQ <' --delete'>)}
                              spids: [3631]
                            )
                          ]
                        )
                      ]
                      spids: [3613 3627]
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {<echo>}
                    {<-e>}
                    {
                      (DQ <'DietPi-Sync Log File.'> <Id.Lit_Other '\\'> <n> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {<date>} 
                                  {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <d-> <Id.Lit_Other '%'> <m-> 
                                    <Id.Lit_Other '%'> <Y_> <Id.Lit_Other '%'> <H> <Id.Lit_Other '%'> <M>
                                  }
                                )
                              ]
                            )
                        ) <Id.Lit_Other '\\'> <'nSYNC_DRY_RUN='> ($ Id.VSub_DollarName '$SYNC_DRY_RUN') <Id.Lit_Other '\\'> <n> 
                        <Id.Lit_Other '\\'> <n>
                      )
                    }
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$LOGFILE'))}
                    )
                  ]
                )
                (C {<rsync>} {($ Id.VSub_DollarName '$rync_options')} 
                  {<--log-file> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$LOGFILE')} {<--exclude-from> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))} 
                  {<--include-from> <Id.Lit_Equals '='> 
                    (DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))
                  } {(DQ ($ Id.VSub_DollarName '$FP_SOURCE')) </>} {(DQ ($ Id.VSub_DollarName '$FP_TARGET')) </>}
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: (arith_expr.ArithWord w:{($ Id.VSub_QMark '$?')})
                                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {<-e>}
                            {
                              (DQ <'Sync completed: '> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)})
                                      ]
                                    )
                                )
                              )
                            }
                          ]
                          redirects: [
                            (redir.Redir
                              op: <Id.Redir_DGreat '>>'>
                              fd: -1
                              arg_word: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$FP_TARGET') </> 
                                    ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                                  )
                                }
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$G_USER_INPUTS')}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: 
                                                    (arith_expr.ArithWord
                                                      w: {($ Id.VSub_DollarName '$SYNC_DRY_RUN')}
                                                    )
                                                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                      action: [
                                        (C {<whiptail>} {<--title>} {(DQ <'Sync completed'>)} 
                                          {<--msgbox>} 
                                          {
                                            (DQ ($ Id.VSub_DollarName '$FP_SOURCE') 
                                              <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nHas been synced to:'> <Id.Lit_Other '\\'> <n> 
                                              ($ Id.VSub_DollarName '$FP_TARGET') <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nLog file: '> ($ Id.VSub_DollarName '$LOGFILE')
                                            )
                                          } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                                        )
                                      ]
                                      spids: [3798 3812]
                                    )
                                  ]
                                  else_action: [
                                    (C {<whiptail>} {<--title>} {(DQ <'Dry Run Sync completed'>)} 
                                      {<--msgbox>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$FP_SOURCE') <Id.Lit_Other '\\'> <n> 
                                          <Id.Lit_Other '\\'> <'nHas been synced with a Dry Run (NO modifications) to:'> <Id.Lit_Other '\\'> <n> 
                                          ($ Id.VSub_DollarName '$FP_TARGET') <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <'nLog file: '> ($ Id.VSub_DollarName '$LOGFILE')
                                        )
                                      } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                                    )
                                  ]
                                )
                              ]
                              spids: [3784 3794]
                            )
                          ]
                        )
                      ]
                      spids: [3736 3750]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {<-e>}
                        {
                          (DQ <'Sync failed: '> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              command_list: 
                                (command.CommandList
                                  children: [(C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)})]
                                )
                            )
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_DGreat '>>'>
                          fd: -1
                          arg_word: 
                            {
                              (DQ ($ Id.VSub_DollarName '$FP_TARGET') </> 
                                ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                              )
                            }
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.ArithWord
                                      w: {($ Id.VSub_DollarName '$G_USER_INPUTS')}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DEqual
                                              left: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$SYNC_DRY_RUN')}
                                                )
                                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                            )
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (C {<whiptail>} {<--title>} {(DQ <'Sync failed'>)} {<--msgbox>} 
                                      {
                                        (DQ 
                                          <
'Your sync has failed. Please see the Log file for more information:'
                                          > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <n> ($ Id.VSub_DollarName '$LOGFILE')
                                        )
                                      } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                                    )
                                  ]
                                  spids: [3956 3970]
                                )
                              ]
                              else_action: [
                                (C {<whiptail>} {<--title>} {(DQ <'Dry Run Sync failed'>)} {<--msgbox>} 
                                  {
                                    (DQ 
                                      <
'Your sync has failed. Please see the Log file for more information:'
                                      > <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <n> ($ Id.VSub_DollarName '$LOGFILE')
                                    )
                                  } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                                )
                              ]
                            )
                          ]
                          spids: [3942 3952]
                        )
                      ]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [4055]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Check_Install_PreReqs
      body: (command.BraceGroup children:[(C {<G_AG_CHECK_INSTALL_PREREQ>} {<rsync>})])
    )
    (command.ShFunction
      name: Check_Available_DietPi_Mounts
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'temp_file_mounts='> (DQ </tmp/.dietpi-sync_dietpi_mounts>)})
            (command.Simple
              words: [{<df>} {<-h>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [4116]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_TEXT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'Not mounted ('> ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT') 
                        <'). Select to setup.'>
                      )
                    }
                  spids: [4120]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: 
                                (arith_expr.ArithWord
                                  w: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {<cat>} 
                                                    {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))}
                                                  )
                                                  (C {<grep>} {<-ci>} {<-m1>} {(DQ </mnt/samba>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [4164]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_TEXT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'Size: '> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {<df>} {<-h>})
                                            (C {<grep>} {</mnt/samba>})
                                            (C {<awk>} {(SQ <'{print $2}'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                ) <'B | Available: '> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {<df>} {<-h>})
                                            (C {<grep>} {</mnt/samba>})
                                            (C {<awk>} {(SQ <'{print $4}'>)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                ) <B>
                              )
                            }
                          spids: [4168]
                        )
                      ]
                    )
                  ]
                  spids: [4128 4160]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [4223]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'Not mounted ('> ($ Id.VSub_DollarName '$FP_FTP_MOUNT') 
                        <'). Select to setup.'>
                      )
                    }
                  spids: [4227]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: 
                                (arith_expr.ArithWord
                                  w: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {<cat>} 
                                                    {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))}
                                                  )
                                                  (C {<grep>} {<-ci>} {<-m1>} {(DQ </mnt/ftp_client>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [4271]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT)
                          op: assign_op.Equal
                          rhs: {(DQ <'Mounted and online.'>)}
                          spids: [4275]
                        )
                      ]
                    )
                  ]
                  spids: [4235 4267]
                )
              ]
            )
            (C {<rm>} {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_DIETPISYNC_SETTINGS)
          op: assign_op.Equal
          rhs: {(DQ </DietPi/dietpi/.dietpi-sync_settings>)}
          spids: [4314]
        )
      ]
    )
    (command.ShFunction
      name: Write_Settings_File
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_SOURCE'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SYNC_DELETE_MODE'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SYNC_COMPRESSION'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SYNC_CRONDAILY'))}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Read_Settings_File
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                          {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'sed_index='> <1>})
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {<sed>} {<-n>} 
                                            {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [4450]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: (sh_lhs_expr.Name name:sed_index)
                        )
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:FP_TARGET)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {<sed>} {<-n>} 
                                            {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [4473]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: (sh_lhs_expr.Name name:sed_index)
                        )
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {<sed>} {<-n>} 
                                            {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [4496]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: (sh_lhs_expr.Name name:sed_index)
                        )
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {<sed>} {<-n>} 
                                            {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [4519]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: (sh_lhs_expr.Name name:sed_index)
                        )
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {<sed>} {<-n>} 
                                            {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [4542]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: (sh_lhs_expr.Name name:sed_index)
                        )
                    )
                  ]
                  spids: [4427 4440]
                )
              ]
            )
          ]
        )
    )
    (C {<Check_Install_PreReqs>})
    (C {<Read_Settings_File>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$INPUT')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<Run_Sync>})]
          spids: [4611 4625]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DEqual
                      left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$INPUT')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Great
                          left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$TARGETMENUID')})
                          right: 
                            (arith_expr.Unary
                              op_id: Id.Node_UnaryMinus
                              child: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                            )
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {<clear>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [(C {<Menu_Main>})]
                          spids: [4682 4696]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                            )
                                          right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                        )
                                    )
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            (arith_expr.ArithWord
                                              w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                            )
                                          right: (arith_expr.ArithWord w:{<Id.Lit_Digits 2>})
                                        )
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [(C {<Menu_Set_Directories>})]
                          spids: [4704 4732]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 3>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [(C {<Menu_Set_Sync_Delete_Mode>})]
                          spids: [4740 4754]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 4>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [(C {<Menu_Set_Compression>})]
                          spids: [4762 4776]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 5>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [(C {<Menu_Set_CronDaily>})]
                          spids: [4784 4798]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<Write_Settings_File>})
          ]
          spids: [4641 4655]
        )
      ]
    )
    (command.Simple
      words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)