# Path: lib/VMRepresentation.py
# def get_vmr():
#     """
#     Get the VMR instance.
#     :return: vmr
#     """
#     global vmr
#     if vmr is None:
#         vmr = VMRepresentation()
#     return vmr
# 
# class VMContext(object):
#     def __init__(self):
#         self.code_start = BADADDR
#         self.code_end = BADADDR
#         self.base_addr = BADADDR
#         self.vm_addr = BADADDR


from idaapi import Form, BADADDR
from lib.VMRepresentation import get_vmr, VMContext
                             "VM Values:\n"
                             "<Byte code start           :{iCodeStart}>\n"
                             "<Byte code end             :{iCodeEnd}>\n"
                             "<Jump table base address   :{iBaseAddr}>\n"
                             "<VM function address       :{iVMAddr}>\n"
                             "\n"
                             "Clustering:\n"
                             "<Show basic blocks:{rShowBB}>\n"
                             "<Greedy clustering:{rGreedyCluster}>{cClusterValues}>\n"
                             "<Cluster Heuristic         :{iClusterHeu}>\n"
                             "\n"
                             "Grading Automation:\n"
                             "<Input/Output Importance   :{iInOut}>\n"
                             "<Clustering Importance     :{iClu}>\n"
                             "<Pattern Importance        :{iPaMa}>\n"
                             "<Memory Usage Importance   :{iMeUs}>\n"
                             "<Static Analysis Importance:{iSta}>\n"
                             "\n"
                             "\n"
                             "Dynamic Analysis:\n"
                             "<Step Into System Libraries :{rStepInSysLibs}>\n"
                             '<Extract function parameters:{rFuncParams}>{cDynamicValues}>\n'
                             ), {
                          'cClusterValues': Form.ChkGroupControl(("rShowBB", "rGreedyCluster")),
                          'cDynamicValues': Form.ChkGroupControl(('rStepInSysLibs', 'rFuncParams')),
                          'iClusterHeu': Form.NumericInput(tp=Form.FT_DEC),
                          'iInOut': Form.NumericInput(tp=Form.FT_DEC),
                          'iClu': Form.NumericInput(tp=Form.FT_DEC),
                          'iPaMa': Form.NumericInput(tp=Form.FT_DEC),
                          'iMeUs': Form.NumericInput(tp=Form.FT_DEC),

# Path: lib/VMRepresentation.py
# def get_vmr():
#     """
#     Get the VMR instance.
#     :return: vmr
#     """
#     global vmr
#     if vmr is None:
#         vmr = VMRepresentation()
#     return vmr
# 
# class VMContext(object):
#     def __init__(self):
#         self.code_start = BADADDR
#         self.code_end = BADADDR
#         self.base_addr = BADADDR
#         self.vm_addr = BADADDR


# Path: ui/SettingsWindow.py
from idaapi import Form, BADADDR
from lib.VMRepresentation import get_vmr, VMContext

                             "VM Values:\n"
                             "<Byte code start           :{iCodeStart}>\n"
                             "<Byte code end             :{iCodeEnd}>\n"
                             "<Jump table base address   :{iBaseAddr}>\n"
                             "<VM function address       :{iVMAddr}>\n"
                             "\n"
                             "Clustering:\n"
                             "<Show basic blocks:{rShowBB}>\n"
                             "<Greedy clustering:{rGreedyCluster}>{cClusterValues}>\n"
                             "<Cluster Heuristic         :{iClusterHeu}>\n"
                             "\n"
                             "Grading Automation:\n"
                             "<Input/Output Importance   :{iInOut}>\n"
                             "<Clustering Importance     :{iClu}>\n"
                             "<Pattern Importance        :{iPaMa}>\n"
                             "<Memory Usage Importance   :{iMeUs}>\n"
                             "<Static Analysis Importance:{iSta}>\n"
                             "\n"
                             "\n"
                             "Dynamic Analysis:\n"
                             "<Step Into System Libraries :{rStepInSysLibs}>\n"
                             '<Extract function parameters:{rFuncParams}>{cDynamicValues}>\n'
                             ), {
                          'cClusterValues': Form.ChkGroupControl(("rShowBB", "rGreedyCluster")),
                          'cDynamicValues': Form.ChkGroupControl(('rStepInSysLibs', 'rFuncParams')),
                          'iClusterHeu': Form.NumericInput(tp=Form.FT_DEC),
                          'iInOut': Form.NumericInput(tp=Form.FT_DEC),
                          'iClu': Form.NumericInput(tp=Form.FT_DEC),
                          'iPaMa': Form.NumericInput(tp=Form.FT_DEC),
                          'iMeUs': Form.NumericInput(tp=Form.FT_DEC),

                          'iSta': Form.NumericInput(tp=Form.FT_DEC),