std::vector<std::string> slapi_scripts = {
"import slapi\n"
"def SLsetWaiver(messageId, fileName=None, line=0, objectName=None):\n"
"    return slapi.SLsetWaiver(messageId, fileName, line, objectName)\n"
"SLsetWaiver = slapi.SLsetWaiver\n"
"\n"
"def SLoverrideSeverity(messageId, severity):\n"
"    return slapi.SLoverrideSeverity(messageId, severity)\n"
"SLoverrideSeverity = slapi.SLoverrideSeverity\n"
"\n"
"def SLregisterNewErrorType(messageId, text, secondLine):\n"
"    return slapi.SLregisterNewErrorType(messageId, text, secondLine)\n"
"SLregisterNewErrorType = slapi.SLregisterNewErrorType\n"
"\n"
"def SLaddError(container, messageId, fileName, line, col, objectName):\n"
"    return slapi.SLaddError(container, messageId, fileName, line, col, objectName)\n"
"SLaddError = slapi.SLaddError\n"
"\n"
"def SLaddErrorContext(prog, context, messageId, objectName, printColumn=False):\n"
"    return slapi.SLaddErrorContext(prog, context, messageId, objectName, printColumn)\n"
"SLaddErrorContext = slapi.SLaddErrorContext\n"
"\n"
"def SLaddMLErrorContext(prog, context1, context2, messageId, objectName1, objectName2, printColumn=False):\n"
"    return slapi.SLaddMLErrorContext(prog, context1, context2, messageId, objectName1, objectName2, printColumn)\n"
"SLaddMLErrorContext = slapi.SLaddMLErrorContext\n"
"\n"
"def SLaddMLError(container, messageId, fileName1, line1, col1, objectName1, fileName2, line2, col2, objectName2):\n"
"    return slapi.SLaddMLError(container, messageId, fileName1, line1, col1, objectName1, fileName2, line2, col2, objectName2)\n"
"SLaddMLError = slapi.SLaddMLError\n"
"\n"
"def SLgetColumn(prog, context):\n"
"    return slapi.SLgetColumn(prog, context)\n"
"SLgetColumn = slapi.SLgetColumn\n"
"\n"
"def SLgetText(prog, context):\n"
"    return slapi.SLgetText(prog, context)\n"
"SLgetText = slapi.SLgetText\n"
"\n"
"def SLgetTokens(prog, context):\n"
"    return slapi.SLgetTokens(prog, context)\n"
"SLgetTokens = slapi.SLgetTokens\n"
"\n"
"def SLgetParentContext(prog, context):\n"
"    return slapi.SLgetParentContext(prog, context)\n"
"SLgetParentContext = slapi.SLgetParentContext\n"
"\n"
"def SLgetChildrenContext(prog, context):\n"
"    return slapi.SLgetChildrenContext(prog, context)\n"
"SLgetChildrenContext = slapi.SLgetChildrenContext\n"
"\n"
"def SLgetRootNode(fC):\n"
"    return slapi.SLgetRootNode(fC)\n"
"SLgetRootNode = slapi.SLgetRootNode\n"
"\n"
"def SLgetFile(*args):\n"
"    return slapi.SLgetFile(*args)\n"
"SLgetFile = slapi.SLgetFile\n"
"\n"
"def SLgetSibling(fC, index):\n"
"    return slapi.SLgetSibling(fC, index)\n"
"SLgetSibling = slapi.SLgetSibling\n"
"\n"
"def SLgetLine(*args):\n"
"    return slapi.SLgetLine(*args)\n"
"SLgetLine = slapi.SLgetLine\n"
"\n"
"def SLgetName(fC, index):\n"
"    return slapi.SLgetName(fC, index)\n"
"SLgetName = slapi.SLgetName\n"
"\n"
"def SLgetType(fC, index):\n"
"    return slapi.SLgetType(fC, index)\n"
"SLgetType = slapi.SLgetType\n"
"\n"
"def SLgetChild(*args):\n"
"    return slapi.SLgetChild(*args)\n"
"SLgetChild = slapi.SLgetChild\n"
"\n"
"def SLgetParent(*args):\n"
"    return slapi.SLgetParent(*args)\n"
"SLgetParent = slapi.SLgetParent\n"
"\n"
"def SLgetAll(*args):\n"
"    return slapi.SLgetAll(*args)\n"
"SLgetAll = slapi.SLgetAll\n"
"\n"
"def SLcollect(fC, parent, type):\n"
"    return slapi.SLcollect(fC, parent, type)\n"
"SLcollect = slapi.SLcollect\n"
"\n"
"def SLcollectAll(*args):\n"
"    return slapi.SLcollectAll(*args)\n"
"SLcollectAll = slapi.SLcollectAll\n"
"\n"
"def SLgetnModuleDefinition(design):\n"
"    return slapi.SLgetnModuleDefinition(design)\n"
"SLgetnModuleDefinition = slapi.SLgetnModuleDefinition\n"
"\n"
"def SLgetnProgramDefinition(design):\n"
"    return slapi.SLgetnProgramDefinition(design)\n"
"SLgetnProgramDefinition = slapi.SLgetnProgramDefinition\n"
"\n"
"def SLgetnPackageDefinition(design):\n"
"    return slapi.SLgetnPackageDefinition(design)\n"
"SLgetnPackageDefinition = slapi.SLgetnPackageDefinition\n"
"\n"
"def SLgetnClassDefinition(design):\n"
"    return slapi.SLgetnClassDefinition(design)\n"
"SLgetnClassDefinition = slapi.SLgetnClassDefinition\n"
"\n"
"def SLgetnTopModuleInstance(design):\n"
"    return slapi.SLgetnTopModuleInstance(design)\n"
"SLgetnTopModuleInstance = slapi.SLgetnTopModuleInstance\n"
"\n"
"def SLgetModuleDefinition(design, index):\n"
"    return slapi.SLgetModuleDefinition(design, index)\n"
"SLgetModuleDefinition = slapi.SLgetModuleDefinition\n"
"\n"
"def SLgetProgramDefinition(design, index):\n"
"    return slapi.SLgetProgramDefinition(design, index)\n"
"SLgetProgramDefinition = slapi.SLgetProgramDefinition\n"
"\n"
"def SLgetPackageDefinition(design, index):\n"
"    return slapi.SLgetPackageDefinition(design, index)\n"
"SLgetPackageDefinition = slapi.SLgetPackageDefinition\n"
"\n"
"def SLgetClassDefinition(design, index):\n"
"    return slapi.SLgetClassDefinition(design, index)\n"
"SLgetClassDefinition = slapi.SLgetClassDefinition\n"
"\n"
"def SLgetTopModuleInstance(design, index):\n"
"    return slapi.SLgetTopModuleInstance(design, index)\n"
"SLgetTopModuleInstance = slapi.SLgetTopModuleInstance\n"
"\n"
"def SLgetModuleName(module):\n"
"    return slapi.SLgetModuleName(module)\n"
"SLgetModuleName = slapi.SLgetModuleName\n"
"\n"
"def SLgetModuleFile(module):\n"
"    return slapi.SLgetModuleFile(module)\n"
"SLgetModuleFile = slapi.SLgetModuleFile\n"
"\n"
"def SLgetModuleType(module):\n"
"    return slapi.SLgetModuleType(module)\n"
"SLgetModuleType = slapi.SLgetModuleType\n"
"\n"
"def SLgetModuleLine(module):\n"
"    return slapi.SLgetModuleLine(module)\n"
"SLgetModuleLine = slapi.SLgetModuleLine\n"
"\n"
"def SLgetModuleFileContent(module):\n"
"    return slapi.SLgetModuleFileContent(module)\n"
"SLgetModuleFileContent = slapi.SLgetModuleFileContent\n"
"\n"
"def SLgetModuleRootNode(module):\n"
"    return slapi.SLgetModuleRootNode(module)\n"
"SLgetModuleRootNode = slapi.SLgetModuleRootNode\n"
"\n"
"def SLgetClassName(arg1):\n"
"    return slapi.SLgetClassName(arg1)\n"
"SLgetClassName = slapi.SLgetClassName\n"
"\n"
"def SLgetClassFile(arg1):\n"
"    return slapi.SLgetClassFile(arg1)\n"
"SLgetClassFile = slapi.SLgetClassFile\n"
"\n"
"def SLgetClassType(arg1):\n"
"    return slapi.SLgetClassType(arg1)\n"
"SLgetClassType = slapi.SLgetClassType\n"
"\n"
"def SLgetClassLine(arg1):\n"
"    return slapi.SLgetClassLine(arg1)\n"
"SLgetClassLine = slapi.SLgetClassLine\n"
"\n"
"def SLgetClassFileContent(arg1):\n"
"    return slapi.SLgetClassFileContent(arg1)\n"
"SLgetClassFileContent = slapi.SLgetClassFileContent\n"
"\n"
"def SLgetClassRootNode(arg1):\n"
"    return slapi.SLgetClassRootNode(arg1)\n"
"SLgetClassRootNode = slapi.SLgetClassRootNode\n"
"\n"
"def SLgetPackageName(arg1):\n"
"    return slapi.SLgetPackageName(arg1)\n"
"SLgetPackageName = slapi.SLgetPackageName\n"
"\n"
"def SLgetPackageFile(arg1):\n"
"    return slapi.SLgetPackageFile(arg1)\n"
"SLgetPackageFile = slapi.SLgetPackageFile\n"
"\n"
"def SLgetPackageType(arg1):\n"
"    return slapi.SLgetPackageType(arg1)\n"
"SLgetPackageType = slapi.SLgetPackageType\n"
"\n"
"def SLgetPackageLine(arg1):\n"
"    return slapi.SLgetPackageLine(arg1)\n"
"SLgetPackageLine = slapi.SLgetPackageLine\n"
"\n"
"def SLgetPackageFileContent(arg1):\n"
"    return slapi.SLgetPackageFileContent(arg1)\n"
"SLgetPackageFileContent = slapi.SLgetPackageFileContent\n"
"\n"
"def SLgetPackageRootNode(arg1):\n"
"    return slapi.SLgetPackageRootNode(arg1)\n"
"SLgetPackageRootNode = slapi.SLgetPackageRootNode\n"
"\n"
"def SLgetProgramName(arg1):\n"
"    return slapi.SLgetProgramName(arg1)\n"
"SLgetProgramName = slapi.SLgetProgramName\n"
"\n"
"def SLgetProgramFile(arg1):\n"
"    return slapi.SLgetProgramFile(arg1)\n"
"SLgetProgramFile = slapi.SLgetProgramFile\n"
"\n"
"def SLgetProgramType(arg1):\n"
"    return slapi.SLgetProgramType(arg1)\n"
"SLgetProgramType = slapi.SLgetProgramType\n"
"\n"
"def SLgetProgramLine(arg1):\n"
"    return slapi.SLgetProgramLine(arg1)\n"
"SLgetProgramLine = slapi.SLgetProgramLine\n"
"\n"
"def SLgetProgramFileContent(arg1):\n"
"    return slapi.SLgetProgramFileContent(arg1)\n"
"SLgetProgramFileContent = slapi.SLgetProgramFileContent\n"
"\n"
"def SLgetProgramRootNode(arg1):\n"
"    return slapi.SLgetProgramRootNode(arg1)\n"
"SLgetProgramRootNode = slapi.SLgetProgramRootNode\n"
"\n"
"def SLgetInstanceType(instance):\n"
"    return slapi.SLgetInstanceType(instance)\n"
"SLgetInstanceType = slapi.SLgetInstanceType\n"
"\n"
"def SLgetInstanceModuleType(instance):\n"
"    return slapi.SLgetInstanceModuleType(instance)\n"
"SLgetInstanceModuleType = slapi.SLgetInstanceModuleType\n"
"\n"
"def SLgetInstanceName(instance):\n"
"    return slapi.SLgetInstanceName(instance)\n"
"SLgetInstanceName = slapi.SLgetInstanceName\n"
"\n"
"def SLgetInstanceFullPathName(instance):\n"
"    return slapi.SLgetInstanceFullPathName(instance)\n"
"SLgetInstanceFullPathName = slapi.SLgetInstanceFullPathName\n"
"\n"
"def SLgetInstanceModuleName(instance):\n"
"    return slapi.SLgetInstanceModuleName(instance)\n"
"SLgetInstanceModuleName = slapi.SLgetInstanceModuleName\n"
"\n"
"def SLgetInstanceDefinition(instance):\n"
"    return slapi.SLgetInstanceDefinition(instance)\n"
"SLgetInstanceDefinition = slapi.SLgetInstanceDefinition\n"
"\n"
"def SLgetInstanceFileName(instance):\n"
"    return slapi.SLgetInstanceFileName(instance)\n"
"SLgetInstanceFileName = slapi.SLgetInstanceFileName\n"
"\n"
"def SLgetInstanceFileContent(instance):\n"
"    return slapi.SLgetInstanceFileContent(instance)\n"
"SLgetInstanceFileContent = slapi.SLgetInstanceFileContent\n"
"\n"
"def SLgetInstanceNodeId(instance):\n"
"    return slapi.SLgetInstanceNodeId(instance)\n"
"SLgetInstanceNodeId = slapi.SLgetInstanceNodeId\n"
"\n"
"def SLgetInstanceLine(instance):\n"
"    return slapi.SLgetInstanceLine(instance)\n"
"SLgetInstanceLine = slapi.SLgetInstanceLine\n"
"\n"
"def SLgetnInstanceChildren(instance):\n"
"    return slapi.SLgetnInstanceChildren(instance)\n"
"SLgetnInstanceChildren = slapi.SLgetnInstanceChildren\n"
"\n"
"def SLgetInstanceChildren(instance, i):\n"
"    return slapi.SLgetInstanceChildren(instance, i)\n"
"SLgetInstanceChildren = slapi.SLgetInstanceChildren\n"
"\n"
"def SLgetInstanceParent(instance):\n"
"    return slapi.SLgetInstanceParent(instance)\n"
"SLgetInstanceParent = slapi.SLgetInstanceParent\n"
"# This file is compatible with both classic and new-style classes.\n"
"\n"
"\n"
"\n"
"# SURELOG ERROR FORMATTING\n"
"\n"
"def SLformatMsg (severity, category, messageId, location, text):\n"
"    chunks = []\n"
"    chunks.append(\"[\")\n"
"    chunks.append(severity)\n"
"    chunks.append(\":\")\n"
"    chunks.append(category)\n"
"    chunks.append(messageId)\n"
"    chunks.append(\"] \")\n"
"    chunks.append(location)\n"
"    chunks.append(text)\n"
"    chunks.append(\"\\n\\n\")\n"
"    result = ''.join(chunks)\n"
"    return result\n"
"\n"
};
