(command.BraceGroup
  children: [
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:INPUT) op:assign_op.Equal rhs:{<0>} spids:[71])]
    )
    (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: [99]
                )
              ]
            )
          ]
          spids: [75 95]
        )
      ]
    )
    (C {<.>} {</DietPi/dietpi/func/dietpi-globals>})
    (C {<G_CHECK_ROOT_USER>})
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-CPU_info>)})
    (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 '$G_HW_MODEL')})
                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 20>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {<-e>} 
              {
                (DQ <Id.Lit_Other '\\'> <'nNotice: CPU information is not available for VM.'> 
                  <Id.Lit_Other '\\'> <n>
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
          ]
          spids: [137 151]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPU_GOV_CURRENT)
          op: assign_op.Equal
          rhs: {(SQ <Unknown>)}
          spids: [179]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCPU_CURRENT_FREQ)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [186]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCPU_MIN_FREQ)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [190]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCPU_MAX_FREQ)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [194]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCPU_SCALINGAVAILABLE_FREQ)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [198]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPU_SCALINGSUPPORTED)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [202]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_CPU_SCALINGAVAILABLE_FREQ)
          op: assign_op.Equal
          rhs: {(SQ </tmp/dietpi-available_cpu_freqs>)}
          spids: [206]
        )
      ]
    )
    (command.ShFunction
      name: Obtain_Cpu_Freq
      body: 
        (command.BraceGroup
          children: [
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: (sh_lhs_expr.Name name:i)
                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike i>)
                  right: 
                    (arith_expr.ArithWord
                      w: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            command_list: (command.CommandList children:[(C {<nproc>} {<--all>})])
                          )
                        }
                    )
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i))
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-f>} 
                                  {</sys/devices/system/cpu/cpu> ($ Id.VSub_DollarName '$i') 
                                    </cpufreq/scaling_cur_freq>
                                  } {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCPU_CURRENT_FREQ
                                      index: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {<cat>} 
                                                {</sys/devices/system/cpu/cpu> 
                                                  ($ Id.VSub_DollarName '$i') </cpufreq/scaling_cur_freq>
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [263]
                                )
                              ]
                            )
                          ]
                          spids: [246 259]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-f>} 
                                  {</sys/devices/system/cpu/cpu> ($ Id.VSub_DollarName '$i') 
                                    </cpufreq/scaling_min_freq>
                                  } {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCPU_MIN_FREQ
                                      index: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {<cat>} 
                                                {</sys/devices/system/cpu/cpu> 
                                                  ($ Id.VSub_DollarName '$i') </cpufreq/scaling_min_freq>
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [299]
                                )
                              ]
                            )
                          ]
                          spids: [282 295]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-f>} 
                                  {</sys/devices/system/cpu/cpu> ($ Id.VSub_DollarName '$i') 
                                    </cpufreq/scaling_max_freq>
                                  } {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCPU_MAX_FREQ
                                      index: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {<cat>} 
                                                {</sys/devices/system/cpu/cpu> 
                                                  ($ Id.VSub_DollarName '$i') </cpufreq/scaling_max_freq>
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [335]
                                )
                              ]
                            )
                          ]
                          spids: [318 331]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                          {</sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ForExpr
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: (sh_lhs_expr.Name name:i)
                          right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                        )
                      cond: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike i>)
                          right: 
                            (arith_expr.ArithWord
                              w: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [(C {<nproc>} {<--all>})]
                                      )
                                  )
                                }
                            )
                        )
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: (sh_lhs_expr.Name name:i)
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCPU_SCALINGAVAILABLE_FREQ
                                      index: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {<cat>} 
                                                    {</sys/devices/system/cpu/cpu> 
                                                      ($ Id.VSub_DollarName '$i') </cpufreq/scaling_available_frequencies>
                                                    }
                                                  )
                                                  (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                                  (C {<sed>} {<-e>} {(SQ <'s/[^0-9]//g'>)})
                                                  (C {<sed>} {(SQ <'/^$/d'>)})
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [408]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [366 377]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                          {</sys/devices/system/cpu/cpufreq/mp-cpufreq/cpu_freq_table>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              name: aCPU_SCALINGAVAILABLE_FREQ
                              index: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {<cat>} 
                                            {
                                              <
/sys/devices/system/cpu/cpufreq/mp-cpufreq/cpu_freq_table
                                              >
                                            }
                                          )
                                          (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                          (C {<sed>} {<-e>} {(SQ <'s/[^0-9]//g'>)})
                                          (C {<sed>} {(SQ <'/^$/d'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [476]
                        )
                      ]
                    )
                  ]
                  spids: [461 472]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CPU_SCALINGSUPPORTED)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [523]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPU_TEMP_CURRENT)
          op: assign_op.Equal
          rhs: {(SQ <Unknown>)}
          spids: [536]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
          op: assign_op.Equal
          rhs: {(SQ <Unknown>)}
          spids: [542]
        )
      ]
    )
    (command.ShFunction
      name: Obtain_Cpu_Temp
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: (command.CommandList children:[(C {<G_OBTAIN_CPU_TEMP>})])
                      )
                    }
                  spids: [557]
                )
              ]
            )
            (C {<local>} {<Id.Lit_VarLike 'cpu_temp_current_f='> (SQ <Unknown>)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_EqualTilde
                              left: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                              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:cpu_temp_current_f)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Slash
                                        left: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Star
                                            left: 
                                              (arith_expr.ArithWord
                                                w: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                              )
                                            right: (arith_expr.ArithWord w:{<Id.Lit_Digits 9>})
                                          )
                                        right: (arith_expr.ArithWord w:{<Id.Lit_Digits 5>})
                                      )
                                    right: (arith_expr.ArithWord w:{<Id.Lit_Digits 32>})
                                  )
                              )
                            }
                          spids: [596]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_GreatEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 70>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_Other '\\'> <'e[91mWarning: '> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <"'c : "> ($ Id.VSub_DollarName '$cpu_temp_current_f') <"'f | Reducing the life of your device."> 
                                        <Id.Lit_Other '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [639]
                                )
                              ]
                            )
                          ]
                          spids: [621 635]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_GreatEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 60>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_Other '\\'> <'e[38;5;202m'> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <"'c : "> ($ Id.VSub_DollarName '$cpu_temp_current_f') <"'f"> <Id.Lit_Other '\\'> 
                                        <'e[90m | Running hot, not recommended.'> <Id.Lit_Other '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [671]
                                )
                              ]
                            )
                          ]
                          spids: [653 667]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_GreatEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 50>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_Other '\\'> <'e[93m'> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <"'c : "> ($ Id.VSub_DollarName '$cpu_temp_current_f') <"'f"> <Id.Lit_Other '\\'> <'e[0m '> 
                                        <Id.Lit_Other '\\'> <'e[90m | Running warm, but safe.'> <Id.Lit_Other '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [705]
                                )
                              ]
                            )
                          ]
                          spids: [687 701]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_GreatEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 40>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_Other '\\'> <'e[92m'> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <"'c : "> ($ Id.VSub_DollarName '$cpu_temp_current_f') <"'f"> <Id.Lit_Other '\\'> <'e[0m'> 
                                        <Id.Lit_Other '\\'> <'e[90m | Optimal temperature.'> <Id.Lit_Other '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [741]
                                )
                              ]
                            )
                          ]
                          spids: [723 737]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_GreatEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                        )
                                      right: (arith_expr.ArithWord w:{<Id.Lit_Digits 30>})
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_Other '\\'> <'e[96m'> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <"'c : "> ($ Id.VSub_DollarName '$cpu_temp_current_f') <"'f"> <Id.Lit_Other '\\'> <'e[0m'> 
                                        <Id.Lit_Other '\\'> <'e[90m | Cool runnings.'> <Id.Lit_Other '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [777]
                                )
                              ]
                            )
                          ]
                          spids: [759 773]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ <Id.Lit_Other '\\'> <'e[96m'> 
                                    ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <"'c : "> ($ Id.VSub_DollarName '$cpu_temp_current_f') <"'f "> <Id.Lit_Other '\\'> <'e[0m '> 
                                    <Id.Lit_Other '\\'> <'e[90m| Who put me in the freezer!'> <Id.Lit_Other '\\'> <'e[0m'>
                                  )
                                }
                              spids: [799]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [572 592]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <Id.Lit_Other '\\'> <'e[91mKERNELERR: '> 
                            ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <"'c"> <Id.Lit_Other '\\'> <'e[0m'>
                          )
                        }
                      spids: [825]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Obtain_Cpu_Gov
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                          {</sys/devices/system/cpu/cpu0/cpufreq/scaling_governor>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CPU_GOV_CURRENT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {<cat>} 
                                        {</sys/devices/system/cpu/cpu0/cpufreq/scaling_governor>}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [867]
                        )
                      ]
                    )
                  ]
                  spids: [852 863]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Print_Stats
      body: 
        (command.BraceGroup
          children: [
            (C {<echo>} {<-e>} {(DQ )})
            (C {<echo>} {<-e>} 
              {
                (DQ <' '> <Id.Lit_Other '\\'> 
                  <
'e[38;5;154m\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                  > <Id.Lit_Other '\\'> <'e[0m'> <Id.Lit_Other '\\'> <'n '> <Id.Lit_Other '\\'> <'e[1mDietPi CPU Info'> 
                  <Id.Lit_Other '\\'> <'e[0m'> <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> 
                  <'e[90m Use dietpi-config to change CPU / performance options'> <Id.Lit_Other '\\'> <'e[0m'> <Id.Lit_Other '\\'> <'n '> <Id.Lit_Other '\\'> 
                  <
'e[38;5;154m\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                  > <Id.Lit_Other '\\'> <'e[0m'>
                )
              }
            )
            (C {<echo>} {<-e>} 
              {
                (DQ <' Architecture '> <Id.Lit_Other '\\'> <'e[90m|'> <Id.Lit_Other '\\'> <'e[0m     '> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    command_list: (command.CommandList children:[(C {<uname>} {<-m>})])
                  )
                )
              }
            )
            (C {<echo>} {<-e>} 
              {
                (DQ <' Temp         '> <Id.Lit_Other '\\'> <'e[90m|'> <Id.Lit_Other '\\'> <'e[0m     '> 
                  ($ Id.VSub_DollarName '$CPU_TEMP_PRINT')
                )
              }
            )
            (C {<echo>} {<-e>} 
              {
                (DQ <' Governor     '> <Id.Lit_Other '\\'> <'e[90m|'> <Id.Lit_Other '\\'> <'e[0m     '> 
                  ($ Id.VSub_DollarName '$CPU_GOV_CURRENT')
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$CPU_GOV_CURRENT'))} 
                              {<Id.Lit_Equals '='>} {(DQ <ondemand>)} {<Id.Lit_RBracket ']'>}
                            )
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$CPU_GOV_CURRENT'))} 
                              {<Id.Lit_Equals '='>} {(DQ <conservative>)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<echo>} {<-e>} 
                      {
                        (DQ <' Throttle up  '> <Id.Lit_Other '\\'> <'e[90m|'> <Id.Lit_Other '\\'> 
                          <'e[0m     '> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {<cat>} {</DietPi/dietpi.txt>})
                                      (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_USAGE_THROTTLE_UP='>)})
                                      (C {<sed>} {(SQ <'s/.*=//'>)})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          ) <'% CPU usage'>
                        )
                      }
                    )
                  ]
                  spids: [992 1026]
                )
              ]
            )
            (C {<echo>} {<-e>} {(DQ )})
            (C {<echo>} {<-e>} 
              {
                (DQ <' '> <Id.Lit_Other '\\'> 
                  <'e[90m                Current Freq    Min Freq   Max Freq'> <Id.Lit_Other '\\'> <'e[0m'>
                )
              }
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: (sh_lhs_expr.Name name:i)
                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike i>)
                  right: 
                    (arith_expr.ArithWord
                      w: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name aCPU_CURRENT_FREQ>
                            prefix_op: (Id.VSub_Pound)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        }
                    )
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i))
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {<-e>} 
                      {
                        (DQ <' '> <Id.Lit_Other '\\'> <'e[90mCPU'> ($ Id.VSub_DollarName '$i') 
                          <Id.Lit_Other '\\'> <'e[0m         '> <Id.Lit_Other '\\'> <'e[90m|'> <Id.Lit_Other '\\'> <'e[0m      '> 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Slash
                                left: 
                                  (arith_expr.ArithWord
                                    w: 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name aCPU_CURRENT_FREQ>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$i')}
                                                )
                                            )
                                        )
                                      }
                                  )
                                right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1000>})
                              )
                          ) <' MHz      '> <Id.Lit_Other '\\'> <'e[90m'> 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Slash
                                left: 
                                  (arith_expr.ArithWord
                                    w: 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name aCPU_MIN_FREQ>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$i')}
                                                )
                                            )
                                        )
                                      }
                                  )
                                right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1000>})
                              )
                          ) <' MHz    '> 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Slash
                                left: 
                                  (arith_expr.ArithWord
                                    w: 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name aCPU_MAX_FREQ>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: 
                                                (arith_expr.ArithWord
                                                  w: {($ Id.VSub_DollarName '$i')}
                                                )
                                            )
                                        )
                                      }
                                  )
                                right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1000>})
                              )
                          ) <' MHz'> <Id.Lit_Other '\\'> <'e[0m'>
                        )
                      }
                    )
                  ]
                )
            )
            (C {<echo>} {<-e>} {(DQ )})
            (C {<G_DIETPI-NOTIFY>} {<2>} 
              {
                (SQ 
                  <
'CPU current frequency, may be affected by this script, due to the processing required to run it.\\n'
                  >
                )
              }
            )
          ]
        )
    )
    (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 2>})
                    )
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<Obtain_Cpu_Freq>})
            (command.Simple
              words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_CPU_SCALINGAVAILABLE_FREQ'))}]
              redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.ArithWord
                              w: {($ Id.VSub_DollarName '$CPU_SCALINGSUPPORTED')}
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ForExpr
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: (sh_lhs_expr.Name name:i)
                          right: (arith_expr.ArithWord w:{<Id.Lit_Digits 0>})
                        )
                      cond: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike i>)
                          right: 
                            (arith_expr.ArithWord
                              w: 
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name aCPU_SCALINGAVAILABLE_FREQ>
                                    prefix_op: (Id.VSub_Pound)
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                  )
                                }
                            )
                        )
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: (sh_lhs_expr.Name name:i)
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: <Id.VSub_Name aCPU_SCALINGAVAILABLE_FREQ>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                        )
                                    )
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_DGreat '>>'>
                                  fd: -1
                                  arg_word: 
                                    {(DQ ($ Id.VSub_DollarName '$FP_CPU_SCALINGAVAILABLE_FREQ'))}
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {<sort>} {<-u>} {<-n>} 
                      {(DQ ($ Id.VSub_DollarName '$FP_CPU_SCALINGAVAILABLE_FREQ'))} {<-o>} {(DQ ($ Id.VSub_DollarName '$FP_CPU_SCALINGAVAILABLE_FREQ'))}
                    )
                  ]
                  spids: [1287 1297]
                )
              ]
            )
          ]
          spids: [1249 1263]
        )
      ]
      else_action: [
        (C {<Obtain_Cpu_Freq>})
        (C {<Obtain_Cpu_Temp>})
        (C {<Obtain_Cpu_Gov>})
        (C {<Print_Stats>})
      ]
    )
    (C {<unset>} {<aCPU_CURRENT_FREQ>})
    (C {<unset>} {<aCPU_MIN_FREQ>})
    (C {<unset>} {<aCPU_MAX_FREQ>})
    (C {<unset>} {<aCPU_SCALINGAVAILABLE_FREQ>})
    (C {<unset>} {<afp_temperature>})
    (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
  ]
)